From 61a5e5e6aa2fdcc2ec88b6b5ea08985d9c361aa6 Mon Sep 17 00:00:00 2001 From: TIANHE Date: Wed, 14 Jan 2026 05:29:55 +0800 Subject: [PATCH 01/11] feat: Multi-user system with PostgreSQL - WIP temporary save --- README.md | 127 +- backend_api_python/README.md | 187 +- backend_api_python/app/__init__.py | 79 + .../app/data/market_symbols_seed.py | 253 +- backend_api_python/app/routes/__init__.py | 5 +- backend_api_python/app/routes/ai_chat.py | 2 +- backend_api_python/app/routes/analysis.py | 231 +- backend_api_python/app/routes/auth.py | 181 +- backend_api_python/app/routes/backtest.py | 83 +- backend_api_python/app/routes/credentials.py | 26 +- backend_api_python/app/routes/dashboard.py | 40 +- backend_api_python/app/routes/indicator.py | 39 +- backend_api_python/app/routes/kline.py | 19 +- backend_api_python/app/routes/market.py | 158 +- backend_api_python/app/routes/portfolio.py | 155 +- backend_api_python/app/routes/settings.py | 23 +- backend_api_python/app/routes/strategy.py | 283 +- .../app/routes/strategy_code.py | 5 +- backend_api_python/app/routes/user.py | 317 + .../app/services/agents/coordinator.py | 221 + .../app/services/agents/memory.py | 265 +- .../app/services/agents/reflection.py | 389 +- .../app/services/live_trading/records.py | 34 +- .../app/services/pending_order_worker.py | 11 +- .../app/services/portfolio_monitor.py | 144 +- .../app/services/signal_notifier.py | 17 +- backend_api_python/app/services/strategy.py | 96 +- .../app/services/trading_executor.py | 63 +- .../app/services/user_service.py | 386 + backend_api_python/app/utils/auth.py | 154 +- backend_api_python/app/utils/db.py | 693 +- backend_api_python/app/utils/db_postgres.py | 297 + backend_api_python/env.example | 18 +- backend_api_python/logs/app.log.1 | 85373 ++++++++++++++++ backend_api_python/migrations/init.sql | 537 + backend_api_python/requirements.txt | 6 +- backend_api_python/run.py | 9 + docker-compose.yml | 43 +- docs/multi-user-setup.md | 213 + quantdinger_vue/src/api/market.js | 48 +- quantdinger_vue/src/api/user.js | 126 + .../GlobalHeader/AvatarDropdown.vue | 8 + .../components/GlobalHeader/RightContent.vue | 12 +- quantdinger_vue/src/config/router.config.js | 18 +- quantdinger_vue/src/layouts/BasicLayout.vue | 19 +- quantdinger_vue/src/locales/lang/ar-SA.js | 5 + quantdinger_vue/src/locales/lang/de-DE.js | 5 + quantdinger_vue/src/locales/lang/en-US.js | 72 +- quantdinger_vue/src/locales/lang/fr-FR.js | 5 + quantdinger_vue/src/locales/lang/ja-JP.js | 5 + quantdinger_vue/src/locales/lang/ko-KR.js | 5 + quantdinger_vue/src/locales/lang/th-TH.js | 5 + quantdinger_vue/src/locales/lang/vi-VN.js | 10 + quantdinger_vue/src/locales/lang/zh-CN.js | 72 +- quantdinger_vue/src/locales/lang/zh-TW.js | 5 + .../src/router/generator-routers.js | 82 +- quantdinger_vue/src/store/index.js | 12 +- .../src/store/modules/async-router.js | 11 +- quantdinger_vue/src/store/modules/user.js | 33 +- quantdinger_vue/src/utils/request.js | 9 +- .../views/ai-analysis/components/index.vue | 28 +- .../src/views/ai-analysis/index.vue | 112 +- .../components/BacktestHistoryDrawer.vue | 8 +- .../components/KlineChart.vue | 20 +- .../src/views/indicator-analysis/index.vue | 4 +- quantdinger_vue/src/views/profile/index.vue | 472 + .../src/views/trading-assistant/index.vue | 4 +- .../src/views/user-manage/index.vue | 556 + 68 files changed, 91045 insertions(+), 1908 deletions(-) create mode 100644 backend_api_python/app/routes/user.py create mode 100644 backend_api_python/app/services/user_service.py create mode 100644 backend_api_python/app/utils/db_postgres.py create mode 100644 backend_api_python/logs/app.log.1 create mode 100644 backend_api_python/migrations/init.sql create mode 100644 docs/multi-user-setup.md create mode 100644 quantdinger_vue/src/api/user.js create mode 100644 quantdinger_vue/src/views/profile/index.vue create mode 100644 quantdinger_vue/src/views/user-manage/index.vue diff --git a/README.md b/README.md index 7aac1924c..f5f3993e3 100644 --- a/README.md +++ b/README.md @@ -261,7 +261,7 @@ QuantDinger provides a unified data interface across multiple markets: QuantDingerโ€™s agents donโ€™t start from scratch every time. The backend includes a **local memory store** and an optional **reflection/verification loop**: - **What it is**: RAG-style experience retrieval injected into agent prompts (NOT model fine-tuning). -- **Where it lives**: Local SQLite files under `backend_api_python/data/memory/` (privacy-first). +- **Where it lives**: PostgreSQL database (shared with main data) or local files under `backend_api_python/data/memory/` (privacy-first). ```mermaid flowchart TB @@ -301,7 +301,7 @@ flowchart TB end %% ===== ๐Ÿง  Memory Layer ===== - subgraph Memory["๐Ÿง  Local SQLite Memory (data/memory/)"] + subgraph Memory["๐Ÿง  PostgreSQL Memory Store"] M1[("market_analyst")] M2[("fundamental")] M3[("news_analyst")] @@ -356,9 +356,9 @@ Config lives in `.env` (see `backend_api_python/env.example`): `ENABLE_AGENT_MEM ### 7. Tech Stack -- **Backend**: Python (Flask) + SQLite + Redis (optional) +- **Backend**: Python (Flask) + PostgreSQL + Redis (optional) - **Frontend**: Vue 2 + Ant Design Vue + KlineCharts/ECharts -- **Deployment**: Docker Compose +- **Deployment**: Docker Compose (with PostgreSQL) --- @@ -441,7 +441,7 @@ All UI elements, error messages, and documentation are fully translated. Languag โ”‚ (Flask + strategy runtime) โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ - โ”œโ”€ SQLite (quantdinger.db) + โ”œโ”€ PostgreSQL (multi-user support) โ”œโ”€ Redis (optional cache) โ””โ”€ Data providers / LLMs / Exchanges ``` @@ -466,9 +466,27 @@ All UI elements, error messages, and documentation are fully translated. Languag ### Option 1: Docker Deployment (Recommended) -The fastest way to get QuantDinger running. +The fastest way to get QuantDinger running with PostgreSQL database and multi-user support. -#### 1. Start Services +#### 1. Configure Environment + +Create a `.env` file in project root: + +```bash +# Database Configuration +POSTGRES_USER=quantdinger +POSTGRES_PASSWORD=your_secure_password +POSTGRES_DB=quantdinger + +# Admin Account (created on first startup) +ADMIN_USER=admin +ADMIN_PASSWORD=your_admin_password + +# Optional: AI Features +OPENROUTER_API_KEY=your_api_key +``` + +#### 2. Start Services **Linux / macOS** ```bash @@ -486,17 +504,20 @@ Copy-Item backend_api_python\env.example -Destination backend_api_python\.env docker-compose up -d --build ``` -#### 2. Configuration & Access - -- **Frontend UI**: http://localhost:8888 -- **Default Account**: `quantdinger` / `123456` - -> **Note**: For production or AI features, edit `backend_api_python/.env` (add `OPENROUTER_API_KEY`, change passwords) and restart with `docker-compose restart backend`. +This will automatically: +- Start PostgreSQL database (port 5432) +- Initialize database schema +- Start backend API (port 5000) +- Start frontend (port 8888) +- Create admin user from `ADMIN_USER`/`ADMIN_PASSWORD` in `.env` #### 3. Access the Application -- **Frontend UI**: http://localhost +- **Frontend UI**: http://localhost:8888 - **Backend API**: http://localhost:5000 +- **Default Account**: Uses `ADMIN_USER` / `ADMIN_PASSWORD` from `.env` (default: `quantdinger` / `123456`) + +> **Note**: For production, edit `backend_api_python/.env` to set strong passwords, add `OPENROUTER_API_KEY` for AI features, then restart with `docker-compose restart backend`. #### Docker Commands Reference @@ -535,29 +556,30 @@ docker exec -it quantdinger-frontend /bin/sh #### Docker Architecture ``` -โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” -โ”‚ Frontend โ”‚ โ”‚ Backend โ”‚ -โ”‚ (Nginx) โ”‚โ”€โ”€โ”€โ”€โ–ถโ”‚ (Python) โ”‚ -โ”‚ Port: 80 โ”‚ โ”‚ Port: 5000 โ”‚ -โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ - โ”‚ โ”‚ - โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ - Docker Network +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ Frontend โ”‚ โ”‚ Backend โ”‚ โ”‚ PostgreSQL โ”‚ +โ”‚ (Nginx) โ”‚โ”€โ”€โ”€โ”€โ–ถโ”‚ (Python) โ”‚โ”€โ”€โ”€โ”€โ–ถโ”‚ Database โ”‚ +โ”‚ Port: 8888 โ”‚ โ”‚ Port: 5000 โ”‚ โ”‚ Port: 5432 โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + โ”‚ โ”‚ โ”‚ + โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + Docker Network ``` - **Frontend**: Vue.js app served by Nginx, proxies API requests to backend -- **Backend**: Python Flask API service +- **Backend**: Python Flask API service with multi-user authentication +- **PostgreSQL**: Database for user data, strategies, and trading records #### Data Persistence -The following data is mounted to the host and persists across container restarts: +The following data is persisted across container restarts: ```yaml volumes: - - ./backend_api_python/quantdinger.db:/app/quantdinger.db # Database - - ./backend_api_python/logs:/app/logs # Logs - - ./backend_api_python/data:/app/data # Data directory - - ./backend_api_python/.env:/app/.env # Configuration + postgres_data: # PostgreSQL database + - ./backend_api_python/logs:/app/logs # Logs + - ./backend_api_python/data:/app/data # Data directory + - ./backend_api_python/.env:/app/.env # Configuration ``` #### Customization @@ -630,10 +652,17 @@ docker-compose logs backend curl http://localhost:5000/api/health ``` -**Database permission issues:** +**Database connection issues:** ```bash -chmod 666 backend_api_python/quantdinger.db +# Check PostgreSQL container status +docker-compose logs postgres + +# Verify PostgreSQL is ready +docker exec quantdinger-db pg_isready -U quantdinger + +# Connect to database manually +docker exec -it quantdinger-db psql -U quantdinger -d quantdinger ``` **Build failures:** @@ -669,11 +698,14 @@ docker-compose up -d --build #### Backup ```bash -# Backup database -cp backend_api_python/quantdinger.db backup/quantdinger_$(date +%Y%m%d).db +# Backup PostgreSQL database +docker exec quantdinger-db pg_dump -U quantdinger quantdinger > backup/quantdinger_$(date +%Y%m%d).sql # Backup configuration cp backend_api_python/.env backup/.env_$(date +%Y%m%d) + +# Restore database (if needed) +cat backup/quantdinger_YYYYMMDD.sql | docker exec -i quantdinger-db psql -U quantdinger quantdinger ``` --- @@ -684,13 +716,40 @@ cp backend_api_python/.env backup/.env_$(date +%Y%m%d) - Python 3.10+ recommended - Node.js 16+ recommended +- PostgreSQL 14+ installed and running + +#### 1. Setup PostgreSQL + +```bash +# Create database and user +sudo -u postgres psql +CREATE DATABASE quantdinger; +CREATE USER quantdinger WITH ENCRYPTED PASSWORD 'your_password'; +GRANT ALL PRIVILEGES ON DATABASE quantdinger TO quantdinger; +\q + +# Initialize schema +psql -U quantdinger -d quantdinger -f backend_api_python/migrations/init.sql +``` -#### 1. Start the backend (Flask API) +#### 2. Start the backend (Flask API) ```bash cd backend_api_python pip install -r requirements.txt cp env.example .env # Windows: copy env.example .env +``` + +Edit `.env` and set: +```bash +DATABASE_URL=postgresql://quantdinger:your_password@localhost:5432/quantdinger +SECRET_KEY=your-secret-key +ADMIN_USER=admin +ADMIN_PASSWORD=your_admin_password +``` + +Then start: +```bash python run.py ``` @@ -714,7 +773,7 @@ Use `backend_api_python/env.example` as a template. Common settings include: - **Auth**: `SECRET_KEY`, `ADMIN_USER`, `ADMIN_PASSWORD` - **Server**: `PYTHON_API_HOST`, `PYTHON_API_PORT`, `PYTHON_API_DEBUG` -- **Database**: `SQLITE_DATABASE_FILE` (optional; default is `backend_api_python/data/quantdinger.db`) +- **Database**: `DATABASE_URL` (PostgreSQL connection string) - **AI / LLM**: `OPENROUTER_API_KEY`, `OPENROUTER_MODEL`, timeouts - **Web search**: `SEARCH_PROVIDER`, `SEARCH_GOOGLE_*`, `SEARCH_BING_API_KEY` - **Proxy (optional)**: `PROXY_PORT` or `PROXY_URL` diff --git a/backend_api_python/README.md b/backend_api_python/README.md index 9ea306895..0495184a6 100644 --- a/backend_api_python/README.md +++ b/backend_api_python/README.md @@ -1,17 +1,16 @@ # QuantDinger Python API (backend) -Flask-based local-first backend for QuantDinger: market data, indicators, AI analysis, backtesting, and a strategy runtime (with an optional pending-order worker). - -This repository is intentionally simple: **no external database is required by default**. Data is stored in a local SQLite file (`quantdinger.db`) created/updated automatically on startup. +Flask-based backend for QuantDinger: market data, indicators, AI analysis, backtesting, and a strategy runtime with multi-user support. ## What you get - **Multi-market data layer**: factory-based providers (crypto / US stocks / CN&HK stocks / futures, etc.) -- **Indicators + backtesting**: persisted runs/history in SQLite +- **Indicators + backtesting**: persisted runs/history in PostgreSQL - **AI multi-agent analysis**: optional web search + OpenRouter LLM integration - **Strategy runtime**: thread-based executor, with optional auto-restore on startup - **Pending orders worker (optional)**: polls queued orders and dispatches signals (webhook/notifications) -- **Local auth (single-user)**: `/login` with env-configured admin credentials (JWT) +- **Multi-user authentication**: role-based access control (admin/manager/user/viewer) +- **User management**: admin can create/edit/delete users and reset passwords ## Project layout @@ -22,8 +21,10 @@ backend_api_python/ โ”‚ โ”œโ”€ config/ # Settings (env-driven) โ”‚ โ”œโ”€ data_sources/ # Data sources + factory โ”‚ โ”œโ”€ routes/ # REST endpoints -โ”‚ โ”œโ”€ services/ # Analysis, agents, strategies, search, ... -โ”‚ โ””โ”€ utils/ # SQLite helpers, config loader, logging, HTTP utils +โ”‚ โ”œโ”€ services/ # Analysis, agents, strategies, search, user_service +โ”‚ โ””โ”€ utils/ # PostgreSQL helpers, config loader, logging, HTTP utils +โ”œโ”€ migrations/ +โ”‚ โ””โ”€ init.sql # PostgreSQL schema initialization โ”œโ”€ env.example # Copy to .env for local config โ”œโ”€ requirements.txt โ”œโ”€ run.py # Entrypoint (loads .env, applies proxy env, starts Flask) @@ -31,46 +32,99 @@ backend_api_python/ โ””โ”€ README.md ``` -## Quick start (local development) +## Quick start (Docker - Recommended) + +### 1) Configure environment + +Create `.env` file in project root: + +```bash +# Database +POSTGRES_USER=quantdinger +POSTGRES_PASSWORD=your_secure_password +POSTGRES_DB=quantdinger + +# Admin account (created on first startup) +ADMIN_USER=admin +ADMIN_PASSWORD=your_admin_password + +# Optional +OPENROUTER_API_KEY=your_api_key +``` + +### 2) Start services + +```bash +docker-compose up -d +``` + +This will: +- Start PostgreSQL database (port 5432) +- Initialize database schema automatically +- Start backend API (port 5000) +- Start frontend (port 8888) +- Create admin user from `ADMIN_USER`/`ADMIN_PASSWORD` + +### 3) Access the system + +- Frontend: `http://localhost:8888` +- Backend API: `http://localhost:5000` +- Login with your configured admin credentials + +## Quick start (Local Development) ### Prerequisites - Python 3.10+ recommended +- PostgreSQL 14+ installed and running -### 1) Install dependencies +### 1) Setup PostgreSQL + +```bash +# Create database and user +sudo -u postgres psql +CREATE DATABASE quantdinger; +CREATE USER quantdinger WITH ENCRYPTED PASSWORD 'your_password'; +GRANT ALL PRIVILEGES ON DATABASE quantdinger TO quantdinger; +\q + +# Initialize schema +psql -U quantdinger -d quantdinger -f migrations/init.sql +``` + +### 2) Install dependencies ```bash cd backend_api_python pip install -r requirements.txt ``` -### 2) Create your local `.env` +### 3) Create your local `.env` Windows (CMD): - ```bash copy env.example .env ``` Windows (PowerShell): - ```bash Copy-Item env.example .env ``` -Then edit `.env` and set at least: - -- `SECRET_KEY` -- `ADMIN_USER` -- `ADMIN_PASSWORD` - -Optional but common: +Then edit `.env` and set: -- `OPENROUTER_API_KEY` (for AI analysis) -- `FINNHUB_API_KEY` / `SEARCH_GOOGLE_*` / `SEARCH_BING_API_KEY` (for richer data/search) -- `PROXY_PORT` or `PROXY_URL` (if your network blocks some providers) +```bash +# Required +DATABASE_URL=postgresql://quantdinger:your_password@localhost:5432/quantdinger +SECRET_KEY=your-secret-key-change-me +ADMIN_USER=admin +ADMIN_PASSWORD=your_admin_password + +# Optional but recommended +OPENROUTER_API_KEY=your_api_key +``` -### 3) Start the API server +### 4) Start the API server ```bash python run.py @@ -78,47 +132,74 @@ python run.py Default address: `http://localhost:5000` -## Database (SQLite) +## Database (PostgreSQL) + +- Connection: configured via `DATABASE_URL` environment variable +- Schema: initialized via `migrations/init.sql` +- Tables are managed with foreign key constraints and indexes for performance +- User data isolation via `user_id` column in relevant tables -- Default file: `backend_api_python/data/quantdinger.db` (override via `SQLITE_DATABASE_FILE`) -- Tables are created/updated automatically on startup (see `app/utils/db.py`) -- `qd_addon_config` exists for backward compatibility, but **this backend reads secrets from `.env` / OS env**, not from the database (see `app/utils/config_loader.py`) +## User Roles & Permissions -## AI memory augmentation (local-only) +| Role | Permissions | +|------|-------------| +| admin | Full access + user management | +| manager | Strategy, backtest, portfolio, settings | +| user | Strategy, backtest, portfolio (own data) | +| viewer | Dashboard view only | + +## API Endpoints + +### Authentication +```text +POST /api/user/login - User login +POST /api/user/logout - User logout +GET /api/user/info - Get current user info +``` + +### User Management (Admin only) +```text +GET /api/users/list - List all users +POST /api/users/create - Create user +PUT /api/users/update?id= - Update user +DELETE /api/users/delete?id= - Delete user +POST /api/users/reset-password - Reset password +``` + +### Self-Service +```text +GET /api/users/profile - Get own profile +PUT /api/users/profile/update - Update own profile +POST /api/users/change-password - Change own password +``` + +### Other Endpoints +```text +GET /api/health +GET /api/indicator/kline +POST /api/analysis/multi +``` + +## AI memory augmentation This backend includes a lightweight, privacy-first **memory-augmented multi-agent** system: -- Memory DBs (per role): `backend_api_python/data/memory/*_memory.db` -- Reflection DB (optional auto-verify loop): `backend_api_python/data/memory/reflection_records.db` +- Memory DBs stored in PostgreSQL - API hooks: - `POST /api/analysis/multi` (main entry) - `POST /api/analysis/reflect` (manual learn from post-trade outcomes) -- Controls: see `.env` / `env.example`: +- Controls in `.env`: - `ENABLE_AGENT_MEMORY`, `AGENT_MEMORY_*` - `ENABLE_REFLECTION_WORKER`, `REFLECTION_WORKER_INTERVAL_SEC` -## Frontend integration (Vue dev server) - -The Vue dev server proxies `/api/*` to this backend by default: +## Frontend integration +For Vue dev server: - Frontend: `http://localhost:8000` - Backend: `http://localhost:5000` +- Proxy config: `quantdinger_vue/vue.config.js` -Proxy config: `quantdinger_vue/vue.config.js` - -## Useful endpoints - -```text -GET /health -POST /login -GET /info -GET /api/indicator/kline -POST /api/analysis/multi -``` - -## Production (optional) - -Gunicorn example: +## Production (Gunicorn) ```bash gunicorn -c gunicorn_config.py "run:app" @@ -126,11 +207,11 @@ gunicorn -c gunicorn_config.py "run:app" ## Troubleshooting -- If outbound data/search requests fail, configure `PROXY_PORT` (or `PROXY_URL`) in `.env`. -- If you donโ€™t want strategies to auto-restore on startup, set `DISABLE_RESTORE_RUNNING_STRATEGIES=true`. -- If you donโ€™t want the pending-order worker, set `ENABLE_PENDING_ORDER_WORKER=false`. +- **Database connection failed**: Check `DATABASE_URL` format and PostgreSQL service status +- **Outbound requests fail**: Configure `PROXY_PORT` or `PROXY_URL` in `.env` +- **Disable auto-restore**: Set `DISABLE_RESTORE_RUNNING_STRATEGIES=true` +- **Disable pending-order worker**: Set `ENABLE_PENDING_ORDER_WORKER=false` ## License Apache License 2.0. See repository root `LICENSE`. - diff --git a/backend_api_python/app/__init__.py b/backend_api_python/app/__init__.py index e97cb1e7b..edbb67090 100644 --- a/backend_api_python/app/__init__.py +++ b/backend_api_python/app/__init__.py @@ -180,6 +180,85 @@ def create_app(config_name='default'): setup_logger() + # Initialize database and ensure admin user exists + try: + from app.utils.db import init_database, get_db_type + logger.info(f"Database type: {get_db_type()}") + init_database() + + # Ensure admin user exists (multi-user mode) + from app.services.user_service import get_user_service + get_user_service().ensure_admin_exists() + except Exception as e: + logger.warning(f"Database initialization note: {e}") + + # ===================================================== + # Demo Mode Middleware (Read-Only Mode) + # ===================================================== + import os + from flask import request, jsonify + + # Check environment variable IS_DEMO_MODE + is_demo_mode = os.getenv('IS_DEMO_MODE', 'false').lower() == 'true' + + if is_demo_mode: + logger.info("!!! SYSTEM STARTING IN DEMO MODE (READ-ONLY) !!!") + + @app.before_request + def global_demo_mode_check(): + """ + Global interceptor for demo mode. + Blocks all state-changing methods AND access to sensitive GET endpoints. + """ + path = request.path + + # 1. Block access to sensitive settings/config APIs (even if GET) + # These endpoints reveal internal config or allow settings changes + sensitive_endpoints = [ + '/api/settings', # All settings routes + '/api/credentials', # Credentials management + '/api/market/watchlist/add', # Modifying watchlist (POST, already blocked but good to be explicit) + '/api/market/watchlist/remove' + ] + + # Check if path starts with any sensitive prefix + if any(path.startswith(endpoint) for endpoint in sensitive_endpoints): + return jsonify({ + 'code': 403, + 'msg': 'Demo mode: Access to settings and credentials is forbidden.', + 'data': None + }), 403 + + # 2. Allow safe methods (GET, HEAD, OPTIONS) + if request.method in ['GET', 'HEAD', 'OPTIONS']: + return None + + # 2. Allow Authentication (Login/Logout) + # The auth routes are mounted at /api/user (see app/routes/__init__.py) + if request.path.endswith('/login') or request.path.endswith('/logout'): + return None + + # 3. Allow specific read-only POST endpoints (Whitelist) + # Some search/query endpoints use POST for complex payloads but don't modify state. + whitelist_post_endpoints = [ + '/api/indicator/getIndicators', # Search indicators + '/api/market/klines', # Fetch K-lines (sometimes POST) + '/api/ai/chat', # AI Chat (generates response, doesn't mutate system state) + '/api/analysis/indicator', # Analysis request + '/api/analysis/ai_analysis' # AI Analysis request + ] + + # Check if current path ends with any whitelist item + if any(request.path.endswith(endpoint) for endpoint in whitelist_post_endpoints): + return None + + # 4. Block everything else + return jsonify({ + 'code': 403, + 'msg': 'Demo mode: Read-only access. Forbidden to modify data.', + 'data': None + }), 403 + from app.routes import register_routes register_routes(app) diff --git a/backend_api_python/app/data/market_symbols_seed.py b/backend_api_python/app/data/market_symbols_seed.py index 5ec7ad7a7..a883c11db 100644 --- a/backend_api_python/app/data/market_symbols_seed.py +++ b/backend_api_python/app/data/market_symbols_seed.py @@ -1,120 +1,106 @@ """ -Seed symbol list used by Market APIs in local-only mode. +Market symbols seed data and lookup functions. -This file is derived from the legacy MySQL `qd_market_symbols` table (non-secret data). -It provides a deterministic offline list for: -- hot symbols per market -- lightweight symbol search +Data is stored in PostgreSQL table `qd_market_symbols` (initialized via migrations/init.sql). +This module provides helper functions to query hot symbols, search, and get symbol names. """ from __future__ import annotations from typing import Dict, List, Optional +from app.utils.logger import get_logger -SEED_MARKET_SYMBOLS: List[Dict] = [ - # AShare - {'market': 'AShare', 'symbol': '000001', 'name': 'ๅนณๅฎ‰้“ถ่กŒ', 'exchange': 'SZSE', 'currency': 'CNY', 'is_active': 1, 'is_hot': 1, 'sort_order': 100}, - {'market': 'AShare', 'symbol': '000002', 'name': 'ไธ‡็ง‘A', 'exchange': 'SZSE', 'currency': 'CNY', 'is_active': 1, 'is_hot': 1, 'sort_order': 99}, - {'market': 'AShare', 'symbol': '600000', 'name': 'ๆตฆๅ‘้“ถ่กŒ', 'exchange': 'SSE', 'currency': 'CNY', 'is_active': 1, 'is_hot': 1, 'sort_order': 98}, - {'market': 'AShare', 'symbol': '600036', 'name': 'ๆ‹›ๅ•†้“ถ่กŒ', 'exchange': 'SSE', 'currency': 'CNY', 'is_active': 1, 'is_hot': 1, 'sort_order': 97}, - {'market': 'AShare', 'symbol': '600519', 'name': '่ดตๅทž่Œ…ๅฐ', 'exchange': 'SSE', 'currency': 'CNY', 'is_active': 1, 'is_hot': 1, 'sort_order': 96}, - {'market': 'AShare', 'symbol': '000858', 'name': 'ไบ”็ฒฎๆถฒ', 'exchange': 'SZSE', 'currency': 'CNY', 'is_active': 1, 'is_hot': 1, 'sort_order': 95}, - {'market': 'AShare', 'symbol': '002415', 'name': 'ๆตทๅบทๅจ่ง†', 'exchange': 'SZSE', 'currency': 'CNY', 'is_active': 1, 'is_hot': 1, 'sort_order': 94}, - {'market': 'AShare', 'symbol': '300059', 'name': 'ไธœๆ–น่ดขๅฏŒ', 'exchange': 'SZSE', 'currency': 'CNY', 'is_active': 1, 'is_hot': 1, 'sort_order': 93}, - {'market': 'AShare', 'symbol': '000725', 'name': 'ไบฌไธœๆ–นA', 'exchange': 'SZSE', 'currency': 'CNY', 'is_active': 1, 'is_hot': 1, 'sort_order': 92}, - {'market': 'AShare', 'symbol': '002594', 'name': 'ๆฏ”ไบš่ฟช', 'exchange': 'SZSE', 'currency': 'CNY', 'is_active': 1, 'is_hot': 1, 'sort_order': 91}, - - # USStock - {'market': 'USStock', 'symbol': 'AAPL', 'name': 'Apple Inc.', 'exchange': 'NASDAQ', 'currency': 'USD', 'is_active': 1, 'is_hot': 1, 'sort_order': 100}, - {'market': 'USStock', 'symbol': 'MSFT', 'name': 'Microsoft Corporation', 'exchange': 'NASDAQ', 'currency': 'USD', 'is_active': 1, 'is_hot': 1, 'sort_order': 99}, - {'market': 'USStock', 'symbol': 'GOOGL', 'name': 'Alphabet Inc.', 'exchange': 'NASDAQ', 'currency': 'USD', 'is_active': 1, 'is_hot': 1, 'sort_order': 98}, - {'market': 'USStock', 'symbol': 'AMZN', 'name': 'Amazon.com Inc.', 'exchange': 'NASDAQ', 'currency': 'USD', 'is_active': 1, 'is_hot': 1, 'sort_order': 97}, - {'market': 'USStock', 'symbol': 'TSLA', 'name': 'Tesla, Inc.', 'exchange': 'NASDAQ', 'currency': 'USD', 'is_active': 1, 'is_hot': 1, 'sort_order': 96}, - {'market': 'USStock', 'symbol': 'META', 'name': 'Meta Platforms Inc.', 'exchange': 'NASDAQ', 'currency': 'USD', 'is_active': 1, 'is_hot': 1, 'sort_order': 95}, - {'market': 'USStock', 'symbol': 'NVDA', 'name': 'NVIDIA Corporation', 'exchange': 'NASDAQ', 'currency': 'USD', 'is_active': 1, 'is_hot': 1, 'sort_order': 94}, - {'market': 'USStock', 'symbol': 'JPM', 'name': 'JPMorgan Chase & Co.', 'exchange': 'NYSE', 'currency': 'USD', 'is_active': 1, 'is_hot': 1, 'sort_order': 93}, - {'market': 'USStock', 'symbol': 'V', 'name': 'Visa Inc.', 'exchange': 'NYSE', 'currency': 'USD', 'is_active': 1, 'is_hot': 1, 'sort_order': 92}, - {'market': 'USStock', 'symbol': 'JNJ', 'name': 'Johnson & Johnson', 'exchange': 'NYSE', 'currency': 'USD', 'is_active': 1, 'is_hot': 1, 'sort_order': 91}, - - # HShare - {'market': 'HShare', 'symbol': '00700', 'name': 'Tencent Holdings', 'exchange': 'HKEX', 'currency': 'HKD', 'is_active': 1, 'is_hot': 1, 'sort_order': 100}, - {'market': 'HShare', 'symbol': '09988', 'name': 'Alibaba Group', 'exchange': 'HKEX', 'currency': 'HKD', 'is_active': 1, 'is_hot': 1, 'sort_order': 99}, - {'market': 'HShare', 'symbol': '03690', 'name': 'Meituan', 'exchange': 'HKEX', 'currency': 'HKD', 'is_active': 1, 'is_hot': 1, 'sort_order': 98}, - {'market': 'HShare', 'symbol': '01810', 'name': 'Xiaomi Corporation', 'exchange': 'HKEX', 'currency': 'HKD', 'is_active': 1, 'is_hot': 1, 'sort_order': 97}, - {'market': 'HShare', 'symbol': '02318', 'name': 'Ping An Insurance', 'exchange': 'HKEX', 'currency': 'HKD', 'is_active': 1, 'is_hot': 1, 'sort_order': 96}, - {'market': 'HShare', 'symbol': '01398', 'name': 'ICBC', 'exchange': 'HKEX', 'currency': 'HKD', 'is_active': 1, 'is_hot': 1, 'sort_order': 95}, - {'market': 'HShare', 'symbol': '00939', 'name': 'CCB', 'exchange': 'HKEX', 'currency': 'HKD', 'is_active': 1, 'is_hot': 1, 'sort_order': 94}, - {'market': 'HShare', 'symbol': '01299', 'name': 'AIA Group', 'exchange': 'HKEX', 'currency': 'HKD', 'is_active': 1, 'is_hot': 1, 'sort_order': 93}, - {'market': 'HShare', 'symbol': '02020', 'name': 'Anta Sports', 'exchange': 'HKEX', 'currency': 'HKD', 'is_active': 1, 'is_hot': 1, 'sort_order': 92}, - {'market': 'HShare', 'symbol': '01024', 'name': 'Kuaishou Technology', 'exchange': 'HKEX', 'currency': 'HKD', 'is_active': 1, 'is_hot': 1, 'sort_order': 91}, - - # Crypto - {'market': 'Crypto', 'symbol': 'BTC/USDT', 'name': 'Bitcoin', 'exchange': 'Binance', 'currency': 'USDT', 'is_active': 1, 'is_hot': 1, 'sort_order': 100}, - {'market': 'Crypto', 'symbol': 'ETH/USDT', 'name': 'Ethereum', 'exchange': 'Binance', 'currency': 'USDT', 'is_active': 1, 'is_hot': 1, 'sort_order': 99}, - {'market': 'Crypto', 'symbol': 'BNB/USDT', 'name': 'BNB', 'exchange': 'Binance', 'currency': 'USDT', 'is_active': 1, 'is_hot': 1, 'sort_order': 98}, - {'market': 'Crypto', 'symbol': 'SOL/USDT', 'name': 'Solana', 'exchange': 'Binance', 'currency': 'USDT', 'is_active': 1, 'is_hot': 1, 'sort_order': 97}, - {'market': 'Crypto', 'symbol': 'XRP/USDT', 'name': 'Ripple', 'exchange': 'Binance', 'currency': 'USDT', 'is_active': 1, 'is_hot': 1, 'sort_order': 96}, - {'market': 'Crypto', 'symbol': 'ADA/USDT', 'name': 'Cardano', 'exchange': 'Binance', 'currency': 'USDT', 'is_active': 1, 'is_hot': 1, 'sort_order': 95}, - {'market': 'Crypto', 'symbol': 'DOGE/USDT', 'name': 'Dogecoin', 'exchange': 'Binance', 'currency': 'USDT', 'is_active': 1, 'is_hot': 1, 'sort_order': 94}, - {'market': 'Crypto', 'symbol': 'DOT/USDT', 'name': 'Polkadot', 'exchange': 'Binance', 'currency': 'USDT', 'is_active': 1, 'is_hot': 1, 'sort_order': 93}, - {'market': 'Crypto', 'symbol': 'MATIC/USDT', 'name': 'Polygon', 'exchange': 'Binance', 'currency': 'USDT', 'is_active': 1, 'is_hot': 1, 'sort_order': 92}, - {'market': 'Crypto', 'symbol': 'AVAX/USDT', 'name': 'Avalanche', 'exchange': 'Binance', 'currency': 'USDT', 'is_active': 1, 'is_hot': 1, 'sort_order': 91}, - - # Forex (names are kept as-is from legacy dump) - {'market': 'Forex', 'symbol': 'XAUUSD', 'name': 'Euro/US Dollar', 'exchange': 'Forex', 'currency': 'USD', 'is_active': 1, 'is_hot': 1, 'sort_order': 100}, - {'market': 'Forex', 'symbol': 'XAGUSD', 'name': 'British Pound/US Dollar', 'exchange': 'Forex', 'currency': 'USD', 'is_active': 1, 'is_hot': 1, 'sort_order': 99}, - {'market': 'Forex', 'symbol': 'EURUSD', 'name': 'US Dollar/Japanese Yen', 'exchange': 'Forex', 'currency': 'USD', 'is_active': 1, 'is_hot': 1, 'sort_order': 98}, - {'market': 'Forex', 'symbol': 'GBPUSD', 'name': 'Australian Dollar/US Dollar', 'exchange': 'Forex', 'currency': 'USD', 'is_active': 1, 'is_hot': 1, 'sort_order': 97}, - {'market': 'Forex', 'symbol': 'USDJPY', 'name': 'US Dollar/Canadian Dollar', 'exchange': 'Forex', 'currency': 'USD', 'is_active': 1, 'is_hot': 1, 'sort_order': 96}, - {'market': 'Forex', 'symbol': 'AUDUSD', 'name': 'US Dollar/Swiss Franc', 'exchange': 'Forex', 'currency': 'USD', 'is_active': 1, 'is_hot': 1, 'sort_order': 95}, - {'market': 'Forex', 'symbol': 'USDCAD', 'name': 'New Zealand Dollar/US Dollar', 'exchange': 'Forex', 'currency': 'USD', 'is_active': 1, 'is_hot': 1, 'sort_order': 94}, - {'market': 'Forex', 'symbol': 'NZDUSD', 'name': 'US Dollar/Offshore Chinese Yuan', 'exchange': 'Forex', 'currency': 'USD', 'is_active': 1, 'is_hot': 1, 'sort_order': 93}, - {'market': 'Forex', 'symbol': 'USDCHF', 'name': 'Euro/British Pound', 'exchange': 'Forex', 'currency': 'EUR', 'is_active': 1, 'is_hot': 1, 'sort_order': 92}, - {'market': 'Forex', 'symbol': 'EURJPY', 'name': 'Euro/Japanese Yen', 'exchange': 'Forex', 'currency': 'EUR', 'is_active': 1, 'is_hot': 1, 'sort_order': 91}, - - # Futures - {'market': 'Futures', 'symbol': 'CL', 'name': 'WTI Crude Oil', 'exchange': 'NYMEX', 'currency': 'USD', 'is_active': 1, 'is_hot': 1, 'sort_order': 100}, - {'market': 'Futures', 'symbol': 'GC', 'name': 'Gold', 'exchange': 'COMEX', 'currency': 'USD', 'is_active': 1, 'is_hot': 1, 'sort_order': 99}, - {'market': 'Futures', 'symbol': 'SI', 'name': 'Silver', 'exchange': 'COMEX', 'currency': 'USD', 'is_active': 1, 'is_hot': 1, 'sort_order': 98}, - {'market': 'Futures', 'symbol': 'NG', 'name': 'Natural Gas', 'exchange': 'NYMEX', 'currency': 'USD', 'is_active': 1, 'is_hot': 1, 'sort_order': 97}, - {'market': 'Futures', 'symbol': 'HG', 'name': 'Copper', 'exchange': 'COMEX', 'currency': 'USD', 'is_active': 1, 'is_hot': 1, 'sort_order': 96}, - {'market': 'Futures', 'symbol': 'ZC', 'name': 'Corn', 'exchange': 'CBOT', 'currency': 'USD', 'is_active': 1, 'is_hot': 1, 'sort_order': 95}, - {'market': 'Futures', 'symbol': 'ZS', 'name': 'Soybeans', 'exchange': 'CBOT', 'currency': 'USD', 'is_active': 1, 'is_hot': 1, 'sort_order': 94}, - {'market': 'Futures', 'symbol': 'ZW', 'name': 'Wheat', 'exchange': 'CBOT', 'currency': 'USD', 'is_active': 1, 'is_hot': 1, 'sort_order': 93}, - {'market': 'Futures', 'symbol': 'ES', 'name': 'S&P 500 E-mini', 'exchange': 'CME', 'currency': 'USD', 'is_active': 1, 'is_hot': 1, 'sort_order': 92}, - {'market': 'Futures', 'symbol': 'NQ', 'name': 'NASDAQ 100 E-mini', 'exchange': 'CME', 'currency': 'USD', 'is_active': 1, 'is_hot': 1, 'sort_order': 91}, -] +logger = get_logger(__name__) + + +def _get_db_connection(): + """Get database connection, returns None if not available.""" + try: + from app.utils.db import get_db_connection + return get_db_connection() + except Exception: + return None def get_hot_symbols(market: str, limit: int = 10) -> List[Dict]: + """ + Get hot symbols for a market. + + Args: + market: Market name (e.g., 'Crypto', 'USStock', 'AShare') + limit: Maximum number of results + + Returns: + List of {market, symbol, name} dicts + """ market = (market or '').strip() - items = [x for x in SEED_MARKET_SYMBOLS if x.get('market') == market and int(x.get('is_active', 1)) == 1 and int(x.get('is_hot', 0)) == 1] - items.sort(key=lambda x: int(x.get('sort_order', 0)), reverse=True) - return [{'market': x['market'], 'symbol': x['symbol'], 'name': x.get('name') or ''} for x in items[: max(limit, 0)]] + if not market: + return [] + + try: + with _get_db_connection() as db: + cur = db.cursor() + cur.execute( + """ + SELECT market, symbol, name FROM qd_market_symbols + WHERE market = ? AND is_active = 1 AND is_hot = 1 + ORDER BY sort_order DESC + LIMIT ? + """, + (market, max(limit, 0)) + ) + rows = cur.fetchall() or [] + cur.close() + return [{'market': r['market'], 'symbol': r['symbol'], 'name': r.get('name') or ''} for r in rows] + except Exception as e: + logger.debug(f"get_hot_symbols from DB failed: {e}") + return [] def search_symbols(market: str, keyword: str, limit: int = 20) -> List[Dict]: + """ + Search symbols by keyword. + + Args: + market: Market name + keyword: Search keyword (matches symbol or name) + limit: Maximum number of results + + Returns: + List of {market, symbol, name} dicts + """ market = (market or '').strip() - kw = (keyword or '').strip().upper() + kw = (keyword or '').strip() if not market or not kw: return [] - - items = [x for x in SEED_MARKET_SYMBOLS if x.get('market') == market and int(x.get('is_active', 1)) == 1] - out: List[Dict] = [] - - for x in sorted(items, key=lambda i: int(i.get('sort_order', 0)), reverse=True): - sym = str(x.get('symbol') or '').upper() - name = str(x.get('name') or '').upper() - if kw in sym or kw in name: - out.append({'market': x['market'], 'symbol': x['symbol'], 'name': x.get('name') or ''}) - if len(out) >= max(limit, 0): - break - - return out + + # Use ILIKE for case-insensitive search in PostgreSQL + pattern = f'%{kw}%' + + try: + with _get_db_connection() as db: + cur = db.cursor() + cur.execute( + """ + SELECT market, symbol, name FROM qd_market_symbols + WHERE market = ? AND is_active = 1 + AND (UPPER(symbol) LIKE UPPER(?) OR UPPER(name) LIKE UPPER(?)) + ORDER BY sort_order DESC + LIMIT ? + """, + (market, pattern, pattern, max(limit, 0)) + ) + rows = cur.fetchall() or [] + cur.close() + return [{'market': r['market'], 'symbol': r['symbol'], 'name': r.get('name') or ''} for r in rows] + except Exception as e: + logger.debug(f"search_symbols from DB failed: {e}") + return [] def _normalize_for_match(market: str, symbol: str) -> str: + """Normalize symbol for matching (padding digits for A-Share/H-Share).""" m = (market or '').strip() s = (symbol or '').strip().upper() if not m or not s: @@ -123,7 +109,7 @@ def _normalize_for_match(market: str, symbol: str) -> str: # A-Share codes are usually 6 digits if m == 'AShare' and s.isdigit() and len(s) < 6: s = s.zfill(6) - # H-Share codes are often 5 digits in the dump + # H-Share codes are often 5 digits if m == 'HShare' and s.isdigit() and len(s) < 5: s = s.zfill(5) return s @@ -131,8 +117,14 @@ def _normalize_for_match(market: str, symbol: str) -> str: def get_symbol_name(market: str, symbol: str) -> Optional[str]: """ - Best-effort exact lookup for display name. - Returns None if not found. + Get display name for a symbol. + + Args: + market: Market name + symbol: Symbol (e.g., 'AAPL', 'BTC/USDT', '600519') + + Returns: + Symbol name or None if not found """ m = (market or '').strip() if not m: @@ -142,20 +134,65 @@ def get_symbol_name(market: str, symbol: str) -> Optional[str]: if not s: return None - # Crypto: allow user to pass BTC (try BTC/USDT) or full pair. + # Crypto: allow user to pass BTC (try BTC/USDT) or full pair candidate_symbols = [s] if m == 'Crypto' and '/' not in s: candidate_symbols.append(f"{s}/USDT") - for item in SEED_MARKET_SYMBOLS: - if item.get('market') != m: - continue - item_sym = _normalize_for_match(m, str(item.get('symbol') or '')) - for cand in candidate_symbols: - if item_sym == cand: - name = item.get('name') - return str(name) if name else None - + try: + with _get_db_connection() as db: + cur = db.cursor() + for cand in candidate_symbols: + cur.execute( + "SELECT name FROM qd_market_symbols WHERE market = ? AND UPPER(symbol) = ?", + (m, cand.upper()) + ) + row = cur.fetchone() + if row and row.get('name'): + cur.close() + return str(row['name']) + cur.close() + except Exception as e: + logger.debug(f"get_symbol_name from DB failed: {e}") + return None +def get_all_symbols(market: str = None) -> List[Dict]: + """ + Get all active symbols, optionally filtered by market. + + Args: + market: Optional market filter + + Returns: + List of symbol records + """ + try: + with _get_db_connection() as db: + cur = db.cursor() + if market: + cur.execute( + """ + SELECT market, symbol, name, exchange, currency, is_hot, sort_order + FROM qd_market_symbols + WHERE market = ? AND is_active = 1 + ORDER BY sort_order DESC + """, + (market.strip(),) + ) + else: + cur.execute( + """ + SELECT market, symbol, name, exchange, currency, is_hot, sort_order + FROM qd_market_symbols + WHERE is_active = 1 + ORDER BY market, sort_order DESC + """ + ) + rows = cur.fetchall() or [] + cur.close() + return [dict(r) for r in rows] + except Exception as e: + logger.debug(f"get_all_symbols from DB failed: {e}") + return [] diff --git a/backend_api_python/app/routes/__init__.py b/backend_api_python/app/routes/__init__.py index 8c52f2f2b..9393b0e3e 100644 --- a/backend_api_python/app/routes/__init__.py +++ b/backend_api_python/app/routes/__init__.py @@ -21,9 +21,12 @@ def register_routes(app: Flask): from app.routes.portfolio import portfolio_bp from app.routes.ibkr import ibkr_bp from app.routes.mt5 import mt5_bp + from app.routes.user import user_bp + from app.routes.strategy_code import strategy_code_bp app.register_blueprint(health_bp) app.register_blueprint(auth_bp, url_prefix='/api/user') + app.register_blueprint(user_bp, url_prefix='/api/users') # User management app.register_blueprint(kline_bp, url_prefix='/api/indicator') app.register_blueprint(analysis_bp, url_prefix='/api/analysis') app.register_blueprint(backtest_bp, url_prefix='/api/indicator') @@ -37,4 +40,4 @@ def register_routes(app: Flask): app.register_blueprint(portfolio_bp, url_prefix='/api/portfolio') app.register_blueprint(ibkr_bp, url_prefix='/api/ibkr') app.register_blueprint(mt5_bp, url_prefix='/api/mt5') - + app.register_blueprint(strategy_code_bp, url_prefix='/api/strategy-code') diff --git a/backend_api_python/app/routes/ai_chat.py b/backend_api_python/app/routes/ai_chat.py index 81e37025f..14831ebd3 100644 --- a/backend_api_python/app/routes/ai_chat.py +++ b/backend_api_python/app/routes/ai_chat.py @@ -32,7 +32,7 @@ def chat_message(): }) -@ai_chat_bp.route('/chat/history', methods=['POST']) +@ai_chat_bp.route('/chat/history', methods=['GET']) def get_chat_history(): """Return empty history (compatibility stub).""" return jsonify({'code': 1, 'msg': 'success', 'data': []}) diff --git a/backend_api_python/app/routes/analysis.py b/backend_api_python/app/routes/analysis.py index 8ec144b1c..ab32b255f 100644 --- a/backend_api_python/app/routes/analysis.py +++ b/backend_api_python/app/routes/analysis.py @@ -2,7 +2,7 @@ Analysis API routes (local-only). Implements multi-dimensional analysis plus lightweight task/history APIs for the frontend. """ -from flask import Blueprint, request, jsonify, Response +from flask import Blueprint, request, jsonify, Response, g import json import traceback import time @@ -11,11 +11,11 @@ from app.utils.logger import get_logger from app.utils.db import get_db_connection from app.utils.language import detect_request_language +from app.utils.auth import login_required logger = get_logger(__name__) analysis_bp = Blueprint('analysis', __name__) -DEFAULT_USER_ID = 1 def _now_ts() -> int: return int(time.time()) @@ -23,27 +23,58 @@ def _now_ts() -> int: def _normalize_symbol(symbol: str) -> str: return (symbol or '').strip().upper() -def _store_task(market: str, symbol: str, model: str, language: str, status: str, result: dict = None, error_message: str = "") -> int: - now = _now_ts() +def _store_task(user_id: int, market: str, symbol: str, model: str, language: str, status: str, result: dict = None, error_message: str = "") -> int: + """Create a new task record. For pending tasks, completed_at is NULL.""" result_json = json.dumps(result or {}, ensure_ascii=False) with get_db_connection() as db: cur = db.cursor() - cur.execute( - """ - INSERT INTO qd_analysis_tasks (user_id, market, symbol, model, language, status, result_json, error_message, created_at, completed_at) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) - """, - (DEFAULT_USER_ID, market, symbol, model or '', language or 'en-US', status, result_json, error_message or '', now, now if status in ['completed', 'failed'] else None) - ) + if status in ['completed', 'failed']: + cur.execute( + """ + INSERT INTO qd_analysis_tasks (user_id, market, symbol, model, language, status, result_json, error_message, created_at, completed_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, NOW(), NOW()) + """, + (user_id, market, symbol, model or '', language or 'en-US', status, result_json, error_message or '') + ) + else: + cur.execute( + """ + INSERT INTO qd_analysis_tasks (user_id, market, symbol, model, language, status, result_json, error_message, created_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, NOW()) + """, + (user_id, market, symbol, model or '', language or 'en-US', status, result_json, error_message or '') + ) task_id = cur.lastrowid db.commit() cur.close() return int(task_id) -def _get_task(task_id: int) -> dict: + +def _update_task(task_id: int, status: str, result: dict = None, error_message: str = "") -> bool: + """Update an existing task with result and status.""" + try: + result_json = json.dumps(result or {}, ensure_ascii=False) + with get_db_connection() as db: + cur = db.cursor() + cur.execute( + """ + UPDATE qd_analysis_tasks + SET status = ?, result_json = ?, error_message = ?, completed_at = NOW() + WHERE id = ? + """, + (status, result_json, error_message or '', task_id) + ) + db.commit() + cur.close() + return True + except Exception as e: + logger.error(f"_update_task failed: {e}") + return False + +def _get_task(task_id: int, user_id: int) -> dict: with get_db_connection() as db: cur = db.cursor() - cur.execute("SELECT * FROM qd_analysis_tasks WHERE id = ? AND user_id = ?", (task_id, DEFAULT_USER_ID)) + cur.execute("SELECT * FROM qd_analysis_tasks WHERE id = ? AND user_id = ?", (task_id, user_id)) row = cur.fetchone() cur.close() return row or None @@ -60,16 +91,25 @@ def _parse_result_json(row: dict) -> dict: @analysis_bp.route('/multi', methods=['POST']) @analysis_bp.route('/multiAnalysis', methods=['POST']) # compatibility with legacy naming +@login_required def multi_analysis(): """ - Multi-dimensional analysis. + Multi-dimensional analysis for the current user. Request body: market: Market (AShare, USStock, HShare, Crypto, Forex, Futures) symbol: Symbol language: Optional; if omitted we will detect from request headers (X-App-Lang / Accept-Language) """ + task_id = None + user_id = None + market = '' + symbol = '' + model = None + language = 'en-US' + try: + user_id = g.user_id data = request.get_json() if not data: return jsonify({ @@ -100,49 +140,64 @@ def multi_analysis(): logger.info(f"Analyze request: {market}:{symbol}, use_multi_agent={use_multi_agent}, model={model}") - # Create analysis service instance (local-only; no paid credits) - service = AnalysisService(use_multi_agent=use_multi_agent) - result = service.analyze(market, symbol, language, model=model, timeframe=timeframe) - - # Persist as "completed" history (no paid credits in local mode). - task_id = _store_task(market, symbol, model or '', language, 'completed', result=result, error_message='') - - # Keep frontend compatible: if it expects task polling, it can still use the id. - result_payload = dict(result or {}) - result_payload['task_id'] = task_id + # Step 1: Create a "pending" task record first (so user can see progress in history) + task_id = _store_task(user_id, market, symbol, model or '', language, 'pending', result={}, error_message='') + + # Step 2: Run analysis in background thread (so user can navigate away) + import threading + + def run_analysis_background(task_id_inner, market_inner, symbol_inner, language_inner, model_inner, timeframe_inner, use_multi_agent_inner): + """Execute analysis in background and update task when done.""" + try: + service = AnalysisService(use_multi_agent=use_multi_agent_inner) + result = service.analyze(market_inner, symbol_inner, language_inner, model=model_inner, timeframe=timeframe_inner) + _update_task(task_id_inner, 'completed', result=result, error_message='') + logger.info(f"Background analysis completed for task {task_id_inner}") + except Exception as e: + logger.error(f"Background analysis failed for task {task_id_inner}: {e}") + _update_task(task_id_inner, 'failed', result={}, error_message=str(e)) + + analysis_thread = threading.Thread( + target=run_analysis_background, + args=(task_id, market, symbol, language, model, timeframe, use_multi_agent), + daemon=False # Keep running even if main request thread ends + ) + analysis_thread.start() - return jsonify({'code': 1, 'msg': 'success', 'data': result_payload}) + # Step 3: Return immediately with task_id (frontend will poll for results) + return jsonify({'code': 1, 'msg': 'success', 'data': {'task_id': task_id, 'status': 'pending'}}) except Exception as e: logger.error(f"Analysis failed: {str(e)}") logger.error(traceback.format_exc()) + + # Update existing task as "failed", or create a new failed record if task_id doesn't exist try: - market = (data or {}).get('market', '') if 'data' in locals() else '' - symbol = (data or {}).get('symbol', '') if 'data' in locals() else '' - language = detect_request_language(request, body=(data or {}), default='en-US') - model = (data or {}).get('model', '') if 'data' in locals() else '' - market = str(market).strip() - symbol = _normalize_symbol(symbol) - _store_task(market, symbol, model, language, 'failed', result={}, error_message=str(e)) + if task_id: + _update_task(task_id, 'failed', result={}, error_message=str(e)) + elif user_id: + _store_task(user_id, market, symbol, model or '', language, 'failed', result={}, error_message=str(e)) except Exception: pass + return jsonify({ 'code': 0, 'msg': f'Analysis failed: {str(e)}', - 'data': None + 'data': {'task_id': task_id} if task_id else None }), 500 -@analysis_bp.route('/getTaskStatus', methods=['POST']) +@analysis_bp.route('/getTaskStatus', methods=['GET']) +@login_required def get_task_status(): - """Frontend compatibility: return task status + result by task_id.""" + """Frontend compatibility: return task status + result by task_id for the current user.""" try: - data = request.get_json() or {} - task_id = int(data.get('task_id') or 0) + user_id = g.user_id + task_id = int(request.args.get('task_id') or 0) if not task_id: return jsonify({'code': 0, 'msg': 'Missing task_id', 'data': None}), 400 - row = _get_task(task_id) + row = _get_task(task_id, user_id) if not row: return jsonify({'code': 0, 'msg': 'Task not found', 'data': None}), 404 @@ -161,20 +216,21 @@ def get_task_status(): return jsonify({'code': 0, 'msg': str(e), 'data': None}), 500 -@analysis_bp.route('/getHistoryList', methods=['POST']) +@analysis_bp.route('/getHistoryList', methods=['GET']) +@login_required def get_history_list(): - """Frontend compatibility: paginated analysis history for the single user.""" + """Frontend compatibility: paginated analysis history for the current user.""" try: - data = request.get_json() or {} - page = int(data.get('page') or 1) - pagesize = int(data.get('pagesize') or 20) + user_id = g.user_id + page = int(request.args.get('page') or 1) + pagesize = int(request.args.get('pagesize') or 20) page = max(page, 1) pagesize = min(max(pagesize, 1), 100) offset = (page - 1) * pagesize with get_db_connection() as db: cur = db.cursor() - cur.execute("SELECT COUNT(1) as cnt FROM qd_analysis_tasks WHERE user_id = ?", (DEFAULT_USER_ID,)) + cur.execute("SELECT COUNT(1) as cnt FROM qd_analysis_tasks WHERE user_id = ?", (user_id,)) total = int((cur.fetchone() or {}).get('cnt') or 0) cur.execute( """ @@ -184,7 +240,7 @@ def get_history_list(): ORDER BY id DESC LIMIT ? OFFSET ? """, - (DEFAULT_USER_ID, pagesize, offset) + (user_id, pagesize, offset) ) rows = cur.fetchall() or [] cur.close() @@ -192,6 +248,11 @@ def get_history_list(): out = [] for r in rows: has_result = bool((r.get('result_json') or '').strip()) + # Convert datetime to Unix timestamp for frontend compatibility + created_at = r.get('created_at') + completed_at = r.get('completed_at') + createtime = int(created_at.timestamp()) if created_at else 0 + completetime = int(completed_at.timestamp()) if completed_at else None out.append({ 'id': r.get('id'), 'market': r.get('market'), @@ -200,8 +261,8 @@ def get_history_list(): 'status': r.get('status'), 'has_result': has_result, 'error_message': r.get('error_message') or '', - 'createtime': int(r.get('created_at') or 0), - 'completetime': int(r.get('completed_at') or 0) if r.get('completed_at') else None + 'createtime': createtime, + 'completetime': completetime }) return jsonify({'code': 1, 'msg': 'success', 'data': {'list': out, 'total': total}}) @@ -211,13 +272,46 @@ def get_history_list(): return jsonify({'code': 0, 'msg': str(e), 'data': {'list': [], 'total': 0}}), 500 +@analysis_bp.route('/deleteTask', methods=['POST']) +@login_required +def delete_task(): + """Delete an analysis task by task_id for the current user.""" + try: + user_id = g.user_id + data = request.get_json() or {} + task_id = int(data.get('task_id') or 0) + + if not task_id: + return jsonify({'code': 0, 'msg': 'Missing task_id', 'data': None}), 400 + + # Verify task belongs to user + row = _get_task(task_id, user_id) + if not row: + return jsonify({'code': 0, 'msg': 'Task not found', 'data': None}), 404 + + # Delete the task + with get_db_connection() as db: + cur = db.cursor() + cur.execute("DELETE FROM qd_analysis_tasks WHERE id = ? AND user_id = ?", (task_id, user_id)) + db.commit() + cur.close() + + return jsonify({'code': 1, 'msg': 'success', 'data': {'deleted_id': task_id}}) + except Exception as e: + logger.error(f"delete_task failed: {str(e)}") + logger.error(traceback.format_exc()) + return jsonify({'code': 0, 'msg': str(e), 'data': None}), 500 + + @analysis_bp.route('/createTask', methods=['POST']) +@login_required def create_task(): """ Compatibility endpoint for legacy frontend. In local-only mode we do not run a separate async worker; we create a completed task record immediately. """ try: + user_id = g.user_id data = request.get_json() or {} market = str((data.get('market') or '')).strip() symbol = _normalize_symbol(data.get('symbol')) @@ -228,7 +322,7 @@ def create_task(): return jsonify({'code': 0, 'msg': 'Missing market or symbol', 'data': None}), 400 # Create a placeholder "pending" task so frontend can show task_id if it needs it. - task_id = _store_task(market, symbol, str(model), language, 'pending', result={}, error_message='') + task_id = _store_task(user_id, market, symbol, str(model), language, 'pending', result={}, error_message='') return jsonify({'code': 1, 'msg': 'success', 'data': {'task_id': task_id, 'status': 'pending'}}) except Exception as e: logger.error(f"create_task failed: {str(e)}") @@ -236,47 +330,8 @@ def create_task(): return jsonify({'code': 0, 'msg': str(e), 'data': None}), 500 -@analysis_bp.route('/stream', methods=['POST']) -def stream_analysis(): - """Streaming analysis (SSE).""" - try: - data = request.get_json() - if not data: - return jsonify({'code': 0, 'msg': 'Request body is required'}), 400 - - market = data.get('market', '') - symbol = data.get('symbol', '') - language = detect_request_language(request, body=data, default='en-US') - use_multi_agent = data.get('use_multi_agent', None) - timeframe = data.get('timeframe', '1D') - - def generate(): - try: - yield f"data: {json.dumps({'status': 'started', 'message': 'Analysis started'})}\n\n" - - service = AnalysisService(use_multi_agent=use_multi_agent) - result = service.analyze(market, symbol, language, timeframe=timeframe) - - yield f"data: {json.dumps({'status': 'completed', 'data': result})}\n\n" - except Exception as e: - yield f"data: {json.dumps({'status': 'error', 'message': str(e)})}\n\n" - - return Response( - generate(), - mimetype='text/event-stream', - headers={ - 'Cache-Control': 'no-cache', - 'Connection': 'keep-alive', - 'X-Accel-Buffering': 'no' - } - ) - - except Exception as e: - logger.error(f"Streaming analysis failed: {str(e)}") - return jsonify({'code': 0, 'msg': str(e)}), 500 - - @analysis_bp.route('/reflect', methods=['POST']) +@login_required def reflect(): """ Reflection API. diff --git a/backend_api_python/app/routes/auth.py b/backend_api_python/app/routes/auth.py index 36993232f..333eba720 100644 --- a/backend_api_python/app/routes/auth.py +++ b/backend_api_python/app/routes/auth.py @@ -1,15 +1,38 @@ +""" +Authentication API Routes -from flask import Blueprint, request, jsonify +Handles login, logout, and user info retrieval. +Supports both multi-user (database) and single-user (legacy) modes. +""" +import os +from flask import Blueprint, request, jsonify, g from app.config.settings import Config -from app.utils.auth import generate_token +from app.utils.auth import generate_token, login_required, authenticate_legacy from app.utils.logger import get_logger -auth_bp = Blueprint('auth', __name__) logger = get_logger(__name__) +auth_bp = Blueprint('auth', __name__) + + +def _is_single_user_mode() -> bool: + """Check if system is in single-user (legacy) mode""" + return os.getenv('SINGLE_USER_MODE', 'false').lower() == 'true' + + @auth_bp.route('/login', methods=['POST']) def login(): - """Login (single-user, env-configured credentials).""" + """ + User login endpoint. + + Request body: + username: str + password: str + + Returns: + token: JWT token + userinfo: User information + """ try: data = request.get_json() if not data: @@ -20,49 +43,135 @@ def login(): if not username or not password: return jsonify({'code': 400, 'msg': 'Missing username or password', 'data': None}), 400 - - # Validate credentials from environment / settings - if username == Config.ADMIN_USER and password == Config.ADMIN_PASSWORD: - token = generate_token(username) - if token: - return jsonify({ - 'code': 1, - 'msg': 'Login successful', - 'data': { - 'token': token, - 'userinfo': { - 'username': username, - 'nickname': 'Admin', - 'avatar': '' - } - } - }) - else: - return jsonify({'code': 500, 'msg': 'Token generation error', 'data': None}), 500 - else: + + is_demo = os.getenv('IS_DEMO_MODE', 'false').lower() == 'true' + user = None + + # Try multi-user authentication first + if not _is_single_user_mode(): + try: + from app.services.user_service import get_user_service + user = get_user_service().authenticate(username, password) + except Exception as e: + logger.warning(f"Multi-user auth failed, trying legacy: {e}") + + # Fallback to legacy single-user mode + if not user: + user = authenticate_legacy(username, password) + + if not user: return jsonify({'code': 0, 'msg': 'Invalid credentials', 'data': None}), 401 + + # Generate token + token = generate_token( + user_id=user.get('id') or user.get('user_id', 1), + username=user.get('username', username), + role=user.get('role', 'admin') + ) + + if not token: + return jsonify({'code': 500, 'msg': 'Token generation error', 'data': None}), 500 + + # Build user info for frontend + userinfo = { + 'id': user.get('id') or user.get('user_id', 1), + 'username': user.get('username', username), + 'nickname': user.get('nickname', 'User') + (' (Demo)' if is_demo else ''), + 'avatar': user.get('avatar', '/avatar2.jpg'), + 'is_demo': is_demo, + 'role': { + 'id': user.get('role', 'admin'), + 'permissions': _get_permissions(user.get('role', 'admin')) + } + } + + return jsonify({ + 'code': 1, + 'msg': 'Login successful', + 'data': { + 'token': token, + 'userinfo': userinfo + } + }) except Exception as e: logger.error(f"Login error: {e}") return jsonify({'code': 500, 'msg': str(e), 'data': None}), 500 + @auth_bp.route('/logout', methods=['POST']) def logout(): """Logout (client removes token; server is stateless).""" return jsonify({'code': 1, 'msg': 'Logout successful', 'data': None}) + @auth_bp.route('/info', methods=['GET']) +@login_required def get_user_info(): - """Get user info (single-user mock).""" - return jsonify({ - 'code': 1, - 'msg': 'Success', - 'data': { - 'id': 1, - 'username': Config.ADMIN_USER, - 'nickname': 'Admin', - 'avatar': '/avatar2.jpg', - 'role': {'id': 'admin', 'permissions': ['dashboard', 'exception', 'account']} - } - }) + """Get current user info.""" + try: + is_demo = os.getenv('IS_DEMO_MODE', 'false').lower() == 'true' + + user_id = getattr(g, 'user_id', 1) + username = getattr(g, 'user', Config.ADMIN_USER) + role = getattr(g, 'user_role', 'admin') + + # Try to get full user info from database + user_data = None + if not _is_single_user_mode(): + try: + from app.services.user_service import get_user_service + user_data = get_user_service().get_user_by_id(user_id) + except Exception as e: + logger.warning(f"Failed to get user from database: {e}") + + if user_data: + return jsonify({ + 'code': 1, + 'msg': 'Success', + 'data': { + 'id': user_data.get('id'), + 'username': user_data.get('username'), + 'nickname': user_data.get('nickname', 'User') + (' (Demo)' if is_demo else ''), + 'email': user_data.get('email'), + 'avatar': user_data.get('avatar', '/avatar2.jpg'), + 'is_demo': is_demo, + 'role': { + 'id': user_data.get('role', 'user'), + 'permissions': _get_permissions(user_data.get('role', 'user')) + } + } + }) + + # Fallback for legacy mode + return jsonify({ + 'code': 1, + 'msg': 'Success', + 'data': { + 'id': user_id, + 'username': username, + 'nickname': 'Admin' + (' (Demo)' if is_demo else ''), + 'avatar': '/avatar2.jpg', + 'is_demo': is_demo, + 'role': { + 'id': role, + 'permissions': _get_permissions(role) + } + } + }) + except Exception as e: + logger.error(f"get_user_info error: {e}") + return jsonify({'code': 500, 'msg': str(e), 'data': None}), 500 + +def _get_permissions(role: str) -> list: + """Get permissions list for a role""" + try: + from app.services.user_service import get_user_service + return get_user_service().get_user_permissions(role) + except Exception: + # Default permissions for admin + if role == 'admin': + return ['dashboard', 'view', 'indicator', 'backtest', 'strategy', + 'portfolio', 'settings', 'user_manage', 'credentials'] + return ['dashboard', 'view', 'indicator', 'backtest', 'strategy', 'portfolio'] diff --git a/backend_api_python/app/routes/backtest.py b/backend_api_python/app/routes/backtest.py index bd0522a6e..0dcd15fbe 100644 --- a/backend_api_python/app/routes/backtest.py +++ b/backend_api_python/app/routes/backtest.py @@ -1,7 +1,7 @@ """ Backtest API routes """ -from flask import Blueprint, request, jsonify +from flask import Blueprint, request, jsonify, g from datetime import datetime import traceback import json @@ -11,6 +11,7 @@ from app.services.backtest import BacktestService from app.utils.logger import get_logger from app.utils.db import get_db_connection +from app.utils.auth import login_required import requests logger = get_logger(__name__) @@ -82,12 +83,12 @@ def _normalize_lang(lang: str | None) -> str: return l2 if l2 in supported else "zh-CN" -@backtest_bp.route('/backtest/precision-info', methods=['POST']) +@backtest_bp.route('/backtest/precision-info', methods=['GET']) def get_precision_info(): """ ่Žทๅ–ๅ›žๆต‹็ฒพๅบฆไฟกๆฏ๏ผˆ็”จไบŽๅ‰็ซฏๆ็คบ๏ผ‰ - Params: + Params (Query String): market: ๅธ‚ๅœบ็ฑปๅž‹ startDate: ๅผ€ๅง‹ๆ—ฅๆœŸ (YYYY-MM-DD) endDate: ็ป“ๆŸๆ—ฅๆœŸ (YYYY-MM-DD) @@ -96,13 +97,10 @@ def get_precision_info(): ็ฒพๅบฆไฟกๆฏ๏ผŒๅŒ…ๅซๆŽจ่็š„ๆ‰ง่กŒๆ—ถ้—ดๆก†ๆžถๅ’Œ้ข„ไผฐK็บฟๆ•ฐ้‡ """ try: - data = request.get_json() - if not data: - return jsonify({'code': 0, 'msg': 'Request body is required'}), 400 - - market = data.get('market', 'crypto') - start_date_str = data.get('startDate', '') - end_date_str = data.get('endDate', '') + # Use request.args for GET params + market = request.args.get('market', 'crypto') + start_date_str = request.args.get('startDate', '') + end_date_str = request.args.get('endDate', '') if not start_date_str or not end_date_str: return jsonify({'code': 0, 'msg': 'startDate and endDate are required'}), 400 @@ -123,9 +121,10 @@ def get_precision_info(): @backtest_bp.route('/backtest', methods=['POST']) +@login_required def run_backtest(): """ - Run indicator backtest + Run indicator backtest for the current user. Params: indicatorId: Indicator ID (optional) @@ -148,8 +147,8 @@ def run_backtest(): 'data': None }), 400 - # Extract params - user_id = int(data.get('userid') or data.get('userId') or 1) + # Extract params - use current user's ID + user_id = g.user_id indicator_code = data.get('indicatorCode', '') indicator_id = data.get('indicatorId') symbol = data.get('symbol', '') @@ -267,7 +266,6 @@ def run_backtest(): # Persist backtest run for AI optimization / history run_id = None try: - now_ts = int(time.time()) with get_db_connection() as db: cur = db.cursor() cur.execute( @@ -276,7 +274,7 @@ def run_backtest(): (user_id, indicator_id, market, symbol, timeframe, start_date, end_date, initial_capital, commission, slippage, leverage, trade_direction, strategy_config, status, error_message, result_json, created_at) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW()) """, ( user_id, @@ -294,8 +292,7 @@ def run_backtest(): json.dumps(strategy_config or {}, ensure_ascii=False), 'success', '', - json.dumps(result or {}, ensure_ascii=False), - now_ts + json.dumps(result or {}, ensure_ascii=False) ) ) run_id = cur.lastrowid @@ -327,9 +324,8 @@ def run_backtest(): # Best-effort persist failed run (if we have enough context) try: data = data if isinstance(data, dict) else {} - user_id = int(data.get('userid') or data.get('userId') or 1) + user_id = g.user_id indicator_id = data.get('indicatorId') - now_ts = int(time.time()) with get_db_connection() as db: cur = db.cursor() cur.execute( @@ -338,7 +334,7 @@ def run_backtest(): (user_id, indicator_id, market, symbol, timeframe, start_date, end_date, initial_capital, commission, slippage, leverage, trade_direction, strategy_config, status, error_message, result_json, created_at) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW()) """, ( user_id, @@ -356,8 +352,7 @@ def run_backtest(): json.dumps(data.get('strategyConfig') or {}, ensure_ascii=False), 'failed', str(e), - '', - now_ts + '' ) ) db.commit() @@ -371,13 +366,13 @@ def run_backtest(): }), 500 -@backtest_bp.route('/backtest/history', methods=['POST']) +@backtest_bp.route('/backtest/history', methods=['GET']) +@login_required def get_backtest_history(): """ - Get backtest run history (saved in SQLite). + Get backtest run history for the current user. - Params: - userid: User ID (default 1) + Params (Query String): limit: Page size (default 50, max 200) offset: Offset (default 0) indicatorId: Optional indicator id filter @@ -386,17 +381,17 @@ def get_backtest_history(): timeframe: Optional timeframe filter """ try: - data = request.get_json() or {} - user_id = int(data.get('userid') or data.get('userId') or 1) - limit = int(data.get('limit') or 50) - offset = int(data.get('offset') or 0) + # Use current user's ID + user_id = g.user_id + limit = int(request.args.get('limit') or 50) + offset = int(request.args.get('offset') or 0) limit = max(1, min(limit, 200)) offset = max(0, offset) - indicator_id = data.get('indicatorId') - symbol = (data.get('symbol') or '').strip() - market = (data.get('market') or '').strip() - timeframe = (data.get('timeframe') or '').strip() + indicator_id = request.args.get('indicatorId') + symbol = (request.args.get('symbol') or '').strip() + market = (request.args.get('market') or '').strip() + timeframe = (request.args.get('timeframe') or '').strip() where = ["user_id = ?"] params = [user_id] @@ -449,19 +444,18 @@ def get_backtest_history(): return jsonify({'code': 0, 'msg': str(e), 'data': None}), 500 -@backtest_bp.route('/backtest/get', methods=['POST']) +@backtest_bp.route('/backtest/get', methods=['GET']) +@login_required def get_backtest_run(): """ - Get a backtest run detail by run id (includes result_json). + Get a backtest run detail by run id for the current user. - Params: - userid: User ID (default 1) + Params (Query String): runId: Backtest run id (required) """ try: - data = request.get_json() or {} - user_id = int(data.get('userid') or data.get('userId') or 1) - run_id = int(data.get('runId') or 0) + user_id = g.user_id + run_id = int(request.args.get('runId') or 0) if not run_id: return jsonify({'code': 0, 'msg': 'runId is required', 'data': None}), 400 @@ -716,17 +710,18 @@ def _heuristic_ai_advice(runs: list[dict], lang: str) -> str: @backtest_bp.route('/backtest/aiAnalyze', methods=['POST']) +@login_required def ai_analyze_backtest_runs(): """ - AI analyze selected backtest runs and provide strategy_config tuning suggestions. + AI analyze selected backtest runs and provide strategy_config tuning suggestions + for the current user. Params: - userid: User ID (default 1) runIds: list[int] (required) """ try: data = request.get_json() or {} - user_id = int(data.get('userid') or data.get('userId') or 1) + user_id = g.user_id lang = _normalize_lang(data.get('lang')) run_ids = data.get('runIds') or [] if not isinstance(run_ids, list) or not run_ids: diff --git a/backend_api_python/app/routes/credentials.py b/backend_api_python/app/routes/credentials.py index 3dd5f2c21..2e04ddbb2 100644 --- a/backend_api_python/app/routes/credentials.py +++ b/backend_api_python/app/routes/credentials.py @@ -9,17 +9,16 @@ import time import traceback import json -from flask import Blueprint, request, jsonify +from flask import Blueprint, request, jsonify, g from app.utils.db import get_db_connection from app.utils.logger import get_logger +from app.utils.auth import login_required logger = get_logger(__name__) credentials_bp = Blueprint('credentials', __name__) -DEFAULT_USER_ID = 1 - def _api_key_hint(api_key: str) -> str: if not api_key: @@ -31,9 +30,11 @@ def _api_key_hint(api_key: str) -> str: @credentials_bp.route('/list', methods=['GET']) +@login_required def list_credentials(): + """List all credentials for the current user.""" try: - user_id = request.args.get('user_id', type=int) or DEFAULT_USER_ID + user_id = g.user_id with get_db_connection() as db: cur = db.cursor() @@ -57,10 +58,12 @@ def list_credentials(): @credentials_bp.route('/create', methods=['POST']) +@login_required def create_credential(): + """Create a new credential for the current user.""" try: + user_id = g.user_id data = request.get_json() or {} - user_id = int(data.get('user_id') or DEFAULT_USER_ID) name = (data.get('name') or '').strip() exchange_id = (data.get('exchange_id') or '').strip() api_key = (data.get('api_key') or '').strip() @@ -78,16 +81,15 @@ def create_credential(): 'secret_key': secret_key, 'passphrase': passphrase }, ensure_ascii=False) - now = int(time.time()) with get_db_connection() as db: cur = db.cursor() cur.execute( """ INSERT INTO qd_exchange_credentials (user_id, name, exchange_id, api_key_hint, encrypted_config, created_at, updated_at) - VALUES (?, ?, ?, ?, ?, ?, ?) + VALUES (?, ?, ?, ?, ?, NOW(), NOW()) """, - (user_id, name, exchange_id, _api_key_hint(api_key), plaintext_config, now, now) + (user_id, name, exchange_id, _api_key_hint(api_key), plaintext_config) ) new_id = cur.lastrowid db.commit() @@ -101,10 +103,12 @@ def create_credential(): @credentials_bp.route('/delete', methods=['DELETE']) +@login_required def delete_credential(): + """Delete a credential for the current user.""" try: + user_id = g.user_id cred_id = request.args.get('id', type=int) - user_id = request.args.get('user_id', type=int) or DEFAULT_USER_ID if not cred_id: return jsonify({'code': 0, 'msg': 'Missing id', 'data': None}), 400 @@ -125,14 +129,14 @@ def delete_credential(): @credentials_bp.route('/get', methods=['GET']) +@login_required def get_credential(): """ Return decrypted credential for form auto-fill. - NOTE: In a production system, this must be protected by strong authentication/authorization. """ try: + user_id = g.user_id cred_id = request.args.get('id', type=int) - user_id = request.args.get('user_id', type=int) or DEFAULT_USER_ID if not cred_id: return jsonify({'code': 0, 'msg': 'Missing id', 'data': None}), 400 diff --git a/backend_api_python/app/routes/dashboard.py b/backend_api_python/app/routes/dashboard.py index a8725872c..3150df784 100644 --- a/backend_api_python/app/routes/dashboard.py +++ b/backend_api_python/app/routes/dashboard.py @@ -15,10 +15,11 @@ import time from typing import Any, Dict, List, Tuple -from flask import Blueprint, jsonify, request +from flask import Blueprint, jsonify, request, g from app.utils.db import get_db_connection from app.utils.logger import get_logger +from app.utils.auth import login_required logger = get_logger(__name__) @@ -255,19 +256,24 @@ def _compute_strategy_stats(trades: List[Dict[str, Any]], strategies: List[Dict[ @dashboard_bp.route("/summary", methods=["GET"]) +@login_required def summary(): """ Return dashboard summary used by `quantdinger_vue/src/views/dashboard/index.vue`. """ try: - # Strategy counts + user_id = g.user_id + + # Strategy counts (filtered by user_id) with get_db_connection() as db: cur = db.cursor() cur.execute( """ SELECT id, strategy_name, strategy_type, status, initial_capital, trading_config FROM qd_strategies_trading - """ + WHERE user_id = ? + """, + (user_id,) ) strategies = cur.fetchall() or [] cur.close() @@ -292,7 +298,7 @@ def _truthy(v: Any) -> bool: if isinstance(tc, dict) and _truthy(tc.get("enable_ai_filter")): ai_enabled_strategy_count += 1 - # Positions (best-effort) + # Positions (best-effort, filtered by user_id) with get_db_connection() as db: cur = db.cursor() cur.execute( @@ -300,8 +306,10 @@ def _truthy(v: Any) -> bool: SELECT p.*, s.strategy_name, s.initial_capital, s.leverage, s.market_type FROM qd_strategy_positions p LEFT JOIN qd_strategies_trading s ON s.id = p.strategy_id + WHERE p.user_id = ? ORDER BY p.updated_at DESC - """ + """, + (user_id,) ) rows = cur.fetchall() or [] cur.close() @@ -332,7 +340,7 @@ def _truthy(v: Any) -> bool: } ) - # Recent trades (best-effort) + # Recent trades (best-effort, filtered by user_id) with get_db_connection() as db: cur = db.cursor() cur.execute( @@ -340,9 +348,11 @@ def _truthy(v: Any) -> bool: SELECT t.*, s.strategy_name FROM qd_strategy_trades t LEFT JOIN qd_strategies_trading s ON s.id = t.strategy_id + WHERE t.user_id = ? ORDER BY t.created_at DESC LIMIT 500 - """ + """, + (user_id,) ) recent_trades = cur.fetchall() or [] cur.close() @@ -497,18 +507,20 @@ def _truthy(v: Any) -> bool: @dashboard_bp.route("/pendingOrders", methods=["GET"]) +@login_required def pending_orders(): """ Return pending orders list for dashboard page. """ try: + user_id = g.user_id page = max(1, _safe_int(request.args.get("page"), 1)) page_size = max(1, min(200, _safe_int(request.args.get("pageSize"), 20))) offset = (page - 1) * page_size with get_db_connection() as db: cur = db.cursor() - cur.execute("SELECT COUNT(1) AS cnt FROM pending_orders") + cur.execute("SELECT COUNT(1) AS cnt FROM pending_orders WHERE user_id = ?", (user_id,)) total = int((cur.fetchone() or {}).get("cnt") or 0) cur.close() @@ -525,10 +537,11 @@ def pending_orders(): s.execution_mode AS strategy_execution_mode FROM pending_orders o LEFT JOIN qd_strategies_trading s ON s.id = o.strategy_id + WHERE o.user_id = ? ORDER BY o.id DESC - LIMIT %s OFFSET %s + LIMIT ? OFFSET ? """, - (int(page_size), int(offset)), + (user_id, int(page_size), int(offset)), ) rows = cur.fetchall() or [] cur.close() @@ -607,18 +620,21 @@ def pending_orders(): @dashboard_bp.route("/pendingOrders/", methods=["DELETE"]) +@login_required def delete_pending_order(order_id: int): """ Delete a pending order record (dashboard operation). """ try: + user_id = g.user_id oid = int(order_id or 0) if oid <= 0: return jsonify({"code": 0, "msg": "invalid_id", "data": None}), 400 with get_db_connection() as db: cur = db.cursor() - cur.execute("SELECT id, status FROM pending_orders WHERE id = %s", (oid,)) + # Verify the order belongs to current user + cur.execute("SELECT id, status FROM pending_orders WHERE id = ? AND user_id = ?", (oid, user_id)) row = cur.fetchone() or {} if not row: cur.close() @@ -627,7 +643,7 @@ def delete_pending_order(order_id: int): if st == "processing": cur.close() return jsonify({"code": 0, "msg": "cannot_delete_processing", "data": None}), 400 - cur.execute("DELETE FROM pending_orders WHERE id = %s", (oid,)) + cur.execute("DELETE FROM pending_orders WHERE id = ? AND user_id = ?", (oid, user_id)) db.commit() cur.close() diff --git a/backend_api_python/app/routes/indicator.py b/backend_api_python/app/routes/indicator.py index 433c9270a..cd2ab6468 100644 --- a/backend_api_python/app/routes/indicator.py +++ b/backend_api_python/app/routes/indicator.py @@ -17,12 +17,13 @@ import traceback from typing import Any, Dict, List -from flask import Blueprint, Response, jsonify, request +from flask import Blueprint, Response, jsonify, request, g import pandas as pd import numpy as np from app.utils.db import get_db_connection from app.utils.logger import get_logger +from app.utils.auth import login_required import requests logger = get_logger(__name__) @@ -115,24 +116,21 @@ def _generate_mock_df(length=200): return df -@indicator_bp.route("/getIndicators", methods=["POST"]) +@indicator_bp.route("/getIndicators", methods=["GET"]) +@login_required def get_indicators(): """ - Get indicator list for a user. - - Request: - { userid: number } + Get indicator list for the current user. Response: { code: 1, data: [ ... ] } """ try: - data = request.get_json() or {} - user_id = int(data.get("userid") or 1) + user_id = g.user_id with get_db_connection() as db: cur = db.cursor() - # Local mode: "ๆˆ‘็š„ๆŒ‡ๆ ‡" should include both purchased and custom indicators. + # Get user's own indicators (both purchased and custom). cur.execute( """ SELECT @@ -156,13 +154,13 @@ def get_indicators(): @indicator_bp.route("/saveIndicator", methods=["POST"]) +@login_required def save_indicator(): """ - Create or update an indicator. + Create or update an indicator for the current user. Request (frontend sends many extra fields; we store only the essentials): { - userid: number, id: number (0 for create), name: string, code: string, @@ -172,7 +170,7 @@ def save_indicator(): """ try: data = request.get_json() or {} - user_id = int(data.get("userid") or 1) + user_id = g.user_id indicator_id = int(data.get("id") or 0) code = data.get("code") or "" name = (data.get("name") or "").strip() @@ -199,7 +197,7 @@ def save_indicator(): if not name: name = "Custom Indicator" - now = _now_ts() + now = _now_ts() # For BIGINT fields (createtime, updatetime) with get_db_connection() as db: cur = db.cursor() @@ -209,10 +207,10 @@ def save_indicator(): UPDATE qd_indicator_codes SET name = ?, code = ?, description = ?, publish_to_community = ?, pricing_type = ?, price = ?, preview_image = ?, - updatetime = ?, updated_at = ? + updatetime = ?, updated_at = NOW() WHERE id = ? AND user_id = ? AND (is_buy IS NULL OR is_buy = 0) """, - (name, code, description, publish_to_community, pricing_type, price, preview_image, now, now, indicator_id, user_id), + (name, code, description, publish_to_community, pricing_type, price, preview_image, now, indicator_id, user_id), ) else: cur.execute( @@ -221,9 +219,9 @@ def save_indicator(): (user_id, is_buy, end_time, name, code, description, publish_to_community, pricing_type, price, preview_image, createtime, updatetime, created_at, updated_at) - VALUES (?, 0, 1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + VALUES (?, 0, 1, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW(), NOW()) """, - (user_id, name, code, description, publish_to_community, pricing_type, price, preview_image, now, now, now, now), + (user_id, name, code, description, publish_to_community, pricing_type, price, preview_image, now, now), ) indicator_id = int(cur.lastrowid or 0) db.commit() @@ -236,11 +234,12 @@ def save_indicator(): @indicator_bp.route("/deleteIndicator", methods=["POST"]) +@login_required def delete_indicator(): - """Delete an indicator by id.""" + """Delete an indicator by id for the current user.""" try: data = request.get_json() or {} - user_id = int(data.get("userid") or 1) + user_id = g.user_id indicator_id = int(data.get("id") or 0) if not indicator_id: return jsonify({"code": 0, "msg": "id is required", "data": None}), 400 @@ -261,6 +260,7 @@ def delete_indicator(): @indicator_bp.route("/verifyCode", methods=["POST"]) +@login_required def verify_code(): """ Verify/Dry-run indicator code with mock data. @@ -372,6 +372,7 @@ def verify_code(): @indicator_bp.route("/aiGenerate", methods=["POST"]) +@login_required def ai_generate(): """ SSE endpoint to generate indicator code. diff --git a/backend_api_python/app/routes/kline.py b/backend_api_python/app/routes/kline.py index 88382051f..a009dd7ab 100644 --- a/backend_api_python/app/routes/kline.py +++ b/backend_api_python/app/routes/kline.py @@ -14,7 +14,7 @@ kline_service = KlineService() -@kline_bp.route('/kline', methods=['GET', 'POST']) +@kline_bp.route('/kline', methods=['GET']) def get_kline(): """ ่Žทๅ–K็บฟๆ•ฐๆฎ @@ -27,17 +27,12 @@ def get_kline(): before_time: ่Žทๅ–ๆญคๆ—ถ้—ดไน‹ๅ‰็š„ๆ•ฐๆฎ (ๅฏ้€‰๏ผŒUnixๆ—ถ้—ดๆˆณ) """ try: - # ๆ”ฏๆŒ GET ๅ’Œ POST - if request.method == 'POST': - data = request.get_json() or {} - else: - data = request.args - - market = data.get('market', 'USStock') - symbol = data.get('symbol', '') - timeframe = data.get('timeframe', '1D') - limit = int(data.get('limit', 300)) - before_time = data.get('before_time') or data.get('beforeTime') + # ๅผบๅˆถ GET, ไฝฟ็”จ request.args + market = request.args.get('market', 'USStock') + symbol = request.args.get('symbol', '') + timeframe = request.args.get('timeframe', '1D') + limit = int(request.args.get('limit', 300)) + before_time = request.args.get('before_time') or request.args.get('beforeTime') if before_time: before_time = int(before_time) diff --git a/backend_api_python/app/routes/market.py b/backend_api_python/app/routes/market.py index 5a669fdc4..4b694f323 100644 --- a/backend_api_python/app/routes/market.py +++ b/backend_api_python/app/routes/market.py @@ -2,7 +2,7 @@ Market API routes (local-only). Provides watchlist, market metadata, symbol search, and pricing helpers for the frontend. """ -from flask import Blueprint, request, jsonify +from flask import Blueprint, request, jsonify, g import traceback import json import time @@ -13,6 +13,7 @@ from app.utils.cache import CacheManager from app.utils.db import get_db_connection from app.utils.config_loader import load_addon_config +from app.utils.auth import login_required from app.data.market_symbols_seed import ( get_hot_symbols as seed_get_hot_symbols, search_symbols as seed_search_symbols, @@ -26,11 +27,9 @@ kline_service = KlineService() cache = CacheManager() -# ็บฟ็จ‹ๆฑ ็”จไบŽๅนถ่กŒ่Žทๅ–ไปทๆ ผ +# Thread pool for parallel price fetching executor = ThreadPoolExecutor(max_workers=10) -DEFAULT_USER_ID = 1 - def _now_ts() -> int: return int(time.time()) @@ -125,7 +124,7 @@ def _sort_items(items): return jsonify({'code': 1, 'msg': 'success', 'data': data}) -@market_bp.route('/menuFooterConfig', methods=['POST']) +@market_bp.route('/menuFooterConfig', methods=['GET']) def get_menu_footer_config(): """ Compatibility stub for old PHP `getMenuFooterConfig`. @@ -150,17 +149,16 @@ def get_menu_footer_config(): } return jsonify({'code': 1, 'msg': 'success', 'data': data}) -@market_bp.route('/symbols/search', methods=['POST']) +@market_bp.route('/symbols/search', methods=['GET']) def search_symbols(): """ Lightweight symbol search. In local-only mode we keep this simple; frontend allows manual input when no results. """ try: - data = request.get_json() or {} - market = (data.get('market') or '').strip() - keyword = (data.get('keyword') or '').strip().upper() - limit = int(data.get('limit') or 20) + market = (request.args.get('market') or '').strip() + keyword = (request.args.get('keyword') or '').strip().upper() + limit = int(request.args.get('limit') or 20) if not market or not keyword: return jsonify({'code': 1, 'msg': 'success', 'data': []}) @@ -172,29 +170,30 @@ def search_symbols(): logger.error(traceback.format_exc()) return jsonify({'code': 0, 'msg': str(e), 'data': []}), 500 -@market_bp.route('/symbols/hot', methods=['POST']) +@market_bp.route('/symbols/hot', methods=['GET']) def get_hot_symbols(): """Return a small curated hot list per market (local-only).""" try: - data = request.get_json() or {} - market = (data.get('market') or '').strip() - limit = int(data.get('limit') or 10) + market = (request.args.get('market') or '').strip() + limit = int(request.args.get('limit') or 10) hot = seed_get_hot_symbols(market=market, limit=limit) return jsonify({'code': 1, 'msg': 'success', 'data': hot}) except Exception as e: logger.error(f"get_hot_symbols failed: {str(e)}") return jsonify({'code': 0, 'msg': str(e), 'data': []}), 500 -@market_bp.route('/watchlist/get', methods=['POST']) +@market_bp.route('/watchlist/get', methods=['GET']) +@login_required def get_watchlist(): - """Get local watchlist for the single user.""" + """Get watchlist for the current user.""" try: + user_id = g.user_id _ensure_watchlist_table() with get_db_connection() as db: cur = db.cursor() cur.execute( "SELECT id, market, symbol, name FROM qd_watchlist WHERE user_id = ? ORDER BY id DESC", - (DEFAULT_USER_ID,) + (user_id,) ) rows = cur.fetchall() or [] @@ -213,8 +212,8 @@ def get_watchlist(): if resolved and resolved != current_name: row['name'] = resolved cur.execute( - "UPDATE qd_watchlist SET name = ?, updated_at = ? WHERE user_id = ? AND market = ? AND symbol = ?", - (resolved, _now_ts(), DEFAULT_USER_ID, market, symbol) + "UPDATE qd_watchlist SET name = ?, updated_at = NOW() WHERE user_id = ? AND market = ? AND symbol = ?", + (resolved, user_id, market, symbol) ) except Exception: continue @@ -227,9 +226,11 @@ def get_watchlist(): return jsonify({'code': 0, 'msg': str(e), 'data': []}), 500 @market_bp.route('/watchlist/add', methods=['POST']) +@login_required def add_watchlist(): - """Add a symbol to local watchlist (no credits/fees in local mode).""" + """Add a symbol to watchlist for the current user.""" try: + user_id = g.user_id data = request.get_json() or {} market = (data.get('market') or '').strip() symbol = _normalize_symbol(data.get('symbol')) @@ -241,18 +242,18 @@ def add_watchlist(): resolved = resolve_symbol_name(market, symbol) or seed_get_symbol_name(market, symbol) name = name_in or resolved or symbol - now = _now_ts() with get_db_connection() as db: cur = db.cursor() - # Insert or ignore duplicates. + # Insert or update (PostgreSQL UPSERT) cur.execute( - "INSERT OR IGNORE INTO qd_watchlist (user_id, market, symbol, name, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?)", - (DEFAULT_USER_ID, market, symbol, name, now, now) - ) - # If already exists, keep it fresh and sync name. - cur.execute( - "UPDATE qd_watchlist SET name = ?, updated_at = ? WHERE user_id = ? AND market = ? AND symbol = ?", - (name, now, DEFAULT_USER_ID, market, symbol) + """ + INSERT INTO qd_watchlist (user_id, market, symbol, name, created_at, updated_at) + VALUES (?, ?, ?, ?, NOW(), NOW()) + ON CONFLICT(user_id, market, symbol) DO UPDATE SET + name = excluded.name, + updated_at = NOW() + """, + (user_id, market, symbol, name) ) db.commit() cur.close() @@ -264,9 +265,11 @@ def add_watchlist(): return jsonify({'code': 0, 'msg': str(e), 'data': None}), 500 @market_bp.route('/watchlist/remove', methods=['POST']) +@login_required def remove_watchlist(): - """Remove a symbol from watchlist. Frontend only passes symbol, so we delete across markets.""" + """Remove a symbol from watchlist for the current user.""" try: + user_id = g.user_id data = request.get_json() or {} symbol = _normalize_symbol(data.get('symbol')) if not symbol: @@ -276,7 +279,7 @@ def remove_watchlist(): cur = db.cursor() cur.execute( "DELETE FROM qd_watchlist WHERE user_id = ? AND symbol = ?", - (DEFAULT_USER_ID, symbol) + (user_id, symbol) ) db.commit() cur.close() @@ -290,51 +293,17 @@ def remove_watchlist(): def get_single_price(market: str, symbol: str) -> dict: """่Žทๅ–ๅ•ไธชๆ ‡็š„็š„ไปทๆ ผๆ•ฐๆฎ""" try: - # ๅ…ˆๅฐ่ฏ•ไปŽ็ผ“ๅญ˜่Žทๅ–๏ผˆ60็ง’็ผ“ๅญ˜๏ผ‰ - cache_key = f"watchlist_price:{market}:{symbol}" - cached_data = cache.get(cache_key) - - if cached_data: - logger.debug(f"Cache hit: {market}:{symbol}") - return { - 'market': market, - 'symbol': symbol, - 'price': cached_data.get('price', 0), - 'change': cached_data.get('change', 0), - 'changePercent': cached_data.get('changePercent', 0) - } + # ไฝฟ็”จ get_realtime_price ่Žทๅ–ๅฎžๆ—ถไปทๆ ผ๏ผˆๅ†…้ƒจๅทฒๆœ‰30็ง’็ผ“ๅญ˜๏ผ‰ + # ็›ธๆฏ”ๅŽŸๅ…ˆ็š„ '1D' K็บฟ้€ป่พ‘๏ผŒ่ฟ™่ƒฝๆ›ดๅŠๆ—ถๅœฐๅๆ˜  Crypto ็ญ‰ 24h ๅธ‚ๅœบ็š„ๅ˜ๅŒ– + price_data = kline_service.get_realtime_price(market, symbol) - # ่Žทๅ–ๆœ€ๆ–ฐ็š„ไธ€ๆ นK็บฟ - klines = kline_service.get_kline(market, symbol, '1D', 2) - - if klines and len(klines) > 0: - latest = klines[-1] - prev_close = klines[-2]['close'] if len(klines) > 1 else latest.get('open', 0) - current_price = latest.get('close', 0) - - change = round(current_price - prev_close, 4) if prev_close else 0 - change_percent = round(change / prev_close * 100, 2) if prev_close and prev_close > 0 else 0 - - result = { - 'market': market, - 'symbol': symbol, - 'price': current_price, - 'change': change, - 'changePercent': change_percent - } - - # ็ผ“ๅญ˜60็ง’ - cache.set(cache_key, result, 60) - - return result - else: - return { - 'market': market, - 'symbol': symbol, - 'price': 0, - 'change': 0, - 'changePercent': 0 - } + return { + 'market': market, + 'symbol': symbol, + 'price': price_data.get('price', 0), + 'change': price_data.get('change', 0), + 'changePercent': price_data.get('changePercent', 0) + } except Exception as e: logger.error(f"Failed to fetch price {market}:{symbol} - {str(e)}") return { @@ -346,45 +315,26 @@ def get_single_price(market: str, symbol: str) -> dict: } -@market_bp.route('/watchlist/prices', methods=['POST']) +@market_bp.route('/watchlist/prices', methods=['GET']) def get_watchlist_prices(): """ ๆ‰น้‡่Žทๅ–่‡ช้€‰่‚กไปทๆ ผ - ่ฏทๆฑ‚ไฝ“: - { - "watchlist": [ - {"market": "USStock", "symbol": "AAPL"}, - {"market": "Crypto", "symbol": "BTC"}, - ... - ] - } - - ๅ“ๅบ”: - { - "code": 1, - "msg": "success", - "data": [ - {"market": "USStock", "symbol": "AAPL", "price": 150.0, "change": 1.5, "changePercent": 1.0}, - {"market": "Crypto", "symbol": "BTC", "price": 95000.0, "change": 1000, "changePercent": 1.05} - ] - } + Params (Query String): + watchlist: JSON string of list of {market, symbol} objects + e.g. ?watchlist=[{"market":"USStock","symbol":"AAPL"}] """ try: - data = request.get_json() - if not data: - return jsonify({ - 'code': 0, - 'msg': 'Request body is required', - 'data': [] - }), 400 - - watchlist = data.get('watchlist', []) + watchlist_str = request.args.get('watchlist', '[]') + try: + watchlist = json.loads(watchlist_str) + except Exception: + watchlist = [] if not watchlist or not isinstance(watchlist, list): return jsonify({ 'code': 0, - 'msg': 'Invalid watchlist format', + 'msg': 'Invalid watchlist format (expected JSON list in query param)', 'data': [] }), 400 diff --git a/backend_api_python/app/routes/portfolio.py b/backend_api_python/app/routes/portfolio.py index 8209fd7c9..f2acd7815 100644 --- a/backend_api_python/app/routes/portfolio.py +++ b/backend_api_python/app/routes/portfolio.py @@ -2,7 +2,7 @@ Portfolio API routes (local-only). Manages manual positions (user's existing holdings) and AI monitoring tasks. """ -from flask import Blueprint, request, jsonify +from flask import Blueprint, request, jsonify, g import json import traceback import time @@ -13,6 +13,7 @@ from app.utils.logger import get_logger from app.utils.cache import CacheManager from app.utils.db import get_db_connection +from app.utils.auth import login_required from app.services.symbol_name import resolve_symbol_name from app.data.market_symbols_seed import get_symbol_name as seed_get_symbol_name @@ -23,18 +24,16 @@ cache = CacheManager() # Thread pool for parallel price fetching -# ้™ไฝŽๅนถๅ‘ๆ•ฐ้ฟๅ…่งฆๅ‘API้™ๅˆถ๏ผˆๅฐคๅ…ถๆ˜ฏๅค–ๆฑ‡/็พŽ่‚ก็ญ‰ๆœ‰้€Ÿ็އ้™ๅˆถ็š„API๏ผ‰ +# Lower concurrency to avoid triggering API limits (especially for forex/US stocks) executor = ThreadPoolExecutor(max_workers=3) -# ่ฏทๆฑ‚้—ด้š”๏ผˆ็ง’๏ผ‰๏ผŒ้ฟๅ…่ฏทๆฑ‚่ฟ‡ๅฟซ +# Request interval (seconds) to avoid too frequent requests REQUEST_INTERVAL = 0.3 -# ้€Ÿ็އ้™ๅˆถ็›ธๅ…ณ +# Rate limiting related _request_lock = threading.Lock() _last_request_time = {} # {market: timestamp} -DEFAULT_USER_ID = 1 - def _now_ts() -> int: return int(time.time()) @@ -109,10 +108,12 @@ def _get_single_price(market: str, symbol: str, force_refresh: bool = False) -> # ==================== Position CRUD ==================== @portfolio_bp.route('/positions', methods=['GET']) +@login_required def get_positions(): - """Get all manual positions with current prices.""" + """Get all manual positions with current prices for the current user.""" try: - # ๆฃ€ๆŸฅๆ˜ฏๅฆๅผบๅˆถๅˆทๆ–ฐ๏ผˆ่ทณ่ฟ‡็ผ“ๅญ˜๏ผ‰ + user_id = g.user_id + # Check if force refresh (skip cache) force_refresh = request.args.get('refresh', '').lower() in ('1', 'true', 'yes') with get_db_connection() as db: @@ -124,7 +125,7 @@ def get_positions(): WHERE user_id = ? ORDER BY id DESC """, - (DEFAULT_USER_ID,) + (user_id,) ) rows = cur.fetchall() or [] cur.close() @@ -212,9 +213,11 @@ def get_positions(): @portfolio_bp.route('/positions', methods=['POST']) +@login_required def add_position(): - """Add a new manual position.""" + """Add a new manual position for the current user.""" try: + user_id = g.user_id data = request.get_json() or {} market = (data.get('market') or '').strip() symbol = _normalize_symbol(data.get('symbol')) @@ -244,7 +247,6 @@ def add_position(): name = name_in or resolved or symbol tags_json = json.dumps(tags if isinstance(tags, list) else [], ensure_ascii=False) - now = _now_ts() with get_db_connection() as db: cur = db.cursor() @@ -252,7 +254,7 @@ def add_position(): """ INSERT INTO qd_manual_positions (user_id, market, symbol, name, side, quantity, entry_price, entry_time, notes, tags, group_name, created_at, updated_at) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW(), NOW()) ON CONFLICT(user_id, market, symbol, side) DO UPDATE SET name = excluded.name, quantity = excluded.quantity, @@ -261,9 +263,9 @@ def add_position(): notes = excluded.notes, tags = excluded.tags, group_name = excluded.group_name, - updated_at = excluded.updated_at + updated_at = NOW() """, - (DEFAULT_USER_ID, market, symbol, name, side, quantity, entry_price, entry_time, notes, tags_json, group_name, now, now) + (user_id, market, symbol, name, side, quantity, entry_price, entry_time, notes, tags_json, group_name) ) position_id = cur.lastrowid db.commit() @@ -277,9 +279,11 @@ def add_position(): @portfolio_bp.route('/positions/', methods=['PUT']) +@login_required def update_position(position_id): - """Update an existing position.""" + """Update an existing position for the current user.""" try: + user_id = g.user_id data = request.get_json() or {} updates = [] @@ -323,10 +327,9 @@ def update_position(position_id): if not updates: return jsonify({'code': 0, 'msg': 'No fields to update', 'data': None}), 400 - updates.append('updated_at = ?') - params.append(_now_ts()) + updates.append('updated_at = NOW()') params.append(position_id) - params.append(DEFAULT_USER_ID) + params.append(user_id) with get_db_connection() as db: cur = db.cursor() @@ -345,14 +348,16 @@ def update_position(position_id): @portfolio_bp.route('/positions/', methods=['DELETE']) +@login_required def delete_position(position_id): - """Delete a position.""" + """Delete a position for the current user.""" try: + user_id = g.user_id with get_db_connection() as db: cur = db.cursor() cur.execute( "DELETE FROM qd_manual_positions WHERE id = ? AND user_id = ?", - (position_id, DEFAULT_USER_ID) + (position_id, user_id) ) db.commit() cur.close() @@ -365,10 +370,12 @@ def delete_position(position_id): @portfolio_bp.route('/summary', methods=['GET']) +@login_required def get_portfolio_summary(): - """Get portfolio summary with total value, PnL, and market distribution.""" + """Get portfolio summary with total value, PnL, and market distribution for the current user.""" try: - # ๆฃ€ๆŸฅๆ˜ฏๅฆๅผบๅˆถๅˆทๆ–ฐ + user_id = g.user_id + # Check if force refresh force_refresh = request.args.get('refresh', '').lower() in ('1', 'true', 'yes') with get_db_connection() as db: @@ -379,7 +386,7 @@ def get_portfolio_summary(): FROM qd_manual_positions WHERE user_id = ? """, - (DEFAULT_USER_ID,) + (user_id,) ) rows = cur.fetchall() or [] cur.close() @@ -485,9 +492,11 @@ def get_portfolio_summary(): # ==================== Monitor CRUD ==================== @portfolio_bp.route('/monitors', methods=['GET']) +@login_required def get_monitors(): - """Get all position monitors.""" + """Get all position monitors for the current user.""" try: + user_id = g.user_id with get_db_connection() as db: cur = db.cursor() cur.execute( @@ -498,7 +507,7 @@ def get_monitors(): WHERE user_id = ? ORDER BY id DESC """, - (DEFAULT_USER_ID,) + (user_id,) ) rows = cur.fetchall() or [] cur.close() @@ -529,9 +538,11 @@ def get_monitors(): @portfolio_bp.route('/monitors', methods=['POST']) +@login_required def add_monitor(): - """Add a new position monitor.""" + """Add a new position monitor for the current user.""" try: + user_id = g.user_id data = request.get_json() or {} name = (data.get('name') or '').strip() position_ids = data.get('position_ids') or [] @@ -547,9 +558,7 @@ def add_monitor(): monitor_type = 'ai' # Calculate next_run_at based on interval - now = _now_ts() interval_minutes = int(config.get('interval_minutes') or 60) - next_run_at = now + (interval_minutes * 60) position_ids_json = json.dumps(position_ids if isinstance(position_ids, list) else [], ensure_ascii=False) config_json = json.dumps(config if isinstance(config, dict) else {}, ensure_ascii=False) @@ -561,10 +570,10 @@ def add_monitor(): """ INSERT INTO qd_position_monitors (user_id, name, position_ids, monitor_type, config, notification_config, is_active, next_run_at, created_at, updated_at) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + VALUES (?, ?, ?, ?, ?, ?, ?, NOW() + INTERVAL '%s minutes', NOW(), NOW()) """, - (DEFAULT_USER_ID, name, position_ids_json, monitor_type, config_json, notification_config_json, - 1 if is_active else 0, next_run_at, now, now) + (user_id, name, position_ids_json, monitor_type, config_json, notification_config_json, + 1 if is_active else 0, interval_minutes) ) monitor_id = cur.lastrowid db.commit() @@ -578,9 +587,11 @@ def add_monitor(): @portfolio_bp.route('/monitors/', methods=['PUT']) +@login_required def update_monitor(monitor_id): - """Update an existing monitor.""" + """Update an existing monitor for the current user.""" try: + user_id = g.user_id data = request.get_json() or {} updates = [] @@ -599,15 +610,14 @@ def update_monitor(monitor_id): updates.append('monitor_type = ?') params.append((data.get('monitor_type') or 'ai').strip()) + next_run_interval = None # Will store interval for special handling if 'config' in data: config = data.get('config') or {} updates.append('config = ?') params.append(json.dumps(config if isinstance(config, dict) else {}, ensure_ascii=False)) - # Recalculate next_run_at if interval changed - interval_minutes = int(config.get('interval_minutes') or 60) - updates.append('next_run_at = ?') - params.append(_now_ts() + (interval_minutes * 60)) + # Recalculate next_run_at if interval changed (handled separately for PostgreSQL) + next_run_interval = int(config.get('interval_minutes') or 60) if 'notification_config' in data: notification_config = data.get('notification_config') or {} @@ -621,10 +631,13 @@ def update_monitor(monitor_id): if not updates: return jsonify({'code': 0, 'msg': 'No fields to update', 'data': None}), 400 - updates.append('updated_at = ?') - params.append(_now_ts()) + # Add next_run_at update if interval was changed + if next_run_interval is not None: + updates.append(f"next_run_at = NOW() + INTERVAL '{next_run_interval} minutes'") + + updates.append('updated_at = NOW()') params.append(monitor_id) - params.append(DEFAULT_USER_ID) + params.append(user_id) with get_db_connection() as db: cur = db.cursor() @@ -643,14 +656,16 @@ def update_monitor(monitor_id): @portfolio_bp.route('/monitors/', methods=['DELETE']) +@login_required def delete_monitor(monitor_id): - """Delete a monitor.""" + """Delete a monitor for the current user.""" try: + user_id = g.user_id with get_db_connection() as db: cur = db.cursor() cur.execute( "DELETE FROM qd_position_monitors WHERE id = ? AND user_id = ?", - (monitor_id, DEFAULT_USER_ID) + (monitor_id, user_id) ) db.commit() cur.close() @@ -663,6 +678,7 @@ def delete_monitor(monitor_id): @portfolio_bp.route('/monitors//run', methods=['POST']) +@login_required def run_monitor_now(monitor_id): """Manually trigger a monitor to run immediately.""" try: @@ -692,9 +708,11 @@ def run_monitor_now(monitor_id): # ==================== Alerts CRUD ==================== @portfolio_bp.route('/alerts', methods=['GET']) +@login_required def get_alerts(): - """Get all position alerts.""" + """Get all position alerts for the current user.""" try: + user_id = g.user_id with get_db_connection() as db: cur = db.cursor() cur.execute( @@ -708,7 +726,7 @@ def get_alerts(): WHERE a.user_id = ? ORDER BY a.id DESC """, - (DEFAULT_USER_ID,) + (user_id,) ) rows = cur.fetchall() or [] cur.close() @@ -743,9 +761,11 @@ def get_alerts(): @portfolio_bp.route('/alerts', methods=['POST']) +@login_required def add_alert(): - """Add a new position alert.""" + """Add a new position alert for the current user.""" try: + user_id = g.user_id data = request.get_json() or {} position_id = data.get('position_id') # Can be None for symbol-level alerts market = (data.get('market') or '').strip() @@ -768,7 +788,7 @@ def add_alert(): cur = db.cursor() cur.execute( "SELECT market, symbol FROM qd_manual_positions WHERE id = ? AND user_id = ?", - (position_id, DEFAULT_USER_ID) + (position_id, user_id) ) pos = cur.fetchone() cur.close() @@ -782,7 +802,6 @@ def add_alert(): if threshold <= 0 and alert_type.startswith('price_'): return jsonify({'code': 0, 'msg': 'Threshold must be positive for price alerts', 'data': None}), 400 - now = _now_ts() notification_config_json = json.dumps(notification_config if isinstance(notification_config, dict) else {}, ensure_ascii=False) with get_db_connection() as db: @@ -793,7 +812,7 @@ def add_alert(): if position_id: cur.execute( "SELECT id FROM qd_position_alerts WHERE position_id = ? AND user_id = ?", - (position_id, DEFAULT_USER_ID) + (position_id, user_id) ) existing = cur.fetchone() if existing: @@ -805,11 +824,11 @@ def add_alert(): """ UPDATE qd_position_alerts SET alert_type = ?, threshold = ?, notification_config = ?, - is_active = ?, is_triggered = 0, repeat_interval = ?, notes = ?, updated_at = ? + is_active = ?, is_triggered = 0, repeat_interval = ?, notes = ?, updated_at = NOW() WHERE id = ? """, (alert_type, threshold, notification_config_json, - 1 if is_active else 0, repeat_interval, notes, now, existing_alert_id) + 1 if is_active else 0, repeat_interval, notes, existing_alert_id) ) alert_id = existing_alert_id else: @@ -819,10 +838,10 @@ def add_alert(): INSERT INTO qd_position_alerts (user_id, position_id, market, symbol, alert_type, threshold, notification_config, is_active, repeat_interval, notes, created_at, updated_at) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW(), NOW()) """, - (DEFAULT_USER_ID, position_id, market, symbol, alert_type, threshold, notification_config_json, - 1 if is_active else 0, repeat_interval, notes, now, now) + (user_id, position_id, market, symbol, alert_type, threshold, notification_config_json, + 1 if is_active else 0, repeat_interval, notes) ) alert_id = cur.lastrowid @@ -837,9 +856,11 @@ def add_alert(): @portfolio_bp.route('/alerts/', methods=['PUT']) +@login_required def update_alert(alert_id): - """Update an existing alert.""" + """Update an existing alert for the current user.""" try: + user_id = g.user_id data = request.get_json() or {} updates = [] @@ -877,10 +898,9 @@ def update_alert(alert_id): if not updates: return jsonify({'code': 0, 'msg': 'No fields to update', 'data': None}), 400 - updates.append('updated_at = ?') - params.append(_now_ts()) + updates.append('updated_at = NOW()') params.append(alert_id) - params.append(DEFAULT_USER_ID) + params.append(user_id) with get_db_connection() as db: cur = db.cursor() @@ -899,14 +919,16 @@ def update_alert(alert_id): @portfolio_bp.route('/alerts/', methods=['DELETE']) +@login_required def delete_alert(alert_id): - """Delete an alert.""" + """Delete an alert for the current user.""" try: + user_id = g.user_id with get_db_connection() as db: cur = db.cursor() cur.execute( "DELETE FROM qd_position_alerts WHERE id = ? AND user_id = ?", - (alert_id, DEFAULT_USER_ID) + (alert_id, user_id) ) db.commit() cur.close() @@ -921,9 +943,11 @@ def delete_alert(alert_id): # ==================== Groups ==================== @portfolio_bp.route('/groups', methods=['GET']) +@login_required def get_groups(): - """Get list of all groups with position counts.""" + """Get list of all groups with position counts for the current user.""" try: + user_id = g.user_id with get_db_connection() as db: cur = db.cursor() cur.execute( @@ -934,14 +958,14 @@ def get_groups(): GROUP BY group_name ORDER BY group_name """, - (DEFAULT_USER_ID,) + (user_id,) ) rows = cur.fetchall() or [] # Also get count of ungrouped cur.execute( "SELECT COUNT(*) as count FROM qd_manual_positions WHERE user_id = ? AND (group_name IS NULL OR group_name = '')", - (DEFAULT_USER_ID,) + (user_id,) ) ungrouped = cur.fetchone() cur.close() @@ -971,9 +995,11 @@ def get_groups(): @portfolio_bp.route('/groups/rename', methods=['POST']) +@login_required def rename_group(): - """Rename a group.""" + """Rename a group for the current user.""" try: + user_id = g.user_id data = request.get_json() or {} old_name = (data.get('old_name') or '').strip() new_name = (data.get('new_name') or '').strip() @@ -981,12 +1007,11 @@ def rename_group(): if not old_name: return jsonify({'code': 0, 'msg': 'old_name is required', 'data': None}), 400 - now = _now_ts() with get_db_connection() as db: cur = db.cursor() cur.execute( - "UPDATE qd_manual_positions SET group_name = ?, updated_at = ? WHERE user_id = ? AND group_name = ?", - (new_name, now, DEFAULT_USER_ID, old_name) + "UPDATE qd_manual_positions SET group_name = ?, updated_at = NOW() WHERE user_id = ? AND group_name = ?", + (new_name, user_id, old_name) ) db.commit() cur.close() diff --git a/backend_api_python/app/routes/settings.py b/backend_api_python/app/routes/settings.py index 84748bae9..40ca26f91 100644 --- a/backend_api_python/app/routes/settings.py +++ b/backend_api_python/app/routes/settings.py @@ -1,11 +1,14 @@ """ Settings API - ่ฏปๅ–ๅ’Œไฟๅญ˜ .env ้…็ฝฎ + +Admin-only endpoints for system configuration management. """ import os import re from flask import Blueprint, request, jsonify from app.utils.logger import get_logger from app.utils.config_loader import clear_config_cache +from app.utils.auth import login_required, admin_required logger = get_logger(__name__) @@ -791,8 +794,10 @@ def write_env_file(env_values): @settings_bp.route('/schema', methods=['GET']) +@login_required +@admin_required def get_settings_schema(): - """่Žทๅ–้…็ฝฎ้กนๅฎšไน‰""" + """่Žทๅ–้…็ฝฎ้กนๅฎšไน‰ (admin only)""" return jsonify({ 'code': 1, 'msg': 'success', @@ -801,8 +806,10 @@ def get_settings_schema(): @settings_bp.route('/values', methods=['GET']) +@login_required +@admin_required def get_settings_values(): - """่Žทๅ–ๅฝ“ๅ‰้…็ฝฎๅ€ผ - ๅŒ…ๆ‹ฌๆ•ๆ„Ÿไฟกๆฏ๏ผˆ็œŸๅฎžๅ€ผ๏ผ‰""" + """่Žทๅ–ๅฝ“ๅ‰้…็ฝฎๅ€ผ - ๅŒ…ๆ‹ฌๆ•ๆ„Ÿไฟกๆฏ๏ผˆ็œŸๅฎžๅ€ผ๏ผ‰(admin only)""" env_values = read_env_file() # ๆž„ๅปบ่ฟ”ๅ›žๆ•ฐๆฎ๏ผŒ่ฟ”ๅ›ž็œŸๅฎžๅ€ผ @@ -825,8 +832,10 @@ def get_settings_values(): @settings_bp.route('/save', methods=['POST']) +@login_required +@admin_required def save_settings(): - """ไฟๅญ˜้…็ฝฎ""" + """ไฟๅญ˜้…็ฝฎ (admin only)""" try: data = request.get_json() if not data: @@ -878,8 +887,10 @@ def save_settings(): @settings_bp.route('/openrouter-balance', methods=['GET']) +@login_required +@admin_required def get_openrouter_balance(): - """ๆŸฅ่ฏข OpenRouter ่ดฆๆˆทไฝ™้ข""" + """ๆŸฅ่ฏข OpenRouter ่ดฆๆˆทไฝ™้ข (admin only)""" try: import requests from app.config.api_keys import APIKeys @@ -954,8 +965,10 @@ def get_openrouter_balance(): @settings_bp.route('/test-connection', methods=['POST']) +@login_required +@admin_required def test_connection(): - """ๆต‹่ฏ•API่ฟžๆŽฅ""" + """ๆต‹่ฏ•API่ฟžๆŽฅ (admin only)""" try: data = request.get_json() service = data.get('service') diff --git a/backend_api_python/app/routes/strategy.py b/backend_api_python/app/routes/strategy.py index 7d16f9d45..cb614e3fe 100644 --- a/backend_api_python/app/routes/strategy.py +++ b/backend_api_python/app/routes/strategy.py @@ -1,7 +1,7 @@ """ -ไบคๆ˜“็ญ–็•ฅ API ่ทฏ็”ฑ +Trading Strategy API Routes """ -from flask import Blueprint, request, jsonify +from flask import Blueprint, request, jsonify, g import traceback import time @@ -11,6 +11,7 @@ from app import get_trading_executor from app.utils.logger import get_logger from app.utils.db import get_db_connection +from app.utils.auth import login_required from app.data_sources import DataSourceFactory logger = get_logger(__name__) @@ -29,12 +30,13 @@ def get_strategy_service() -> StrategyService: @strategy_bp.route('/strategies', methods=['GET']) +@login_required def list_strategies(): """ - ็ญ–็•ฅๅˆ—่กจ๏ผˆๆœฌๅœฐ็‰ˆ๏ผšๅ•็”จๆˆท๏ผ‰ + List strategies for the current user. """ try: - user_id = request.args.get('user_id', type=int) or 1 + user_id = g.user_id items = get_strategy_service().list_strategies(user_id=user_id) return jsonify({'code': 1, 'msg': 'success', 'data': {'strategies': items}}) except Exception as e: @@ -44,12 +46,14 @@ def list_strategies(): @strategy_bp.route('/strategies/detail', methods=['GET']) +@login_required def get_strategy_detail(): try: + user_id = g.user_id strategy_id = request.args.get('id', type=int) if not strategy_id: return jsonify({'code': 0, 'msg': 'Missing strategy id parameter', 'data': None}), 400 - st = get_strategy_service().get_strategy(strategy_id) + st = get_strategy_service().get_strategy(strategy_id, user_id=user_id) if not st: return jsonify({'code': 0, 'msg': 'Strategy not found', 'data': None}), 404 return jsonify({'code': 1, 'msg': 'success', 'data': st}) @@ -60,11 +64,13 @@ def get_strategy_detail(): @strategy_bp.route('/strategies/create', methods=['POST']) +@login_required def create_strategy(): try: + user_id = g.user_id payload = request.get_json() or {} - # Local mode default user - payload['user_id'] = int(payload.get('user_id') or 1) + # Use current user's ID + payload['user_id'] = user_id payload['strategy_type'] = payload.get('strategy_type') or 'IndicatorStrategy' new_id = get_strategy_service().create_strategy(payload) return jsonify({'code': 1, 'msg': 'success', 'data': {'id': new_id}}) @@ -75,18 +81,20 @@ def create_strategy(): @strategy_bp.route('/strategies/batch-create', methods=['POST']) +@login_required def batch_create_strategies(): """ - ๆ‰น้‡ๅˆ›ๅปบ็ญ–็•ฅ๏ผˆๅคšๅธ็ง๏ผ‰ + Batch create strategies (multiple symbols) - ่ฏทๆฑ‚ไฝ“: - strategy_name: ็ญ–็•ฅๅŸบ็ก€ๅ็งฐ - symbols: ๅธ็งๆ•ฐ็ป„๏ผŒๅฆ‚ ["Crypto:BTC/USDT", "Crypto:ETH/USDT"] - ... ๅ…ถไป–็ญ–็•ฅ้…็ฝฎ + Request body: + strategy_name: Base strategy name + symbols: Array of symbols, e.g. ["Crypto:BTC/USDT", "Crypto:ETH/USDT"] + ... other strategy config """ try: + user_id = g.user_id payload = request.get_json() or {} - payload['user_id'] = int(payload.get('user_id') or 1) + payload['user_id'] = user_id payload['strategy_type'] = payload.get('strategy_type') or 'IndicatorStrategy' result = get_strategy_service().batch_create_strategies(payload) @@ -94,13 +102,13 @@ def batch_create_strategies(): if result['success']: return jsonify({ 'code': 1, - 'msg': f"ๆˆๅŠŸๅˆ›ๅปบ {result['total_created']} ไธช็ญ–็•ฅ", + 'msg': f"Successfully created {result['total_created']} strategies", 'data': result }) else: return jsonify({ 'code': 0, - 'msg': 'ๆ‰น้‡ๅˆ›ๅปบๅคฑ่ดฅ', + 'msg': 'Batch creation failed', 'data': result }) except Exception as e: @@ -110,31 +118,33 @@ def batch_create_strategies(): @strategy_bp.route('/strategies/batch-start', methods=['POST']) +@login_required def batch_start_strategies(): """ - ๆ‰น้‡ๅฏๅŠจ็ญ–็•ฅ + Batch start strategies - ่ฏทๆฑ‚ไฝ“: - strategy_ids: ็ญ–็•ฅIDๆ•ฐ็ป„ - ๆˆ– - strategy_group_id: ็ญ–็•ฅ็ป„ID + Request body: + strategy_ids: Array of strategy IDs + or + strategy_group_id: Strategy group ID """ try: + user_id = g.user_id payload = request.get_json() or {} strategy_ids = payload.get('strategy_ids') or [] strategy_group_id = payload.get('strategy_group_id') - # ๅฆ‚ๆžœๆไพ›ไบ†็ญ–็•ฅ็ป„ID๏ผŒ่Žทๅ–็ป„ๅ†…ๆ‰€ๆœ‰็ญ–็•ฅ + # If strategy_group_id provided, get all strategies in the group if strategy_group_id and not strategy_ids: - strategy_ids = get_strategy_service().get_strategies_by_group(strategy_group_id) + strategy_ids = get_strategy_service().get_strategies_by_group(strategy_group_id, user_id=user_id) if not strategy_ids: - return jsonify({'code': 0, 'msg': '่ฏทๆไพ›็ญ–็•ฅID', 'data': None}), 400 + return jsonify({'code': 0, 'msg': 'Please provide strategy IDs', 'data': None}), 400 - # ๅ…ˆๆ›ดๆ–ฐๆ•ฐๆฎๅบ“็Šถๆ€ - result = get_strategy_service().batch_start_strategies(strategy_ids) + # Update database status first + result = get_strategy_service().batch_start_strategies(strategy_ids, user_id=user_id) - # ็„ถๅŽๅฏๅŠจๆ‰ง่กŒๅ™จ + # Then start executor executor = get_trading_executor() for sid in result.get('success_ids', []): try: @@ -144,7 +154,7 @@ def batch_start_strategies(): return jsonify({ 'code': 1 if result['success'] else 0, - 'msg': f"ๆˆๅŠŸๅฏๅŠจ {len(result.get('success_ids', []))} ไธช็ญ–็•ฅ", + 'msg': f"Successfully started {len(result.get('success_ids', []))} strategies", 'data': result }) except Exception as e: @@ -154,27 +164,29 @@ def batch_start_strategies(): @strategy_bp.route('/strategies/batch-stop', methods=['POST']) +@login_required def batch_stop_strategies(): """ - ๆ‰น้‡ๅœๆญข็ญ–็•ฅ + Batch stop strategies - ่ฏทๆฑ‚ไฝ“: - strategy_ids: ็ญ–็•ฅIDๆ•ฐ็ป„ - ๆˆ– - strategy_group_id: ็ญ–็•ฅ็ป„ID + Request body: + strategy_ids: Array of strategy IDs + or + strategy_group_id: Strategy group ID """ try: + user_id = g.user_id payload = request.get_json() or {} strategy_ids = payload.get('strategy_ids') or [] strategy_group_id = payload.get('strategy_group_id') if strategy_group_id and not strategy_ids: - strategy_ids = get_strategy_service().get_strategies_by_group(strategy_group_id) + strategy_ids = get_strategy_service().get_strategies_by_group(strategy_group_id, user_id=user_id) if not strategy_ids: - return jsonify({'code': 0, 'msg': '่ฏทๆไพ›็ญ–็•ฅID', 'data': None}), 400 + return jsonify({'code': 0, 'msg': 'Please provide strategy IDs', 'data': None}), 400 - # ๅ…ˆๅœๆญขๆ‰ง่กŒๅ™จ + # Stop executor first executor = get_trading_executor() for sid in strategy_ids: try: @@ -182,12 +194,12 @@ def batch_stop_strategies(): except Exception as e: logger.error(f"Failed to stop executor for strategy {sid}: {e}") - # ็„ถๅŽๆ›ดๆ–ฐๆ•ฐๆฎๅบ“็Šถๆ€ - result = get_strategy_service().batch_stop_strategies(strategy_ids) + # Then update database status + result = get_strategy_service().batch_stop_strategies(strategy_ids, user_id=user_id) return jsonify({ 'code': 1 if result['success'] else 0, - 'msg': f"ๆˆๅŠŸๅœๆญข {len(result.get('success_ids', []))} ไธช็ญ–็•ฅ", + 'msg': f"Successfully stopped {len(result.get('success_ids', []))} strategies", 'data': result }) except Exception as e: @@ -197,40 +209,42 @@ def batch_stop_strategies(): @strategy_bp.route('/strategies/batch-delete', methods=['DELETE']) +@login_required def batch_delete_strategies(): """ - ๆ‰น้‡ๅˆ ้™ค็ญ–็•ฅ + Batch delete strategies - ่ฏทๆฑ‚ไฝ“: - strategy_ids: ็ญ–็•ฅIDๆ•ฐ็ป„ - ๆˆ– - strategy_group_id: ็ญ–็•ฅ็ป„ID + Request body: + strategy_ids: Array of strategy IDs + or + strategy_group_id: Strategy group ID """ try: + user_id = g.user_id payload = request.get_json() or {} strategy_ids = payload.get('strategy_ids') or [] strategy_group_id = payload.get('strategy_group_id') if strategy_group_id and not strategy_ids: - strategy_ids = get_strategy_service().get_strategies_by_group(strategy_group_id) + strategy_ids = get_strategy_service().get_strategies_by_group(strategy_group_id, user_id=user_id) if not strategy_ids: - return jsonify({'code': 0, 'msg': '่ฏทๆไพ›็ญ–็•ฅID', 'data': None}), 400 + return jsonify({'code': 0, 'msg': 'Please provide strategy IDs', 'data': None}), 400 - # ๅ…ˆๅœๆญขๆ‰ง่กŒๅ™จ + # Stop executor first executor = get_trading_executor() for sid in strategy_ids: try: executor.stop_strategy(sid) except Exception as e: - pass # ๅฟฝ็•ฅๅœๆญข้”™่ฏฏ + pass # Ignore stop errors - # ็„ถๅŽๅˆ ้™ค - result = get_strategy_service().batch_delete_strategies(strategy_ids) + # Then delete + result = get_strategy_service().batch_delete_strategies(strategy_ids, user_id=user_id) return jsonify({ 'code': 1 if result['success'] else 0, - 'msg': f"ๆˆๅŠŸๅˆ ้™ค {len(result.get('success_ids', []))} ไธช็ญ–็•ฅ", + 'msg': f"Successfully deleted {len(result.get('success_ids', []))} strategies", 'data': result }) except Exception as e: @@ -240,13 +254,15 @@ def batch_delete_strategies(): @strategy_bp.route('/strategies/update', methods=['PUT']) +@login_required def update_strategy(): try: + user_id = g.user_id strategy_id = request.args.get('id', type=int) if not strategy_id: return jsonify({'code': 0, 'msg': 'Missing strategy id parameter', 'data': None}), 400 payload = request.get_json() or {} - ok = get_strategy_service().update_strategy(strategy_id, payload) + ok = get_strategy_service().update_strategy(strategy_id, payload, user_id=user_id) if not ok: return jsonify({'code': 0, 'msg': 'Strategy not found', 'data': None}), 404 return jsonify({'code': 1, 'msg': 'success', 'data': None}) @@ -257,12 +273,14 @@ def update_strategy(): @strategy_bp.route('/strategies/delete', methods=['DELETE']) +@login_required def delete_strategy(): try: + user_id = g.user_id strategy_id = request.args.get('id', type=int) if not strategy_id: return jsonify({'code': 0, 'msg': 'Missing strategy id parameter', 'data': None}), 400 - ok = get_strategy_service().delete_strategy(strategy_id) + ok = get_strategy_service().delete_strategy(strategy_id, user_id=user_id) return jsonify({'code': 1 if ok else 0, 'msg': 'success' if ok else 'failed', 'data': None}) except Exception as e: logger.error(f"delete_strategy failed: {str(e)}") @@ -271,12 +289,20 @@ def delete_strategy(): @strategy_bp.route('/strategies/trades', methods=['GET']) +@login_required def get_trades(): - """ไบคๆ˜“่ฎฐๅฝ•๏ผˆไปŽๆœฌๅœฐ SQLite ่ฏปๅ–๏ผ‰""" + """Get trade records for the current user's strategy.""" try: + user_id = g.user_id strategy_id = request.args.get('id', type=int) if not strategy_id: return jsonify({'code': 0, 'msg': 'Missing strategy id parameter', 'data': {'trades': [], 'items': []}}), 400 + + # Verify strategy belongs to user + st = get_strategy_service().get_strategy(strategy_id, user_id=user_id) + if not st: + return jsonify({'code': 0, 'msg': 'Strategy not found', 'data': {'trades': [], 'items': []}}), 404 + with get_db_connection() as db: cur = db.cursor() cur.execute( @@ -299,12 +325,20 @@ def get_trades(): @strategy_bp.route('/strategies/positions', methods=['GET']) +@login_required def get_positions(): - """ๆŒไป“่ฎฐๅฝ•๏ผˆไปŽๆœฌๅœฐ SQLite ่ฏปๅ–๏ผ‰""" + """Get position records for the current user's strategy.""" try: + user_id = g.user_id strategy_id = request.args.get('id', type=int) if not strategy_id: return jsonify({'code': 0, 'msg': 'Missing strategy id parameter', 'data': {'positions': [], 'items': []}}), 400 + + # Verify strategy belongs to user + st = get_strategy_service().get_strategy(strategy_id, user_id=user_id) + if not st: + return jsonify({'code': 0, 'msg': 'Strategy not found', 'data': {'positions': [], 'items': []}}), 404 + with get_db_connection() as db: cur = db.cursor() cur.execute( @@ -382,10 +416,10 @@ def _calc_pnl_percent(entry_price: float, size: float, pnl: float) -> float: cur.execute( """ UPDATE qd_strategy_positions - SET current_price = ?, unrealized_pnl = ?, pnl_percent = ?, updated_at = ? + SET current_price = ?, unrealized_pnl = ?, pnl_percent = ?, updated_at = NOW() WHERE id = ? """, - (float(cp or 0.0), float(pnl), float(pct), int(now), int(rr.get("id"))), + (float(cp or 0.0), float(pnl), float(pct), int(rr.get("id"))), ) except Exception: pass @@ -400,14 +434,18 @@ def _calc_pnl_percent(entry_price: float, size: float, pnl: float) -> float: @strategy_bp.route('/strategies/equityCurve', methods=['GET']) +@login_required def get_equity_curve(): - """ๅ‡€ๅ€ผๆ›ฒ็บฟ๏ผˆๆœฌๅœฐ็ฎ€ๅ•่ฎก็ฎ—๏ผšinitial_capital + ็ดฏ่ฎก profit๏ผ‰""" + """Get equity curve for the current user's strategy.""" try: + user_id = g.user_id strategy_id = request.args.get('id', type=int) if not strategy_id: return jsonify({'code': 0, 'msg': 'Missing strategy id parameter', 'data': []}), 400 - st = get_strategy_service().get_strategy(strategy_id) or {} + st = get_strategy_service().get_strategy(strategy_id, user_id=user_id) or {} + if not st: + return jsonify({'code': 0, 'msg': 'Strategy not found', 'data': []}), 404 initial = float(st.get('initial_capital') or (st.get('trading_config') or {}).get('initial_capital') or 0) if initial <= 0: initial = 1000.0 @@ -447,14 +485,16 @@ def get_equity_curve(): @strategy_bp.route('/strategies/stop', methods=['POST']) +@login_required def stop_strategy(): """ - ๅœๆญข็ญ–็•ฅ + Stop a strategy for the current user. - ๅ‚ๆ•ฐ: - id: ็ญ–็•ฅID + Params: + id: Strategy ID """ try: + user_id = g.user_id strategy_id = request.args.get('id', type=int) if not strategy_id: @@ -464,18 +504,23 @@ def stop_strategy(): 'data': None }), 400 - # ่Žทๅ–็ญ–็•ฅ็ฑปๅž‹ + # Verify strategy belongs to user + st = get_strategy_service().get_strategy(strategy_id, user_id=user_id) + if not st: + return jsonify({'code': 0, 'msg': 'Strategy not found', 'data': None}), 404 + + # Get strategy type strategy_type = get_strategy_service().get_strategy_type(strategy_id) # Local backend: AI strategy executor was removed. Only indicator strategies are supported. if strategy_type == 'PromptBasedStrategy': return jsonify({'code': 0, 'msg': 'AI strategy has been removed; local edition does not support starting/stopping AI strategies', 'data': None}), 400 - # ๆŒ‡ๆ ‡็ญ–็•ฅ + # Indicator strategy get_trading_executor().stop_strategy(strategy_id) - # ๆ›ดๆ–ฐ็ญ–็•ฅ็Šถๆ€ - get_strategy_service().update_strategy_status(strategy_id, 'stopped') + # Update strategy status + get_strategy_service().update_strategy_status(strategy_id, 'stopped', user_id=user_id) return jsonify({ 'code': 1, @@ -494,14 +539,16 @@ def stop_strategy(): @strategy_bp.route('/strategies/start', methods=['POST']) +@login_required def start_strategy(): """ - ๅฏๅŠจ็ญ–็•ฅ + Start a strategy for the current user. - ๅ‚ๆ•ฐ: - id: ็ญ–็•ฅID + Params: + id: Strategy ID """ try: + user_id = g.user_id strategy_id = request.args.get('id', type=int) if not strategy_id: @@ -511,22 +558,27 @@ def start_strategy(): 'data': None }), 400 - # ่Žทๅ–็ญ–็•ฅ็ฑปๅž‹ + # Verify strategy belongs to user + st = get_strategy_service().get_strategy(strategy_id, user_id=user_id) + if not st: + return jsonify({'code': 0, 'msg': 'Strategy not found', 'data': None}), 404 + + # Get strategy type strategy_type = get_strategy_service().get_strategy_type(strategy_id) - # ๆ›ดๆ–ฐ็ญ–็•ฅ็Šถๆ€ - get_strategy_service().update_strategy_status(strategy_id, 'running') + # Update strategy status + get_strategy_service().update_strategy_status(strategy_id, 'running', user_id=user_id) # Local backend: AI strategy executor was removed. Only indicator strategies are supported. if strategy_type == 'PromptBasedStrategy': return jsonify({'code': 0, 'msg': 'AI strategy has been removed; local edition does not support starting AI strategies', 'data': None}), 400 - # ๆŒ‡ๆ ‡็ญ–็•ฅ + # Indicator strategy success = get_trading_executor().start_strategy(strategy_id) if not success: - # ๅฆ‚ๆžœๅฏๅŠจๅคฑ่ดฅ๏ผŒๆขๅค็Šถๆ€ - get_strategy_service().update_strategy_status(strategy_id, 'stopped') + # If start failed, restore status + get_strategy_service().update_strategy_status(strategy_id, 'stopped', user_id=user_id) return jsonify({ 'code': 0, 'msg': 'Failed to start strategy executor', @@ -550,12 +602,13 @@ def start_strategy(): @strategy_bp.route('/strategies/test-connection', methods=['POST']) +@login_required def test_connection(): """ - ๆต‹่ฏ•ไบคๆ˜“ๆ‰€่ฟžๆŽฅ + Test exchange connection. - ่ฏทๆฑ‚ไฝ“: - exchange_config: ไบคๆ˜“ๆ‰€้…็ฝฎ + Request body: + exchange_config: Exchange configuration """ try: data = request.get_json() or {} @@ -619,12 +672,13 @@ def test_connection(): @strategy_bp.route('/strategies/get-symbols', methods=['POST']) +@login_required def get_symbols(): """ - ่Žทๅ–ไบคๆ˜“ๆ‰€ไบคๆ˜“ๅฏนๅˆ—่กจ + Get exchange trading pairs list. - ่ฏทๆฑ‚ไฝ“: - exchange_config: ไบคๆ˜“ๆ‰€้…็ฝฎ + Request body: + exchange_config: Exchange configuration """ try: data = request.get_json() or {} @@ -662,9 +716,10 @@ def get_symbols(): @strategy_bp.route('/strategies/preview-compile', methods=['POST']) +@login_required def preview_compile(): """ - ้ข„่งˆ็ผ–่ฏ‘ๅŽ็š„็ญ–็•ฅ็ป“ๆžœ + Preview compiled strategy result. """ try: data = request.get_json() or {} @@ -708,9 +763,10 @@ def preview_compile(): @strategy_bp.route('/strategies/notifications', methods=['GET']) +@login_required def get_strategy_notifications(): """ - Strategy signal notifications (browser channel persistence). + Strategy signal notifications for the current user. Query: - id: strategy id (optional) @@ -718,16 +774,39 @@ def get_strategy_notifications(): - since_id: return rows with id > since_id (optional) """ try: + user_id = g.user_id strategy_id = request.args.get('id', type=int) limit = request.args.get('limit', type=int) or 50 limit = max(1, min(200, int(limit))) since_id = request.args.get('since_id', type=int) or 0 + # Get user's strategy IDs for filtering notifications + user_strategy_ids = [] + with get_db_connection() as db: + cur = db.cursor() + cur.execute("SELECT id FROM qd_strategies_trading WHERE user_id = ?", (user_id,)) + rows = cur.fetchall() or [] + user_strategy_ids = [r.get('id') for r in rows if r.get('id')] + cur.close() + + if not user_strategy_ids: + return jsonify({'code': 1, 'msg': 'success', 'data': {'items': []}}) + where = [] args = [] + + # Filter by user's strategies if strategy_id: - where.append("strategy_id = ?") - args.append(int(strategy_id)) + if strategy_id in user_strategy_ids: + where.append("strategy_id = ?") + args.append(int(strategy_id)) + else: + return jsonify({'code': 1, 'msg': 'success', 'data': {'items': []}}) + else: + placeholders = ",".join(["?"] * len(user_strategy_ids)) + where.append(f"strategy_id IN ({placeholders})") + args.extend(user_strategy_ids) + if since_id: where.append("id > ?") args.append(int(since_id)) @@ -756,19 +835,25 @@ def get_strategy_notifications(): @strategy_bp.route('/strategies/notifications/read', methods=['POST']) +@login_required def mark_notification_read(): - """Mark a single notification as read.""" + """Mark a single notification as read for the current user.""" try: + user_id = g.user_id data = request.get_json(force=True, silent=True) or {} notification_id = data.get('id') if not notification_id: return jsonify({'code': 0, 'msg': 'Missing id'}), 400 + # Only update notifications for user's strategies with get_db_connection() as db: cur = db.cursor() cur.execute( - "UPDATE qd_strategy_notifications SET is_read = 1 WHERE id = ?", - (int(notification_id),) + """ + UPDATE qd_strategy_notifications SET is_read = 1 + WHERE id = ? AND strategy_id IN (SELECT id FROM qd_strategies_trading WHERE user_id = ?) + """, + (int(notification_id), user_id) ) db.commit() cur.close() @@ -780,12 +865,20 @@ def mark_notification_read(): @strategy_bp.route('/strategies/notifications/read-all', methods=['POST']) +@login_required def mark_all_notifications_read(): - """Mark all notifications as read.""" + """Mark all notifications as read for the current user.""" try: + user_id = g.user_id with get_db_connection() as db: cur = db.cursor() - cur.execute("UPDATE qd_strategy_notifications SET is_read = 1") + cur.execute( + """ + UPDATE qd_strategy_notifications SET is_read = 1 + WHERE strategy_id IN (SELECT id FROM qd_strategies_trading WHERE user_id = ?) + """, + (user_id,) + ) db.commit() cur.close() @@ -796,12 +889,20 @@ def mark_all_notifications_read(): @strategy_bp.route('/strategies/notifications/clear', methods=['DELETE']) +@login_required def clear_notifications(): - """Clear all notifications (delete from database).""" + """Clear all notifications for the current user.""" try: + user_id = g.user_id with get_db_connection() as db: cur = db.cursor() - cur.execute("DELETE FROM qd_strategy_notifications") + cur.execute( + """ + DELETE FROM qd_strategy_notifications + WHERE strategy_id IN (SELECT id FROM qd_strategies_trading WHERE user_id = ?) + """, + (user_id,) + ) db.commit() cur.close() diff --git a/backend_api_python/app/routes/strategy_code.py b/backend_api_python/app/routes/strategy_code.py index 84879a012..a134f5562 100644 --- a/backend_api_python/app/routes/strategy_code.py +++ b/backend_api_python/app/routes/strategy_code.py @@ -41,11 +41,10 @@ def _extract_meta_from_code(code: str) -> Dict[str, str]: return {"name": name, "description": description} -@strategy_code_bp.route("/strategy/getStrategies", methods=["POST"]) +@strategy_code_bp.route("/strategy/getStrategies", methods=["GET"]) def get_strategies(): try: - data = request.get_json() or {} - user_id = int(data.get("userid") or 1) + user_id = int(request.args.get("userid") or 1) with get_db_connection() as db: cur = db.cursor() cur.execute( diff --git a/backend_api_python/app/routes/user.py b/backend_api_python/app/routes/user.py new file mode 100644 index 000000000..9f175eae3 --- /dev/null +++ b/backend_api_python/app/routes/user.py @@ -0,0 +1,317 @@ +""" +User Management API Routes + +Provides endpoints for user CRUD operations, role management, etc. +Only accessible by admin users. +""" +from flask import Blueprint, request, jsonify, g +from app.services.user_service import get_user_service +from app.utils.auth import login_required, admin_required +from app.utils.logger import get_logger + +logger = get_logger(__name__) + +user_bp = Blueprint('user_manage', __name__) + + +@user_bp.route('/list', methods=['GET']) +@login_required +@admin_required +def list_users(): + """ + List all users (admin only). + + Query params: + page: int (default 1) + page_size: int (default 20, max 100) + """ + try: + page = request.args.get('page', 1, type=int) + page_size = request.args.get('page_size', 20, type=int) + page_size = min(100, max(1, page_size)) + + result = get_user_service().list_users(page=page, page_size=page_size) + + return jsonify({ + 'code': 1, + 'msg': 'success', + 'data': result + }) + except Exception as e: + logger.error(f"list_users failed: {e}") + return jsonify({'code': 0, 'msg': str(e), 'data': None}), 500 + + +@user_bp.route('/detail', methods=['GET']) +@login_required +@admin_required +def get_user_detail(): + """Get user detail by ID (admin only)""" + try: + user_id = request.args.get('id', type=int) + if not user_id: + return jsonify({'code': 0, 'msg': 'Missing user id', 'data': None}), 400 + + user = get_user_service().get_user_by_id(user_id) + if not user: + return jsonify({'code': 0, 'msg': 'User not found', 'data': None}), 404 + + return jsonify({ + 'code': 1, + 'msg': 'success', + 'data': user + }) + except Exception as e: + logger.error(f"get_user_detail failed: {e}") + return jsonify({'code': 0, 'msg': str(e), 'data': None}), 500 + + +@user_bp.route('/create', methods=['POST']) +@login_required +@admin_required +def create_user(): + """ + Create a new user (admin only). + + Request body: + username: str (required) + password: str (required) + email: str (optional) + nickname: str (optional) + role: str (optional, default 'user') + """ + try: + data = request.get_json() or {} + + user_id = get_user_service().create_user(data) + + return jsonify({ + 'code': 1, + 'msg': 'User created successfully', + 'data': {'id': user_id} + }) + except ValueError as e: + return jsonify({'code': 0, 'msg': str(e), 'data': None}), 400 + except Exception as e: + logger.error(f"create_user failed: {e}") + return jsonify({'code': 0, 'msg': str(e), 'data': None}), 500 + + +@user_bp.route('/update', methods=['PUT']) +@login_required +@admin_required +def update_user(): + """ + Update user information (admin only). + + Query params: + id: int (required) + + Request body: + email: str (optional) + nickname: str (optional) + role: str (optional) + status: str (optional) + """ + try: + user_id = request.args.get('id', type=int) + if not user_id: + return jsonify({'code': 0, 'msg': 'Missing user id', 'data': None}), 400 + + data = request.get_json() or {} + + success = get_user_service().update_user(user_id, data) + + if success: + return jsonify({'code': 1, 'msg': 'User updated successfully', 'data': None}) + else: + return jsonify({'code': 0, 'msg': 'Update failed', 'data': None}), 400 + except Exception as e: + logger.error(f"update_user failed: {e}") + return jsonify({'code': 0, 'msg': str(e), 'data': None}), 500 + + +@user_bp.route('/delete', methods=['DELETE']) +@login_required +@admin_required +def delete_user(): + """Delete a user (admin only)""" + try: + user_id = request.args.get('id', type=int) + if not user_id: + return jsonify({'code': 0, 'msg': 'Missing user id', 'data': None}), 400 + + # Prevent deleting self + if hasattr(g, 'user_id') and g.user_id == user_id: + return jsonify({'code': 0, 'msg': 'Cannot delete yourself', 'data': None}), 400 + + success = get_user_service().delete_user(user_id) + + if success: + return jsonify({'code': 1, 'msg': 'User deleted successfully', 'data': None}) + else: + return jsonify({'code': 0, 'msg': 'Delete failed', 'data': None}), 400 + except Exception as e: + logger.error(f"delete_user failed: {e}") + return jsonify({'code': 0, 'msg': str(e), 'data': None}), 500 + + +@user_bp.route('/reset-password', methods=['POST']) +@login_required +@admin_required +def reset_user_password(): + """ + Reset a user's password (admin only). + + Request body: + user_id: int (required) + new_password: str (required) + """ + try: + data = request.get_json() or {} + user_id = data.get('user_id') + new_password = data.get('new_password', '') + + if not user_id: + return jsonify({'code': 0, 'msg': 'Missing user_id', 'data': None}), 400 + + if len(new_password) < 6: + return jsonify({'code': 0, 'msg': 'Password must be at least 6 characters', 'data': None}), 400 + + success = get_user_service().reset_password(user_id, new_password) + + if success: + return jsonify({'code': 1, 'msg': 'Password reset successfully', 'data': None}) + else: + return jsonify({'code': 0, 'msg': 'Reset failed', 'data': None}), 400 + except ValueError as e: + return jsonify({'code': 0, 'msg': str(e), 'data': None}), 400 + except Exception as e: + logger.error(f"reset_user_password failed: {e}") + return jsonify({'code': 0, 'msg': str(e), 'data': None}), 500 + + +@user_bp.route('/roles', methods=['GET']) +@login_required +@admin_required +def get_roles(): + """Get available roles and their permissions""" + service = get_user_service() + + roles = [] + for role in service.ROLES: + roles.append({ + 'id': role, + 'name': role.capitalize(), + 'permissions': service.get_user_permissions(role) + }) + + return jsonify({ + 'code': 1, + 'msg': 'success', + 'data': {'roles': roles} + }) + + +# Self-service endpoints (accessible by any logged-in user) + +@user_bp.route('/profile', methods=['GET']) +@login_required +def get_profile(): + """Get current user's profile""" + try: + user_id = getattr(g, 'user_id', None) + if not user_id: + return jsonify({'code': 0, 'msg': 'Not authenticated', 'data': None}), 401 + + user = get_user_service().get_user_by_id(user_id) + if not user: + return jsonify({'code': 0, 'msg': 'User not found', 'data': None}), 404 + + # Add permissions + user['permissions'] = get_user_service().get_user_permissions(user.get('role', 'user')) + + return jsonify({ + 'code': 1, + 'msg': 'success', + 'data': user + }) + except Exception as e: + logger.error(f"get_profile failed: {e}") + return jsonify({'code': 0, 'msg': str(e), 'data': None}), 500 + + +@user_bp.route('/profile/update', methods=['PUT']) +@login_required +def update_profile(): + """ + Update current user's profile (limited fields). + + Request body: + nickname: str (optional) + email: str (optional) + avatar: str (optional) + """ + try: + user_id = getattr(g, 'user_id', None) + if not user_id: + return jsonify({'code': 0, 'msg': 'Not authenticated', 'data': None}), 401 + + data = request.get_json() or {} + + # Only allow updating certain fields for self-service + allowed = {} + for field in ['nickname', 'email', 'avatar']: + if field in data: + allowed[field] = data[field] + + if not allowed: + return jsonify({'code': 0, 'msg': 'No valid fields to update', 'data': None}), 400 + + success = get_user_service().update_user(user_id, allowed) + + if success: + return jsonify({'code': 1, 'msg': 'Profile updated successfully', 'data': None}) + else: + return jsonify({'code': 0, 'msg': 'Update failed', 'data': None}), 400 + except Exception as e: + logger.error(f"update_profile failed: {e}") + return jsonify({'code': 0, 'msg': str(e), 'data': None}), 500 + + +@user_bp.route('/change-password', methods=['POST']) +@login_required +def change_password(): + """ + Change current user's password. + + Request body: + old_password: str (required) + new_password: str (required) + """ + try: + user_id = getattr(g, 'user_id', None) + if not user_id: + return jsonify({'code': 0, 'msg': 'Not authenticated', 'data': None}), 401 + + data = request.get_json() or {} + old_password = data.get('old_password', '') + new_password = data.get('new_password', '') + + if not old_password or not new_password: + return jsonify({'code': 0, 'msg': 'Both old and new password required', 'data': None}), 400 + + if len(new_password) < 6: + return jsonify({'code': 0, 'msg': 'New password must be at least 6 characters', 'data': None}), 400 + + success = get_user_service().change_password(user_id, old_password, new_password) + + if success: + return jsonify({'code': 1, 'msg': 'Password changed successfully', 'data': None}) + else: + return jsonify({'code': 0, 'msg': 'Old password incorrect', 'data': None}), 400 + except ValueError as e: + return jsonify({'code': 0, 'msg': str(e), 'data': None}), 400 + except Exception as e: + logger.error(f"change_password failed: {e}") + return jsonify({'code': 0, 'msg': str(e), 'data': None}), 500 diff --git a/backend_api_python/app/services/agents/coordinator.py b/backend_api_python/app/services/agents/coordinator.py index 513776739..2d29a7177 100644 --- a/backend_api_python/app/services/agents/coordinator.py +++ b/backend_api_python/app/services/agents/coordinator.py @@ -97,6 +97,227 @@ def _init_agents(self): self.neutral_analyst = NeutralAnalyst() self.safe_analyst = SafeAnalyst() + def run_analysis_stream(self, market: str, symbol: str, language: str = 'zh-CN', model: str = None, timeframe: str = "1D", on_progress=None): + """ + Run the full multi-agent analysis workflow with progress callbacks. + + Args: + on_progress: Callback function that receives (agent_name: str, status: str, result: Optional[dict]) + status can be: 'started', 'completed', 'error' + + Yields: + Progress events as dicts: { 'agent': str, 'status': str, 'result': dict or None } + """ + logger.info(f"Multi-agent stream analysis start: {market}:{symbol}, model={model}, language={language}") + + def emit_progress(agent: str, status: str, result: dict = None): + """Emit progress event.""" + if on_progress: + on_progress(agent, status, result) + + # Build base context + from .tools import AgentTools + tools = AgentTools() + + emit_progress('data_collection', 'started', None) + + # 1) Base data + current_price = tools.get_current_price(market, symbol) + company_data = tools.get_company_data(market, symbol, language=language) + + # Normalize timeframe + tf = (timeframe or "1D").strip() + + # 2) Kline + fundamentals + kline_data = tools.get_stock_data(market, symbol, days=30, timeframe=tf) + fundamental_data = tools.get_fundamental_data(market, symbol) + indicators = tools.calculate_technical_indicators(kline_data or []) + + # 3) News (Finnhub + web search) + company_name = company_data.get('name', symbol) if company_data else symbol + news_data = tools.get_news(market, symbol, days=7, company_name=company_name) + + base_data = { + "market": market, + "symbol": symbol, + "current_price": current_price, + "kline_data": kline_data, + "fundamental_data": fundamental_data, + "company_data": company_data, + "news_data": news_data, + "indicators": indicators, + } + + context = { + "market": market, + "symbol": symbol, + "language": language, + "model": model, + "timeframe": tf, + "memory_features": { + "timeframe": tf, + "price": (current_price or {}).get("price"), + "changePercent": (current_price or {}).get("changePercent"), + "indicators": indicators, + }, + "base_data": base_data + } + + emit_progress('data_collection', 'completed', None) + + # Phase 1: Analysts (parallel but report individually) + logger.info("Phase 1: Analyst team") + + # Fundamental Analyst + emit_progress('fundamental', 'started', None) + fundamental_report = self.fundamental_analyst.analyze(context) + emit_progress('fundamental', 'completed', fundamental_report.get('data', {})) + + # Technical Analyst (market_analyst) + emit_progress('technical', 'started', None) + market_report = self.market_analyst.analyze(context) + emit_progress('technical', 'completed', market_report.get('data', {})) + + # News Analyst + emit_progress('news', 'started', None) + news_report = self.news_analyst.analyze(context) + emit_progress('news', 'completed', news_report.get('data', {})) + + # Sentiment Analyst + emit_progress('sentiment', 'started', None) + sentiment_report = self.sentiment_analyst.analyze(context) + emit_progress('sentiment', 'completed', sentiment_report.get('data', {})) + + # Risk Analyst + emit_progress('risk', 'started', None) + risk_report = self.risk_analyst.analyze(context) + emit_progress('risk', 'completed', risk_report.get('data', {})) + + # Update context with analyst outputs + context.update({ + "market_report": market_report, + "fundamental_report": fundamental_report, + "news_report": news_report, + "sentiment_report": sentiment_report, + "risk_report": risk_report, + }) + + # Phase 2: Bull/Bear debate + logger.info("Phase 2: Research debate") + + emit_progress('debate_bull', 'started', None) + bull_argument = self.bull_researcher.analyze(context) + emit_progress('debate_bull', 'completed', bull_argument.get('data', {})) + + emit_progress('debate_bear', 'started', None) + bear_argument = self.bear_researcher.analyze(context) + emit_progress('debate_bear', 'completed', bear_argument.get('data', {})) + + context["bull_argument"] = bull_argument + context["bear_argument"] = bear_argument + + # Research manager decision + emit_progress('debate_research', 'started', None) + research_decision = self._make_research_decision(bull_argument, bear_argument, context) + context["research_decision"] = research_decision + emit_progress('debate_research', 'completed', {'research_decision': research_decision}) + + # Phase 3: Trader decision + logger.info("Phase 3: Trader decision") + emit_progress('trader_decision', 'started', None) + trader_result = self.trader_agent.analyze(context) + trader_plan = trader_result.get('data', {}).get('trading_plan', {}) + context["trader_plan"] = trader_plan + emit_progress('trader_decision', 'completed', trader_result.get('data', {})) + + # Phase 4: Risk debate + logger.info("Phase 4: Risk debate") + + emit_progress('risk_debate_risky', 'started', None) + risky_result = self.risky_analyst.analyze(context) + emit_progress('risk_debate_risky', 'completed', risky_result.get('data', {})) + + emit_progress('risk_debate_neutral', 'started', None) + neutral_result = self.neutral_analyst.analyze(context) + emit_progress('risk_debate_neutral', 'completed', neutral_result.get('data', {})) + + emit_progress('risk_debate_safe', 'started', None) + safe_result = self.safe_analyst.analyze(context) + emit_progress('risk_debate_safe', 'completed', safe_result.get('data', {})) + + # Final decision + logger.info("Phase 5: Final decision") + emit_progress('final_decision', 'started', None) + final_decision = self._make_risk_decision(risky_result, neutral_result, safe_result, trader_result, context) + emit_progress('final_decision', 'completed', final_decision) + + # Generate overview + emit_progress('overview', 'started', None) + overview = self._generate_overview(context, final_decision) + emit_progress('overview', 'completed', overview) + + # Record for reflection + if self.reflection_service and final_decision.get('decision') in ['BUY', 'SELL', 'HOLD']: + try: + self.reflection_service.record_analysis( + market=market, + symbol=symbol, + price=base_data.get('current_price', {}).get('price'), + decision=final_decision.get('decision'), + confidence=final_decision.get('confidence', 50), + reasoning=final_decision.get('reasoning', ''), + check_days=7 + ) + except Exception as e: + logger.warning(f"Record reflection failed: {e}") + + # Build final result + debate_data = { + "bull": bull_argument.get('data', {}) if bull_argument.get('data') else {}, + "bear": bear_argument.get('data', {}) if bear_argument.get('data') else {}, + "research_decision": research_decision if research_decision else "Analyzing..." + } + + trader_decision_data = trader_result.get('data', {}) if trader_result.get('data') else { + "decision": "HOLD", + "confidence": 50, + "reasoning": "Analyzing...", + "trading_plan": {}, + "report": "Analyzing..." + } + + risk_debate_data = { + "risky": risky_result.get('data', {}) if risky_result.get('data') else {}, + "neutral": neutral_result.get('data', {}) if neutral_result.get('data') else {}, + "safe": safe_result.get('data', {}) if safe_result.get('data') else {} + } + + if not final_decision or (isinstance(final_decision, dict) and len(final_decision) == 0): + final_decision = { + "decision": "HOLD", + "confidence": 50, + "reasoning": "Analyzing...", + "risk_summary": {}, + "recommendation": "Analyzing..." + } + + result = { + "overview": overview, + "fundamental": fundamental_report.get('data', {}), + "technical": market_report.get('data', {}), + "news": news_report.get('data', {}), + "sentiment": sentiment_report.get('data', {}), + "risk": risk_report.get('data', {}), + "debate": debate_data, + "trader_decision": trader_decision_data, + "risk_debate": risk_debate_data, + "final_decision": final_decision, + "error": None + } + + logger.info(f"Multi-agent stream analysis completed: {market}:{symbol}") + return result + def run_analysis(self, market: str, symbol: str, language: str = 'zh-CN', model: str = None, timeframe: str = "1D") -> Dict[str, Any]: """ Run the full multi-agent analysis workflow. diff --git a/backend_api_python/app/services/agents/memory.py b/backend_api_python/app/services/agents/memory.py index 66b3e568b..0a5ab9a27 100644 --- a/backend_api_python/app/services/agents/memory.py +++ b/backend_api_python/app/services/agents/memory.py @@ -1,7 +1,7 @@ """ -Agent memory system (local-only). +Agent memory system (PostgreSQL). -This module stores agent experiences in SQLite and retrieves relevant past cases +This module stores agent experiences in PostgreSQL and retrieves relevant past cases to inject into prompts (RAG-style). It does NOT finetune model weights. Retrieval (configurable): @@ -14,7 +14,6 @@ - optional returns weight """ -import sqlite3 import json import os import math @@ -23,31 +22,24 @@ import difflib from app.utils.logger import get_logger +from app.utils.db import get_db_connection from .embedding import EmbeddingService, cosine_sim logger = get_logger(__name__) class AgentMemory: - """ๆ™บ่ƒฝไฝ“่ฎฐๅฟ†็ณป็ปŸ""" + """Agent memory system using PostgreSQL""" def __init__(self, agent_name: str, db_path: Optional[str] = None): """ - ๅˆๅง‹ๅŒ–่ฎฐๅฟ†็ณป็ปŸ + Initialize memory system. Args: - agent_name: ๆ™บ่ƒฝไฝ“ๅ็งฐ - db_path: ๆ•ฐๆฎๅบ“่ทฏๅพ„๏ผˆๅฏ้€‰๏ผ‰ + agent_name: Agent identifier (e.g., 'trader_agent', 'risk_analyst') + db_path: Deprecated parameter, kept for backward compatibility """ self.agent_name = agent_name - - if db_path is None: - # ้ป˜่ฎคๆ•ฐๆฎๅบ“่ทฏๅพ„ - db_dir = os.path.join(os.path.dirname(__file__), '..', '..', '..', 'data', 'memory') - os.makedirs(db_dir, exist_ok=True) - db_path = os.path.join(db_dir, f'{agent_name}_memory.db') - - self.db_path = db_path self.embedder = EmbeddingService() self.enable_vector = os.getenv("AGENT_MEMORY_ENABLE_VECTOR", "true").lower() == "true" self.candidate_limit = int(os.getenv("AGENT_MEMORY_CANDIDATE_LIMIT", "500") or 500) @@ -55,58 +47,6 @@ def __init__(self, agent_name: str, db_path: Optional[str] = None): self.w_sim = float(os.getenv("AGENT_MEMORY_W_SIM", "0.75") or 0.75) self.w_recency = float(os.getenv("AGENT_MEMORY_W_RECENCY", "0.20") or 0.20) self.w_returns = float(os.getenv("AGENT_MEMORY_W_RETURNS", "0.05") or 0.05) - self._init_database() - - def _init_database(self): - """ๅˆๅง‹ๅŒ–ๆ•ฐๆฎๅบ“่กจ""" - try: - conn = sqlite3.connect(self.db_path) - cursor = conn.cursor() - - cursor.execute(''' - CREATE TABLE IF NOT EXISTS memories ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - situation TEXT NOT NULL, - recommendation TEXT NOT NULL, - result TEXT, - returns REAL, - market TEXT, - symbol TEXT, - timeframe TEXT, - features_json TEXT, - embedding BLOB, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP - ) - ''') - - # Best-effort migration for older DBs - # NOTE: For existing tables, we must add missing columns BEFORE creating indexes - # that reference them (otherwise we'll hit: "no such column: market"). - cursor.execute("PRAGMA table_info(memories)") - existing_cols = {row[1] for row in cursor.fetchall() or []} - for col, ddl in { - "market": "TEXT", - "symbol": "TEXT", - "timeframe": "TEXT", - "features_json": "TEXT", - "embedding": "BLOB", - }.items(): - if col not in existing_cols: - cursor.execute(f"ALTER TABLE memories ADD COLUMN {col} {ddl}") - - # ๅˆ›ๅปบ็ดขๅผ•๏ผˆๆ”พๅœจ่ฟ็งปไน‹ๅŽ๏ผŒๅ…ผๅฎนๆ—งๅบ“๏ผ‰ - cursor.execute(''' - CREATE INDEX IF NOT EXISTS idx_created_at ON memories(created_at) - ''') - cursor.execute(''' - CREATE INDEX IF NOT EXISTS idx_market_symbol ON memories(market, symbol) - ''') - - conn.commit() - conn.close() - except Exception as e: - logger.error(f"ๅˆๅง‹ๅŒ–่ฎฐๅฟ†ๆ•ฐๆฎๅบ“ๅคฑ่ดฅ: {e}") def _now_utc(self) -> datetime: return datetime.now(timezone.utc) @@ -156,13 +96,13 @@ def add_memory( metadata: Optional[Dict[str, Any]] = None, ): """ - ๆทปๅŠ ่ฎฐๅฟ† + Add a memory entry. Args: - situation: ๆƒ…ๅ†ตๆ่ฟฐ - recommendation: ๅปบ่ฎฎ/ๅ†ณ็ญ– - result: ็ป“ๆžœๆ่ฟฐ๏ผˆๅฏ้€‰๏ผ‰ - returns: ๆ”ถ็›Š๏ผˆๅฏ้€‰๏ผ‰ + situation: Situation description + recommendation: Decision/recommendation made + result: Outcome description (optional) + returns: Return percentage (optional) metadata: Optional structured metadata (market/symbol/timeframe/features...) """ try: @@ -182,45 +122,50 @@ def add_memory( vec = self.embedder.embed(text) embedding_blob = self.embedder.to_bytes(vec) - conn = sqlite3.connect(self.db_path) - cursor = conn.cursor() - - cursor.execute(''' - INSERT INTO memories (situation, recommendation, result, returns, market, symbol, timeframe, features_json, embedding) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) - ''', (situation, recommendation, result, returns, market, symbol, timeframe, features_json, embedding_blob)) - - conn.commit() - conn.close() - logger.info(f"{self.agent_name} ๆทปๅŠ ๆ–ฐ่ฎฐๅฟ†") + with get_db_connection() as conn: + cur = conn.cursor() + cur.execute( + """ + INSERT INTO qd_agent_memories + (agent_name, situation, recommendation, result, returns, market, symbol, timeframe, features_json, embedding) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + """, + (self.agent_name, situation, recommendation, result, returns, market, symbol, timeframe, features_json, embedding_blob) + ) + conn.commit() + cur.close() + logger.info(f"{self.agent_name} added new memory") except Exception as e: - logger.error(f"ๆทปๅŠ ่ฎฐๅฟ†ๅคฑ่ดฅ: {e}") + logger.error(f"Failed to add memory: {e}") def get_memories(self, current_situation: str, n_matches: int = 5, metadata: Optional[Dict[str, Any]] = None) -> List[Dict[str, Any]]: """ - ๆฃ€็ดข็›ธไผผ่ฎฐๅฟ† + Retrieve similar memories. Args: - current_situation: ๅฝ“ๅ‰ๆƒ…ๅ†ตๆ่ฟฐ - n_matches: ่ฟ”ๅ›ž็š„ๅŒน้…ๆ•ฐ้‡ + current_situation: Current situation description + n_matches: Number of matches to return + metadata: Optional metadata for filtering/weighting Returns: - ๅŒน้…็š„่ฎฐๅฟ†ๅˆ—่กจ + List of matching memory entries """ try: - conn = sqlite3.connect(self.db_path) - cursor = conn.cursor() - - # ่Žทๅ–ๆ‰€ๆœ‰่ฎฐๅฟ† - cursor.execute(''' - SELECT id, situation, recommendation, result, returns, created_at, market, symbol, timeframe, features_json, embedding - FROM memories - ORDER BY created_at DESC - LIMIT ? - ''', (int(self.candidate_limit),)) - - all_memories = cursor.fetchall() - conn.close() + with get_db_connection() as conn: + cur = conn.cursor() + cur.execute( + """ + SELECT id, situation, recommendation, result, returns, created_at, + market, symbol, timeframe, features_json, embedding + FROM qd_agent_memories + WHERE agent_name = ? + ORDER BY created_at DESC + LIMIT ? + """, + (self.agent_name, int(self.candidate_limit)) + ) + all_memories = cur.fetchall() or [] + cur.close() if not all_memories: return [] @@ -240,23 +185,24 @@ def get_memories(self, current_situation: str, n_matches: int = 5, metadata: Opt ranked = [] for row in all_memories: - ( - mem_id, - situation, - recommendation, - result, - returns, - created_at, - market, - symbol, - timeframe, - features_json, - embedding_blob, - ) = row + mem_id = row['id'] + situation = row['situation'] + recommendation = row['recommendation'] + result = row['result'] + returns = row['returns'] + created_at = row['created_at'] + market = row['market'] + symbol = row['symbol'] + timeframe = row['timeframe'] + features_json = row['features_json'] + embedding_blob = row['embedding'] sim = 0.0 if self.enable_vector and embedding_blob: try: + # Handle memoryview/bytes from PostgreSQL + if isinstance(embedding_blob, memoryview): + embedding_blob = bytes(embedding_blob) mem_vec = self.embedder.from_bytes(embedding_blob) sim = cosine_sim(query_vec, mem_vec) except Exception: @@ -292,50 +238,60 @@ def get_memories(self, current_situation: str, n_matches: int = 5, metadata: Opt return ranked[: max(0, int(n_matches or 0))] except Exception as e: - logger.error(f"ๆฃ€็ดข่ฎฐๅฟ†ๅคฑ่ดฅ: {e}") + logger.error(f"Failed to retrieve memories: {e}") return [] def update_memory_result(self, memory_id: int, result: str, returns: Optional[float] = None): """ - ๆ›ดๆ–ฐ่ฎฐๅฟ†็š„็ป“ๆžœ + Update memory result. Args: - memory_id: ่ฎฐๅฟ†ID - result: ็ป“ๆžœๆ่ฟฐ - returns: ๆ”ถ็›Š + memory_id: Memory ID + result: Outcome description + returns: Return percentage """ try: - conn = sqlite3.connect(self.db_path) - cursor = conn.cursor() - - cursor.execute(''' - UPDATE memories - SET result = ?, returns = ?, updated_at = CURRENT_TIMESTAMP - WHERE id = ? - ''', (result, returns, memory_id)) - - conn.commit() - conn.close() - logger.info(f"{self.agent_name} ๆ›ดๆ–ฐ่ฎฐๅฟ† {memory_id}") + with get_db_connection() as conn: + cur = conn.cursor() + cur.execute( + """ + UPDATE qd_agent_memories + SET result = ?, returns = ?, updated_at = NOW() + WHERE id = ? AND agent_name = ? + """, + (result, returns, memory_id, self.agent_name) + ) + conn.commit() + cur.close() + logger.info(f"{self.agent_name} updated memory {memory_id}") except Exception as e: - logger.error(f"ๆ›ดๆ–ฐ่ฎฐๅฟ†ๅคฑ่ดฅ: {e}") + logger.error(f"Failed to update memory: {e}") def get_statistics(self) -> Dict[str, Any]: - """่Žทๅ–่ฎฐๅฟ†็ปŸ่ฎกไฟกๆฏ""" + """Get memory statistics for this agent.""" try: - conn = sqlite3.connect(self.db_path) - cursor = conn.cursor() - - cursor.execute('SELECT COUNT(*) FROM memories') - total = cursor.fetchone()[0] - - cursor.execute('SELECT AVG(returns) FROM memories WHERE returns IS NOT NULL') - avg_returns = cursor.fetchone()[0] or 0 - - cursor.execute('SELECT COUNT(*) FROM memories WHERE returns > 0') - positive = cursor.fetchone()[0] - - conn.close() + with get_db_connection() as conn: + cur = conn.cursor() + + cur.execute( + 'SELECT COUNT(*) as cnt FROM qd_agent_memories WHERE agent_name = ?', + (self.agent_name,) + ) + total = cur.fetchone()['cnt'] + + cur.execute( + 'SELECT AVG(returns) as avg_ret FROM qd_agent_memories WHERE agent_name = ? AND returns IS NOT NULL', + (self.agent_name,) + ) + avg_returns = cur.fetchone()['avg_ret'] or 0 + + cur.execute( + 'SELECT COUNT(*) as cnt FROM qd_agent_memories WHERE agent_name = ? AND returns > 0', + (self.agent_name,) + ) + positive = cur.fetchone()['cnt'] + + cur.close() return { 'total_memories': total, @@ -344,5 +300,20 @@ def get_statistics(self) -> Dict[str, Any]: 'success_rate': round(positive / total * 100, 2) if total > 0 else 0 } except Exception as e: - logger.error(f"่Žทๅ–็ปŸ่ฎกไฟกๆฏๅคฑ่ดฅ: {e}") + logger.error(f"Failed to get statistics: {e}") return {} + + def clear_memories(self): + """Clear all memories for this agent (use with caution).""" + try: + with get_db_connection() as conn: + cur = conn.cursor() + cur.execute( + 'DELETE FROM qd_agent_memories WHERE agent_name = ?', + (self.agent_name,) + ) + conn.commit() + cur.close() + logger.warning(f"{self.agent_name} cleared all memories") + except Exception as e: + logger.error(f"Failed to clear memories: {e}") diff --git a/backend_api_python/app/services/agents/reflection.py b/backend_api_python/app/services/agents/reflection.py index 8d8de7c93..7d3dc3d6b 100644 --- a/backend_api_python/app/services/agents/reflection.py +++ b/backend_api_python/app/services/agents/reflection.py @@ -1,220 +1,249 @@ """ -่‡ชๅŠจๅๆ€ไธŽ้ชŒ่ฏๆœๅŠก -็”จไบŽ่ฎฐๅฝ•ๅˆ†ๆž้ข„ๆต‹๏ผŒๅนถๅœจๆœชๆฅ่‡ชๅŠจ้ชŒ่ฏ็ป“ๆžœ๏ผŒๅฎž็Žฐ้—ญ็Žฏๅญฆไน  +Auto-reflection and verification service (PostgreSQL). + +Records analysis predictions and auto-verifies results in the future +to achieve closed-loop learning for AI agents. """ -import sqlite3 + import os -import json from datetime import datetime, timedelta from typing import List, Dict, Any, Optional + from app.utils.logger import get_logger +from app.utils.db import get_db_connection from .memory import AgentMemory from .tools import AgentTools logger = get_logger(__name__) + class ReflectionService: - """ๅๆ€ๆœๅŠก๏ผš็ฎก็†ๅˆ†ๆž่ฎฐๅฝ•็š„ๅญ˜ๅ‚จๅ’Œ้ชŒ่ฏ""" + """Reflection service: manages storage and verification of analysis records.""" def __init__(self, db_path: Optional[str] = None): - if db_path is None: - # ้ป˜่ฎคๆ•ฐๆฎๅบ“่ทฏๅพ„ - db_dir = os.path.join(os.path.dirname(__file__), '..', '..', '..', 'data', 'memory') - os.makedirs(db_dir, exist_ok=True) - db_path = os.path.join(db_dir, 'reflection_records.db') + """ + Initialize reflection service. - self.db_path = db_path + Args: + db_path: Deprecated parameter, kept for backward compatibility + """ self.tools = AgentTools() - self._init_database() - - def _init_database(self): - """ๅˆๅง‹ๅŒ–ๆ•ฐๆฎๅบ“่กจ""" - try: - conn = sqlite3.connect(self.db_path) - cursor = conn.cursor() - - # ๅˆ›ๅปบๅˆ†ๆž่ฎฐๅฝ•่กจ - cursor.execute(''' - CREATE TABLE IF NOT EXISTS analysis_records ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - market TEXT NOT NULL, - symbol TEXT NOT NULL, - initial_price REAL, - decision TEXT, - confidence INTEGER, - reasoning TEXT, - analysis_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - target_check_date TIMESTAMP, - status TEXT DEFAULT 'PENDING', -- PENDING, COMPLETED, FAILED - final_price REAL, - actual_return REAL, - check_result TEXT - ) - ''') - - # ๅˆ›ๅปบ็ดขๅผ• - cursor.execute(''' - CREATE INDEX IF NOT EXISTS idx_status_date ON analysis_records(status, target_check_date) - ''') - - conn.commit() - conn.close() - except Exception as e: - logger.error(f"ๅˆๅง‹ๅŒ–ๅๆ€ๆ•ฐๆฎๅบ“ๅคฑ่ดฅ: {e}") - def record_analysis(self, market: str, symbol: str, price: float, - decision: str, confidence: int, reasoning: str, - check_days: int = 7): + def record_analysis( + self, + market: str, + symbol: str, + price: float, + decision: str, + confidence: int, + reasoning: str, + check_days: int = 7 + ): """ - ่ฎฐๅฝ•ไธ€ๆฌกๅˆ†ๆž๏ผŒไปฅไพฟๆœชๆฅ้ชŒ่ฏ + Record an analysis for future verification. Args: - market: ๅธ‚ๅœบ - symbol: ไปฃ็  - price: ๅฝ“ๅ‰ไปทๆ ผ - decision: ๅ†ณ็ญ– (BUY/SELL/HOLD) - confidence: ็ฝฎไฟกๅบฆ - reasoning: ็†็”ฑ - check_days: ๅ‡ ๅคฉๅŽ้ชŒ่ฏ (้ป˜่ฎค7ๅคฉ) + market: Market type + symbol: Symbol code + price: Current price + decision: Decision (BUY/SELL/HOLD) + confidence: Confidence level (0-100) + reasoning: Reasoning text + check_days: Days until verification (default 7) """ try: - conn = sqlite3.connect(self.db_path) - cursor = conn.cursor() - target_date = datetime.now() + timedelta(days=check_days) - cursor.execute(''' - INSERT INTO analysis_records - (market, symbol, initial_price, decision, confidence, reasoning, target_check_date) - VALUES (?, ?, ?, ?, ?, ?, ?) - ''', (market, symbol, price, decision, confidence, reasoning, target_date)) - - conn.commit() - conn.close() + with get_db_connection() as conn: + cur = conn.cursor() + cur.execute( + """ + INSERT INTO qd_reflection_records + (market, symbol, initial_price, decision, confidence, reasoning, target_check_date) + VALUES (?, ?, ?, ?, ?, ?, ?) + """, + (market, symbol, price, decision, confidence, reasoning, target_date) + ) + conn.commit() + cur.close() logger.info(f"Recorded analysis for reflection: {market}:{symbol}, will verify after {check_days} day(s)") except Exception as e: - logger.error(f"่ฎฐๅฝ•ๅˆ†ๆžๅคฑ่ดฅ: {e}") + logger.error(f"Failed to record analysis: {e}") def run_verification_cycle(self): """ - ๆ‰ง่กŒ้ชŒ่ฏๅ‘จๆœŸ๏ผšๆฃ€ๆŸฅๅˆฐๆœŸ็š„่ฎฐๅฝ•๏ผŒ้ชŒ่ฏ็ป“ๆžœ๏ผŒๅนถๅ†™ๅ…ฅ่ฎฐๅฟ† + Execute verification cycle: check due records, verify results, and write to memory. """ - logger.info("ๅผ€ๅง‹ๆ‰ง่กŒ่‡ชๅŠจๅๆ€้ชŒ่ฏๅ‘จๆœŸ...") + logger.info("Starting auto-reflection verification cycle...") try: - conn = sqlite3.connect(self.db_path) - cursor = conn.cursor() - - # 1. ๆŸฅๆ‰พๆ‰€ๆœ‰ๅทฒๅˆฐๆœŸไธ”ๆœชๅค„็†็š„่ฎฐๅฝ• - cursor.execute(''' - SELECT id, market, symbol, initial_price, decision, confidence, reasoning, analysis_date - FROM analysis_records - WHERE status = 'PENDING' AND target_check_date <= CURRENT_TIMESTAMP - ''') - - records = cursor.fetchall() - - if not records: - logger.info("ๆฒกๆœ‰้œ€่ฆ้ชŒ่ฏ็š„่ฎฐๅฝ•") - conn.close() - return - - logger.info(f"ๅ‘็Žฐ {len(records)} ๆกๅพ…้ชŒ่ฏ่ฎฐๅฝ•") - - # ๅˆๅง‹ๅŒ–่ฎฐๅฟ†็ณป็ปŸ๏ผˆ็”จไบŽๅ†™ๅ…ฅ้ชŒ่ฏ็ป“ๆžœ๏ผ‰ - trader_memory = AgentMemory('trader_agent') - - for record in records: - record_id, market, symbol, initial_price, decision, confidence, reasoning, analysis_date = record + with get_db_connection() as conn: + cur = conn.cursor() + + # 1. Find all due and pending records + cur.execute( + """ + SELECT id, market, symbol, initial_price, decision, confidence, reasoning, analysis_date + FROM qd_reflection_records + WHERE status = 'PENDING' AND target_check_date <= NOW() + """ + ) + records = cur.fetchall() or [] + + if not records: + logger.info("No records to verify") + cur.close() + return + + logger.info(f"Found {len(records)} records to verify") + + # Initialize memory system for writing verification results + trader_memory = AgentMemory('trader_agent') - try: - # 2. ่Žทๅ–ๅฝ“ๅ‰ๆœ€ๆ–ฐไปทๆ ผ - current_price_data = self.tools.get_current_price(market, symbol) - current_price = current_price_data.get('price') + for record in records: + record_id = record['id'] + market = record['market'] + symbol = record['symbol'] + initial_price = record['initial_price'] + decision = record['decision'] + confidence = record['confidence'] + reasoning = record['reasoning'] + analysis_date = record['analysis_date'] - if not current_price: - logger.warning(f"ๆ— ๆณ•่Žทๅ– {market}:{symbol} ็š„ๅฝ“ๅ‰ไปทๆ ผ๏ผŒ่ทณ่ฟ‡") - continue + try: + # 2. Get current price + current_price_data = self.tools.get_current_price(market, symbol) + current_price = current_price_data.get('price') - # 3. ่ฎก็ฎ—ๆ”ถ็›Šๅ’Œ็ป“ๆžœ - if not initial_price or initial_price == 0: - actual_return = 0.0 - else: - actual_return = (current_price - initial_price) / initial_price * 100 - - # ่ฏ„ไผฐ็ป“ๆžœ - result_desc = "" - is_good_prediction = False - - if decision == "BUY": - if actual_return > 2.0: - result_desc = "Correct: price rose after BUY" - is_good_prediction = True - elif actual_return < -2.0: - result_desc = "Wrong: price fell after BUY" - else: - result_desc = "Neutral: limited price movement" - elif decision == "SELL": - if actual_return < -2.0: - result_desc = "Correct: price fell after SELL" - is_good_prediction = True - elif actual_return > 2.0: - result_desc = "Wrong: price rose after SELL" - else: - result_desc = "Neutral: limited price movement" - else: # HOLD - if -2.0 <= actual_return <= 2.0: - result_desc = "Correct: limited movement during HOLD" - is_good_prediction = True + if not current_price: + logger.warning(f"Cannot get current price for {market}:{symbol}, skipping") + continue + + # 3. Calculate return and result + if not initial_price or initial_price == 0: + actual_return = 0.0 else: - result_desc = f"Deviated: large movement during HOLD ({actual_return:.2f}%)" + actual_return = (current_price - initial_price) / initial_price * 100 + + # Evaluate result + result_desc = "" + is_good_prediction = False + + if decision == "BUY": + if actual_return > 2.0: + result_desc = "Correct: price rose after BUY" + is_good_prediction = True + elif actual_return < -2.0: + result_desc = "Wrong: price fell after BUY" + else: + result_desc = "Neutral: limited price movement" + elif decision == "SELL": + if actual_return < -2.0: + result_desc = "Correct: price fell after SELL" + is_good_prediction = True + elif actual_return > 2.0: + result_desc = "Wrong: price rose after SELL" + else: + result_desc = "Neutral: limited price movement" + else: # HOLD + if -2.0 <= actual_return <= 2.0: + result_desc = "Correct: limited movement during HOLD" + is_good_prediction = True + else: + result_desc = f"Deviated: large movement during HOLD ({actual_return:.2f}%)" - # 4. ๅ†™ๅ…ฅ่ฎฐๅฟ†็ณป็ปŸ (Let the agent learn) - memory_situation = f"{market}:{symbol} auto-verified (analysis_date: {analysis_date})" - memory_recommendation = f"Decision: {decision} (confidence {confidence}), reasoning: {(reasoning or '')[:120]}" - memory_result = f"Verification: {result_desc}; return={actual_return:.2f}% (initial {initial_price} -> final {current_price})" - - trader_memory.add_memory( - memory_situation, - memory_recommendation, - memory_result, - actual_return, - metadata={ - "market": market, - "symbol": symbol, - "timeframe": "1D", - "features": { - "source": "auto_verify", - "decision": decision, - "confidence": confidence, - "initial_price": initial_price, - "final_price": current_price, - "analysis_date": str(analysis_date), - "result_desc": result_desc, - "is_good_prediction": bool(is_good_prediction), - }, - } - ) - - # 5. ๆ›ดๆ–ฐ่ฎฐๅฝ•็Šถๆ€ - cursor.execute(''' - UPDATE analysis_records - SET status = 'COMPLETED', final_price = ?, actual_return = ?, check_result = ? - WHERE id = ? - ''', (current_price, actual_return, result_desc, record_id)) - - conn.commit() - logger.info(f"้ชŒ่ฏๅฎŒๆˆ {market}:{symbol}: {result_desc}") - - except Exception as inner_e: - logger.error(f"ๅค„็†่ฎฐๅฝ• {record_id} ๅคฑ่ดฅ: {inner_e}") - # ๆ ‡่ฎฐไธบๅคฑ่ดฅ๏ผŒ้ฟๅ…้‡ๅคๅค„็† - # cursor.execute("UPDATE analysis_records SET status = 'FAILED' WHERE id = ?", (record_id,)) - # conn.commit() - - conn.close() - logger.info("ๅๆ€้ชŒ่ฏๅ‘จๆœŸ็ป“ๆŸ") + # 4. Write to memory system (agent learning) + memory_situation = f"{market}:{symbol} auto-verified (analysis_date: {analysis_date})" + memory_recommendation = f"Decision: {decision} (confidence {confidence}), reasoning: {(reasoning or '')[:120]}" + memory_result = f"Verification: {result_desc}; return={actual_return:.2f}% (initial {initial_price} -> final {current_price})" + + trader_memory.add_memory( + memory_situation, + memory_recommendation, + memory_result, + actual_return, + metadata={ + "market": market, + "symbol": symbol, + "timeframe": "1D", + "features": { + "source": "auto_verify", + "decision": decision, + "confidence": confidence, + "initial_price": initial_price, + "final_price": current_price, + "analysis_date": str(analysis_date), + "result_desc": result_desc, + "is_good_prediction": bool(is_good_prediction), + }, + } + ) + + # 5. Update record status + cur.execute( + """ + UPDATE qd_reflection_records + SET status = 'COMPLETED', final_price = ?, actual_return = ?, check_result = ? + WHERE id = ? + """, + (current_price, actual_return, result_desc, record_id) + ) + conn.commit() + logger.info(f"Verification completed {market}:{symbol}: {result_desc}") + + except Exception as inner_e: + logger.error(f"Failed to process record {record_id}: {inner_e}") + # Optionally mark as failed to avoid repeated processing + # cur.execute("UPDATE qd_reflection_records SET status = 'FAILED' WHERE id = ?", (record_id,)) + # conn.commit() + + cur.close() + logger.info("Reflection verification cycle completed") except Exception as e: - logger.error(f"ๆ‰ง่กŒ้ชŒ่ฏๅ‘จๆœŸๅคฑ่ดฅ: {e}") + logger.error(f"Failed to execute verification cycle: {e}") + def get_pending_count(self) -> int: + """Get count of pending verification records.""" + try: + with get_db_connection() as conn: + cur = conn.cursor() + cur.execute("SELECT COUNT(*) as cnt FROM qd_reflection_records WHERE status = 'PENDING'") + count = cur.fetchone()['cnt'] + cur.close() + return count + except Exception as e: + logger.error(f"Failed to get pending count: {e}") + return 0 + + def get_statistics(self) -> Dict[str, Any]: + """Get reflection statistics.""" + try: + with get_db_connection() as conn: + cur = conn.cursor() + + cur.execute("SELECT COUNT(*) as cnt FROM qd_reflection_records") + total = cur.fetchone()['cnt'] + + cur.execute("SELECT COUNT(*) as cnt FROM qd_reflection_records WHERE status = 'PENDING'") + pending = cur.fetchone()['cnt'] + + cur.execute("SELECT COUNT(*) as cnt FROM qd_reflection_records WHERE status = 'COMPLETED'") + completed = cur.fetchone()['cnt'] + + cur.execute( + "SELECT AVG(actual_return) as avg_ret FROM qd_reflection_records WHERE status = 'COMPLETED' AND actual_return IS NOT NULL" + ) + avg_return = cur.fetchone()['avg_ret'] or 0 + + cur.close() + + return { + 'total_records': total, + 'pending_records': pending, + 'completed_records': completed, + 'average_return': round(avg_return, 2) + } + except Exception as e: + logger.error(f"Failed to get statistics: {e}") + return {} diff --git a/backend_api_python/app/services/live_trading/records.py b/backend_api_python/app/services/live_trading/records.py index d5b773696..cfc282e84 100644 --- a/backend_api_python/app/services/live_trading/records.py +++ b/backend_api_python/app/services/live_trading/records.py @@ -14,6 +14,19 @@ from app.utils.db import get_db_connection +def _get_user_id_from_strategy(strategy_id: int) -> int: + """Get user_id from strategy table. Defaults to 1 if not found.""" + try: + with get_db_connection() as db: + cur = db.cursor() + cur.execute("SELECT user_id FROM qd_strategies_trading WHERE id = %s", (strategy_id,)) + row = cur.fetchone() + cur.close() + return int((row or {}).get('user_id') or 1) + except Exception: + return 1 + + def record_trade( *, strategy_id: int, @@ -24,19 +37,23 @@ def record_trade( commission: float = 0.0, commission_ccy: str = "", profit: Optional[float] = None, + user_id: int = None, ) -> None: now = int(time.time()) value = float(amount or 0.0) * float(price or 0.0) + if user_id is None: + user_id = _get_user_id_from_strategy(strategy_id) with get_db_connection() as db: cur = db.cursor() cur.execute( """ INSERT INTO qd_strategy_trades - (strategy_id, symbol, type, price, amount, value, commission, commission_ccy, profit, created_at) + (user_id, strategy_id, symbol, type, price, amount, value, commission, commission_ccy, profit, created_at) VALUES - (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s) + (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) """, ( + int(user_id), int(strategy_id), str(symbol), str(trade_type), @@ -86,25 +103,28 @@ def upsert_position( current_price: float, highest_price: float = 0.0, lowest_price: float = 0.0, + user_id: int = None, ) -> None: now = int(time.time()) + if user_id is None: + user_id = _get_user_id_from_strategy(strategy_id) with get_db_connection() as db: cur = db.cursor() cur.execute( """ INSERT INTO qd_strategy_positions - (strategy_id, symbol, side, size, entry_price, current_price, highest_price, lowest_price, updated_at) + (user_id, strategy_id, symbol, side, size, entry_price, current_price, highest_price, lowest_price, updated_at) VALUES - (%s, %s, %s, %s, %s, %s, %s, %s, %s) + (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s) ON CONFLICT(strategy_id, symbol, side) DO UPDATE SET size = excluded.size, entry_price = excluded.entry_price, current_price = excluded.current_price, - highest_price = CASE WHEN excluded.highest_price > 0 THEN excluded.highest_price ELSE highest_price END, - lowest_price = CASE WHEN excluded.lowest_price > 0 THEN excluded.lowest_price ELSE lowest_price END, + highest_price = CASE WHEN excluded.highest_price > 0 THEN excluded.highest_price ELSE qd_strategy_positions.highest_price END, + lowest_price = CASE WHEN excluded.lowest_price > 0 THEN excluded.lowest_price ELSE qd_strategy_positions.lowest_price END, updated_at = excluded.updated_at """, - (int(strategy_id), str(symbol), str(side), float(size or 0.0), float(entry_price or 0.0), float(current_price or 0.0), float(highest_price or 0.0), float(lowest_price or 0.0), now), + (int(user_id), int(strategy_id), str(symbol), str(side), float(size or 0.0), float(entry_price or 0.0), float(current_price or 0.0), float(highest_price or 0.0), float(lowest_price or 0.0), now), ) db.commit() cur.close() diff --git a/backend_api_python/app/services/pending_order_worker.py b/backend_api_python/app/services/pending_order_worker.py index c31d8de45..9502d6c06 100644 --- a/backend_api_python/app/services/pending_order_worker.py +++ b/backend_api_python/app/services/pending_order_worker.py @@ -417,9 +417,8 @@ def _sync_positions_best_effort(self) -> None: cur = db.cursor() for rid in to_delete_ids: cur.execute("DELETE FROM qd_strategy_positions WHERE id = %s", (int(rid),)) - now_ts = int(time.time()) for u in to_update: - cur.execute("UPDATE qd_strategy_positions SET size = %s, updated_at = %s WHERE id = %s", (float(u["size"]), now_ts, int(u["id"]))) + cur.execute("UPDATE qd_strategy_positions SET size = %s, updated_at = NOW() WHERE id = %s", (float(u["size"]), int(u["id"]))) db.commit() cur.close() @@ -436,24 +435,22 @@ def _fetch_pending_orders(self, limit: int = 50) -> List[Dict[str, Any]]: except Exception: stale_sec = 0 if stale_sec > 0: - now = int(time.time()) - cutoff = now - stale_sec with get_db_connection() as db: cur = db.cursor() cur.execute( """ UPDATE pending_orders SET status = 'pending', - updated_at = %s, + updated_at = NOW(), dispatch_note = CASE WHEN dispatch_note IS NULL OR dispatch_note = '' THEN 'requeued_stale_processing' ELSE dispatch_note END WHERE status = 'processing' - AND (updated_at IS NULL OR updated_at < %s) + AND (updated_at IS NULL OR updated_at < NOW() - INTERVAL '%s seconds') AND (attempts < max_attempts) """, - (now, cutoff), + (stale_sec,), ) db.commit() cur.close() diff --git a/backend_api_python/app/services/portfolio_monitor.py b/backend_api_python/app/services/portfolio_monitor.py index 05b798948..f6579959f 100644 --- a/backend_api_python/app/services/portfolio_monitor.py +++ b/backend_api_python/app/services/portfolio_monitor.py @@ -79,10 +79,11 @@ def _safe_json_loads(value, default=None): return default -def _get_positions_for_monitor(position_ids: List[int] = None) -> List[Dict[str, Any]]: - """Get positions, optionally filtered by IDs.""" +def _get_positions_for_monitor(position_ids: List[int] = None, user_id: int = None) -> List[Dict[str, Any]]: + """Get positions, optionally filtered by IDs and user_id.""" try: kline_service = KlineService() + effective_user_id = user_id if user_id is not None else DEFAULT_USER_ID with get_db_connection() as db: cur = db.cursor() @@ -94,7 +95,7 @@ def _get_positions_for_monitor(position_ids: List[int] = None) -> List[Dict[str, FROM qd_manual_positions WHERE user_id = ? AND id IN ({placeholders}) """, - [DEFAULT_USER_ID] + list(position_ids) + [effective_user_id] + list(position_ids) ) else: cur.execute( @@ -103,7 +104,7 @@ def _get_positions_for_monitor(position_ids: List[int] = None) -> List[Dict[str, FROM qd_manual_positions WHERE user_id = ? """, - (DEFAULT_USER_ID,) + (effective_user_id,) ) rows = cur.fetchall() or [] cur.close() @@ -726,15 +727,17 @@ def _send_monitor_notification( positions: List[Dict[str, Any]] = None, position_analyses: List[Dict[str, Any]] = None, language: str = 'en-US', - custom_prompt: str = '' + custom_prompt: str = '', + user_id: int = None ) -> None: """Send notification with analysis result using appropriate format for each channel.""" try: notifier = SignalNotifier() - + effective_user_id = user_id if user_id is not None else DEFAULT_USER_ID + channels = notification_config.get('channels', ['browser']) targets = notification_config.get('targets', {}) - + title = f"๐Ÿ“Š ่ต„ไบง็›‘ๆต‹: {monitor_name}" if language.startswith('zh') else f"๐Ÿ“Š Portfolio Monitor: {monitor_name}" if not result.get('success'): @@ -751,10 +754,10 @@ def _send_monitor_notification( cur.execute( """ INSERT INTO qd_strategy_notifications - (strategy_id, symbol, signal_type, channels, title, message, payload_json, created_at) - VALUES (?, ?, ?, ?, ?, ?, ?, ?) + (user_id, strategy_id, symbol, signal_type, channels, title, message, payload_json, created_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) """, - (0, 'PORTFOLIO', 'ai_monitor', 'browser', error_title, error_msg, + (effective_user_id, 0, 'PORTFOLIO', 'ai_monitor', 'browser', error_title, error_msg, json.dumps(result, ensure_ascii=False), now) ) db.commit() @@ -798,10 +801,10 @@ def _send_monitor_notification( cur.execute( """ INSERT INTO qd_strategy_notifications - (strategy_id, symbol, signal_type, channels, title, message, payload_json, created_at) - VALUES (?, ?, ?, ?, ?, ?, ?, ?) + (user_id, strategy_id, symbol, signal_type, channels, title, message, payload_json, created_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) """, - (0, 'PORTFOLIO', 'ai_monitor', 'browser', title, html_report, + (effective_user_id, 0, 'PORTFOLIO', 'ai_monitor', 'browser', title, html_report, json.dumps(result, ensure_ascii=False), now) ) db.commit() @@ -848,24 +851,28 @@ def _send_monitor_notification( logger.error(f"_send_monitor_notification failed: {e}") -def run_single_monitor(monitor_id: int, override_language: str = None) -> Dict[str, Any]: +def run_single_monitor(monitor_id: int, override_language: str = None, user_id: int = None) -> Dict[str, Any]: """Run a single monitor and return the result. Args: monitor_id: The monitor ID to run override_language: Optional language override (e.g., 'zh-CN', 'en-US') If provided, will override the language in monitor config + user_id: Optional user ID for user isolation """ try: + # Use provided user_id or default + effective_user_id = user_id if user_id is not None else DEFAULT_USER_ID + with get_db_connection() as db: cur = db.cursor() cur.execute( """ - SELECT id, name, position_ids, monitor_type, config, notification_config + SELECT id, user_id, name, position_ids, monitor_type, config, notification_config FROM qd_position_monitors WHERE id = ? AND user_id = ? """, - (monitor_id, DEFAULT_USER_ID) + (monitor_id, effective_user_id) ) row = cur.fetchone() cur.close() @@ -873,6 +880,7 @@ def run_single_monitor(monitor_id: int, override_language: str = None) -> Dict[s if not row: return {'success': False, 'error': 'Monitor not found'} + monitor_user_id = int(row.get('user_id') or effective_user_id) name = row.get('name') or f'Monitor #{monitor_id}' position_ids = _safe_json_loads(row.get('position_ids'), []) monitor_type = row.get('monitor_type') or 'ai' @@ -883,8 +891,8 @@ def run_single_monitor(monitor_id: int, override_language: str = None) -> Dict[s if override_language: config['language'] = override_language - # Get positions - positions = _get_positions_for_monitor(position_ids if position_ids else None) + # Get positions for this user + positions = _get_positions_for_monitor(position_ids if position_ids else None, user_id=monitor_user_id) if not positions: return {'success': False, 'error': 'No positions to analyze'} @@ -897,19 +905,21 @@ def run_single_monitor(monitor_id: int, override_language: str = None) -> Dict[s result = {'success': False, 'error': f'Unsupported monitor type: {monitor_type}'} # Update monitor record - now = _now_ts() interval_minutes = int(config.get('interval_minutes') or 60) - next_run_at = now + (interval_minutes * 60) with get_db_connection() as db: cur = db.cursor() cur.execute( """ UPDATE qd_position_monitors - SET last_run_at = ?, next_run_at = ?, last_result = ?, run_count = run_count + 1, updated_at = ? + SET last_run_at = NOW(), + next_run_at = NOW() + INTERVAL '%s minutes', + last_result = ?, + run_count = run_count + 1, + updated_at = NOW() WHERE id = ? """, - (now, next_run_at, json.dumps(result, ensure_ascii=False), now, monitor_id) + (interval_minutes, json.dumps(result, ensure_ascii=False), monitor_id) ) db.commit() cur.close() @@ -926,7 +936,8 @@ def run_single_monitor(monitor_id: int, override_language: str = None) -> Dict[s positions=positions, position_analyses=position_analyses, language=language, - custom_prompt=custom_prompt + custom_prompt=custom_prompt, + user_id=monitor_user_id ) return result @@ -938,24 +949,24 @@ def run_single_monitor(monitor_id: int, override_language: str = None) -> Dict[s def _check_position_alerts(): """Check all active alerts and trigger notifications if conditions are met.""" + from datetime import datetime, timezone try: kline_service = KlineService() notifier = SignalNotifier() - now = _now_ts() + now = datetime.now(timezone.utc) with get_db_connection() as db: cur = db.cursor() - # Get active alerts that haven't been triggered (or can repeat) + # Get active alerts for all users that haven't been triggered (or can repeat) cur.execute( """ - SELECT a.id, a.position_id, a.market, a.symbol, a.alert_type, a.threshold, + SELECT a.id, a.user_id, a.position_id, a.market, a.symbol, a.alert_type, a.threshold, a.notification_config, a.is_triggered, a.last_triggered_at, a.repeat_interval, p.entry_price, p.quantity, p.side, p.name as position_name FROM qd_position_alerts a LEFT JOIN qd_manual_positions p ON a.position_id = p.id - WHERE a.user_id = ? AND a.is_active = 1 - """, - (DEFAULT_USER_ID,) + WHERE a.is_active = 1 + """ ) alerts = cur.fetchall() or [] cur.close() @@ -963,19 +974,24 @@ def _check_position_alerts(): for alert in alerts: try: alert_id = alert.get('id') + alert_user_id = int(alert.get('user_id') or 1) alert_type = alert.get('alert_type') threshold = float(alert.get('threshold') or 0) market = alert.get('market') symbol = alert.get('symbol') is_triggered = bool(alert.get('is_triggered')) - last_triggered_at = alert.get('last_triggered_at') or 0 + last_triggered_at = alert.get('last_triggered_at') # datetime or None repeat_interval = int(alert.get('repeat_interval') or 0) notification_config = _safe_json_loads(alert.get('notification_config'), {}) # Check if we can trigger (not triggered yet, or repeat interval passed) can_trigger = not is_triggered - if is_triggered and repeat_interval > 0: - if now - last_triggered_at >= repeat_interval: + if is_triggered and repeat_interval > 0 and last_triggered_at: + # Convert last_triggered_at to timezone-aware if needed + if last_triggered_at.tzinfo is None: + last_triggered_at = last_triggered_at.replace(tzinfo=timezone.utc) + elapsed_seconds = (now - last_triggered_at).total_seconds() + if elapsed_seconds >= repeat_interval: can_trigger = True if not can_trigger: @@ -1048,10 +1064,10 @@ def _check_position_alerts(): cur.execute( """ UPDATE qd_position_alerts - SET is_triggered = 1, last_triggered_at = ?, trigger_count = trigger_count + 1, updated_at = ? + SET is_triggered = 1, last_triggered_at = NOW(), trigger_count = trigger_count + 1, updated_at = NOW() WHERE id = ? """, - (now, now, alert_id) + (alert_id,) ) db.commit() cur.close() @@ -1070,10 +1086,10 @@ def _check_position_alerts(): cur.execute( """ INSERT INTO qd_strategy_notifications - (strategy_id, symbol, signal_type, channels, title, message, payload_json, created_at) - VALUES (?, ?, ?, ?, ?, ?, ?, ?) + (user_id, strategy_id, symbol, signal_type, channels, title, message, payload_json, created_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) """, - (0, symbol, 'price_alert', 'browser', alert_title, alert_message, + (alert_user_id, 0, symbol, 'price_alert', 'browser', alert_title, alert_message, json.dumps({'alert_id': alert_id, 'alert_type': alert_type}, ensure_ascii=False), now) ) db.commit() @@ -1096,7 +1112,7 @@ def _check_position_alerts(): logger.error(f"_check_position_alerts failed: {e}") -def notify_strategy_signal_for_positions(market: str, symbol: str, signal_type: str, signal_detail: str): +def notify_strategy_signal_for_positions(market: str, symbol: str, signal_type: str, signal_detail: str, user_id: int = None): """ Called when a strategy signal is triggered. Check if user has manual positions in this symbol and send notification. @@ -1108,14 +1124,25 @@ def notify_strategy_signal_for_positions(market: str, symbol: str, signal_type: with get_db_connection() as db: cur = db.cursor() - cur.execute( - """ - SELECT id, market, symbol, name, side, quantity, entry_price, group_name - FROM qd_manual_positions - WHERE user_id = ? AND symbol = ? - """, - (DEFAULT_USER_ID, symbol) - ) + # Query positions for all users or specific user + if user_id is not None: + cur.execute( + """ + SELECT id, user_id, market, symbol, name, side, quantity, entry_price, group_name + FROM qd_manual_positions + WHERE user_id = ? AND symbol = ? + """, + (user_id, symbol) + ) + else: + cur.execute( + """ + SELECT id, user_id, market, symbol, name, side, quantity, entry_price, group_name + FROM qd_manual_positions + WHERE symbol = ? + """, + (symbol,) + ) positions = cur.fetchall() or [] cur.close() @@ -1127,6 +1154,7 @@ def notify_strategy_signal_for_positions(market: str, symbol: str, signal_type: now = _now_ts() for pos in positions: + pos_user_id = int(pos.get('user_id') or 1) pos_name = pos.get('name') or symbol pos_side = pos.get('side') or 'long' quantity = float(pos.get('quantity') or 0) @@ -1149,10 +1177,10 @@ def notify_strategy_signal_for_positions(market: str, symbol: str, signal_type: cur.execute( """ INSERT INTO qd_strategy_notifications - (strategy_id, symbol, signal_type, channels, title, message, payload_json, created_at) - VALUES (?, ?, ?, ?, ?, ?, ?, ?) + (user_id, strategy_id, symbol, signal_type, channels, title, message, payload_json, created_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) """, - (0, symbol, 'strategy_linkage', 'browser', title, message, + (pos_user_id, 0, symbol, 'strategy_linkage', 'browser', title, message, json.dumps({'signal_type': signal_type}, ensure_ascii=False), now) ) db.commit() @@ -1170,22 +1198,19 @@ def _monitor_loop(): while not _stop_event.is_set(): try: - now = _now_ts() - - # 1. Check position alerts (price/pnl alerts) + # 1. Check position alerts (price/pnl alerts) for all users _check_position_alerts() - # 2. Find AI monitors that are due + # 2. Find AI monitors that are due for all users with get_db_connection() as db: cur = db.cursor() cur.execute( """ - SELECT id FROM qd_position_monitors - WHERE user_id = ? AND is_active = 1 AND next_run_at <= ? + SELECT id, user_id FROM qd_position_monitors + WHERE is_active = 1 AND next_run_at <= NOW() ORDER BY next_run_at ASC LIMIT 10 - """, - (DEFAULT_USER_ID, now) + """ ) rows = cur.fetchall() or [] cur.close() @@ -1194,10 +1219,11 @@ def _monitor_loop(): if _stop_event.is_set(): break monitor_id = row.get('id') + monitor_user_id = int(row.get('user_id') or 1) if monitor_id: - logger.info(f"Running due monitor #{monitor_id}") + logger.info(f"Running due monitor #{monitor_id} for user #{monitor_user_id}") try: - run_single_monitor(monitor_id) + run_single_monitor(monitor_id, user_id=monitor_user_id) except Exception as e: logger.error(f"Monitor #{monitor_id} execution failed: {e}") except Exception as e: diff --git a/backend_api_python/app/services/signal_notifier.py b/backend_api_python/app/services/signal_notifier.py index 23b234ef0..abbdb330f 100644 --- a/backend_api_python/app/services/signal_notifier.py +++ b/backend_api_python/app/services/signal_notifier.py @@ -447,18 +447,31 @@ def _notify_browser( title: str, message: str, payload: Dict[str, Any], + user_id: int = None, ) -> Tuple[bool, str]: try: now = int(time.time()) + # Get user_id from strategy if not provided + if user_id is None: + try: + with get_db_connection() as db: + cur = db.cursor() + cur.execute("SELECT user_id FROM qd_strategies_trading WHERE id = ?", (strategy_id,)) + row = cur.fetchone() + cur.close() + user_id = int((row or {}).get('user_id') or 1) + except Exception: + user_id = 1 with get_db_connection() as db: cur = db.cursor() cur.execute( """ INSERT INTO qd_strategy_notifications - (strategy_id, symbol, signal_type, channels, title, message, payload_json, created_at) - VALUES (?, ?, ?, ?, ?, ?, ?, ?) + (user_id, strategy_id, symbol, signal_type, channels, title, message, payload_json, created_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) """, ( + int(user_id), int(strategy_id), str(symbol or ""), str(signal_type or ""), diff --git a/backend_api_python/app/services/strategy.py b/backend_api_python/app/services/strategy.py index 153b9d97e..cb60f98ae 100644 --- a/backend_api_python/app/services/strategy.py +++ b/backend_api_python/app/services/strategy.py @@ -427,16 +427,21 @@ def get_strategy_type(self, strategy_id: int) -> str: except Exception: return 'IndicatorStrategy' - def update_strategy_status(self, strategy_id: int, status: str) -> bool: - """Update strategy status.""" + def update_strategy_status(self, strategy_id: int, status: str, user_id: int = None) -> bool: + """Update strategy status. If user_id is provided, verify ownership.""" try: - now = int(time.time()) with get_db_connection() as db: cur = db.cursor() - cur.execute( - "UPDATE qd_strategies_trading SET status = ?, updated_at = ? WHERE id = ?", - (status, now, strategy_id) - ) + if user_id is not None: + cur.execute( + "UPDATE qd_strategies_trading SET status = ?, updated_at = NOW() WHERE id = ? AND user_id = ?", + (status, strategy_id, user_id) + ) + else: + cur.execute( + "UPDATE qd_strategies_trading SET status = ?, updated_at = NOW() WHERE id = ?", + (status, strategy_id) + ) db.commit() cur.close() return True @@ -467,7 +472,7 @@ def _dump_json_or_encrypt(self, obj: Any, encrypt: bool = False) -> str: return json.dumps(obj, ensure_ascii=False) def list_strategies(self, user_id: int = 1) -> List[Dict[str, Any]]: - """List strategies for local single-user.""" + """List strategies for the specified user.""" try: with get_db_connection() as db: cur = db.cursor() @@ -475,8 +480,10 @@ def list_strategies(self, user_id: int = 1) -> List[Dict[str, Any]]: """ SELECT * FROM qd_strategies_trading + WHERE user_id = ? ORDER BY id DESC - """ + """, + (user_id,) ) rows = cur.fetchall() or [] cur.close() @@ -501,11 +508,15 @@ def list_strategies(self, user_id: int = 1) -> List[Dict[str, Any]]: logger.error(f"list_strategies failed: {e}") return [] - def get_strategy(self, strategy_id: int) -> Optional[Dict[str, Any]]: + def get_strategy(self, strategy_id: int, user_id: int = None) -> Optional[Dict[str, Any]]: + """Get strategy by ID. If user_id is provided, verify ownership.""" try: with get_db_connection() as db: cur = db.cursor() - cur.execute("SELECT * FROM qd_strategies_trading WHERE id = ?", (strategy_id,)) + if user_id is not None: + cur.execute("SELECT * FROM qd_strategies_trading WHERE id = ? AND user_id = ?", (strategy_id, user_id)) + else: + cur.execute("SELECT * FROM qd_strategies_trading WHERE id = ?", (strategy_id,)) r = cur.fetchone() cur.close() if not r: @@ -521,11 +532,11 @@ def get_strategy(self, strategy_id: int) -> Optional[Dict[str, Any]]: return None def create_strategy(self, payload: Dict[str, Any]) -> int: - now = int(time.time()) name = (payload.get('strategy_name') or '').strip() if not name: raise ValueError("strategy_name is required") + user_id = payload.get('user_id') or 1 strategy_type = payload.get('strategy_type') or 'IndicatorStrategy' market_category = payload.get('market_category') or 'Crypto' execution_mode = payload.get('execution_mode') or 'signal' @@ -551,14 +562,15 @@ def create_strategy(self, payload: Dict[str, Any]) -> int: cur.execute( """ INSERT INTO qd_strategies_trading - (strategy_name, strategy_type, market_category, execution_mode, notification_config, + (user_id, strategy_name, strategy_type, market_category, execution_mode, notification_config, status, symbol, timeframe, initial_capital, leverage, market_type, exchange_config, indicator_config, trading_config, ai_model_config, decide_interval, strategy_group_id, group_base_name, created_at, updated_at) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW(), NOW()) """, ( + user_id, name, strategy_type, market_category, @@ -576,9 +588,7 @@ def create_strategy(self, payload: Dict[str, Any]) -> int: self._dump_json_or_encrypt(payload.get('ai_model_config') or {}, encrypt=False), int(payload.get('decide_interval') or 300), strategy_group_id, - group_base_name, - now, - now + group_base_name ) ) new_id = cur.lastrowid @@ -657,14 +667,14 @@ def batch_create_strategies(self, payload: Dict[str, Any]) -> Dict[str, Any]: 'total_failed': len(failed_symbols) } - def batch_start_strategies(self, strategy_ids: List[int]) -> Dict[str, Any]: - """Batch start strategies""" + def batch_start_strategies(self, strategy_ids: List[int], user_id: int = None) -> Dict[str, Any]: + """Batch start strategies. If user_id is provided, verify ownership.""" success_ids = [] failed_ids = [] for sid in strategy_ids: try: - self.update_strategy_status(sid, 'running') + self.update_strategy_status(sid, 'running', user_id=user_id) success_ids.append(sid) except Exception as e: logger.error(f"Failed to start strategy {sid}: {e}") @@ -676,14 +686,14 @@ def batch_start_strategies(self, strategy_ids: List[int]) -> Dict[str, Any]: 'failed_ids': failed_ids } - def batch_stop_strategies(self, strategy_ids: List[int]) -> Dict[str, Any]: - """Batch stop strategies""" + def batch_stop_strategies(self, strategy_ids: List[int], user_id: int = None) -> Dict[str, Any]: + """Batch stop strategies. If user_id is provided, verify ownership.""" success_ids = [] failed_ids = [] for sid in strategy_ids: try: - self.update_strategy_status(sid, 'stopped') + self.update_strategy_status(sid, 'stopped', user_id=user_id) success_ids.append(sid) except Exception as e: logger.error(f"Failed to stop strategy {sid}: {e}") @@ -695,14 +705,14 @@ def batch_stop_strategies(self, strategy_ids: List[int]) -> Dict[str, Any]: 'failed_ids': failed_ids } - def batch_delete_strategies(self, strategy_ids: List[int]) -> Dict[str, Any]: - """Batch delete strategies""" + def batch_delete_strategies(self, strategy_ids: List[int], user_id: int = None) -> Dict[str, Any]: + """Batch delete strategies. If user_id is provided, verify ownership.""" success_ids = [] failed_ids = [] for sid in strategy_ids: try: - self.delete_strategy(sid) + self.delete_strategy(sid, user_id=user_id) success_ids.append(sid) except Exception as e: logger.error(f"Failed to delete strategy {sid}: {e}") @@ -714,15 +724,21 @@ def batch_delete_strategies(self, strategy_ids: List[int]) -> Dict[str, Any]: 'failed_ids': failed_ids } - def get_strategies_by_group(self, strategy_group_id: str) -> List[Dict[str, Any]]: - """Get all strategies in a group""" + def get_strategies_by_group(self, strategy_group_id: str, user_id: int = None) -> List[Dict[str, Any]]: + """Get all strategies in a group. If user_id is provided, filter by user.""" try: with get_db_connection() as db: cur = db.cursor() - cur.execute( - "SELECT id FROM qd_strategies_trading WHERE strategy_group_id = ?", - (strategy_group_id,) - ) + if user_id is not None: + cur.execute( + "SELECT id FROM qd_strategies_trading WHERE strategy_group_id = ? AND user_id = ?", + (strategy_group_id, user_id) + ) + else: + cur.execute( + "SELECT id FROM qd_strategies_trading WHERE strategy_group_id = ?", + (strategy_group_id,) + ) rows = cur.fetchall() or [] cur.close() return [row['id'] for row in rows] @@ -730,9 +746,8 @@ def get_strategies_by_group(self, strategy_group_id: str) -> List[Dict[str, Any] logger.error(f"get_strategies_by_group failed: {e}") return [] - def update_strategy(self, strategy_id: int, payload: Dict[str, Any]) -> bool: - now = int(time.time()) - existing = self.get_strategy(strategy_id) + def update_strategy(self, strategy_id: int, payload: Dict[str, Any], user_id: int = None) -> bool: + existing = self.get_strategy(strategy_id, user_id=user_id) if not existing: return False @@ -771,7 +786,7 @@ def update_strategy(self, strategy_id: int, payload: Dict[str, Any]) -> bool: indicator_config = ?, trading_config = ?, ai_model_config = ?, - updated_at = ? + updated_at = NOW() WHERE id = ? """, ( @@ -788,7 +803,6 @@ def update_strategy(self, strategy_id: int, payload: Dict[str, Any]) -> bool: self._dump_json_or_encrypt(indicator_config, encrypt=False), self._dump_json_or_encrypt(trading_config, encrypt=False), self._dump_json_or_encrypt(ai_model_config, encrypt=False), - now, strategy_id ) ) @@ -796,11 +810,15 @@ def update_strategy(self, strategy_id: int, payload: Dict[str, Any]) -> bool: cur.close() return True - def delete_strategy(self, strategy_id: int) -> bool: + def delete_strategy(self, strategy_id: int, user_id: int = None) -> bool: + """Delete strategy. If user_id is provided, verify ownership.""" try: with get_db_connection() as db: cur = db.cursor() - cur.execute("DELETE FROM qd_strategies_trading WHERE id = ?", (strategy_id,)) + if user_id is not None: + cur.execute("DELETE FROM qd_strategies_trading WHERE id = ? AND user_id = ?", (strategy_id, user_id)) + else: + cur.execute("DELETE FROM qd_strategies_trading WHERE id = ?", (strategy_id,)) db.commit() cur.close() return True diff --git a/backend_api_python/app/services/trading_executor.py b/backend_api_python/app/services/trading_executor.py index 5aa90291a..c2de858eb 100644 --- a/backend_api_python/app/services/trading_executor.py +++ b/backend_api_python/app/services/trading_executor.py @@ -2191,19 +2191,32 @@ def _persist_browser_notification( title: str, message: str, payload: Optional[Dict[str, Any]] = None, + user_id: int = None, ) -> None: """Best-effort persist notification row for the frontend '้€š็Ÿฅ' panel (browser channel).""" try: now = int(time.time()) + # Get user_id from strategy if not provided + if user_id is None: + try: + with get_db_connection() as db: + cur = db.cursor() + cur.execute("SELECT user_id FROM qd_strategies_trading WHERE id = ?", (strategy_id,)) + row = cur.fetchone() + cur.close() + user_id = int((row or {}).get('user_id') or 1) + except Exception: + user_id = 1 with get_db_connection() as db: cur = db.cursor() cur.execute( """ INSERT INTO qd_strategy_notifications - (strategy_id, symbol, signal_type, channels, title, message, payload_json, created_at) - VALUES (?, ?, ?, ?, ?, ?, ?, ?) + (user_id, strategy_id, symbol, signal_type, channels, title, message, payload_json, created_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) """, ( + int(user_id), int(strategy_id), str(symbol or ""), str(signal_type or ""), @@ -2419,18 +2432,28 @@ def _enqueue_pending_order( # Best-effort only; do not block enqueue on dedup query errors. pass + # Get user_id from strategy + user_id = 1 + try: + cur.execute("SELECT user_id FROM qd_strategies_trading WHERE id = %s", (strategy_id,)) + row = cur.fetchone() + user_id = int((row or {}).get('user_id') or 1) + except Exception: + pass + cur.execute( """ INSERT INTO pending_orders - (strategy_id, symbol, signal_type, signal_ts, market_type, order_type, amount, price, + (user_id, strategy_id, symbol, signal_type, signal_ts, market_type, order_type, amount, price, execution_mode, status, priority, attempts, max_attempts, last_error, payload_json, created_at, updated_at, processed_at, sent_at) VALUES - (%s, %s, %s, %s, %s, %s, %s, %s, + (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) """, ( + int(user_id), int(strategy_id), symbol, signal_type, @@ -2473,16 +2496,24 @@ def _calculate_current_equity(self, strategy_id: int, initial_capital: float) -> def _record_trade(self, strategy_id: int, symbol: str, type: str, price: float, amount: float, value: float, profit: float = None, commission: float = None): """่ฎฐๅฝ•ไบคๆ˜“ๅˆฐๆ•ฐๆฎๅบ“""" try: + # Get user_id from strategy + user_id = 1 with get_db_connection() as db: cursor = db.cursor() + try: + cursor.execute("SELECT user_id FROM qd_strategies_trading WHERE id = %s", (strategy_id,)) + row = cursor.fetchone() + user_id = int((row or {}).get('user_id') or 1) + except Exception: + pass query = """ INSERT INTO qd_strategy_trades ( - strategy_id, symbol, type, price, amount, value, commission, profit, created_at + user_id, strategy_id, symbol, type, price, amount, value, commission, profit, created_at ) VALUES ( - %s, %s, %s, %s, %s, %s, %s, %s, %s + %s, %s, %s, %s, %s, %s, %s, %s, %s, %s ) """ - cursor.execute(query, (strategy_id, symbol, type, price, amount, value, commission or 0, profit, int(time.time()))) + cursor.execute(query, (user_id, strategy_id, symbol, type, price, amount, value, commission or 0, profit, int(time.time()))) db.commit() cursor.close() except Exception as e: @@ -2501,24 +2532,32 @@ def _update_position( ): """ๆ›ดๆ–ฐๆŒไป“็Šถๆ€""" try: + # Get user_id from strategy + user_id = 1 with get_db_connection() as db: cursor = db.cursor() + try: + cursor.execute("SELECT user_id FROM qd_strategies_trading WHERE id = %s", (strategy_id,)) + row = cursor.fetchone() + user_id = int((row or {}).get('user_id') or 1) + except Exception: + pass # ็ฎ€ๅŒ–๏ผš็›ดๆŽฅ Update ๆˆ– Insert upsert_query = """ INSERT INTO qd_strategy_positions ( - strategy_id, symbol, side, size, entry_price, current_price, highest_price, lowest_price, updated_at + user_id, strategy_id, symbol, side, size, entry_price, current_price, highest_price, lowest_price, updated_at ) VALUES ( - %s, %s, %s, %s, %s, %s, %s, %s, %s + %s, %s, %s, %s, %s, %s, %s, %s, %s, %s ) ON CONFLICT(strategy_id, symbol, side) DO UPDATE SET size = excluded.size, entry_price = excluded.entry_price, current_price = excluded.current_price, - highest_price = CASE WHEN excluded.highest_price > 0 THEN excluded.highest_price ELSE highest_price END, - lowest_price = CASE WHEN excluded.lowest_price > 0 THEN excluded.lowest_price ELSE lowest_price END, + highest_price = CASE WHEN excluded.highest_price > 0 THEN excluded.highest_price ELSE qd_strategy_positions.highest_price END, + lowest_price = CASE WHEN excluded.lowest_price > 0 THEN excluded.lowest_price ELSE qd_strategy_positions.lowest_price END, updated_at = excluded.updated_at """ cursor.execute(upsert_query, ( - strategy_id, symbol, side, size, entry_price, current_price, highest_price, lowest_price, int(time.time()) + user_id, strategy_id, symbol, side, size, entry_price, current_price, highest_price, lowest_price, int(time.time()) )) db.commit() cursor.close() diff --git a/backend_api_python/app/services/user_service.py b/backend_api_python/app/services/user_service.py new file mode 100644 index 000000000..0bbb51c71 --- /dev/null +++ b/backend_api_python/app/services/user_service.py @@ -0,0 +1,386 @@ +""" +User Service - Multi-user management + +Handles user CRUD operations, password hashing, and role management. +""" +import hashlib +import time +import os +from typing import Optional, Dict, Any, List +from app.utils.db import get_db_connection +from app.utils.logger import get_logger + +logger = get_logger(__name__) + +# Try to import bcrypt for secure password hashing +try: + import bcrypt + HAS_BCRYPT = True +except ImportError: + HAS_BCRYPT = False + logger.warning("bcrypt not installed. Using SHA256 for password hashing (less secure).") + + +class UserService: + """User management service""" + + # Available roles (ordered by privilege level) + ROLES = ['viewer', 'user', 'manager', 'admin'] + + # Role permissions mapping + ROLE_PERMISSIONS = { + 'viewer': ['dashboard', 'view'], + 'user': ['dashboard', 'view', 'indicator', 'backtest', 'strategy', 'portfolio'], + 'manager': ['dashboard', 'view', 'indicator', 'backtest', 'strategy', 'portfolio', 'settings'], + 'admin': ['dashboard', 'view', 'indicator', 'backtest', 'strategy', 'portfolio', 'settings', 'user_manage', 'credentials'], + } + + def hash_password(self, password: str) -> str: + """Hash password using bcrypt (preferred) or SHA256 (fallback)""" + if HAS_BCRYPT: + salt = bcrypt.gensalt(rounds=12) + return bcrypt.hashpw(password.encode('utf-8'), salt).decode('utf-8') + else: + # Fallback to SHA256 with salt + salt = os.urandom(16).hex() + hashed = hashlib.sha256((password + salt).encode('utf-8')).hexdigest() + return f"sha256${salt}${hashed}" + + def verify_password(self, password: str, password_hash: str) -> bool: + """Verify password against hash""" + if password_hash.startswith('$2b$') or password_hash.startswith('$2a$'): + # bcrypt hash + if HAS_BCRYPT: + try: + return bcrypt.checkpw(password.encode('utf-8'), password_hash.encode('utf-8')) + except Exception: + return False + return False + elif password_hash.startswith('sha256$'): + # SHA256 fallback hash + parts = password_hash.split('$') + if len(parts) != 3: + return False + salt = parts[1] + stored_hash = parts[2] + computed = hashlib.sha256((password + salt).encode('utf-8')).hexdigest() + return computed == stored_hash + return False + + def get_user_by_id(self, user_id: int) -> Optional[Dict[str, Any]]: + """Get user by ID""" + try: + with get_db_connection() as db: + cur = db.cursor() + cur.execute( + """ + SELECT id, username, email, nickname, avatar, status, role, + last_login_at, created_at, updated_at + FROM qd_users WHERE id = ? + """, + (user_id,) + ) + row = cur.fetchone() + cur.close() + return row + except Exception as e: + logger.error(f"get_user_by_id failed: {e}") + return None + + def get_user_by_username(self, username: str) -> Optional[Dict[str, Any]]: + """Get user by username (includes password_hash for auth)""" + try: + with get_db_connection() as db: + cur = db.cursor() + cur.execute( + """ + SELECT id, username, password_hash, email, nickname, avatar, + status, role, last_login_at, created_at, updated_at + FROM qd_users WHERE username = ? + """, + (username,) + ) + row = cur.fetchone() + cur.close() + return row + except Exception as e: + logger.error(f"get_user_by_username failed: {e}") + return None + + def authenticate(self, username: str, password: str) -> Optional[Dict[str, Any]]: + """ + Authenticate user with username and password. + Returns user info (without password_hash) if successful, None otherwise. + """ + user = self.get_user_by_username(username) + if not user: + return None + + if user.get('status') != 'active': + logger.warning(f"Login attempt for disabled user: {username}") + return None + + if not self.verify_password(password, user.get('password_hash', '')): + return None + + # Update last login time + try: + with get_db_connection() as db: + cur = db.cursor() + cur.execute( + "UPDATE qd_users SET last_login_at = NOW() WHERE id = ?", + (user['id'],) + ) + db.commit() + cur.close() + except Exception as e: + logger.warning(f"Failed to update last_login_at: {e}") + + # Remove password_hash from return value + user.pop('password_hash', None) + return user + + def create_user(self, data: Dict[str, Any]) -> Optional[int]: + """ + Create a new user. + + Args: + data: { + username: str (required), + password: str (required), + email: str (optional), + nickname: str (optional), + role: str (optional, default 'user'), + status: str (optional, default 'active') + } + + Returns: + New user ID or None if failed + """ + username = (data.get('username') or '').strip() + password = data.get('password') or '' + + if not username or not password: + raise ValueError("Username and password are required") + + if len(username) < 3 or len(username) > 50: + raise ValueError("Username must be 3-50 characters") + + if len(password) < 6: + raise ValueError("Password must be at least 6 characters") + + # Check if username already exists + existing = self.get_user_by_username(username) + if existing: + raise ValueError("Username already exists") + + password_hash = self.hash_password(password) + email = (data.get('email') or '').strip() or None + nickname = (data.get('nickname') or '').strip() or username + role = data.get('role', 'user') + status = data.get('status', 'active') + + if role not in self.ROLES: + role = 'user' + + try: + with get_db_connection() as db: + cur = db.cursor() + cur.execute( + """ + INSERT INTO qd_users + (username, password_hash, email, nickname, role, status, created_at, updated_at) + VALUES (?, ?, ?, ?, ?, ?, NOW(), NOW()) + """, + (username, password_hash, email, nickname, role, status) + ) + db.commit() + user_id = cur.lastrowid + cur.close() + + # For PostgreSQL, get the ID differently + if user_id is None: + cur = db.cursor() + cur.execute("SELECT id FROM qd_users WHERE username = ?", (username,)) + row = cur.fetchone() + user_id = row['id'] if row else None + cur.close() + + logger.info(f"Created user: {username} (id={user_id})") + return user_id + except Exception as e: + logger.error(f"create_user failed: {e}") + raise + + def update_user(self, user_id: int, data: Dict[str, Any]) -> bool: + """ + Update user information. + + Args: + user_id: User ID + data: Fields to update (email, nickname, avatar, role, status) + """ + allowed_fields = ['email', 'nickname', 'avatar', 'role', 'status'] + updates = [] + values = [] + + for field in allowed_fields: + if field in data: + value = data[field] + if field == 'role' and value not in self.ROLES: + continue + updates.append(f"{field} = ?") + values.append(value) + + if not updates: + return False + + updates.append("updated_at = NOW()") + values.append(user_id) + + try: + with get_db_connection() as db: + cur = db.cursor() + sql = f"UPDATE qd_users SET {', '.join(updates)} WHERE id = ?" + cur.execute(sql, tuple(values)) + db.commit() + cur.close() + return True + except Exception as e: + logger.error(f"update_user failed: {e}") + return False + + def change_password(self, user_id: int, old_password: str, new_password: str) -> bool: + """Change user password (requires old password verification)""" + user = self.get_user_by_id(user_id) + if not user: + return False + + # Get full user with password_hash + with get_db_connection() as db: + cur = db.cursor() + cur.execute("SELECT password_hash FROM qd_users WHERE id = ?", (user_id,)) + row = cur.fetchone() + cur.close() + + if not row: + return False + + if not self.verify_password(old_password, row['password_hash']): + return False + + return self.reset_password(user_id, new_password) + + def reset_password(self, user_id: int, new_password: str) -> bool: + """Reset user password (admin operation, no old password required)""" + if len(new_password) < 6: + raise ValueError("Password must be at least 6 characters") + + password_hash = self.hash_password(new_password) + + try: + with get_db_connection() as db: + cur = db.cursor() + cur.execute( + "UPDATE qd_users SET password_hash = ?, updated_at = NOW() WHERE id = ?", + (password_hash, user_id) + ) + db.commit() + cur.close() + return True + except Exception as e: + logger.error(f"reset_password failed: {e}") + return False + + def delete_user(self, user_id: int) -> bool: + """Delete a user""" + try: + with get_db_connection() as db: + cur = db.cursor() + cur.execute("DELETE FROM qd_users WHERE id = ?", (user_id,)) + db.commit() + cur.close() + return True + except Exception as e: + logger.error(f"delete_user failed: {e}") + return False + + def list_users(self, page: int = 1, page_size: int = 20) -> Dict[str, Any]: + """List all users with pagination""" + offset = (page - 1) * page_size + + try: + with get_db_connection() as db: + cur = db.cursor() + + # Get total count + cur.execute("SELECT COUNT(*) as count FROM qd_users") + total = cur.fetchone()['count'] + + # Get users + cur.execute( + """ + SELECT id, username, email, nickname, avatar, status, role, + last_login_at, created_at, updated_at + FROM qd_users + ORDER BY id DESC + LIMIT ? OFFSET ? + """, + (page_size, offset) + ) + users = cur.fetchall() + cur.close() + + return { + 'items': users, + 'total': total, + 'page': page, + 'page_size': page_size, + 'total_pages': (total + page_size - 1) // page_size + } + except Exception as e: + logger.error(f"list_users failed: {e}") + return {'items': [], 'total': 0, 'page': 1, 'page_size': page_size, 'total_pages': 0} + + def get_user_permissions(self, role: str) -> List[str]: + """Get permissions for a role""" + return self.ROLE_PERMISSIONS.get(role, self.ROLE_PERMISSIONS['viewer']) + + def ensure_admin_exists(self): + """ + Ensure at least one admin user exists. + Creates admin using ADMIN_USER/ADMIN_PASSWORD from env if no users exist. + """ + try: + with get_db_connection() as db: + cur = db.cursor() + cur.execute("SELECT COUNT(*) as count FROM qd_users") + count = cur.fetchone()['count'] + cur.close() + + if count == 0: + # Create admin using env credentials + admin_user = os.getenv('ADMIN_USER', 'admin') + admin_password = os.getenv('ADMIN_PASSWORD', 'admin123') + + self.create_user({ + 'username': admin_user, + 'password': admin_password, + 'nickname': 'Administrator', + 'role': 'admin', + 'status': 'active' + }) + logger.info(f"Created admin user: {admin_user}") + except Exception as e: + logger.error(f"ensure_admin_exists failed: {e}") + + +# Global singleton +_user_service = None + +def get_user_service() -> UserService: + """Get UserService singleton""" + global _user_service + if _user_service is None: + _user_service = UserService() + return _user_service diff --git a/backend_api_python/app/utils/auth.py b/backend_api_python/app/utils/auth.py index b5fa689a9..c5f243fce 100644 --- a/backend_api_python/app/utils/auth.py +++ b/backend_api_python/app/utils/auth.py @@ -1,6 +1,12 @@ +""" +Authentication Utilities +JWT token generation, verification, and middleware decorators. +Supports multi-user authentication with role-based access control. +""" import jwt import datetime +import os from functools import wraps from flask import request, jsonify, g from app.config.settings import Config @@ -8,13 +14,26 @@ logger = get_logger(__name__) -def generate_token(username): - """Generate JWT token.""" + +def generate_token(user_id: int, username: str, role: str = 'user') -> str: + """ + Generate JWT token with user information. + + Args: + user_id: User ID + username: Username + role: User role (admin/manager/user/viewer) + + Returns: + JWT token string + """ try: payload = { 'exp': datetime.datetime.utcnow() + datetime.timedelta(days=7), 'iat': datetime.datetime.utcnow(), - 'sub': username + 'sub': username, + 'user_id': user_id, + 'role': role, } return jwt.encode( payload, @@ -25,18 +44,44 @@ def generate_token(username): logger.error(f"Token generation failed: {e}") return None -def verify_token(token): - """Verify JWT token.""" + +def verify_token(token: str) -> dict: + """ + Verify JWT token and return payload. + + Args: + token: JWT token string + + Returns: + Token payload dict or None if invalid + """ try: payload = jwt.decode(token, Config.SECRET_KEY, algorithms=['HS256']) - return payload['sub'] + return payload except jwt.ExpiredSignatureError: + logger.debug("Token expired") return None - except jwt.InvalidTokenError: + except jwt.InvalidTokenError as e: + logger.debug(f"Invalid token: {e}") return None + +def get_current_user_id() -> int: + """Get current user ID from flask.g context""" + return getattr(g, 'user_id', None) + + +def get_current_user_role() -> str: + """Get current user role from flask.g context""" + return getattr(g, 'user_role', 'user') + + def login_required(f): - """Decorator that enforces Bearer token auth.""" + """ + Decorator that enforces Bearer token auth. + + Sets g.user, g.user_id, g.user_role on successful auth. + """ @wraps(f) def decorated(*args, **kwargs): token = None @@ -51,13 +96,96 @@ def decorated(*args, **kwargs): if not token: return jsonify({'code': 401, 'msg': 'Token missing', 'data': None}), 401 - username = verify_token(token) - if not username: + payload = verify_token(token) + if not payload: return jsonify({'code': 401, 'msg': 'Token invalid or expired', 'data': None}), 401 - - # Store user in flask.g - g.user = username + + # Store user info in flask.g + g.user = payload.get('sub') + g.user_id = payload.get('user_id') + g.user_role = payload.get('role', 'user') + return f(*args, **kwargs) return decorated + +def admin_required(f): + """ + Decorator that requires admin role. + Must be used after @login_required. + """ + @wraps(f) + def decorated(*args, **kwargs): + role = getattr(g, 'user_role', None) + if role != 'admin': + return jsonify({'code': 403, 'msg': 'Admin access required', 'data': None}), 403 + return f(*args, **kwargs) + return decorated + + +def manager_required(f): + """ + Decorator that requires manager or admin role. + Must be used after @login_required. + """ + @wraps(f) + def decorated(*args, **kwargs): + role = getattr(g, 'user_role', None) + if role not in ('admin', 'manager'): + return jsonify({'code': 403, 'msg': 'Manager access required', 'data': None}), 403 + return f(*args, **kwargs) + return decorated + + +def permission_required(permission: str): + """ + Decorator factory that checks for a specific permission. + Must be used after @login_required. + + Usage: + @login_required + @permission_required('strategy') + def my_endpoint(): + ... + """ + def decorator(f): + @wraps(f) + def decorated(*args, **kwargs): + role = getattr(g, 'user_role', 'user') + + # Import here to avoid circular import + from app.services.user_service import get_user_service + permissions = get_user_service().get_user_permissions(role) + + if permission not in permissions: + return jsonify({ + 'code': 403, + 'msg': f'Permission denied: {permission}', + 'data': None + }), 403 + + return f(*args, **kwargs) + return decorated + return decorator + + +# Legacy compatibility: single-user mode fallback +def _is_single_user_mode() -> bool: + """Check if system is in single-user (legacy) mode""" + return os.getenv('SINGLE_USER_MODE', 'false').lower() == 'true' + + +def authenticate_legacy(username: str, password: str) -> dict: + """ + Legacy single-user authentication (for backward compatibility). + Uses ADMIN_USER and ADMIN_PASSWORD from environment. + """ + if username == Config.ADMIN_USER and password == Config.ADMIN_PASSWORD: + return { + 'user_id': 1, + 'username': username, + 'role': 'admin', + 'nickname': 'Admin', + } + return None diff --git a/backend_api_python/app/utils/db.py b/backend_api_python/app/utils/db.py index f9ebfe322..98a873381 100644 --- a/backend_api_python/app/utils/db.py +++ b/backend_api_python/app/utils/db.py @@ -1,662 +1,65 @@ - -""" -SQLite ๆ•ฐๆฎๅบ“่ฟžๆŽฅๅทฅๅ…ท (ๆœฌๅœฐๅŒ–้€‚้…็‰ˆ) """ -import sqlite3 -import os -import threading -import shutil -from typing import Optional, Any, List, Dict -from contextlib import contextmanager -from app.utils.logger import get_logger - -logger = get_logger(__name__) - -# SQLite ไธปๅบ“่ทฏๅพ„่งฃๆž -# -# ็›ฎๆ ‡้ป˜่ฎค่กŒไธบ๏ผšๆŠŠไธปๅบ“ๆ”พๅˆฐ `backend_api_python/data/quantdinger.db` -# ๅ…ผๅฎนๆ—ง่กŒไธบ๏ผš่€็‰ˆๆœฌไผšๅœจ `backend_api_python/quantdinger.db` ๅปบๅบ“ -_BASE_DIR = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))) -_DEFAULT_DB_FILE = os.path.join(_BASE_DIR, 'data', 'quantdinger.db') -_LEGACY_DB_FILE = os.path.join(_BASE_DIR, 'quantdinger.db') - - -def _get_db_file() -> str: - """ - Resolve SQLite DB file path. - - Priority: - - SQLITE_DATABASE_FILE env (Docker ๆŽจ่๏ผš/app/data/quantdinger.db) - - default: backend_api_python/data/quantdinger.db (local recommended) - - Also performs a best-effort one-time migration: - If the configured/default path doesn't exist but legacy db exists, copy legacy to configured/default path. - """ - env_path = os.getenv('SQLITE_DATABASE_FILE') - db_path = (env_path or '').strip() or _DEFAULT_DB_FILE - - # Ensure parent dir exists - parent = os.path.dirname(db_path) - if parent and not os.path.exists(parent): - try: - os.makedirs(parent, exist_ok=True) - except Exception: - pass - - # Best-effort migration from legacy path - try: - if os.path.abspath(db_path) != os.path.abspath(_LEGACY_DB_FILE): - if (not os.path.exists(db_path)) and os.path.exists(_LEGACY_DB_FILE): - shutil.copy2(_LEGACY_DB_FILE, db_path) - logger.info(f"Migrated SQLite DB from legacy path to {db_path}") - except Exception as e: - logger.warning(f"SQLite DB migration skipped/failed: {e}") - - return db_path - -# ็บฟ็จ‹้”๏ผŒ็”จไบŽ็ฎ€ๅ•็š„ๅนถๅ‘ๆŽงๅˆถ๏ผˆSQLite ๅฏนๅ†™ๆ“ไฝœๆœ‰้™ๅˆถ๏ผ‰ -_db_lock = threading.Lock() - -def _init_db_schema(conn): - """ๅˆๅง‹ๅŒ–ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„""" - cursor = conn.cursor() - - def ensure_columns(table: str, columns: Dict[str, str]) -> None: - """ - Ensure columns exist for an existing SQLite table (simple migration). - columns: {column_name: "TYPE DEFAULT ..."} - """ - try: - cursor.execute(f"PRAGMA table_info({table})") - existing = {row[1] for row in cursor.fetchall() or []} # row[1] is column name - for col, ddl in columns.items(): - if col in existing: - continue - cursor.execute(f"ALTER TABLE {table} ADD COLUMN {col} {ddl}") - except Exception as e: - logger.warning(f"ensure_columns failed for table={table}: {e}") - - # 1. ็ญ–็•ฅ่กจ - cursor.execute(""" - CREATE TABLE IF NOT EXISTS qd_strategies_trading ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - strategy_name TEXT NOT NULL, - strategy_type TEXT DEFAULT 'IndicatorStrategy', - market_category TEXT DEFAULT 'Crypto', - execution_mode TEXT DEFAULT 'signal', - notification_config TEXT DEFAULT '', -- JSON string - status TEXT DEFAULT 'stopped', - symbol TEXT, - timeframe TEXT, - initial_capital REAL DEFAULT 1000, - leverage INTEGER DEFAULT 1, - market_type TEXT DEFAULT 'swap', - exchange_config TEXT, -- JSON string - indicator_config TEXT, -- JSON string - trading_config TEXT, -- JSON string - ai_model_config TEXT, -- JSON string - decide_interval INTEGER DEFAULT 300, - created_at INTEGER, - updated_at INTEGER - ) - """) - - ensure_columns("qd_strategies_trading", { - "market_category": "TEXT DEFAULT 'Crypto'", - "execution_mode": "TEXT DEFAULT 'signal'", - "notification_config": "TEXT DEFAULT ''", - "strategy_group_id": "TEXT DEFAULT ''", # ็ญ–็•ฅ็ป„ID๏ผŒๆ‰น้‡ๅˆ›ๅปบ็š„็ญ–็•ฅๅ…ฑไบซๅŒไธ€ไธช็ป„ID - "group_base_name": "TEXT DEFAULT ''" # ็ญ–็•ฅ็ป„ๅŸบ็ก€ๅ็งฐ๏ผˆ็”จไบŽๆ˜พ็คบ๏ผ‰ - }) - - # 2. ๆŒไป“่กจ - cursor.execute(""" - CREATE TABLE IF NOT EXISTS qd_strategy_positions ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - strategy_id INTEGER, - symbol TEXT, - side TEXT, -- long/short - size REAL, - entry_price REAL, - current_price REAL, - highest_price REAL DEFAULT 0, - lowest_price REAL DEFAULT 0, - unrealized_pnl REAL DEFAULT 0, - pnl_percent REAL DEFAULT 0, - equity REAL DEFAULT 0, - updated_at INTEGER, - UNIQUE(strategy_id, symbol, side) - ) - """) - - ensure_columns("qd_strategy_positions", { - "highest_price": "REAL DEFAULT 0", - "lowest_price": "REAL DEFAULT 0", - }) - - # 3. ไบคๆ˜“่ฎฐๅฝ•่กจ - cursor.execute(""" - CREATE TABLE IF NOT EXISTS qd_strategy_trades ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - strategy_id INTEGER, - symbol TEXT, - type TEXT, -- open_long, close_short, etc. - price REAL, - amount REAL, - value REAL, - commission REAL DEFAULT 0, - commission_ccy TEXT DEFAULT '', - profit REAL DEFAULT 0, - created_at INTEGER - ) - """) - - ensure_columns("qd_strategy_trades", { - "commission_ccy": "TEXT DEFAULT ''", - }) - - # NOTE: - # We intentionally do not persist runtime logs in DB for local deployments. - # Use console logs / stdout prints instead. - - # 3.1 Pending orders queue (signal dispatch / live execution) - cursor.execute(""" - CREATE TABLE IF NOT EXISTS pending_orders ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - strategy_id INTEGER, - symbol TEXT NOT NULL, - signal_type TEXT NOT NULL, -- open_long/close_long/open_short/close_short/add_long/add_short - signal_ts INTEGER, -- candle timestamp (seconds). used for strict de-dup per candle - market_type TEXT DEFAULT 'swap', - order_type TEXT DEFAULT 'market', - amount REAL DEFAULT 0, -- base amount (or stake amount depending on execution) - price REAL DEFAULT 0, -- reference price at enqueue time - execution_mode TEXT DEFAULT 'signal', -- signal/live - status TEXT DEFAULT 'pending', -- pending/processing/sent/failed/deferred - priority INTEGER DEFAULT 0, - attempts INTEGER DEFAULT 0, - max_attempts INTEGER DEFAULT 10, - last_error TEXT DEFAULT '', - payload_json TEXT DEFAULT '', -- JSON string for dispatcher - -- Live execution result fields (best-effort) - dispatch_note TEXT DEFAULT '', - exchange_id TEXT DEFAULT '', - exchange_order_id TEXT DEFAULT '', - exchange_response_json TEXT DEFAULT '', - filled REAL DEFAULT 0, - avg_price REAL DEFAULT 0, - executed_at INTEGER, - created_at INTEGER, - updated_at INTEGER, - processed_at INTEGER, - sent_at INTEGER - ) - """) - - ensure_columns("pending_orders", { - "signal_ts": "INTEGER", - "market_type": "TEXT DEFAULT 'swap'", - "order_type": "TEXT DEFAULT 'market'", - "price": "REAL DEFAULT 0", - "execution_mode": "TEXT DEFAULT 'signal'", - "status": "TEXT DEFAULT 'pending'", - "priority": "INTEGER DEFAULT 0", - "attempts": "INTEGER DEFAULT 0", - "max_attempts": "INTEGER DEFAULT 10", - "last_error": "TEXT DEFAULT ''", - "payload_json": "TEXT DEFAULT ''", - "dispatch_note": "TEXT DEFAULT ''", - "exchange_id": "TEXT DEFAULT ''", - "exchange_order_id": "TEXT DEFAULT ''", - "exchange_response_json": "TEXT DEFAULT ''", - "filled": "REAL DEFAULT 0", - "avg_price": "REAL DEFAULT 0", - "executed_at": "INTEGER", - "created_at": "INTEGER", - "updated_at": "INTEGER", - "processed_at": "INTEGER", - "sent_at": "INTEGER", - }) - - # 3.2 Strategy notifications (browser polling / audit trail) - cursor.execute(""" - CREATE TABLE IF NOT EXISTS qd_strategy_notifications ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - strategy_id INTEGER, - symbol TEXT DEFAULT '', - signal_type TEXT DEFAULT '', - channels TEXT DEFAULT '', - title TEXT DEFAULT '', - message TEXT DEFAULT '', - payload_json TEXT DEFAULT '', - created_at INTEGER - ) - """) - - ensure_columns("qd_strategy_notifications", { - "strategy_id": "INTEGER", - "symbol": "TEXT DEFAULT ''", - "signal_type": "TEXT DEFAULT ''", - "channels": "TEXT DEFAULT ''", - "title": "TEXT DEFAULT ''", - "message": "TEXT DEFAULT ''", - "payload_json": "TEXT DEFAULT ''", - "created_at": "INTEGER", - "is_read": "INTEGER DEFAULT 0", - }) - - # 4. ๆŒ‡ๆ ‡ไปฃ็ ่กจ๏ผˆๅ‚่€ƒ MySQL: qd_indicator_codes๏ผ‰ - # ่ฏดๆ˜Ž๏ผš - # - ๆœฌๅœฐๅŒ–ๅŽ็ปŸไธ€ไฝฟ็”จ SQLite๏ผŒไฝ†ๅญ—ๆฎตไฟๆŒไธŽ MySQL ็ป“ๆž„ๆŽฅ่ฟ‘๏ผŒไพฟไบŽๅ‰็ซฏ/ไธšๅŠกๅค็”จใ€‚ - cursor.execute(""" - CREATE TABLE IF NOT EXISTS qd_indicator_codes ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - user_id INTEGER NOT NULL DEFAULT 1, - is_buy INTEGER NOT NULL DEFAULT 0, - end_time INTEGER NOT NULL DEFAULT 1, - name TEXT NOT NULL DEFAULT '', - code TEXT, - description TEXT DEFAULT '', - publish_to_community INTEGER NOT NULL DEFAULT 0, - pricing_type TEXT NOT NULL DEFAULT 'free', - price REAL NOT NULL DEFAULT 0, - is_encrypted INTEGER NOT NULL DEFAULT 0, - preview_image TEXT DEFAULT '', - createtime INTEGER, - updatetime INTEGER, - -- legacy local columns (kept for backward compatibility) - created_at INTEGER, - updated_at INTEGER - ) - """) +Database Connection Utility - PostgreSQL Only - # Migrate older local DBs (missing columns) to the new schema shape. - ensure_columns("qd_indicator_codes", { - "user_id": "INTEGER NOT NULL DEFAULT 1", - "is_buy": "INTEGER NOT NULL DEFAULT 0", - "end_time": "INTEGER NOT NULL DEFAULT 1", - "publish_to_community": "INTEGER NOT NULL DEFAULT 0", - "pricing_type": "TEXT NOT NULL DEFAULT 'free'", - "price": "REAL NOT NULL DEFAULT 0", - "is_encrypted": "INTEGER NOT NULL DEFAULT 0", - "preview_image": "TEXT DEFAULT ''", - "createtime": "INTEGER", - "updatetime": "INTEGER" - }) +Provides unified interface for PostgreSQL database operations. - # 4.1 ็ญ–็•ฅไปฃ็ ่กจ๏ผˆindicator-analysis ๆœฌๅœฐ็ญ–็•ฅ๏ผ›ไธŽไบคๆ˜“ๆ‰ง่กŒๅ™จ็š„ qd_strategies_trading ๅŒบๅˆ†๏ผ‰ - cursor.execute(""" - CREATE TABLE IF NOT EXISTS qd_strategy_codes ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - user_id INTEGER NOT NULL DEFAULT 1, - name TEXT NOT NULL DEFAULT '', - code TEXT, - description TEXT DEFAULT '', - createtime INTEGER, - updatetime INTEGER - ) - """) - - ensure_columns("qd_strategy_codes", { - "user_id": "INTEGER NOT NULL DEFAULT 1", - "name": "TEXT NOT NULL DEFAULT ''", - "code": "TEXT", - "description": "TEXT DEFAULT ''", - "createtime": "INTEGER", - "updatetime": "INTEGER" - }) - - # 5. AIๅ†ณ็ญ–่ฎฐๅฝ•่กจ - cursor.execute(""" - CREATE TABLE IF NOT EXISTS qd_ai_decisions ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - strategy_id INTEGER, - decision_data TEXT, -- JSON - context_data TEXT, -- JSON - created_at INTEGER - ) - """) - - # 6. ๆ’ไปถ/็ณป็ปŸ้…็ฝฎ่กจ๏ผˆๅŽŸๆฅ็”ฑ MySQL ๆไพ›๏ผŒ่ฟ™้‡Œ็”จ SQLite ๆœฌๅœฐๅŒ–๏ผ‰ - cursor.execute(""" - CREATE TABLE IF NOT EXISTS qd_addon_config ( - config_key TEXT PRIMARY KEY, - config_value TEXT, - type TEXT DEFAULT 'string' - ) - """) - - # 7. Watchlist (local-only, single-user by default) - cursor.execute(""" - CREATE TABLE IF NOT EXISTS qd_watchlist ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - user_id INTEGER DEFAULT 1, - market TEXT NOT NULL, - symbol TEXT NOT NULL, - name TEXT DEFAULT '', - created_at INTEGER, - updated_at INTEGER, - UNIQUE(user_id, market, symbol) - ) - """) - - # 8. Analysis tasks / history (local-only) - cursor.execute(""" - CREATE TABLE IF NOT EXISTS qd_analysis_tasks ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - user_id INTEGER DEFAULT 1, - market TEXT NOT NULL, - symbol TEXT NOT NULL, - model TEXT DEFAULT '', - language TEXT DEFAULT 'en-US', - status TEXT DEFAULT 'completed', -- completed/failed/processing/pending - result_json TEXT DEFAULT '', - error_message TEXT DEFAULT '', - created_at INTEGER, - completed_at INTEGER - ) - """) - - # 9. Backtest runs (for AI optimization / history) - cursor.execute(""" - CREATE TABLE IF NOT EXISTS qd_backtest_runs ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - user_id INTEGER NOT NULL DEFAULT 1, - indicator_id INTEGER, - market TEXT NOT NULL, - symbol TEXT NOT NULL, - timeframe TEXT NOT NULL, - start_date TEXT NOT NULL, -- YYYY-MM-DD - end_date TEXT NOT NULL, -- YYYY-MM-DD - initial_capital REAL DEFAULT 10000, - commission REAL DEFAULT 0.001, - slippage REAL DEFAULT 0, - leverage INTEGER DEFAULT 1, - trade_direction TEXT DEFAULT 'long', - strategy_config TEXT DEFAULT '', -- JSON string - status TEXT DEFAULT 'success', -- success/failed - error_message TEXT DEFAULT '', - result_json TEXT DEFAULT '', -- JSON string - created_at INTEGER - ) - """) - - ensure_columns("qd_backtest_runs", { - "user_id": "INTEGER NOT NULL DEFAULT 1", - "indicator_id": "INTEGER", - "market": "TEXT NOT NULL DEFAULT ''", - "symbol": "TEXT NOT NULL DEFAULT ''", - "timeframe": "TEXT NOT NULL DEFAULT ''", - "start_date": "TEXT NOT NULL DEFAULT ''", - "end_date": "TEXT NOT NULL DEFAULT ''", - "initial_capital": "REAL DEFAULT 10000", - "commission": "REAL DEFAULT 0.001", - "slippage": "REAL DEFAULT 0", - "leverage": "INTEGER DEFAULT 1", - "trade_direction": "TEXT DEFAULT 'long'", - "strategy_config": "TEXT DEFAULT ''", - "status": "TEXT DEFAULT 'success'", - "error_message": "TEXT DEFAULT ''", - "result_json": "TEXT DEFAULT ''", - "created_at": "INTEGER" - }) - - # 10. Exchange credentials vault (local-only) - cursor.execute(""" - CREATE TABLE IF NOT EXISTS qd_exchange_credentials ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - user_id INTEGER NOT NULL DEFAULT 1, - name TEXT DEFAULT '', - exchange_id TEXT NOT NULL, - api_key_hint TEXT DEFAULT '', - encrypted_config TEXT NOT NULL, -- encrypted JSON string - created_at INTEGER, - updated_at INTEGER - ) - """) - - ensure_columns("qd_exchange_credentials", { - "user_id": "INTEGER NOT NULL DEFAULT 1", - "name": "TEXT DEFAULT ''", - "exchange_id": "TEXT NOT NULL DEFAULT ''", - "api_key_hint": "TEXT DEFAULT ''", - "encrypted_config": "TEXT NOT NULL DEFAULT ''", - "created_at": "INTEGER", - "updated_at": "INTEGER" - }) - - # 11. Manual positions (user's existing holdings outside the system) - cursor.execute(""" - CREATE TABLE IF NOT EXISTS qd_manual_positions ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - user_id INTEGER NOT NULL DEFAULT 1, - market TEXT NOT NULL, -- Crypto/USStock/AShare/HShare/Forex/Futures - symbol TEXT NOT NULL, - name TEXT DEFAULT '', -- Display name - side TEXT DEFAULT 'long', -- long/short - quantity REAL NOT NULL DEFAULT 0, - entry_price REAL NOT NULL DEFAULT 0, - entry_time INTEGER, -- Position open timestamp - notes TEXT DEFAULT '', -- User notes - tags TEXT DEFAULT '', -- JSON array of tags - group_name TEXT DEFAULT '', -- Group name for categorization - created_at INTEGER, - updated_at INTEGER, - UNIQUE(user_id, market, symbol, side) - ) - """) - - ensure_columns("qd_manual_positions", { - "user_id": "INTEGER NOT NULL DEFAULT 1", - "market": "TEXT NOT NULL DEFAULT ''", - "symbol": "TEXT NOT NULL DEFAULT ''", - "name": "TEXT DEFAULT ''", - "side": "TEXT DEFAULT 'long'", - "quantity": "REAL NOT NULL DEFAULT 0", - "entry_price": "REAL NOT NULL DEFAULT 0", - "entry_time": "INTEGER", - "notes": "TEXT DEFAULT ''", - "tags": "TEXT DEFAULT ''", - "group_name": "TEXT DEFAULT ''", - "created_at": "INTEGER", - "updated_at": "INTEGER" - }) +Usage: + from app.utils.db import get_db_connection - # 11.1 Position alerts (price alerts and PnL alerts for manual positions) - cursor.execute(""" - CREATE TABLE IF NOT EXISTS qd_position_alerts ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - user_id INTEGER NOT NULL DEFAULT 1, - position_id INTEGER, -- FK to qd_manual_positions (NULL = symbol-level alert) - market TEXT DEFAULT '', - symbol TEXT DEFAULT '', - alert_type TEXT NOT NULL, -- price_above / price_below / pnl_above / pnl_below - threshold REAL NOT NULL DEFAULT 0, - notification_config TEXT DEFAULT '', -- JSON: channels, targets - is_active INTEGER DEFAULT 1, - is_triggered INTEGER DEFAULT 0, - last_triggered_at INTEGER, - trigger_count INTEGER DEFAULT 0, - repeat_interval INTEGER DEFAULT 0, -- 0=once, >0=repeat every N seconds - notes TEXT DEFAULT '', - created_at INTEGER, - updated_at INTEGER - ) - """) - - ensure_columns("qd_position_alerts", { - "user_id": "INTEGER NOT NULL DEFAULT 1", - "position_id": "INTEGER", - "market": "TEXT DEFAULT ''", - "symbol": "TEXT DEFAULT ''", - "alert_type": "TEXT NOT NULL DEFAULT 'price_above'", - "threshold": "REAL NOT NULL DEFAULT 0", - "notification_config": "TEXT DEFAULT ''", - "is_active": "INTEGER DEFAULT 1", - "is_triggered": "INTEGER DEFAULT 0", - "last_triggered_at": "INTEGER", - "trigger_count": "INTEGER DEFAULT 0", - "repeat_interval": "INTEGER DEFAULT 0", - "notes": "TEXT DEFAULT ''", - "created_at": "INTEGER", - "updated_at": "INTEGER" - }) - - # 12. Position monitors (AI analysis tasks for manual positions) - cursor.execute(""" - CREATE TABLE IF NOT EXISTS qd_position_monitors ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - user_id INTEGER NOT NULL DEFAULT 1, - name TEXT DEFAULT '', -- Monitor name - position_ids TEXT DEFAULT '', -- JSON array of position IDs (empty = all positions) - monitor_type TEXT DEFAULT 'ai', -- ai / price_alert / pnl_alert - config TEXT DEFAULT '', -- JSON config (interval_minutes, prompt, thresholds, etc.) - notification_config TEXT DEFAULT '', -- JSON notification config (channels, targets) - is_active INTEGER DEFAULT 1, - last_run_at INTEGER, - next_run_at INTEGER, - last_result TEXT DEFAULT '', -- Last analysis result (JSON) - run_count INTEGER DEFAULT 0, - created_at INTEGER, - updated_at INTEGER - ) - """) - - ensure_columns("qd_position_monitors", { - "user_id": "INTEGER NOT NULL DEFAULT 1", - "name": "TEXT DEFAULT ''", - "position_ids": "TEXT DEFAULT ''", - "monitor_type": "TEXT DEFAULT 'ai'", - "config": "TEXT DEFAULT ''", - "notification_config": "TEXT DEFAULT ''", - "is_active": "INTEGER DEFAULT 1", - "last_run_at": "INTEGER", - "next_run_at": "INTEGER", - "last_result": "TEXT DEFAULT ''", - "run_count": "INTEGER DEFAULT 0", - "created_at": "INTEGER", - "updated_at": "INTEGER" - }) - - conn.commit() - logger.info("Database schema initialized (SQLite)") - -# ๅˆๅง‹ๅŒ–ไธ€ๆฌก๏ผˆๆŒ‰ db_file ็ปดๅบฆ๏ผ‰ -_has_initialized = False -_initialized_db_file = None + with get_db_connection() as conn: + cursor = conn.cursor() + cursor.execute("SELECT * FROM users WHERE id = %s", (user_id,)) + row = cursor.fetchone() + conn.commit() + +Configuration: + DATABASE_URL=postgresql://user:password@host:port/dbname +""" -class SQLiteCursor: - """ๆจกๆ‹Ÿ pymysql DictCursor""" - def __init__(self, cursor): - self._cursor = cursor +# Re-export from PostgreSQL module +from app.utils.db_postgres import ( + get_pg_connection as get_db_connection, + get_pg_connection_sync as get_db_connection_sync, + is_postgres_available, + close_pool as close_db, +) - def execute(self, query: str, args: Any = None): - # ้€‚้… MySQL -> SQLite ่ฏญๆณ• - # 1. ๆ›ฟๆขๅ ไฝ็ฌฆ: %s -> ? - query = query.replace('%s', '?') - # 2. ๆ›ฟๆข INSERT IGNORE -> INSERT OR IGNORE - query = query.replace('INSERT IGNORE', 'INSERT OR IGNORE') - # 3. ๆ›ฟๆข ON DUPLICATE KEY UPDATE -> ็ฎ€ๅŒ–ไธบ UPSERT (SQLite 3.24+) - # ๆณจๆ„๏ผšๅคๆ‚็š„ ON DUPLICATE KEY UPDATE ๅพˆ้šพ่‡ชๅŠจ่ฝฌๆข๏ผŒๅปบ่ฎฎไธšๅŠกไปฃ็ ๆ”นๅ†™ - # ่ฟ™้‡Œๅšไธ€ไธช็ฎ€ๅ•็š„ๆ›ฟๆขๅฐ่ฏ•๏ผŒๅฆ‚ๆžœๅคฑ่ดฅๅˆ™้œ€่ฆไบบๅทฅไป‹ๅ…ฅไปฃ็  - if 'ON DUPLICATE KEY UPDATE' in query: - # ็ฎ€ๅ•็š„ๆญฃๅˆ™ๆ›ฟๆขๅพˆ้šพๅฎŒ็พŽ๏ผŒ่ฟ™้‡Œ่ฎฐๅฝ•ๆ—ฅๅฟ—ๆ้†’ - logger.warning(f"Complex SQL may require manual SQLite adaptation: {query}") - # ๅฐ่ฏ•่ฝฌๆขไธบ SQLite ็š„ ON CONFLICT (id) DO UPDATE SET ... - # ไฝ†็”ฑไบŽไธ็Ÿฅ้“ไธป้”ฎๅ†ฒ็ชๅˆ—๏ผŒๅพˆ้šพ่‡ชๅŠจ่ฝฌๆขใ€‚ - # ไธดๆ—ถๆ–นๆกˆ๏ผšๅฆ‚ๆžœ้‡ๅˆฐ่ฟ™็ง SQL๏ผŒๅฏ่ƒฝๆŠฅ้”™ใ€‚ๆˆ‘ไปฌๅ‡่ฎพไธป่ฆไธšๅŠก้€ป่พ‘ๅทฒ็ป้‡ๆž„ใ€‚ - pass - if args: - return self._cursor.execute(query, args) - return self._cursor.execute(query) +def get_db_type() -> str: + """Get database type (always postgresql)""" + return 'postgresql' - def fetchone(self): - row = self._cursor.fetchone() - if row is None: - return None - # Convert sqlite3.Row to dict - return dict(row) - def fetchall(self): - rows = self._cursor.fetchall() - return [dict(row) for row in rows] +def is_postgres() -> bool: + """Check if using PostgreSQL (always True)""" + return True - def close(self): - self._cursor.close() - - @property - def lastrowid(self): - return self._cursor.lastrowid - -class SQLiteConnection: - """ๆ•ฐๆฎๅบ“่ฟžๆŽฅๅŒ…่ฃ…็ฑป""" - def __init__(self, db_path): - self._conn = sqlite3.connect(db_path, check_same_thread=False, timeout=30.0) - # ่ฎพ็ฝฎ Row factory ไปฅๆ”ฏๆŒๅญ—ๆฎตๅ่ฎฟ้—ฎ - self._conn.row_factory = sqlite3.Row - - def cursor(self): - return SQLiteCursor(self._conn.cursor()) - - def commit(self): - self._conn.commit() - - def rollback(self): - self._conn.rollback() - - def close(self): - self._conn.close() -@contextmanager -def get_db_connection(): +def init_database(): """ - ่Žทๅ–ๆ•ฐๆฎๅบ“่ฟžๆŽฅ (Context Manager) + Initialize database connection. + Schema is created via migrations/init.sql on PostgreSQL container start. """ - global _has_initialized, _initialized_db_file - - # ็ฎ€ๅ•็š„่ฟžๆŽฅๅˆ›ๅปบ๏ผŒไธไฝฟ็”จ่ฟžๆŽฅๆฑ ๏ผˆSQLite ๆ–‡ไปถ้”ๆœบๅˆถๅ†ณๅฎšไบ†่ฟžๆŽฅๆฑ ๆ„ไน‰ไธๅคง๏ผ‰ - # ไฝฟ็”จ็บฟ็จ‹้”้˜ฒๆญขๅ†™ๅ†ฒ็ช๏ผˆ่™ฝ็„ถ SQLite ๆœ‰ WAL ๆจกๅผ๏ผŒไฝ†็จณๅฆฅ่ตท่ง๏ผ‰ - # ๆณจๆ„๏ผš่ฟ™้‡ŒๅŠ ้”็ฒ’ๅบฆ่พƒๅคง๏ผŒๅฆ‚ๆžœๆ˜ฏ้ซ˜ๅนถๅ‘ๅœบๆ™ฏๅฏ่ƒฝไผšๆ…ข๏ผŒไฝ†ๅฏนไบŽไธชไบบ้‡ๅŒ–็ณป็ปŸ่ถณๅคŸใ€‚ - - # ๅˆๅง‹ๅŒ–่กจ็ป“ๆž„๏ผˆ็กฎไฟๆฏไธช db_file ้ƒฝ่ขซๅˆๅง‹ๅŒ–่ฟ‡๏ผ‰ - db_file = _get_db_file() - if (not _has_initialized) or (_initialized_db_file != db_file): - try: - conn_init = sqlite3.connect(db_file) - _init_db_schema(conn_init) - conn_init.close() - _has_initialized = True - _initialized_db_file = db_file - except Exception as e: - logger.error(f"Failed to initialize database: {e}") + if is_postgres_available(): + from app.utils.logger import get_logger + logger = get_logger(__name__) + logger.info("PostgreSQL connection verified") + else: + raise RuntimeError("Cannot connect to PostgreSQL. Check DATABASE_URL.") - conn = SQLiteConnection(db_file) - try: - # with _db_lock: # SQLite ๅ†…้ƒจๆœ‰้”๏ผŒ่ฟ™้‡Œๅฆ‚ๆžœไธ่ทจ็บฟ็จ‹ๅ…ฑไบซ่ฟžๆŽฅๅ…ถๅฎžไธ็”จๅผบๅŠ ้” - yield conn - except Exception as e: - logger.error(f"Database operation error: {e}") - conn.rollback() - raise e - finally: - conn.close() - -def get_db_connection_sync(): - """ๅ…ผๅฎนๆ—งๆŽฅๅฃ""" - global _has_initialized, _initialized_db_file - db_file = _get_db_file() - if (not _has_initialized) or (_initialized_db_file != db_file): - try: - conn_init = sqlite3.connect(db_file) - _init_db_schema(conn_init) - conn_init.close() - _has_initialized = True - _initialized_db_file = db_file - except Exception as e: - logger.error(f"Failed to initialize database: {e}") - - return SQLiteConnection(db_file) +# Legacy alias def close_db_connection(): + """Legacy alias for close_db""" pass + + +__all__ = [ + 'get_db_connection', + 'get_db_connection_sync', + 'close_db_connection', + 'init_database', + 'close_db', + 'get_db_type', + 'is_postgres', +] diff --git a/backend_api_python/app/utils/db_postgres.py b/backend_api_python/app/utils/db_postgres.py new file mode 100644 index 000000000..cc15fd93c --- /dev/null +++ b/backend_api_python/app/utils/db_postgres.py @@ -0,0 +1,297 @@ +""" +PostgreSQL Database Connection Utility + +Supports multi-user mode with connection pooling and SQLite compatibility layer. +""" +import os +import threading +from typing import Optional, Any, List, Dict +from contextlib import contextmanager +from app.utils.logger import get_logger + +logger = get_logger(__name__) + +# Try to import psycopg2 +try: + import psycopg2 + from psycopg2 import pool + from psycopg2.extras import RealDictCursor + HAS_PSYCOPG2 = True +except ImportError: + HAS_PSYCOPG2 = False + logger.warning("psycopg2 not installed. PostgreSQL support disabled.") + +# Connection pool (global singleton) +_connection_pool: Optional[Any] = None +_pool_lock = threading.Lock() + + +def _get_database_url() -> str: + """Get database connection URL from environment""" + return os.getenv('DATABASE_URL', '').strip() + + +def _parse_database_url(url: str) -> Dict[str, Any]: + """ + Parse DATABASE_URL format: postgresql://user:password@host:port/dbname + """ + if not url: + return {} + + # Remove protocol prefix + if url.startswith('postgresql://'): + url = url[13:] + elif url.startswith('postgres://'): + url = url[11:] + else: + return {} + + result = {} + + # Split user:password@host:port/dbname + if '@' in url: + auth, hostpart = url.rsplit('@', 1) + if ':' in auth: + result['user'], result['password'] = auth.split(':', 1) + else: + result['user'] = auth + else: + hostpart = url + + # Split host:port/dbname + if '/' in hostpart: + hostport, result['dbname'] = hostpart.split('/', 1) + else: + hostport = hostpart + + if ':' in hostport: + result['host'], port_str = hostport.split(':', 1) + result['port'] = int(port_str) + else: + result['host'] = hostport + result['port'] = 5432 + + return result + + +def _get_connection_pool(): + """Get or create connection pool""" + global _connection_pool + + if _connection_pool is not None: + return _connection_pool + + with _pool_lock: + if _connection_pool is not None: + return _connection_pool + + if not HAS_PSYCOPG2: + raise RuntimeError("psycopg2 is not installed. Cannot use PostgreSQL.") + + db_url = _get_database_url() + if not db_url: + raise RuntimeError("DATABASE_URL environment variable is not set.") + + params = _parse_database_url(db_url) + if not params: + raise RuntimeError(f"Invalid DATABASE_URL format: {db_url}") + + try: + _connection_pool = pool.ThreadedConnectionPool( + minconn=2, + maxconn=20, + host=params.get('host', 'localhost'), + port=params.get('port', 5432), + user=params.get('user', 'quantdinger'), + password=params.get('password', ''), + dbname=params.get('dbname', 'quantdinger'), + connect_timeout=10, + ) + logger.info(f"PostgreSQL connection pool created: {params.get('host')}:{params.get('port')}/{params.get('dbname')}") + except Exception as e: + logger.error(f"Failed to create PostgreSQL connection pool: {e}") + raise + + return _connection_pool + + +class PostgresCursor: + """PostgreSQL cursor wrapper with SQLite placeholder compatibility""" + + def __init__(self, cursor): + self._cursor = cursor + self._last_insert_id = None + + def _convert_placeholders(self, query: str) -> str: + """ + Convert SQLite-style ? placeholders to PostgreSQL %s + Also handle some SQL syntax differences + """ + # Replace ? -> %s + query = query.replace('?', '%s') + + # SQLite: INSERT OR IGNORE -> PostgreSQL: INSERT ... ON CONFLICT DO NOTHING + query = query.replace('INSERT OR IGNORE', 'INSERT') + + return query + + def execute(self, query: str, args: Any = None): + """Execute SQL statement""" + query = self._convert_placeholders(query) + + # Check if this is an INSERT and add RETURNING id if not present + is_insert = query.strip().upper().startswith('INSERT') + if is_insert and 'RETURNING' not in query.upper(): + query = query.rstrip(';').rstrip() + ' RETURNING id' + + if args: + if not isinstance(args, (tuple, list)): + args = (args,) + result = self._cursor.execute(query, args) + else: + result = self._cursor.execute(query) + + # Capture last insert id for INSERT statements + if is_insert: + try: + row = self._cursor.fetchone() + if row and 'id' in row: + self._last_insert_id = row['id'] + except Exception: + pass + + return result + + def fetchone(self) -> Optional[Dict[str, Any]]: + """Fetch single row""" + row = self._cursor.fetchone() + if row is None: + return None + return dict(row) if row else None + + def fetchall(self) -> List[Dict[str, Any]]: + """Fetch all rows""" + rows = self._cursor.fetchall() + return [dict(row) for row in rows] if rows else [] + + def close(self): + """Close cursor""" + self._cursor.close() + + @property + def lastrowid(self) -> Optional[int]: + """Get last inserted row ID""" + return self._last_insert_id + + @property + def rowcount(self) -> int: + """Get affected row count""" + return self._cursor.rowcount + + +class PostgresConnection: + """PostgreSQL connection wrapper""" + + def __init__(self, conn): + self._conn = conn + self._pool = _get_connection_pool() + + def cursor(self) -> PostgresCursor: + """Create cursor""" + return PostgresCursor(self._conn.cursor(cursor_factory=RealDictCursor)) + + def commit(self): + """Commit transaction""" + self._conn.commit() + + def rollback(self): + """Rollback transaction""" + self._conn.rollback() + + def close(self): + """Return connection to pool""" + if self._pool and self._conn: + try: + self._pool.putconn(self._conn) + except Exception as e: + logger.warning(f"Failed to return connection to pool: {e}") + + +@contextmanager +def get_pg_connection(): + """ + Get PostgreSQL database connection (Context Manager) + """ + pool = _get_connection_pool() + conn = None + try: + conn = pool.getconn() + pg_conn = PostgresConnection(conn) + yield pg_conn + except Exception as e: + if conn: + try: + conn.rollback() + except Exception: + pass + logger.error(f"PostgreSQL operation error: {e}") + raise + finally: + if conn: + try: + pool.putconn(conn) + except Exception: + pass + + +def get_pg_connection_sync() -> PostgresConnection: + """ + Get connection synchronously (caller must close) + """ + pool = _get_connection_pool() + conn = pool.getconn() + return PostgresConnection(conn) + + +def execute_sql(sql: str, params: tuple = None) -> List[Dict[str, Any]]: + """ + Execute SQL and return results (convenience function) + """ + with get_pg_connection() as conn: + cursor = conn.cursor() + cursor.execute(sql, params) + if sql.strip().upper().startswith('SELECT'): + return cursor.fetchall() + conn.commit() + return [] + + +def is_postgres_available() -> bool: + """Check if PostgreSQL is available""" + if not HAS_PSYCOPG2: + return False + + db_url = _get_database_url() + if not db_url: + return False + + try: + with get_pg_connection() as conn: + cursor = conn.cursor() + cursor.execute("SELECT 1") + return True + except Exception as e: + logger.debug(f"PostgreSQL not available: {e}") + return False + + +def close_pool(): + """Close connection pool (call on app shutdown)""" + global _connection_pool + if _connection_pool: + try: + _connection_pool.closeall() + _connection_pool = None + logger.info("PostgreSQL connection pool closed") + except Exception as e: + logger.warning(f"Error closing connection pool: {e}") diff --git a/backend_api_python/env.example b/backend_api_python/env.example index ad36874f3..3ec67660c 100644 --- a/backend_api_python/env.example +++ b/backend_api_python/env.example @@ -8,6 +8,13 @@ SECRET_KEY=quantdinger-secret-key-change-me ADMIN_USER=quantdinger ADMIN_PASSWORD=123456 +# ========================= +# Demo Mode +# ========================= +# Set to true to enable read-only mode for public demo. +# Blocks all POST/PUT/DELETE requests except login. +IS_DEMO_MODE=false + # ========================= # Network / App # ========================= @@ -16,12 +23,13 @@ PYTHON_API_PORT=5000 PYTHON_API_DEBUG=False # ========================= -# Database (SQLite) +# Database Configuration (PostgreSQL) # ========================= -# ไธปๅบ“ๆ–‡ไปถ่ทฏๅพ„๏ผˆๅฏ้€‰๏ผ‰ -# - ไธ่ฎพ็ฝฎๆ—ถ๏ผŒ้ป˜่ฎคไฝฟ็”จ๏ผšbackend_api_python/data/quantdinger.db -# - Docker ๆŽจ่๏ผš/app/data/quantdinger.db -SQLITE_DATABASE_FILE= +# PostgreSQL connection URL (required for multi-user mode) +# Format: postgresql://user:password@host:port/dbname +# Docker: uses this default, no changes needed +# Local: change 'postgres' to 'localhost' and update password +DATABASE_URL=postgresql://quantdinger:quantdinger123@postgres:5432/quantdinger # ========================= # Pending orders worker (optional) diff --git a/backend_api_python/logs/app.log.1 b/backend_api_python/logs/app.log.1 new file mode 100644 index 000000000..f140ba655 --- /dev/null +++ b/backend_api_python/logs/app.log.1 @@ -0,0 +1,85373 @@ +2025-12-25 22:26:47,712 - app.utils.db - INFO - สพฟโมฌฝำณุณ๕สผปฏณษนฆ (pool_size=50, max_overflow=100) +2025-12-25 22:26:48,974 - app.utils.db - ERROR - ป๑ศกสพฟโมฌฝำสงฐ: (2003, "Can't connect to MySQL server on '1Panel-mysql-VEir' ([Errno 11001] getaddrinfo failed)") +2025-12-25 22:26:48,975 - app.utils.config_loader - ERROR - ผำิุฒๅผลไึรสงฐ: (2003, "Can't connect to MySQL server on '1Panel-mysql-VEir' ([Errno 11001] getaddrinfo failed)") +2025-12-25 22:26:50,245 - app.utils.db - ERROR - ป๑ศกสพฟโมฌฝำสงฐ: (2003, "Can't connect to MySQL server on '1Panel-mysql-VEir' ([Errno 11001] getaddrinfo failed)") +2025-12-25 22:26:50,245 - app.utils.config_loader - ERROR - ผำิุฒๅผลไึรสงฐ: (2003, "Can't connect to MySQL server on '1Panel-mysql-VEir' ([Errno 11001] getaddrinfo failed)") +2025-12-25 22:51:56,726 - app.utils.cache - WARNING - Redis connection failed, fallback to in-memory cache: Error 10061 connecting to localhost:6379. ำษำฺฤฟฑ๊ผฦหใป๚ปผซพพ๘ฃฌฮทจมฌฝำกฃ. +2025-12-25 22:51:56,772 - app.utils.encryption - WARNING - ฮดีาตฝผำรริฟฃฌษ๚ณษะยริฟฃจฝ๖ำรำฺฟชทขปทพณฃฉ +2025-12-25 22:51:56,772 - app.utils.encryption - WARNING - ษ๚ฒ๚ปทพณว๋ษ่ึรปทพณฑไมฟ ENCRYPTION_KEY ป๒ดดฝจ .encryption_key ฮฤผ +2025-12-25 22:51:56,772 - app.utils.encryption - INFO - ะยษ๚ณษตฤริฟฃจว๋ฑฃดๆตฝปทพณฑไมฟ ENCRYPTION_KEYฃฉ: QFHV7PHQeyXE2oPgUhiaYnHAN+roB7EboeprMOqQy4Y= +2025-12-25 22:52:52,668 - app.utils.cache - WARNING - Redis connection failed, fallback to in-memory cache: Error 10061 connecting to localhost:6379. ำษำฺฤฟฑ๊ผฦหใป๚ปผซพพ๘ฃฌฮทจมฌฝำกฃ. +2025-12-25 22:52:52,692 - app.utils.encryption - WARNING - ฮดีาตฝผำรริฟฃฌษ๚ณษะยริฟฃจฝ๖ำรำฺฟชทขปทพณฃฉ +2025-12-25 22:52:52,692 - app.utils.encryption - WARNING - ษ๚ฒ๚ปทพณว๋ษ่ึรปทพณฑไมฟ ENCRYPTION_KEY ป๒ดดฝจ .encryption_key ฮฤผ +2025-12-25 22:52:52,692 - app.utils.encryption - INFO - ะยษ๚ณษตฤริฟฃจว๋ฑฃดๆตฝปทพณฑไมฟ ENCRYPTION_KEYฃฉ: 9GA9OCJto5ZXtSB8pKpdSce4nQyIZv9P55zWaBvGARs= +2025-12-25 22:52:57,210 - app.services.price_cache - WARNING - Redis มฌฝำสงฐฃฌผธ๑ปบดๆนฆฤาัฝ๛ำร: Error 10061 connecting to localhost:6379. ำษำฺฤฟฑ๊ผฦหใป๚ปผซพพ๘ฃฌฮทจมฌฝำกฃ. +2025-12-25 22:52:57,252 - app.utils.db - INFO - สพฟโฑํฝแนนณ๕สผปฏอ๊ณษ (SQLite) +2025-12-25 22:52:57,253 - app.utils.db - ERROR - สพฟโฒูื๗า์ณฃ: near "SHOW": syntax error +2025-12-25 22:52:57,253 - app.services.trading_executor - ERROR - ผ์ฒ้สพฟโืึถฮสงฐ: near "SHOW": syntax error +2025-12-25 22:58:29,858 - app.utils.cache - WARNING - Redis connection failed, fallback to in-memory cache: Error 10061 connecting to localhost:6379. ำษำฺฤฟฑ๊ผฦหใป๚ปผซพพ๘ฃฌฮทจมฌฝำกฃ. +2025-12-25 22:58:29,882 - app.utils.encryption - WARNING - ฮดีาตฝผำรริฟฃฌษ๚ณษะยริฟฃจฝ๖ำรำฺฟชทขปทพณฃฉ +2025-12-25 22:58:29,882 - app.utils.encryption - WARNING - ษ๚ฒ๚ปทพณว๋ษ่ึรปทพณฑไมฟ ENCRYPTION_KEY ป๒ดดฝจ .encryption_key ฮฤผ +2025-12-25 22:58:29,882 - app.utils.encryption - INFO - ะยษ๚ณษตฤริฟฃจว๋ฑฃดๆตฝปทพณฑไมฟ ENCRYPTION_KEYฃฉ: GUwizzd3saarIlNUedoaxmfkCHeBs1jqB8oC/TXSD1w= +2025-12-25 22:58:29,905 - app - INFO - าัอจนปทพณฑไมฟ DISABLE_RESTORE_RUNNING_STRATEGIES นุฑีฦ๔ถฏสฑฒ฿ยิปึธด +2025-12-25 22:58:29,909 - app - INFO - าัอจนปทพณฑไมฟ DISABLE_RESTORE_RUNNING_STRATEGIES นุฑีฦ๔ถฏสฑฒ฿ยิปึธด +2025-12-25 22:58:29,909 - app - INFO - าัอจนปทพณฑไมฟ DISABLE_RESTORE_RUNNING_STRATEGIES นุฑีฦ๔ถฏสฑฒ฿ยิปึธด +2025-12-25 22:59:04,546 - app.utils.cache - WARNING - Redis connection failed, fallback to in-memory cache: Error 10061 connecting to localhost:6379. ำษำฺฤฟฑ๊ผฦหใป๚ปผซพพ๘ฃฌฮทจมฌฝำกฃ. +2025-12-25 22:59:04,568 - app.utils.encryption - WARNING - ฮดีาตฝผำรริฟฃฌษ๚ณษะยริฟฃจฝ๖ำรำฺฟชทขปทพณฃฉ +2025-12-25 22:59:04,568 - app.utils.encryption - WARNING - ษ๚ฒ๚ปทพณว๋ษ่ึรปทพณฑไมฟ ENCRYPTION_KEY ป๒ดดฝจ .encryption_key ฮฤผ +2025-12-25 22:59:04,569 - app.utils.encryption - INFO - ะยษ๚ณษตฤริฟฃจว๋ฑฃดๆตฝปทพณฑไมฟ ENCRYPTION_KEYฃฉ: EYs6S1DQGIapTg/Y2kw4rmnSRtxZvTnpp0Nw3//mNyI= +2025-12-25 22:59:04,587 - app - INFO - าัอจนปทพณฑไมฟ DISABLE_RESTORE_RUNNING_STRATEGIES นุฑีฦ๔ถฏสฑฒ฿ยิปึธด +2025-12-25 22:59:04,591 - app - INFO - าัอจนปทพณฑไมฟ DISABLE_RESTORE_RUNNING_STRATEGIES นุฑีฦ๔ถฏสฑฒ฿ยิปึธด +2025-12-25 22:59:04,591 - app - INFO - าัอจนปทพณฑไมฟ DISABLE_RESTORE_RUNNING_STRATEGIES นุฑีฦ๔ถฏสฑฒ฿ยิปึธด +2025-12-25 22:59:04,599 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-25 22:59:04,599 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-25 22:59:04,599 - werkzeug - INFO - Press CTRL+C to quit +2025-12-25 22:59:04,599 - werkzeug - INFO - Press CTRL+C to quit +2025-12-25 22:59:33,291 - app.routes.auth - ERROR - Login error: 400 Bad Request: The browser (or proxy) sent a request that this server could not understand. +2025-12-25 22:59:33,291 - app.routes.auth - ERROR - Login error: 400 Bad Request: The browser (or proxy) sent a request that this server could not understand. +2025-12-25 22:59:33,292 - werkzeug - INFO - 127.0.0.1 - - [25/Dec/2025 22:59:33] "POST /api/user/login HTTP/1.1" 500 - +2025-12-25 22:59:33,292 - werkzeug - INFO - 127.0.0.1 - - [25/Dec/2025 22:59:33] "POST /api/user/login HTTP/1.1" 500 - +2025-12-25 23:00:03,134 - werkzeug - INFO - 127.0.0.1 - - [25/Dec/2025 23:00:03] "POST /api/user/login HTTP/1.1" 200 - +2025-12-25 23:00:03,134 - werkzeug - INFO - 127.0.0.1 - - [25/Dec/2025 23:00:03] "POST /api/user/login HTTP/1.1" 200 - +2025-12-25 23:01:59,850 - werkzeug - INFO - 127.0.0.1 - - [25/Dec/2025 23:01:59] "POST /api/user/login HTTP/1.1" 200 - +2025-12-25 23:01:59,850 - werkzeug - INFO - 127.0.0.1 - - [25/Dec/2025 23:01:59] "POST /api/user/login HTTP/1.1" 200 - +2025-12-25 23:02:15,923 - werkzeug - INFO - 127.0.0.1 - - [25/Dec/2025 23:02:15] "POST /api/user/logout HTTP/1.1" 200 - +2025-12-25 23:02:15,923 - werkzeug - INFO - 127.0.0.1 - - [25/Dec/2025 23:02:15] "POST /api/user/logout HTTP/1.1" 200 - +2025-12-25 23:20:59,551 - werkzeug - INFO - 127.0.0.1 - - [25/Dec/2025 23:20:59] "POST /api/user/login HTTP/1.1" 200 - +2025-12-25 23:20:59,551 - werkzeug - INFO - 127.0.0.1 - - [25/Dec/2025 23:20:59] "POST /api/user/login HTTP/1.1" 200 - +2025-12-25 23:23:12,634 - werkzeug - INFO - 127.0.0.1 - - [25/Dec/2025 23:23:12] "POST /api/user/login HTTP/1.1" 200 - +2025-12-25 23:23:12,634 - werkzeug - INFO - 127.0.0.1 - - [25/Dec/2025 23:23:12] "POST /api/user/login HTTP/1.1" 200 - +2025-12-25 23:24:08,937 - werkzeug - INFO - 127.0.0.1 - - [25/Dec/2025 23:24:08] "POST /api/user/logout HTTP/1.1" 200 - +2025-12-25 23:24:08,937 - werkzeug - INFO - 127.0.0.1 - - [25/Dec/2025 23:24:08] "POST /api/user/logout HTTP/1.1" 200 - +2025-12-25 23:27:34,044 - werkzeug - INFO - 127.0.0.1 - - [25/Dec/2025 23:27:34] "POST /api/user/login HTTP/1.1" 200 - +2025-12-25 23:27:34,044 - werkzeug - INFO - 127.0.0.1 - - [25/Dec/2025 23:27:34] "POST /api/user/login HTTP/1.1" 200 - +2025-12-25 23:31:11,016 - werkzeug - INFO - 127.0.0.1 - - [25/Dec/2025 23:31:11] "POST /api/user/logout HTTP/1.1" 200 - +2025-12-25 23:31:11,016 - werkzeug - INFO - 127.0.0.1 - - [25/Dec/2025 23:31:11] "POST /api/user/logout HTTP/1.1" 200 - +2025-12-25 23:32:31,331 - werkzeug - INFO - 127.0.0.1 - - [25/Dec/2025 23:32:31] "POST /api/user/login HTTP/1.1" 200 - +2025-12-25 23:32:31,331 - werkzeug - INFO - 127.0.0.1 - - [25/Dec/2025 23:32:31] "POST /api/user/login HTTP/1.1" 200 - +2025-12-25 23:34:46,480 - werkzeug - INFO - 127.0.0.1 - - [25/Dec/2025 23:34:46] "POST /api/user/logout HTTP/1.1" 200 - +2025-12-25 23:34:46,480 - werkzeug - INFO - 127.0.0.1 - - [25/Dec/2025 23:34:46] "POST /api/user/logout HTTP/1.1" 200 - +2025-12-25 23:39:33,827 - werkzeug - INFO - 127.0.0.1 - - [25/Dec/2025 23:39:33] "POST /api/user/login HTTP/1.1" 200 - +2025-12-25 23:39:33,827 - werkzeug - INFO - 127.0.0.1 - - [25/Dec/2025 23:39:33] "POST /api/user/login HTTP/1.1" 200 - +2025-12-25 23:39:37,967 - werkzeug - INFO - 127.0.0.1 - - [25/Dec/2025 23:39:37] "POST /api/user/logout HTTP/1.1" 200 - +2025-12-25 23:39:37,967 - werkzeug - INFO - 127.0.0.1 - - [25/Dec/2025 23:39:37] "POST /api/user/logout HTTP/1.1" 200 - +2025-12-25 23:42:31,149 - werkzeug - INFO - 127.0.0.1 - - [25/Dec/2025 23:42:31] "POST /api/user/login HTTP/1.1" 200 - +2025-12-25 23:42:31,149 - werkzeug - INFO - 127.0.0.1 - - [25/Dec/2025 23:42:31] "POST /api/user/login HTTP/1.1" 200 - +2025-12-25 23:45:26,735 - werkzeug - INFO - 127.0.0.1 - - [25/Dec/2025 23:45:26] "POST /api/user/logout HTTP/1.1" 200 - +2025-12-25 23:45:26,735 - werkzeug - INFO - 127.0.0.1 - - [25/Dec/2025 23:45:26] "POST /api/user/logout HTTP/1.1" 200 - +2025-12-25 23:46:43,948 - werkzeug - INFO - 127.0.0.1 - - [25/Dec/2025 23:46:43] "POST /api/user/login HTTP/1.1" 200 - +2025-12-25 23:46:43,948 - werkzeug - INFO - 127.0.0.1 - - [25/Dec/2025 23:46:43] "POST /api/user/login HTTP/1.1" 200 - +2025-12-25 23:47:50,842 - werkzeug - INFO - 127.0.0.1 - - [25/Dec/2025 23:47:50] "POST /api/user/login HTTP/1.1" 200 - +2025-12-25 23:47:50,842 - werkzeug - INFO - 127.0.0.1 - - [25/Dec/2025 23:47:50] "POST /api/user/login HTTP/1.1" 200 - +2025-12-25 23:58:50,879 - werkzeug - INFO - 127.0.0.1 - - [25/Dec/2025 23:58:50] "GET /api/market/config?_t=1766678330868 HTTP/1.1" 404 - +2025-12-25 23:58:50,879 - werkzeug - INFO - 127.0.0.1 - - [25/Dec/2025 23:58:50] "GET /api/market/config?_t=1766678330868 HTTP/1.1" 404 - +2025-12-25 23:58:51,079 - werkzeug - INFO - 127.0.0.1 - - [25/Dec/2025 23:58:51] "GET /api/market/types?_t=1766678330882 HTTP/1.1" 404 - +2025-12-25 23:58:51,079 - werkzeug - INFO - 127.0.0.1 - - [25/Dec/2025 23:58:51] "GET /api/market/types?_t=1766678330882 HTTP/1.1" 404 - +2025-12-26 00:00:44,868 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:00:44] "GET /api/market/config?_t=1766678444861 HTTP/1.1" 404 - +2025-12-26 00:00:44,868 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:00:44] "GET /api/market/config?_t=1766678444861 HTTP/1.1" 404 - +2025-12-26 00:00:45,091 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:00:45] "GET /api/market/types?_t=1766678444873 HTTP/1.1" 404 - +2025-12-26 00:00:45,091 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:00:45] "GET /api/market/types?_t=1766678444873 HTTP/1.1" 404 - +2025-12-26 00:03:05,256 - app.utils.cache - WARNING - Redis connection failed, fallback to in-memory cache: Error 10061 connecting to localhost:6379. ำษำฺฤฟฑ๊ผฦหใป๚ปผซพพ๘ฃฌฮทจมฌฝำกฃ. +2025-12-26 00:03:05,291 - app.utils.encryption - WARNING - ฮดีาตฝผำรริฟฃฌษ๚ณษะยริฟฃจฝ๖ำรำฺฟชทขปทพณฃฉ +2025-12-26 00:03:05,291 - app.utils.encryption - WARNING - ษ๚ฒ๚ปทพณว๋ษ่ึรปทพณฑไมฟ ENCRYPTION_KEY ป๒ดดฝจ .encryption_key ฮฤผ +2025-12-26 00:03:05,291 - app.utils.encryption - INFO - ะยษ๚ณษตฤริฟฃจว๋ฑฃดๆตฝปทพณฑไมฟ ENCRYPTION_KEYฃฉ: dzFFyglVj05OKynhRQ0267B+f1vi4GH3rJq2Rt5iC9s= +2025-12-26 00:03:05,317 - app - INFO - าัอจนปทพณฑไมฟ DISABLE_RESTORE_RUNNING_STRATEGIES นุฑีฦ๔ถฏสฑฒ฿ยิปึธด +2025-12-26 00:03:05,323 - app - INFO - าัอจนปทพณฑไมฟ DISABLE_RESTORE_RUNNING_STRATEGIES นุฑีฦ๔ถฏสฑฒ฿ยิปึธด +2025-12-26 00:03:05,323 - app - INFO - าัอจนปทพณฑไมฟ DISABLE_RESTORE_RUNNING_STRATEGIES นุฑีฦ๔ถฏสฑฒ฿ยิปึธด +2025-12-26 00:03:05,332 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-26 00:03:05,332 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-26 00:03:05,332 - werkzeug - INFO - Press CTRL+C to quit +2025-12-26 00:03:05,332 - werkzeug - INFO - Press CTRL+C to quit +2025-12-26 00:04:03,938 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:04:03] "GET /api/market/config HTTP/1.1" 200 - +2025-12-26 00:04:03,938 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:04:03] "GET /api/market/config HTTP/1.1" 200 - +2025-12-26 00:04:03,940 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:04:03] "GET /api/market/config HTTP/1.1" 200 - +2025-12-26 00:04:03,940 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:04:03] "GET /api/market/config HTTP/1.1" 200 - +2025-12-26 00:04:20,244 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:04:20] "GET /api/market/config?_t=1 HTTP/1.1" 200 - +2025-12-26 00:04:20,244 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:04:20] "GET /api/market/config?_t=1 HTTP/1.1" 200 - +2025-12-26 00:05:07,113 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:05:07] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 00:05:07,113 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:05:07] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 00:05:54,144 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:05:54] "POST /api/market/symbols/search HTTP/1.1" 200 - +2025-12-26 00:05:54,144 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:05:54] "POST /api/market/symbols/search HTTP/1.1" 200 - +2025-12-26 00:06:12,743 - app.utils.db - INFO - สพฟโฑํฝแนนณ๕สผปฏอ๊ณษ (SQLite) +2025-12-26 00:06:12,743 - app.utils.db - INFO - สพฟโฑํฝแนนณ๕สผปฏอ๊ณษ (SQLite) +2025-12-26 00:06:12,750 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:06:12] "POST /api/market/watchlist/add HTTP/1.1" 200 - +2025-12-26 00:06:12,750 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:06:12] "POST /api/market/watchlist/add HTTP/1.1" 200 - +2025-12-26 00:06:46,159 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:06:46] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:06:46,159 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:06:46] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:07:05,180 - app.routes.analysis - INFO - Analyze request: USStock:AAPL, use_multi_agent=True, model=openai/gpt-4o +2025-12-26 00:07:05,180 - app.routes.analysis - INFO - Analyze request: USStock:AAPL, use_multi_agent=True, model=openai/gpt-4o +2025-12-26 00:07:05,964 - app.services.analysis - INFO - ถเึวฤฬๅผนนณ๕สผปฏณษนฆ +2025-12-26 00:07:05,964 - app.services.analysis - INFO - ถเึวฤฬๅผนนณ๕สผปฏณษนฆ +2025-12-26 00:07:05,964 - app.services.analysis - INFO - Starting analysis USStock:AAPL, language=en-US, mode=multi-agent +2025-12-26 00:07:05,964 - app.services.analysis - INFO - Starting analysis USStock:AAPL, language=en-US, mode=multi-agent +2025-12-26 00:07:05,964 - app.services.analysis - INFO - ฟชสผึดะะถเึวฤฬๅทึฮ๖: USStock:AAPL +2025-12-26 00:07:05,964 - app.services.analysis - INFO - ฟชสผึดะะถเึวฤฬๅทึฮ๖: USStock:AAPL +2025-12-26 00:07:05,964 - app.services.agents.coordinator - INFO - ฟชสผถเึวฤฬๅทึฮ๖: USStock:AAPL, ฤฃะอ: openai/gpt-4o +2025-12-26 00:07:05,964 - app.services.agents.coordinator - INFO - ฟชสผถเึวฤฬๅทึฮ๖: USStock:AAPL, ฤฃะอ: openai/gpt-4o +2025-12-26 00:07:09,895 - app.services.agents.tools - ERROR - ป๑ศกKฯ฿สพสงฐ USStock:AAPL: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:07:09,895 - app.services.agents.tools - ERROR - ป๑ศกKฯ฿สพสงฐ USStock:AAPL: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:07:09,895 - app.services.agents.tools - INFO - ึดะะะยฮลหัห๗: "AAPL" AAPL stock news +2025-12-26 00:07:09,895 - app.services.agents.tools - INFO - ึดะะะยฮลหัห๗: "AAPL" AAPL stock news +2025-12-26 00:07:09,895 - app.services.search - WARNING - Google Search API ฮดลไึร (api_key ป๒ cx ศฑสง) +2025-12-26 00:07:09,895 - app.services.search - WARNING - Google Search API ฮดลไึร (api_key ป๒ cx ศฑสง) +2025-12-26 00:07:09,895 - app.services.agents.coordinator - INFO - ฝืถฮ1: ทึฮ๖สฆอลถำทึฮ๖ (ฒขะะึดะะ) +2025-12-26 00:07:09,895 - app.services.agents.coordinator - INFO - ฝืถฮ1: ทึฮ๖สฆอลถำทึฮ๖ (ฒขะะึดะะ) +2025-12-26 00:07:10,900 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:10,900 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:10,900 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:10,900 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:10,910 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:10,910 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:10,911 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:10,911 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:11,171 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:11,171 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:11,171 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:11,171 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:11,411 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:11,411 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:11,411 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:11,411 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:12,811 - app.services.agents.tools - ERROR - ป๑ศกKฯ฿สพสงฐ USStock:AAPL: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:07:12,811 - app.services.agents.tools - ERROR - ป๑ศกKฯ฿สพสงฐ USStock:AAPL: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:07:13,913 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:13,913 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:13,913 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:13,913 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:13,915 - app.services.agents.coordinator - INFO - ฝืถฮ2: ัะพฟฑ็ย (ฒขะะึดะะ) +2025-12-26 00:07:13,915 - app.services.agents.coordinator - INFO - ฝืถฮ2: ัะพฟฑ็ย (ฒขะะึดะะ) +2025-12-26 00:07:14,832 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:14,832 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:14,832 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:14,832 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:15,105 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:15,105 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:15,105 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:15,105 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:15,106 - app.services.agents.coordinator - INFO - ฝืถฮ3: ฝปาืิฑพ๖ฒ฿ +2025-12-26 00:07:15,106 - app.services.agents.coordinator - INFO - ฝืถฮ3: ฝปาืิฑพ๖ฒ฿ +2025-12-26 00:07:16,213 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:16,213 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:16,214 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:16,214 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:16,214 - app.services.agents.coordinator - INFO - ฝืถฮ4: ท็ฯีฑ็ย (ฒขะะึดะะ) +2025-12-26 00:07:16,214 - app.services.agents.coordinator - INFO - ฝืถฮ4: ท็ฯีฑ็ย (ฒขะะึดะะ) +2025-12-26 00:07:17,161 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:17,161 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:17,161 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:17,161 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:17,167 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:17,167 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:17,167 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:17,167 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:17,172 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:17,172 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:17,172 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:17,172 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:07:17,173 - app.services.agents.coordinator - WARNING - ผวยผืิถฏทดหผสงฐ: 'NoneType' object has no attribute 'get' +2025-12-26 00:07:17,173 - app.services.agents.coordinator - WARNING - ผวยผืิถฏทดหผสงฐ: 'NoneType' object has no attribute 'get' +2025-12-26 00:07:17,174 - app.services.agents.coordinator - INFO - ถเึวฤฬๅทึฮ๖อ๊ณษ: USStock:AAPL +2025-12-26 00:07:17,174 - app.services.agents.coordinator - INFO - ถเึวฤฬๅทึฮ๖อ๊ณษ: USStock:AAPL +2025-12-26 00:07:17,174 - app.services.agents.coordinator - INFO - ทตปุฝแน๛ืึถฮผ์ฒ้ - debate: True, trader_decision: True, risk_debate: True, final_decision: True +2025-12-26 00:07:17,174 - app.services.agents.coordinator - INFO - ทตปุฝแน๛ืึถฮผ์ฒ้ - debate: True, trader_decision: True, risk_debate: True, final_decision: True +2025-12-26 00:07:17,174 - app.services.analysis - INFO - ถเึวฤฬๅทึฮ๖ทตปุฝแน๛ - keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2025-12-26 00:07:17,174 - app.services.analysis - INFO - ถเึวฤฬๅทึฮ๖ทตปุฝแน๛ - keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2025-12-26 00:07:17,184 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:07:17] "POST /api/analysis/multiAnalysis HTTP/1.1" 200 - +2025-12-26 00:07:17,184 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:07:17] "POST /api/analysis/multiAnalysis HTTP/1.1" 200 - +2025-12-26 00:08:21,150 - app.utils.cache - WARNING - Redis connection failed, fallback to in-memory cache: Error 10061 connecting to localhost:6379. ำษำฺฤฟฑ๊ผฦหใป๚ปผซพพ๘ฃฌฮทจมฌฝำกฃ. +2025-12-26 00:08:21,169 - app.utils.encryption - WARNING - ฮดีาตฝผำรริฟฃฌษ๚ณษะยริฟฃจฝ๖ำรำฺฟชทขปทพณฃฉ +2025-12-26 00:08:21,169 - app.utils.encryption - WARNING - ษ๚ฒ๚ปทพณว๋ษ่ึรปทพณฑไมฟ ENCRYPTION_KEY ป๒ดดฝจ .encryption_key ฮฤผ +2025-12-26 00:08:21,169 - app.utils.encryption - INFO - ะยษ๚ณษตฤริฟฃจว๋ฑฃดๆตฝปทพณฑไมฟ ENCRYPTION_KEYฃฉ: ey4NW9NguQy1BbS1gW7x4r8V54DXjQ4JKMVyW5uw4gY= +2025-12-26 00:08:21,189 - app - INFO - าัอจนปทพณฑไมฟ DISABLE_RESTORE_RUNNING_STRATEGIES นุฑีฦ๔ถฏสฑฒ฿ยิปึธด +2025-12-26 00:08:21,195 - app - INFO - าัอจนปทพณฑไมฟ DISABLE_RESTORE_RUNNING_STRATEGIES นุฑีฦ๔ถฏสฑฒ฿ยิปึธด +2025-12-26 00:08:21,195 - app - INFO - าัอจนปทพณฑไมฟ DISABLE_RESTORE_RUNNING_STRATEGIES นุฑีฦ๔ถฏสฑฒ฿ยิปึธด +2025-12-26 00:08:21,202 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-26 00:08:21,202 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-26 00:08:21,202 - werkzeug - INFO - Press CTRL+C to quit +2025-12-26 00:08:21,202 - werkzeug - INFO - Press CTRL+C to quit +2025-12-26 00:08:38,859 - app.routes.analysis - INFO - Analyze request: USStock:AAPL, use_multi_agent=None, model=openai/gpt-4o +2025-12-26 00:08:38,859 - app.routes.analysis - INFO - Analyze request: USStock:AAPL, use_multi_agent=None, model=openai/gpt-4o +2025-12-26 00:08:39,374 - app.utils.db - INFO - สพฟโฑํฝแนนณ๕สผปฏอ๊ณษ (SQLite) +2025-12-26 00:08:39,374 - app.utils.db - INFO - สพฟโฑํฝแนนณ๕สผปฏอ๊ณษ (SQLite) +2025-12-26 00:08:39,380 - app.services.analysis - INFO - ถเึวฤฬๅผนนณ๕สผปฏณษนฆ +2025-12-26 00:08:39,380 - app.services.analysis - INFO - ถเึวฤฬๅผนนณ๕สผปฏณษนฆ +2025-12-26 00:08:39,380 - app.services.analysis - INFO - Starting analysis USStock:AAPL, language=en-US, mode=multi-agent +2025-12-26 00:08:39,380 - app.services.analysis - INFO - Starting analysis USStock:AAPL, language=en-US, mode=multi-agent +2025-12-26 00:08:39,380 - app.services.analysis - INFO - ฟชสผึดะะถเึวฤฬๅทึฮ๖: USStock:AAPL +2025-12-26 00:08:39,380 - app.services.analysis - INFO - ฟชสผึดะะถเึวฤฬๅทึฮ๖: USStock:AAPL +2025-12-26 00:08:39,380 - app.services.agents.coordinator - INFO - ฟชสผถเึวฤฬๅทึฮ๖: USStock:AAPL, ฤฃะอ: openai/gpt-4o +2025-12-26 00:08:39,380 - app.services.agents.coordinator - INFO - ฟชสผถเึวฤฬๅทึฮ๖: USStock:AAPL, ฤฃะอ: openai/gpt-4o +2025-12-26 00:08:42,659 - app.services.agents.tools - ERROR - ป๑ศกKฯ฿สพสงฐ USStock:AAPL: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:08:42,659 - app.services.agents.tools - ERROR - ป๑ศกKฯ฿สพสงฐ USStock:AAPL: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:08:42,659 - app.services.agents.tools - INFO - ึดะะะยฮลหัห๗: "AAPL" AAPL stock news +2025-12-26 00:08:42,659 - app.services.agents.tools - INFO - ึดะะะยฮลหัห๗: "AAPL" AAPL stock news +2025-12-26 00:08:42,659 - app.services.search - WARNING - Google Search API ฮดลไึร (api_key ป๒ cx ศฑสง) +2025-12-26 00:08:42,659 - app.services.search - WARNING - Google Search API ฮดลไึร (api_key ป๒ cx ศฑสง) +2025-12-26 00:08:42,659 - app.services.agents.coordinator - INFO - ฝืถฮ1: ทึฮ๖สฆอลถำทึฮ๖ (ฒขะะึดะะ) +2025-12-26 00:08:42,659 - app.services.agents.coordinator - INFO - ฝืถฮ1: ทึฮ๖สฆอลถำทึฮ๖ (ฒขะะึดะะ) +2025-12-26 00:08:43,674 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:43,674 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:43,674 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:43,674 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:43,684 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:43,684 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:43,684 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:43,684 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:43,691 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:43,691 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:43,691 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:43,691 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:43,743 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:43,743 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:43,743 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:43,743 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:45,089 - app.services.agents.tools - ERROR - ป๑ศกKฯ฿สพสงฐ USStock:AAPL: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:08:45,089 - app.services.agents.tools - ERROR - ป๑ศกKฯ฿สพสงฐ USStock:AAPL: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:08:46,194 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:46,194 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:46,194 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:46,194 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:46,196 - app.services.agents.coordinator - INFO - ฝืถฮ2: ัะพฟฑ็ย (ฒขะะึดะะ) +2025-12-26 00:08:46,196 - app.services.agents.coordinator - INFO - ฝืถฮ2: ัะพฟฑ็ย (ฒขะะึดะะ) +2025-12-26 00:08:47,159 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:47,159 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:47,159 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:47,159 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:47,420 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:47,420 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:47,420 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:47,420 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:47,421 - app.services.agents.coordinator - INFO - ฝืถฮ3: ฝปาืิฑพ๖ฒ฿ +2025-12-26 00:08:47,421 - app.services.agents.coordinator - INFO - ฝืถฮ3: ฝปาืิฑพ๖ฒ฿ +2025-12-26 00:08:48,266 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:48,266 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:48,266 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:48,266 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:48,267 - app.services.agents.coordinator - INFO - ฝืถฮ4: ท็ฯีฑ็ย (ฒขะะึดะะ) +2025-12-26 00:08:48,267 - app.services.agents.coordinator - INFO - ฝืถฮ4: ท็ฯีฑ็ย (ฒขะะึดะะ) +2025-12-26 00:08:49,221 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:49,221 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:49,221 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:49,221 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:49,230 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:49,230 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:49,230 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:49,230 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:49,690 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:49,690 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:49,690 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:49,690 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:08:49,691 - app.services.agents.coordinator - WARNING - ผวยผืิถฏทดหผสงฐ: 'NoneType' object has no attribute 'get' +2025-12-26 00:08:49,691 - app.services.agents.coordinator - WARNING - ผวยผืิถฏทดหผสงฐ: 'NoneType' object has no attribute 'get' +2025-12-26 00:08:49,691 - app.services.agents.coordinator - INFO - ถเึวฤฬๅทึฮ๖อ๊ณษ: USStock:AAPL +2025-12-26 00:08:49,691 - app.services.agents.coordinator - INFO - ถเึวฤฬๅทึฮ๖อ๊ณษ: USStock:AAPL +2025-12-26 00:08:49,691 - app.services.agents.coordinator - INFO - ทตปุฝแน๛ืึถฮผ์ฒ้ - debate: True, trader_decision: True, risk_debate: True, final_decision: True +2025-12-26 00:08:49,691 - app.services.agents.coordinator - INFO - ทตปุฝแน๛ืึถฮผ์ฒ้ - debate: True, trader_decision: True, risk_debate: True, final_decision: True +2025-12-26 00:08:49,691 - app.services.analysis - INFO - ถเึวฤฬๅทึฮ๖ทตปุฝแน๛ - keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2025-12-26 00:08:49,691 - app.services.analysis - INFO - ถเึวฤฬๅทึฮ๖ทตปุฝแน๛ - keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2025-12-26 00:08:49,701 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:08:49] "POST /api/analysis/multiAnalysis HTTP/1.1" 200 - +2025-12-26 00:08:49,701 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:08:49] "POST /api/analysis/multiAnalysis HTTP/1.1" 200 - +2025-12-26 00:09:22,335 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:09:22] "GET /api/market/config?_t=1766678962329 HTTP/1.1" 200 - +2025-12-26 00:09:22,335 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:09:22] "GET /api/market/config?_t=1766678962329 HTTP/1.1" 200 - +2025-12-26 00:09:22,542 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:09:22] "GET /api/market/types?_t=1766678962343 HTTP/1.1" 200 - +2025-12-26 00:09:22,542 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:09:22] "GET /api/market/types?_t=1766678962343 HTTP/1.1" 200 - +2025-12-26 00:26:05,111 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:26:05] "GET /api/market/config HTTP/1.1" 200 - +2025-12-26 00:26:05,111 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:26:05] "GET /api/market/config HTTP/1.1" 200 - +2025-12-26 00:26:05,113 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:26:05] "GET /api/market/config HTTP/1.1" 200 - +2025-12-26 00:26:05,113 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:26:05] "GET /api/market/config HTTP/1.1" 200 - +2025-12-26 00:26:05,114 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:26:05] "GET /api/market/types HTTP/1.1" 200 - +2025-12-26 00:26:05,114 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:26:05] "GET /api/market/types HTTP/1.1" 200 - +2025-12-26 00:26:05,116 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:26:05] "GET /api/market/types HTTP/1.1" 200 - +2025-12-26 00:26:05,116 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:26:05] "GET /api/market/types HTTP/1.1" 200 - +2025-12-26 00:26:05,117 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:26:05] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 00:26:05,117 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:26:05] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 00:26:05,119 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:26:05] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 00:26:05,119 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:26:05] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 00:26:05,120 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:26:05] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 00:26:05,120 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:26:05] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 00:26:05,121 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:26:05] "POST /api/market/symbols/search HTTP/1.1" 200 - +2025-12-26 00:26:05,121 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:26:05] "POST /api/market/symbols/search HTTP/1.1" 200 - +2025-12-26 00:26:05,123 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:26:05] "POST /api/market/symbols/search HTTP/1.1" 200 - +2025-12-26 00:26:05,123 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:26:05] "POST /api/market/symbols/search HTTP/1.1" 200 - +2025-12-26 00:26:32,201 - app.utils.cache - WARNING - Redis connection failed, fallback to in-memory cache: Error 10061 connecting to localhost:6379. ำษำฺฤฟฑ๊ผฦหใป๚ปผซพพ๘ฃฌฮทจมฌฝำกฃ. +2025-12-26 00:26:32,240 - app.utils.encryption - WARNING - ฮดีาตฝผำรริฟฃฌษ๚ณษะยริฟฃจฝ๖ำรำฺฟชทขปทพณฃฉ +2025-12-26 00:26:32,240 - app.utils.encryption - WARNING - ษ๚ฒ๚ปทพณว๋ษ่ึรปทพณฑไมฟ ENCRYPTION_KEY ป๒ดดฝจ .encryption_key ฮฤผ +2025-12-26 00:26:32,240 - app.utils.encryption - INFO - ะยษ๚ณษตฤริฟฃจว๋ฑฃดๆตฝปทพณฑไมฟ ENCRYPTION_KEYฃฉ: xISiMxlNpnjeP8ZIQxfx4rh965IUmf+LxtaBlpCcMIM= +2025-12-26 00:26:32,261 - app - INFO - าัอจนปทพณฑไมฟ DISABLE_RESTORE_RUNNING_STRATEGIES นุฑีฦ๔ถฏสฑฒ฿ยิปึธด +2025-12-26 00:26:32,267 - app - INFO - าัอจนปทพณฑไมฟ DISABLE_RESTORE_RUNNING_STRATEGIES นุฑีฦ๔ถฏสฑฒ฿ยิปึธด +2025-12-26 00:26:32,267 - app - INFO - าัอจนปทพณฑไมฟ DISABLE_RESTORE_RUNNING_STRATEGIES นุฑีฦ๔ถฏสฑฒ฿ยิปึธด +2025-12-26 00:26:32,275 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-26 00:26:32,275 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-26 00:26:32,275 - werkzeug - INFO - Press CTRL+C to quit +2025-12-26 00:26:32,275 - werkzeug - INFO - Press CTRL+C to quit +2025-12-26 00:26:40,824 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:26:40] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 00:26:40,824 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:26:40] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 00:26:40,826 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:26:40] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 00:26:40,826 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:26:40] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 00:26:40,828 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:26:40] "POST /api/market/symbols/search HTTP/1.1" 200 - +2025-12-26 00:26:40,828 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:26:40] "POST /api/market/symbols/search HTTP/1.1" 200 - +2025-12-26 00:28:10,871 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:28:10] "GET /api/market/config?_t=1766680090854 HTTP/1.1" 200 - +2025-12-26 00:28:10,871 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:28:10] "GET /api/market/config?_t=1766680090854 HTTP/1.1" 200 - +2025-12-26 00:28:10,912 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:28:10] "GET /api/market/types?_t=1766680090904 HTTP/1.1" 200 - +2025-12-26 00:28:10,912 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:28:10] "GET /api/market/types?_t=1766680090904 HTTP/1.1" 200 - +2025-12-26 00:28:16,320 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:28:16] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 00:28:16,320 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:28:16] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 00:28:19,307 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:28:19] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 00:28:19,307 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:28:19] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 00:28:21,091 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:28:21] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 00:28:21,091 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:28:21] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 00:28:23,898 - app.utils.db - INFO - สพฟโฑํฝแนนณ๕สผปฏอ๊ณษ (SQLite) +2025-12-26 00:28:23,898 - app.utils.db - INFO - สพฟโฑํฝแนนณ๕สผปฏอ๊ณษ (SQLite) +2025-12-26 00:28:23,907 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:28:23] "POST /api/market/watchlist/add HTTP/1.1" 200 - +2025-12-26 00:28:23,907 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:28:23] "POST /api/market/watchlist/add HTTP/1.1" 200 - +2025-12-26 00:28:29,574 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:28:29] "GET /api/market/config?_t=1766680109252 HTTP/1.1" 200 - +2025-12-26 00:28:29,574 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:28:29] "GET /api/market/config?_t=1766680109252 HTTP/1.1" 200 - +2025-12-26 00:28:29,825 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:28:29] "GET /api/market/types?_t=1766680109579 HTTP/1.1" 200 - +2025-12-26 00:28:29,825 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:28:29] "GET /api/market/types?_t=1766680109579 HTTP/1.1" 200 - +2025-12-26 00:28:30,536 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:28:30] "GET /api/market/config?_t=1766680110529 HTTP/1.1" 200 - +2025-12-26 00:28:30,536 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:28:30] "GET /api/market/config?_t=1766680110529 HTTP/1.1" 200 - +2025-12-26 00:28:30,849 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:28:30] "GET /api/market/types?_t=1766680110541 HTTP/1.1" 200 - +2025-12-26 00:28:30,849 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:28:30] "GET /api/market/types?_t=1766680110541 HTTP/1.1" 200 - +2025-12-26 00:28:31,161 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:28:31] "GET /api/market/config?_t=1766680111154 HTTP/1.1" 200 - +2025-12-26 00:28:31,161 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:28:31] "GET /api/market/config?_t=1766680111154 HTTP/1.1" 200 - +2025-12-26 00:28:31,473 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:28:31] "GET /api/market/types?_t=1766680111165 HTTP/1.1" 200 - +2025-12-26 00:28:31,473 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:28:31] "GET /api/market/types?_t=1766680111165 HTTP/1.1" 200 - +2025-12-26 00:29:29,730 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:29:29] "GET /api/user/info HTTP/1.1" 200 - +2025-12-26 00:29:29,730 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:29:29] "GET /api/user/info HTTP/1.1" 200 - +2025-12-26 00:29:29,731 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:29:29] "GET /api/user/info HTTP/1.1" 200 - +2025-12-26 00:29:29,731 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:29:29] "GET /api/user/info HTTP/1.1" 200 - +2025-12-26 00:30:30,329 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:30:30] "GET /api/market/config?_t=1766680230317 HTTP/1.1" 200 - +2025-12-26 00:30:30,329 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:30:30] "GET /api/market/config?_t=1766680230317 HTTP/1.1" 200 - +2025-12-26 00:30:30,338 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:30:30] "GET /api/market/config?_t=1766680230329 HTTP/1.1" 200 - +2025-12-26 00:30:30,338 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:30:30] "GET /api/market/config?_t=1766680230329 HTTP/1.1" 200 - +2025-12-26 00:30:30,458 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:30:30] "GET /api/market/types?_t=1766680230340 HTTP/1.1" 200 - +2025-12-26 00:30:30,458 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:30:30] "GET /api/market/types?_t=1766680230340 HTTP/1.1" 200 - +2025-12-26 00:30:30,462 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:30:30] "GET /api/market/types?_t=1766680230351 HTTP/1.1" 200 - +2025-12-26 00:30:30,462 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:30:30] "GET /api/market/types?_t=1766680230351 HTTP/1.1" 200 - +2025-12-26 00:31:17,778 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:31:17] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 00:31:17,778 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:31:17] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 00:31:53,665 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:31:53] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 00:31:53,665 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:31:53] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 00:31:56,397 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:31:56] "POST /api/market/symbols/search HTTP/1.1" 200 - +2025-12-26 00:31:56,397 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:31:56] "POST /api/market/symbols/search HTTP/1.1" 200 - +2025-12-26 00:32:43,954 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:32:43] "POST /api/market/symbols/search HTTP/1.1" 200 - +2025-12-26 00:32:43,954 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:32:43] "POST /api/market/symbols/search HTTP/1.1" 200 - +2025-12-26 00:33:01,014 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:33:01] "POST /api/market/watchlist/add HTTP/1.1" 200 - +2025-12-26 00:33:01,014 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:33:01] "POST /api/market/watchlist/add HTTP/1.1" 200 - +2025-12-26 00:33:01,254 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:33:01] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:33:01,254 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:33:01] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:33:03,480 - app.data_sources.cn_stock - WARNING - ถซทฝฒฦธปฮสพทตปุ +2025-12-26 00:33:03,480 - app.data_sources.cn_stock - WARNING - ถซทฝฒฦธปฮสพทตปุ +2025-12-26 00:33:03,481 - app.data_sources.cn_stock - WARNING - Aนษ AAPL สพป๑ศกสงฐ +2025-12-26 00:33:03,481 - app.data_sources.cn_stock - WARNING - Aนษ AAPL สพป๑ศกสงฐ +2025-12-26 00:33:05,201 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:33:05,201 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:33:05,201 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:33:05,201 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:33:05,201 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:33:05] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:33:05,201 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:33:05] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:33:32,104 - app.data_sources.cn_stock - WARNING - ถซทฝฒฦธปฮสพทตปุ +2025-12-26 00:33:32,104 - app.data_sources.cn_stock - WARNING - ถซทฝฒฦธปฮสพทตปุ +2025-12-26 00:33:32,105 - app.data_sources.cn_stock - WARNING - Aนษ AAPL สพป๑ศกสงฐ +2025-12-26 00:33:32,105 - app.data_sources.cn_stock - WARNING - Aนษ AAPL สพป๑ศกสงฐ +2025-12-26 00:33:33,353 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:33:33,353 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:33:33,353 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:33:33,353 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:33:33,353 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:33:33] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:33:33,353 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:33:33] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:34:01,278 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:34:01,278 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:34:01,278 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:34:01,278 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:34:28,801 - urllib3.connectionpool - WARNING - Retrying (Retry(total=2, connect=3, read=2, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Read timed out. (read timeout=15)")': /api/qt/stock/kline/get?secid=0.AAPL&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2025-12-26 00:34:28,801 - urllib3.connectionpool - WARNING - Retrying (Retry(total=2, connect=3, read=2, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Read timed out. (read timeout=15)")': /api/qt/stock/kline/get?secid=0.AAPL&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2025-12-26 00:34:30,620 - app.routes.market - ERROR - ล๚มฟป๑ศกืิักนษผธ๑สงฐ: 1 (of 2) futures unfinished +2025-12-26 00:34:30,620 - app.routes.market - ERROR - ล๚มฟป๑ศกืิักนษผธ๑สงฐ: 1 (of 2) futures unfinished +2025-12-26 00:34:30,622 - app.routes.market - ERROR - Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\quantdinger\backend_api_python\app\routes\market.py", line 339, in get_watchlist_prices + for future in as_completed(futures, timeout=30): + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\concurrent\futures\_base.py", line 239, in as_completed + raise TimeoutError( + '%d (of %d) futures unfinished' % ( + len(pending), total_futures)) +TimeoutError: 1 (of 2) futures unfinished + +2025-12-26 00:34:30,622 - app.routes.market - ERROR - Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\quantdinger\backend_api_python\app\routes\market.py", line 339, in get_watchlist_prices + for future in as_completed(futures, timeout=30): + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\concurrent\futures\_base.py", line 239, in as_completed + raise TimeoutError( + '%d (of %d) futures unfinished' % ( + len(pending), total_futures)) +TimeoutError: 1 (of 2) futures unfinished + +2025-12-26 00:34:30,623 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:30] "POST /api/market/watchlist/prices HTTP/1.1" 500 - +2025-12-26 00:34:30,623 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:30] "POST /api/market/watchlist/prices HTTP/1.1" 500 - +2025-12-26 00:34:30,625 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:30] "GET /api/market/config?_t=1766680445818 HTTP/1.1" 200 - +2025-12-26 00:34:30,625 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:30] "GET /api/market/config?_t=1766680445818 HTTP/1.1" 200 - +2025-12-26 00:34:30,628 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:30] "GET /api/market/config?_t=1766680446134 HTTP/1.1" 200 - +2025-12-26 00:34:30,628 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:30] "GET /api/market/config?_t=1766680446134 HTTP/1.1" 200 - +2025-12-26 00:34:30,636 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:30] "GET /api/market/config?_t=1766680461425 HTTP/1.1" 200 - +2025-12-26 00:34:30,636 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:30] "GET /api/market/config?_t=1766680461425 HTTP/1.1" 200 - +2025-12-26 00:34:30,651 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:30] "GET /api/market/types?_t=1766680470642 HTTP/1.1" 200 - +2025-12-26 00:34:30,651 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:30] "GET /api/market/types?_t=1766680470642 HTTP/1.1" 200 - +2025-12-26 00:34:30,956 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:30] "GET /api/market/types?_t=1766680470633 HTTP/1.1" 200 - +2025-12-26 00:34:30,956 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:30] "GET /api/market/types?_t=1766680470633 HTTP/1.1" 200 - +2025-12-26 00:34:30,958 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:30] "GET /api/market/types?_t=1766680470645 HTTP/1.1" 200 - +2025-12-26 00:34:30,958 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:30] "GET /api/market/types?_t=1766680470645 HTTP/1.1" 200 - +2025-12-26 00:34:32,337 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:32] "GET /api/market/config?_t=1766680472331 HTTP/1.1" 200 - +2025-12-26 00:34:32,337 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:32] "GET /api/market/config?_t=1766680472331 HTTP/1.1" 200 - +2025-12-26 00:34:32,360 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:32] "GET /api/market/types?_t=1766680472355 HTTP/1.1" 200 - +2025-12-26 00:34:32,360 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:32] "GET /api/market/types?_t=1766680472355 HTTP/1.1" 200 - +2025-12-26 00:34:34,763 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:34] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 00:34:34,763 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:34] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 00:34:36,977 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:36] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 00:34:36,977 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:36] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 00:34:38,974 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:38] "POST /api/market/watchlist/add HTTP/1.1" 200 - +2025-12-26 00:34:38,974 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:38] "POST /api/market/watchlist/add HTTP/1.1" 200 - +2025-12-26 00:34:39,321 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:39] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:34:39,321 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:39] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:34:40,693 - urllib3.connectionpool - WARNING - Retrying (Retry(total=1, connect=3, read=2, redirect=None, status=None)) after connection broken by 'SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1020)')': /api/qt/stock/kline/get?secid=0.AAPL&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2025-12-26 00:34:40,693 - urllib3.connectionpool - WARNING - Retrying (Retry(total=1, connect=3, read=2, redirect=None, status=None)) after connection broken by 'SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1020)')': /api/qt/stock/kline/get?secid=0.AAPL&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2025-12-26 00:34:40,964 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:34:40,964 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:34:40,964 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:34:40,964 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:34:42,333 - app.data_sources.cn_stock - WARNING - ถซทฝฒฦธปฮสพทตปุ +2025-12-26 00:34:42,333 - app.data_sources.cn_stock - WARNING - ถซทฝฒฦธปฮสพทตปุ +2025-12-26 00:34:42,333 - app.data_sources.cn_stock - WARNING - Aนษ AAPL สพป๑ศกสงฐ +2025-12-26 00:34:42,333 - app.data_sources.cn_stock - WARNING - Aนษ AAPL สพป๑ศกสงฐ +2025-12-26 00:34:54,948 - urllib3.connectionpool - WARNING - Retrying (Retry(total=2, connect=3, read=2, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Read timed out. (read timeout=15)")': /api/qt/stock/kline/get?secid=0.AAPL&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2025-12-26 00:34:54,948 - urllib3.connectionpool - WARNING - Retrying (Retry(total=2, connect=3, read=2, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Read timed out. (read timeout=15)")': /api/qt/stock/kline/get?secid=0.AAPL&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2025-12-26 00:34:56,387 - app.data_sources.cn_stock - WARNING - ถซทฝฒฦธปฮสพทตปุ +2025-12-26 00:34:56,387 - app.data_sources.cn_stock - WARNING - ถซทฝฒฦธปฮสพทตปุ +2025-12-26 00:34:56,387 - app.data_sources.cn_stock - WARNING - Aนษ AAPL สพป๑ศกสงฐ +2025-12-26 00:34:56,387 - app.data_sources.cn_stock - WARNING - Aนษ AAPL สพป๑ศกสงฐ +2025-12-26 00:34:56,388 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:56] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:34:56,388 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:56] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:34:56,399 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:56] "POST /api/market/watchlist/remove HTTP/1.1" 200 - +2025-12-26 00:34:56,399 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:56] "POST /api/market/watchlist/remove HTTP/1.1" 200 - +2025-12-26 00:34:56,404 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:56] "POST /api/market/watchlist/remove HTTP/1.1" 200 - +2025-12-26 00:34:56,404 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:56] "POST /api/market/watchlist/remove HTTP/1.1" 200 - +2025-12-26 00:34:56,407 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:56] "POST /api/market/watchlist/remove HTTP/1.1" 200 - +2025-12-26 00:34:56,407 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:56] "POST /api/market/watchlist/remove HTTP/1.1" 200 - +2025-12-26 00:34:56,410 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:56] "POST /api/market/watchlist/remove HTTP/1.1" 200 - +2025-12-26 00:34:56,410 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:56] "POST /api/market/watchlist/remove HTTP/1.1" 200 - +2025-12-26 00:34:56,721 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:56] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:34:56,721 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:56] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:34:56,725 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:56] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:34:56,725 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:56] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:34:56,729 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:56] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:34:56,729 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:56] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:34:56,737 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:56] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:34:56,737 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:34:56] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:35:00,122 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:35:00] "GET /api/market/config?_t=1766680500116 HTTP/1.1" 200 - +2025-12-26 00:35:00,122 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:35:00] "GET /api/market/config?_t=1766680500116 HTTP/1.1" 200 - +2025-12-26 00:35:00,143 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:35:00] "GET /api/market/types?_t=1766680500138 HTTP/1.1" 200 - +2025-12-26 00:35:00,143 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:35:00] "GET /api/market/types?_t=1766680500138 HTTP/1.1" 200 - +2025-12-26 00:35:02,699 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:35:02] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 00:35:02,699 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:35:02] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 00:35:05,309 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:35:05] "POST /api/market/watchlist/add HTTP/1.1" 200 - +2025-12-26 00:35:05,309 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:35:05] "POST /api/market/watchlist/add HTTP/1.1" 200 - +2025-12-26 00:35:05,650 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:35:05] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:35:05,650 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:35:05] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:35:08,974 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:35:08] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:35:08,974 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:35:08] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:35:14,524 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:35:14] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 00:35:14,524 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:35:14] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 00:35:21,014 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:35:21] "POST /api/market/watchlist/add HTTP/1.1" 200 - +2025-12-26 00:35:21,014 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:35:21] "POST /api/market/watchlist/add HTTP/1.1" 200 - +2025-12-26 00:35:21,274 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:35:21] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:35:21,274 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:35:21] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:35:24,385 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:35:24] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:35:24,385 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:35:24] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:35:29,223 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:35:29] "POST /api/market/watchlist/remove HTTP/1.1" 200 - +2025-12-26 00:35:29,223 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:35:29] "POST /api/market/watchlist/remove HTTP/1.1" 200 - +2025-12-26 00:35:29,549 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:35:29] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:35:29,549 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:35:29] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:35:29,792 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:35:29] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:35:29,792 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:35:29] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:35:30,102 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:35:30] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:35:30,102 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:35:30] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:36:00,416 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:36:00] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:36:00,416 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:36:00] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:36:22,372 - app.routes.analysis - INFO - Analyze request: AShare:000858, use_multi_agent=True, model=openai/gpt-4o +2025-12-26 00:36:22,372 - app.routes.analysis - INFO - Analyze request: AShare:000858, use_multi_agent=True, model=openai/gpt-4o +2025-12-26 00:36:22,940 - app.services.analysis - INFO - ถเึวฤฬๅผนนณ๕สผปฏณษนฆ +2025-12-26 00:36:22,940 - app.services.analysis - INFO - ถเึวฤฬๅผนนณ๕สผปฏณษนฆ +2025-12-26 00:36:22,940 - app.services.analysis - INFO - Starting analysis AShare:000858, language=en-US, mode=multi-agent +2025-12-26 00:36:22,940 - app.services.analysis - INFO - Starting analysis AShare:000858, language=en-US, mode=multi-agent +2025-12-26 00:36:22,940 - app.services.analysis - INFO - ฟชสผึดะะถเึวฤฬๅทึฮ๖: AShare:000858 +2025-12-26 00:36:22,940 - app.services.analysis - INFO - ฟชสผึดะะถเึวฤฬๅทึฮ๖: AShare:000858 +2025-12-26 00:36:22,940 - app.services.agents.coordinator - INFO - ฟชสผถเึวฤฬๅทึฮ๖: AShare:000858, ฤฃะอ: openai/gpt-4o +2025-12-26 00:36:22,940 - app.services.agents.coordinator - INFO - ฟชสผถเึวฤฬๅทึฮ๖: AShare:000858, ฤฃะอ: openai/gpt-4o +2025-12-26 00:36:25,272 - app.services.search - WARNING - Google Search API ฮดลไึร (api_key ป๒ cx ศฑสง) +2025-12-26 00:36:25,272 - app.services.search - WARNING - Google Search API ฮดลไึร (api_key ป๒ cx ศฑสง) +2025-12-26 00:36:27,675 - app.services.agents.tools - ERROR - ป๑ศกKฯ฿สพสงฐ AShare:000858: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:36:27,675 - app.services.agents.tools - ERROR - ป๑ศกKฯ฿สพสงฐ AShare:000858: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:36:27,676 - app.services.agents.tools - INFO - ึดะะะยฮลหัห๗: "ฮๅ มธ าบ" 000858 (ภ๛บร OR ภ๛ฟี OR ฒฦฑจ OR นซธๆ OR าตผจ) after:2024 +2025-12-26 00:36:27,676 - app.services.agents.tools - INFO - ึดะะะยฮลหัห๗: "ฮๅ มธ าบ" 000858 (ภ๛บร OR ภ๛ฟี OR ฒฦฑจ OR นซธๆ OR าตผจ) after:2024 +2025-12-26 00:36:27,676 - app.services.search - WARNING - Google Search API ฮดลไึร (api_key ป๒ cx ศฑสง) +2025-12-26 00:36:27,676 - app.services.search - WARNING - Google Search API ฮดลไึร (api_key ป๒ cx ศฑสง) +2025-12-26 00:36:27,676 - app.services.agents.coordinator - INFO - ฝืถฮ1: ทึฮ๖สฆอลถำทึฮ๖ (ฒขะะึดะะ) +2025-12-26 00:36:27,676 - app.services.agents.coordinator - INFO - ฝืถฮ1: ทึฮ๖สฆอลถำทึฮ๖ (ฒขะะึดะะ) +2025-12-26 00:36:28,789 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:28,789 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:28,789 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:28,789 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:28,790 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:28,790 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:28,791 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:28,791 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:29,040 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:29,040 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:29,040 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:29,040 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:29,145 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:29,145 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:29,146 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:29,146 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:30,289 - app.services.agents.tools - ERROR - ป๑ศกKฯ฿สพสงฐ AShare:000858: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:36:30,289 - app.services.agents.tools - ERROR - ป๑ศกKฯ฿สพสงฐ AShare:000858: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:36:31,159 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:31,159 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:31,159 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:31,159 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:31,161 - app.services.agents.coordinator - INFO - ฝืถฮ2: ัะพฟฑ็ย (ฒขะะึดะะ) +2025-12-26 00:36:31,161 - app.services.agents.coordinator - INFO - ฝืถฮ2: ัะพฟฑ็ย (ฒขะะึดะะ) +2025-12-26 00:36:32,151 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:32,151 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:32,152 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:32,152 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:32,157 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:32,157 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:32,157 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:32,157 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:32,158 - app.services.agents.coordinator - INFO - ฝืถฮ3: ฝปาืิฑพ๖ฒ฿ +2025-12-26 00:36:32,158 - app.services.agents.coordinator - INFO - ฝืถฮ3: ฝปาืิฑพ๖ฒ฿ +2025-12-26 00:36:33,025 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:33,025 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:33,025 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:33,025 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:33,026 - app.services.agents.coordinator - INFO - ฝืถฮ4: ท็ฯีฑ็ย (ฒขะะึดะะ) +2025-12-26 00:36:33,026 - app.services.agents.coordinator - INFO - ฝืถฮ4: ท็ฯีฑ็ย (ฒขะะึดะะ) +2025-12-26 00:36:34,071 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:34,071 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:34,072 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:34,072 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:34,092 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:34,092 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:34,092 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:34,092 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:34,299 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:34,299 - app.services.llm - ERROR - OpenRouter API HTTPดํฮ๓ (openai/gpt-4o): 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:34,300 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:34,300 - app.services.llm - ERROR - LLM ต๗ำรสงฐ: 401 Client Error: Unauthorized for url: https://openrouter.ai/api/v1/chat/completions +2025-12-26 00:36:34,310 - app.services.agents.reflection - INFO - าัผวยผทึฮ๖ำรำฺทดหผ: AShare:000858, ฝซิฺ 7 ฬ์บ๓ั้ึค +2025-12-26 00:36:34,310 - app.services.agents.reflection - INFO - าัผวยผทึฮ๖ำรำฺทดหผ: AShare:000858, ฝซิฺ 7 ฬ์บ๓ั้ึค +2025-12-26 00:36:34,310 - app.services.agents.coordinator - INFO - ถเึวฤฬๅทึฮ๖อ๊ณษ: AShare:000858 +2025-12-26 00:36:34,310 - app.services.agents.coordinator - INFO - ถเึวฤฬๅทึฮ๖อ๊ณษ: AShare:000858 +2025-12-26 00:36:34,310 - app.services.agents.coordinator - INFO - ทตปุฝแน๛ืึถฮผ์ฒ้ - debate: True, trader_decision: True, risk_debate: True, final_decision: True +2025-12-26 00:36:34,310 - app.services.agents.coordinator - INFO - ทตปุฝแน๛ืึถฮผ์ฒ้ - debate: True, trader_decision: True, risk_debate: True, final_decision: True +2025-12-26 00:36:34,310 - app.services.analysis - INFO - ถเึวฤฬๅทึฮ๖ทตปุฝแน๛ - keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2025-12-26 00:36:34,310 - app.services.analysis - INFO - ถเึวฤฬๅทึฮ๖ทตปุฝแน๛ - keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2025-12-26 00:36:34,319 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:36:34] "POST /api/analysis/multiAnalysis HTTP/1.1" 200 - +2025-12-26 00:36:34,319 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:36:34] "POST /api/analysis/multiAnalysis HTTP/1.1" 200 - +2025-12-26 00:36:34,324 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:36:34] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:36:34,324 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:36:34] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:37:00,414 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:37:00] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:37:00,414 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:37:00] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:37:30,107 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:37:30] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:37:30,107 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:37:30] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:38:00,406 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:38:00] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:38:00,406 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:38:00] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:38:30,102 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:38:30] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:38:30,102 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:38:30] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:39:00,410 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:39:00] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:39:00,410 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:39:00] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:39:14,366 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:39:14] "GET /api/market/config?_t=1766680754359 HTTP/1.1" 200 - +2025-12-26 00:39:14,366 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:39:14] "GET /api/market/config?_t=1766680754359 HTTP/1.1" 200 - +2025-12-26 00:39:14,630 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:39:14] "GET /api/market/types?_t=1766680754373 HTTP/1.1" 200 - +2025-12-26 00:39:14,630 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:39:14] "GET /api/market/types?_t=1766680754373 HTTP/1.1" 200 - +2025-12-26 00:39:14,688 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:39:14] "GET /api/market/config?_t=1766680754681 HTTP/1.1" 200 - +2025-12-26 00:39:14,688 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:39:14] "GET /api/market/config?_t=1766680754681 HTTP/1.1" 200 - +2025-12-26 00:39:14,862 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:39:14] "GET /api/market/types?_t=1766680754699 HTTP/1.1" 200 - +2025-12-26 00:39:14,862 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:39:14] "GET /api/market/types?_t=1766680754699 HTTP/1.1" 200 - +2025-12-26 00:40:39,684 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:40:39] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:40:39,684 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:40:39] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:41:03,312 - app.utils.cache - WARNING - Redis connection failed, fallback to in-memory cache: Error 10061 connecting to localhost:6379. ำษำฺฤฟฑ๊ผฦหใป๚ปผซพพ๘ฃฌฮทจมฌฝำกฃ. +2025-12-26 00:41:03,353 - app.utils.encryption - WARNING - ฮดีาตฝผำรริฟฃฌษ๚ณษะยริฟฃจฝ๖ำรำฺฟชทขปทพณฃฉ +2025-12-26 00:41:03,353 - app.utils.encryption - WARNING - ษ๚ฒ๚ปทพณว๋ษ่ึรปทพณฑไมฟ ENCRYPTION_KEY ป๒ดดฝจ .encryption_key ฮฤผ +2025-12-26 00:41:03,353 - app.utils.encryption - INFO - ะยษ๚ณษตฤริฟฃจว๋ฑฃดๆตฝปทพณฑไมฟ ENCRYPTION_KEYฃฉ: jhnrq9ObzJPtJecASoG/kbQlZvs1MXnT3AIpmRB6QEE= +2025-12-26 00:41:03,378 - app - INFO - าัอจนปทพณฑไมฟ DISABLE_RESTORE_RUNNING_STRATEGIES นุฑีฦ๔ถฏสฑฒ฿ยิปึธด +2025-12-26 00:41:03,385 - app - INFO - าัอจนปทพณฑไมฟ DISABLE_RESTORE_RUNNING_STRATEGIES นุฑีฦ๔ถฏสฑฒ฿ยิปึธด +2025-12-26 00:41:03,385 - app - INFO - าัอจนปทพณฑไมฟ DISABLE_RESTORE_RUNNING_STRATEGIES นุฑีฦ๔ถฏสฑฒ฿ยิปึธด +2025-12-26 00:41:03,394 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-26 00:41:03,394 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-26 00:41:03,394 - werkzeug - INFO - Press CTRL+C to quit +2025-12-26 00:41:03,394 - werkzeug - INFO - Press CTRL+C to quit +2025-12-26 00:41:06,974 - app.utils.db - INFO - สพฟโฑํฝแนนณ๕สผปฏอ๊ณษ (SQLite) +2025-12-26 00:41:06,974 - app.utils.db - INFO - สพฟโฑํฝแนนณ๕สผปฏอ๊ณษ (SQLite) +2025-12-26 00:41:06,985 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:41:06] "POST /api/market/watchlist/add HTTP/1.1" 200 - +2025-12-26 00:41:06,985 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:41:06] "POST /api/market/watchlist/add HTTP/1.1" 200 - +2025-12-26 00:41:06,989 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:41:06] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:41:06,989 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:41:06] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:42:26,562 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:42:26] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:42:26,562 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:42:26] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:42:49,419 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:42:49] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:42:49,419 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:42:49] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:44:36,451 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:44:36] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:44:36,451 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:44:36] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:44:36,474 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:44:36] "GET /api/market/config?_t=1766681076464 HTTP/1.1" 200 - +2025-12-26 00:44:36,474 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:44:36] "GET /api/market/config?_t=1766681076464 HTTP/1.1" 200 - +2025-12-26 00:44:36,636 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:44:36] "GET /api/market/config?_t=1766681076441 HTTP/1.1" 200 - +2025-12-26 00:44:36,636 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:44:36] "GET /api/market/config?_t=1766681076441 HTTP/1.1" 200 - +2025-12-26 00:44:36,642 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:44:36] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:44:36,642 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:44:36] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:44:41,035 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:44:41,035 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:44:41,035 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:44:41,035 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:44:41,036 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:44:41] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:44:41,036 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:44:41] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:44:41,040 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:44:41] "GET /api/market/types?_t=1766681076480 HTTP/1.1" 200 - +2025-12-26 00:44:41,040 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:44:41] "GET /api/market/types?_t=1766681076480 HTTP/1.1" 200 - +2025-12-26 00:44:41,042 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:44:41] "GET /api/market/types?_t=1766681076644 HTTP/1.1" 200 - +2025-12-26 00:44:41,042 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:44:41] "GET /api/market/types?_t=1766681076644 HTTP/1.1" 200 - +2025-12-26 00:44:43,112 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:44:43,112 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:44:43,112 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:44:43,112 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:44:43,112 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:44:43] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:44:43,112 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:44:43] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:45:07,387 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:45:07,387 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:45:07,387 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:45:07,387 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:45:07,388 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:45:07] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:45:07,388 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:45:07] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:45:08,266 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:45:08,266 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:45:08,266 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:45:08,266 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:45:08,267 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:45:08] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:45:08,267 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:45:08] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:45:32,230 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:45:32] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:45:32,230 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:45:32] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:45:37,395 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:45:37,395 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:45:37,395 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:45:37,395 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:45:37,396 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:45:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:45:37,396 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:45:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:45:38,137 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:45:38,137 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:45:38,137 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:45:38,137 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:45:38,138 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:45:38] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:45:38,138 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:45:38] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:45:57,477 - app.utils.cache - WARNING - Redis connection failed, fallback to in-memory cache: Error 10061 connecting to localhost:6379. ำษำฺฤฟฑ๊ผฦหใป๚ปผซพพ๘ฃฌฮทจมฌฝำกฃ. +2025-12-26 00:45:57,511 - app.utils.encryption - WARNING - ฮดีาตฝผำรริฟฃฌษ๚ณษะยริฟฃจฝ๖ำรำฺฟชทขปทพณฃฉ +2025-12-26 00:45:57,511 - app.utils.encryption - WARNING - ษ๚ฒ๚ปทพณว๋ษ่ึรปทพณฑไมฟ ENCRYPTION_KEY ป๒ดดฝจ .encryption_key ฮฤผ +2025-12-26 00:45:57,511 - app.utils.encryption - INFO - ะยษ๚ณษตฤริฟฃจว๋ฑฃดๆตฝปทพณฑไมฟ ENCRYPTION_KEYฃฉ: daKMxHBUcHGNtKJxJYXdtXENH0gur24a1oBHM91DvYo= +2025-12-26 00:45:57,532 - app - INFO - าัอจนปทพณฑไมฟ DISABLE_RESTORE_RUNNING_STRATEGIES นุฑีฦ๔ถฏสฑฒ฿ยิปึธด +2025-12-26 00:45:57,541 - app - INFO - าัอจนปทพณฑไมฟ DISABLE_RESTORE_RUNNING_STRATEGIES นุฑีฦ๔ถฏสฑฒ฿ยิปึธด +2025-12-26 00:45:57,541 - app - INFO - าัอจนปทพณฑไมฟ DISABLE_RESTORE_RUNNING_STRATEGIES นุฑีฦ๔ถฏสฑฒ฿ยิปึธด +2025-12-26 00:45:57,559 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-26 00:45:57,559 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-26 00:45:57,559 - werkzeug - INFO - Press CTRL+C to quit +2025-12-26 00:45:57,559 - werkzeug - INFO - Press CTRL+C to quit +2025-12-26 00:46:03,746 - app.utils.db - INFO - สพฟโฑํฝแนนณ๕สผปฏอ๊ณษ (SQLite) +2025-12-26 00:46:03,746 - app.utils.db - INFO - สพฟโฑํฝแนนณ๕สผปฏอ๊ณษ (SQLite) +2025-12-26 00:46:03,756 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:46:03] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:46:03,756 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:46:03] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:46:10,866 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:46:10,866 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:46:10,866 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:46:10,866 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:46:10,867 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:46:10] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:46:10,867 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:46:10] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:46:13,257 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:46:13,257 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:46:13,257 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:46:13,257 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:46:13,258 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:46:13] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:46:13,258 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:46:13] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:46:37,387 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:46:37,387 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:46:37,387 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:46:37,387 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:46:37,388 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:46:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:46:37,388 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:46:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:46:38,274 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:46:38,274 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:46:38,275 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:46:38,275 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:46:38,275 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:46:38] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:46:38,275 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:46:38] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:46:45,938 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:46:45] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:46:45,938 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:46:45] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:47:07,615 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:47:07,615 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:47:07,615 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:47:07,615 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:47:07,616 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:47:07] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:47:07,616 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:47:07] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:47:08,510 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:47:08,510 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:47:08,510 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:47:08,510 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:47:08,511 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:47:08] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:47:08,511 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:47:08] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:47:37,343 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:47:37,343 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:47:37,343 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:47:37,343 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:47:37,344 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:47:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:47:37,344 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:47:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:47:38,230 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:47:38,230 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:47:38,230 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:47:38,230 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:47:38,231 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:47:38] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:47:38,231 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:47:38] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:48:07,552 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:48:07,552 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:48:07,552 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:48:07,552 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:48:07,552 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:48:07] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:48:07,552 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:48:07] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:48:08,325 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:48:08,325 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:48:08,325 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:48:08,325 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:48:08,326 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:48:08] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:48:08,326 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:48:08] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:48:19,989 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:48:19] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:48:19,989 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:48:19] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:48:19,995 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:48:19] "GET /api/market/config?_t=1766681299981 HTTP/1.1" 200 - +2025-12-26 00:48:19,995 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:48:19] "GET /api/market/config?_t=1766681299981 HTTP/1.1" 200 - +2025-12-26 00:48:21,117 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:48:21,117 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:48:21,117 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:48:21,117 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:48:21,118 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:48:21] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:48:21,118 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:48:21] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:48:21,120 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:48:21] "GET /api/market/types?_t=1766681300019 HTTP/1.1" 200 - +2025-12-26 00:48:21,120 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:48:21] "GET /api/market/types?_t=1766681300019 HTTP/1.1" 200 - +2025-12-26 00:48:37,283 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:48:37,283 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:48:37,283 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:48:37,283 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:48:37,283 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:48:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:48:37,283 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:48:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:48:48,852 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:48:48] "GET /api/market/config?_t=1766681328844 HTTP/1.1" 200 - +2025-12-26 00:48:48,852 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:48:48] "GET /api/market/config?_t=1766681328844 HTTP/1.1" 200 - +2025-12-26 00:48:49,107 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:48:49] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:48:49,107 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:48:49] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:48:49,152 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:48:49] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:48:49,152 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:48:49] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:48:49,170 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:48:49] "GET /api/market/types?_t=1766681328858 HTTP/1.1" 200 - +2025-12-26 00:48:49,170 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:48:49] "GET /api/market/types?_t=1766681328858 HTTP/1.1" 200 - +2025-12-26 00:48:49,941 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:48:49,941 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:48:49,942 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:48:49,942 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:48:49,942 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:48:49] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:48:49,942 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:48:49] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:48:49,946 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:48:49] "GET /api/market/config?_t=1766681329145 HTTP/1.1" 200 - +2025-12-26 00:48:49,946 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:48:49] "GET /api/market/config?_t=1766681329145 HTTP/1.1" 200 - +2025-12-26 00:48:50,682 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:48:50,682 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:48:50,682 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:48:50,682 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:48:50,682 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:48:50] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:48:50,682 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:48:50] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:48:50,685 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:48:50] "GET /api/market/types?_t=1766681329957 HTTP/1.1" 200 - +2025-12-26 00:48:50,685 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:48:50] "GET /api/market/types?_t=1766681329957 HTTP/1.1" 200 - +2025-12-26 00:49:20,016 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:49:20,016 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:49:20,016 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:49:20,016 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:49:20,017 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:49:20] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:49:20,017 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:49:20] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:49:20,736 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:49:20,736 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:49:20,736 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:49:20,736 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:49:20,737 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:49:20] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:49:20,737 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:49:20] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:49:50,268 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:49:50,268 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:49:50,268 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:49:50,268 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:49:50,268 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:49:50] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:49:50,268 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:49:50] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:49:51,102 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:49:51,102 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:49:51,102 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:49:51,102 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:49:51,103 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:49:51] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:49:51,103 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:49:51] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:50:15,338 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:50:15] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 00:50:15,338 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:50:15] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 00:50:17,868 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:50:17] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 00:50:17,868 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:50:17] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 00:50:19,814 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:50:19,814 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:50:19,815 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:50:19,815 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:50:19,815 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:50:19] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:50:19,815 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:50:19] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:50:20,766 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:50:20,766 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:50:20,767 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:50:20,767 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:50:20,767 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:50:20] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:50:20,767 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:50:20] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:50:23,789 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:50:23] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 00:50:23,789 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:50:23] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 00:50:35,081 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:50:35] "POST /api/market/symbols/search HTTP/1.1" 200 - +2025-12-26 00:50:35,081 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:50:35] "POST /api/market/symbols/search HTTP/1.1" 200 - +2025-12-26 00:50:36,887 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:50:36] "POST /api/market/symbols/search HTTP/1.1" 200 - +2025-12-26 00:50:36,887 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:50:36] "POST /api/market/symbols/search HTTP/1.1" 200 - +2025-12-26 00:50:44,064 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:50:44] "POST /api/market/watchlist/add HTTP/1.1" 200 - +2025-12-26 00:50:44,064 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:50:44] "POST /api/market/watchlist/add HTTP/1.1" 200 - +2025-12-26 00:50:44,398 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:50:44] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:50:44,398 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:50:44] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:50:46,708 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:50:46,708 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:50:46,708 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:50:46,708 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:50:47,825 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:50:47] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:50:47,825 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:50:47] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:50:49,724 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:50:49,724 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:50:49,725 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:50:49,725 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:50:49,725 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:50:49] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:50:49,725 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:50:49] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:50:51,978 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:50:51,978 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:50:51,979 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:50:51,979 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:50:51,980 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:50:51] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:50:51,980 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:50:51] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:51:20,007 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:51:20,007 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:51:20,007 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:51:20,007 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:51:20,008 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:51:20] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:51:20,008 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:51:20] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:51:20,758 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:51:20,758 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:51:20,758 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:51:20,758 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:51:20,758 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:51:20] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:51:20,758 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:51:20] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:51:49,855 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:51:49,855 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:51:49,855 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:51:49,855 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:51:49,855 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:51:49] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:51:49,855 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:51:49] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:51:51,351 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:51:51,351 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:51:51,351 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:51:51,351 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:51:52,700 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:51:52] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:51:52,700 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:51:52] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:52:20,003 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:52:20,003 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:52:20,004 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:52:20,004 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:52:20,004 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:52:20] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:52:20,004 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:52:20] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:52:21,236 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:52:21,236 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:52:21,236 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:52:21,236 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:52:21,237 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:52:21] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:52:21,237 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:52:21] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:52:49,680 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:52:49,680 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:52:49,680 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:52:49,680 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:52:49,681 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:52:49] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:52:49,681 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:52:49] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:52:50,476 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:52:50,476 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:52:50,476 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:52:50,476 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:52:50,476 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:52:50] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:52:50,476 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:52:50] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:53:20,381 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:53:20,381 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:53:20,381 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:53:20,381 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:53:20,383 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:53:20] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:53:20,383 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:53:20] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:53:21,230 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:53:21,230 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:53:21,231 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:53:21,231 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:53:21,231 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:53:21] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:53:21,231 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:53:21] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:53:49,867 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:53:49,867 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:53:49,867 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:53:49,867 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:53:49,868 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:53:49] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:53:49,868 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:53:49] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:53:50,651 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:53:50,651 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:53:50,651 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:53:50,651 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:53:50,652 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:53:50] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:53:50,652 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:53:50] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:54:20,504 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:54:20,504 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:54:20,504 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:54:20,504 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:54:20,505 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:54:20] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:54:20,505 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:54:20] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:54:21,370 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:54:21,370 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:54:21,371 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:54:21,371 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:54:21,371 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:54:21] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:54:21,371 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:54:21] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:54:49,713 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:54:49,713 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:54:49,713 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:54:49,713 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:54:49,713 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:54:49] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:54:49,713 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:54:49] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:54:50,924 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:54:50,924 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:54:50,925 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:54:50,925 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:54:50,925 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:54:50] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:54:50,925 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:54:50] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:55:21,069 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:55:21,069 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:55:21,070 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:55:21,070 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:55:21,070 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:55:21] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:55:21,070 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:55:21] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:55:22,521 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:55:22,521 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:55:22,521 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:55:22,521 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:55:22,522 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:55:22] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:55:22,522 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:55:22] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:55:50,766 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:55:50,766 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:55:50,766 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:55:50,766 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:55:52,065 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:55:52] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:55:52,065 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:55:52] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:55:53,097 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:55:53,097 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:55:53,098 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:55:53,098 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:55:53,098 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:55:53] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:55:53,098 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:55:53] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:56:20,015 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:56:20,015 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:56:20,016 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:56:20,016 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:56:20,016 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:56:20] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:56:20,016 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:56:20] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:56:21,141 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:56:21,141 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:56:21,141 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:56:21,141 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:56:21,142 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:56:21] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:56:21,142 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:56:21] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:56:49,727 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:56:49,727 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:56:49,728 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:56:49,728 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:56:49,728 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:56:49] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:56:49,728 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:56:49] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:56:50,928 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:56:50,928 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:56:50,928 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:56:50,928 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:56:50,929 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:56:50] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:56:50,929 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:56:50] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:57:19,989 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:57:19,989 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:57:19,989 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:57:19,989 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:57:19,990 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:57:19] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:57:19,990 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:57:19] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:57:22,001 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:57:22,001 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:57:22,001 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:57:22,001 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:57:22,002 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:57:22] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:57:22,002 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:57:22] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:57:49,717 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:57:49,717 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:57:49,717 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:57:49,717 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:57:51,605 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:57:51] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:57:51,605 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:57:51] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:57:52,699 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:57:52,699 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:57:52,699 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:57:52,699 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:57:52,700 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:57:52] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:57:52,700 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:57:52] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:58:20,599 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:58:20,599 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:58:20,600 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:58:20,600 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:58:20,600 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:58:20] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:58:20,600 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:58:20] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:58:21,482 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:58:21,482 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:58:21,483 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:58:21,483 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:58:21,483 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:58:21] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:58:21,483 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:58:21] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:58:52,271 - app.utils.cache - WARNING - Redis connection failed, fallback to in-memory cache: Error 10061 connecting to localhost:6379. ำษำฺฤฟฑ๊ผฦหใป๚ปผซพพ๘ฃฌฮทจมฌฝำกฃ. +2025-12-26 00:58:52,308 - app.utils.encryption - WARNING - ฮดีาตฝผำรริฟฃฌษ๚ณษะยริฟฃจฝ๖ำรำฺฟชทขปทพณฃฉ +2025-12-26 00:58:52,308 - app.utils.encryption - WARNING - ษ๚ฒ๚ปทพณว๋ษ่ึรปทพณฑไมฟ ENCRYPTION_KEY ป๒ดดฝจ .encryption_key ฮฤผ +2025-12-26 00:58:52,308 - app.utils.encryption - INFO - ะยษ๚ณษตฤริฟฃจว๋ฑฃดๆตฝปทพณฑไมฟ ENCRYPTION_KEYฃฉ: nDjnOvYNw6Eay+oz8hp7RSC61eekHl0AjnaU4rIauj0= +2025-12-26 00:58:52,334 - app - INFO - าัอจนปทพณฑไมฟ DISABLE_RESTORE_RUNNING_STRATEGIES นุฑีฦ๔ถฏสฑฒ฿ยิปึธด +2025-12-26 00:58:52,340 - app - INFO - าัอจนปทพณฑไมฟ DISABLE_RESTORE_RUNNING_STRATEGIES นุฑีฦ๔ถฏสฑฒ฿ยิปึธด +2025-12-26 00:58:52,340 - app - INFO - าัอจนปทพณฑไมฟ DISABLE_RESTORE_RUNNING_STRATEGIES นุฑีฦ๔ถฏสฑฒ฿ยิปึธด +2025-12-26 00:58:52,353 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-26 00:58:52,353 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-26 00:58:52,353 - werkzeug - INFO - Press CTRL+C to quit +2025-12-26 00:58:52,353 - werkzeug - INFO - Press CTRL+C to quit +2025-12-26 00:59:22,167 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:59:22,167 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:59:22,168 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:59:22,168 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:59:22,168 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:59:22] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:59:22,168 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:59:22] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:59:24,976 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:59:24,976 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:59:24,977 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:59:24,977 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:59:24,977 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:59:24] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:59:24,977 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:59:24] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:59:30,614 - app.utils.db - INFO - สพฟโฑํฝแนนณ๕สผปฏอ๊ณษ (SQLite) +2025-12-26 00:59:30,614 - app.utils.db - INFO - สพฟโฑํฝแนนณ๕สผปฏอ๊ณษ (SQLite) +2025-12-26 00:59:31,285 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:59:31] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:59:31,285 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:59:31] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 00:59:31,293 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:59:31] "GET /api/market/config?_t=1766681970606 HTTP/1.1" 200 - +2025-12-26 00:59:31,293 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:59:31] "GET /api/market/config?_t=1766681970606 HTTP/1.1" 200 - +2025-12-26 00:59:32,942 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:59:32,942 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:59:32,942 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:59:32,942 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:59:32,943 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:59:32] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:59:32,943 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:59:32] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:59:32,946 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:59:32] "GET /api/market/types?_t=1766681971310 HTTP/1.1" 200 - +2025-12-26 00:59:32,946 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:59:32] "GET /api/market/types?_t=1766681971310 HTTP/1.1" 200 - +2025-12-26 00:59:50,878 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:59:50,878 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 00:59:50,879 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:59:50,879 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 00:59:50,880 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:59:50] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 00:59:50,880 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 00:59:50] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:00:01,348 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:00:01,348 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:00:01,349 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:00:01,349 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:00:01,349 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:00:01] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:00:01,349 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:00:01] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:00:20,943 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:00:20,943 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:00:20,943 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:00:20,943 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:00:20,944 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:00:20] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:00:20,944 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:00:20] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:00:31,578 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:00:31,578 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:00:31,578 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:00:31,578 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:00:31,578 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:00:31] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:00:31,578 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:00:31] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:01:01,421 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:01:01,421 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:01:01,421 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:01:01,421 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:01:01,422 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:01:01] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:01:01,422 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:01:01] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:01:32,559 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:01:32,559 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:01:32,559 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:01:32,559 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:01:32,559 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:01:32] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:01:32,559 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:01:32] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:01:39,247 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:01:39,247 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:01:39,247 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:01:39,247 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:01:39,247 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:01:39] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:01:39,247 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:01:39] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:02:02,473 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:02:02,473 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:02:02,473 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:02:02,473 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:02:02,474 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:02:02] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:02:02,474 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:02:02] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:02:32,608 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:02:32,608 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:02:32,608 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:02:32,608 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:02:32,609 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:02:32] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:02:32,609 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:02:32] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:02:38,244 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:02:38,244 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:02:38,245 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:02:38,245 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:02:38,245 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:02:38] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:02:38,245 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:02:38] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:03:38,598 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:03:38,598 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:03:38,599 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:03:38,599 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:03:38,599 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:03:38] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:03:38,599 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:03:38] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:03:39,387 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:03:39,387 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:03:39,387 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:03:39,387 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:03:39,388 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:03:39] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:03:39,388 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:03:39] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:04:38,309 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:04:38,309 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:04:38,309 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:04:38,309 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:04:38,310 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:04:38] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:04:38,310 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:04:38] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:04:39,483 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:04:39,483 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:04:39,484 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:04:39,484 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:04:41,051 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:04:41] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:04:41,051 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:04:41] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:05:39,040 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:05:39,040 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:05:39,040 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:05:39,040 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:05:40,954 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:05:40] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:05:40,954 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:05:40] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:05:42,394 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:05:42,394 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:05:42,394 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:05:42,394 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:05:42,394 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:05:42] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:05:42,394 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:05:42] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:06:38,318 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:06:38,318 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:06:38,318 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:06:38,318 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:06:38,319 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:06:38] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:06:38,319 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:06:38] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:06:40,180 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:06:40,180 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:06:40,180 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:06:40,180 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:06:40,181 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:06:40] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:06:40,181 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:06:40] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:07:39,250 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:07:39,250 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:07:39,250 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:07:39,250 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:07:39,251 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:07:39] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:07:39,251 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:07:39] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:07:39,918 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:07:39,918 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:07:39,918 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:07:39,918 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:07:39,918 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:07:39] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:07:39,918 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:07:39] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:08:39,611 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:08:39,611 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:08:39,611 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:08:39,611 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:08:39,612 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:08:39] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:08:39,612 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:08:39] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:08:40,302 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:08:40,302 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:08:40,303 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:08:40,303 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:08:40,303 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:08:40] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:08:40,303 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:08:40] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:09:40,140 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:09:40,140 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:09:40,140 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:09:40,140 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:09:40,141 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:09:40] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:09:40,141 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:09:40] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:09:40,918 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:09:40,918 - app.data_sources.us_stock - WARNING - yfinance ป๑ศกสงฐ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:09:40,918 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:09:40,918 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ฮดป๑ศกตฝสพ +2025-12-26 01:09:40,919 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:09:40] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:09:40,919 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:09:40] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:10:52,708 - app - INFO - ๅทฒ้€š่ฟ‡็Žฏๅขƒๅ˜้‡ DISABLE_RESTORE_RUNNING_STRATEGIES ๅ…ณ้—ญๅฏๅŠจๆ—ถ็ญ–็•ฅๆขๅค +2025-12-26 01:10:52,714 - app - INFO - ๅทฒ้€š่ฟ‡็Žฏๅขƒๅ˜้‡ DISABLE_RESTORE_RUNNING_STRATEGIES ๅ…ณ้—ญๅฏๅŠจๆ—ถ็ญ–็•ฅๆขๅค +2025-12-26 01:10:52,714 - app - INFO - ๅทฒ้€š่ฟ‡็Žฏๅขƒๅ˜้‡ DISABLE_RESTORE_RUNNING_STRATEGIES ๅ…ณ้—ญๅฏๅŠจๆ—ถ็ญ–็•ฅๆขๅค +2025-12-26 01:10:52,729 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-26 01:10:52,729 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-26 01:10:52,729 - werkzeug - INFO - Press CTRL+C to quit +2025-12-26 01:10:52,729 - werkzeug - INFO - Press CTRL+C to quit +2025-12-26 01:11:40,265 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:11:40,265 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:11:40,265 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:11:40,265 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:11:40,909 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:11:40] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:11:40,909 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:11:40] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:11:42,586 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:11:42,586 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:11:42,587 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:11:42,587 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:11:43,921 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:11:43] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:11:43,921 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:11:43] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:12:42,889 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-26 01:12:42,902 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-26 01:12:42,902 - werkzeug - INFO - Press CTRL+C to quit +2025-12-26 01:13:09,645 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:13:09] "GET /api/market/config HTTP/1.1" 200 - +2025-12-26 01:13:09,649 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-26 01:13:09,650 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:13:09] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 01:13:40,259 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:13:40,259 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:13:40,761 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:13:40] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:13:41,623 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:13:41,623 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:13:41,623 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:13:41] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:14:15,170 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:14:15,170 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:14:15,171 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:14:15] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:14:16,457 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:14:16] "GET /api/market/config?_t=1766682856440 HTTP/1.1" 200 - +2025-12-26 01:14:16,461 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:14:16] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 01:14:16,485 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:14:16] "GET /api/market/types?_t=1766682856479 HTTP/1.1" 200 - +2025-12-26 01:14:19,224 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:14:19,224 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:14:19,225 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:14:19] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:14:38,343 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:14:38,343 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:14:38,343 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:14:38] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:14:47,397 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:14:47,397 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:14:47,397 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:14:47] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:15:17,734 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:15:17,734 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:15:17,734 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:15:17] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:15:38,685 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:15:38,686 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:15:38,686 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:15:38] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:15:48,337 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:15:48,338 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:15:48,338 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:15:48] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:16:17,798 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:16:17,798 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:16:17,798 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:16:17] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:16:38,378 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:16:38,378 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:16:38,378 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:16:38] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:16:47,436 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:16:47,436 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:16:47,436 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:16:47] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:17:17,657 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:17:17,658 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:17:17,658 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:17:17] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:17:38,674 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:17:38,674 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:17:38,674 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:17:38] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:18:39,179 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:18:39,179 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:18:39,180 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:18:39] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:18:40,076 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:18:40,076 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:18:40,076 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:18:40] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:19:38,660 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:19:38,661 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:19:40,393 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:19:40] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:19:42,425 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:19:42,425 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:19:42,425 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:19:42] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:20:38,331 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:20:38,331 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:20:38,331 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:20:38] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:20:39,837 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:20:39,837 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:20:39,837 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:20:39] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:21:38,512 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:21:38,512 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:21:38,512 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:21:38] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:21:39,513 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:21:39,513 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:21:39,513 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:21:39] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:22:38,464 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:22:38,464 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:22:38,464 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:22:38] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:22:39,335 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:22:39,335 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:22:39,335 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:22:39] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:22:55,152 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-26 01:22:55,171 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-26 01:22:55,171 - werkzeug - INFO - Press CTRL+C to quit +2025-12-26 01:23:14,646 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-26 01:23:14,646 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-26 01:23:14,646 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-26 01:23:16,925 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:23:17,906 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:23:17,906 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:23:17,908 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:23:17] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:23:19,612 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:23:19,872 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:23:19,873 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:23:19,873 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:23:19] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:23:19,876 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-26 01:23:19,877 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:23:19] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 01:23:19,881 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:23:19] "GET /api/market/config?_t=1766683397690 HTTP/1.1" 200 - +2025-12-26 01:23:20,631 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:23:20,899 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:23:20,899 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:23:20,899 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:23:20] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:23:20,904 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:23:20] "GET /api/market/types?_t=1766683399894 HTTP/1.1" 200 - +2025-12-26 01:23:30,341 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:23:30] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 01:23:31,192 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:23:31] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 01:23:33,748 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:23:33] "POST /api/market/watchlist/add HTTP/1.1" 200 - +2025-12-26 01:23:34,003 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:23:34] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 01:23:34,077 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-26 01:23:34,955 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:23:35,215 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:23:35,215 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:23:37,804 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 00700 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (177818็ง’) +2025-12-26 01:23:37,805 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:23:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:23:37,807 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:23:37] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 01:23:39,083 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:23:39,340 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:23:39,340 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:23:39,340 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:23:39] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:23:39,343 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:23:39] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 01:23:42,711 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:23:42] "POST /api/market/watchlist/add HTTP/1.1" 200 - +2025-12-26 01:23:42,967 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:23:42] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 01:23:46,105 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:23:46,360 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:23:46,361 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:24:03,614 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:24:13,045 - app.routes.market - ERROR - ๆ‰น้‡่Žทๅ–่‡ช้€‰่‚กไปทๆ ผๅคฑ่ดฅ: 1 (of 5) futures unfinished +2025-12-26 01:24:13,047 - app.routes.market - ERROR - Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\quantdinger\backend_api_python\app\routes\market.py", line 361, in get_watchlist_prices + for future in as_completed(futures, timeout=30): + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\concurrent\futures\_base.py", line 239, in as_completed + raise TimeoutError( + '%d (of %d) futures unfinished' % ( + len(pending), total_futures)) +TimeoutError: 1 (of 5) futures unfinished + +2025-12-26 01:24:13,048 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:24:13] "POST /api/market/watchlist/prices HTTP/1.1" 500 - +2025-12-26 01:24:13,052 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:24:13] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 01:24:13,910 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:24:14,165 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:24:14,165 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:24:23,626 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:24:23,627 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:24:33,081 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:24:43,067 - app.routes.market - ERROR - ๆ‰น้‡่Žทๅ–่‡ช้€‰่‚กไปทๆ ผๅคฑ่ดฅ: 1 (of 5) futures unfinished +2025-12-26 01:24:43,068 - app.routes.market - ERROR - Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\quantdinger\backend_api_python\app\routes\market.py", line 361, in get_watchlist_prices + for future in as_completed(futures, timeout=30): + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\concurrent\futures\_base.py", line 239, in as_completed + raise TimeoutError( + '%d (of %d) futures unfinished' % ( + len(pending), total_futures)) +TimeoutError: 1 (of 5) futures unfinished + +2025-12-26 01:24:43,069 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:24:43] "POST /api/market/watchlist/prices HTTP/1.1" 500 - +2025-12-26 01:24:43,073 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:24:43] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 01:24:43,076 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:24:43] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 01:24:43,078 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:24:43] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 01:24:44,161 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:24:44,443 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:24:44,444 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:24:53,102 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:24:53,102 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:25:03,095 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:25:03,640 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:25:03,641 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:25:27,810 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-26 01:25:27,831 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-26 01:25:27,831 - werkzeug - INFO - Press CTRL+C to quit +2025-12-26 01:25:33,442 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-26 01:25:33,445 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:25:33] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 01:25:33,450 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:25:33] "GET /api/market/config?_t=1766683533418 HTTP/1.1" 200 - +2025-12-26 01:25:33,830 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-26 01:25:33,830 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-26 01:25:33,830 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-26 01:25:33,830 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-26 01:25:34,648 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:25:35,244 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:25:35,245 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:25:36,159 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:25:36,547 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 00700 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (177937็ง’) +2025-12-26 01:25:37,036 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:25:37,036 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:25:37,037 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:25:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:25:37,040 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:25:37] "GET /api/market/types?_t=1766683533522 HTTP/1.1" 200 - +2025-12-26 01:25:39,888 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:25:40,144 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:25:40,144 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:25:40,144 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:25:40] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:26:03,959 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:26:04,527 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:26:04,527 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:26:04,700 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:26:04,965 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:26:04,965 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:26:04,965 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:26:04] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:26:26,072 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:26:26] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 01:26:26,079 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:26:26] "GET /api/market/config?_t=1766683586057 HTTP/1.1" 200 - +2025-12-26 01:26:26,680 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:26:27,350 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:26:27,350 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:26:27,843 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:26:28,942 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:26:28,942 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:26:28,943 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:26:28] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:26:28,945 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:26:28] "GET /api/market/types?_t=1766683586131 HTTP/1.1" 200 - +2025-12-26 01:26:38,472 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:26:38,743 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:26:38,743 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:26:38,743 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:26:38] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:27:00,894 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-26 01:27:00,924 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-26 01:27:00,925 - werkzeug - INFO - Press CTRL+C to quit +2025-12-26 01:27:04,061 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:27:04] "GET /api/market/config?_t=1766683624052 HTTP/1.1" 200 - +2025-12-26 01:27:04,065 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-26 01:27:04,067 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:27:04] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 01:27:04,206 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:27:04] "GET /api/market/types?_t=1766683624090 HTTP/1.1" 200 - +2025-12-26 01:27:04,642 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-26 01:27:04,642 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-26 01:27:04,642 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-26 01:27:04,642 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-26 01:27:05,603 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:27:05,772 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 00700 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (178026็ง’) +2025-12-26 01:27:06,136 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:27:06,136 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:27:06,654 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:27:07,781 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:27:07,781 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:27:07,782 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:27:07] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:27:25,367 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:27:25] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 01:27:25,673 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:27:25] "GET /api/market/config?_t=1766683645356 HTTP/1.1" 200 - +2025-12-26 01:27:26,249 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:27:26,801 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:27:26,801 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:27:27,454 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:27:27,731 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:27:27,732 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:27:27,732 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:27:27] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:27:27,734 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:27:27] "GET /api/market/types?_t=1766683645682 HTTP/1.1" 200 - +2025-12-26 01:27:39,064 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:27:39,341 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:27:39,341 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:27:39,342 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:27:39] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:27:49,889 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:27:49] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 01:27:52,119 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:27:52] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 01:27:54,791 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:27:54] "POST /api/market/watchlist/add HTTP/1.1" 200 - +2025-12-26 01:27:55,054 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:27:55] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 01:27:55,135 - app.data_sources.forex - WARNING - ๆœช้…็ฝฎ Tiingo API Key๏ผŒๅค–ๆฑ‡ๆ•ฐๆฎๅฐ†ๆ— ๆณ•่Žทๅ– +2025-12-26 01:27:55,135 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:27:55,698 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:27:56,257 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:27:56,258 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:27:56,258 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:27:56,537 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:27:56,538 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:27:56,538 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:27:56] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:27:56,540 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:27:57,163 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:27:57,267 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:27:57,539 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:27:57,539 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:27:57,742 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:27:57,743 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:27:57,743 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:27:57] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:27:58,609 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:27:58] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 01:28:01,069 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:28:01] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 01:28:06,159 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:28:06] "POST /api/market/watchlist/add HTTP/1.1" 200 - +2025-12-26 01:28:06,490 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:28:06] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 01:28:06,753 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:28:07,344 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:28:07,967 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:28:07,967 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:28:08,381 - app.data_sources.futures - ERROR - ่Žทๅ–ไผ ็ปŸๆœŸ่ดงๆ•ฐๆฎๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:28:08,389 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:28:08,664 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:28:08,664 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:28:08,665 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:28:08] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:28:25,361 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:28:25,931 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:28:26,043 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:28:26,057 - app.data_sources.futures - ERROR - ่Žทๅ–ไผ ็ปŸๆœŸ่ดงๆ•ฐๆฎๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:28:26,325 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:28:26,325 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:28:26,498 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:28:26,498 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:28:26,499 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:28:26] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:28:38,749 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:28:39,027 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:28:39,027 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:28:39,028 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:28:39] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:28:55,662 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:28:56,262 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:28:56,352 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:28:56,358 - app.data_sources.futures - ERROR - ่Žทๅ–ไผ ็ปŸๆœŸ่ดงๆ•ฐๆฎๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:28:56,682 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:28:56,683 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:28:56,896 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:28:56,897 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:28:56,898 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:28:56] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:29:25,356 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:29:25,903 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:29:26,035 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:29:26,248 - app.data_sources.futures - ERROR - ่Žทๅ–ไผ ็ปŸๆœŸ่ดงๆ•ฐๆฎๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:29:26,308 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:29:26,308 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:29:26,440 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:29:26,440 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:29:26,441 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:29:26] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:29:38,563 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:29:38,844 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:29:38,844 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:29:38,845 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:29:38] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:29:48,729 - app.routes.analysis - INFO - Analyze request: AShare:300475, use_multi_agent=True, model=openai/gpt-4o +2025-12-26 01:29:48,755 - app.services.analysis - INFO - ๅคšๆ™บ่ƒฝไฝ“ๆžถๆž„ๅˆๅง‹ๅŒ–ๆˆๅŠŸ +2025-12-26 01:29:48,755 - app.services.analysis - INFO - Starting analysis AShare:300475, language=en-US, mode=multi-agent +2025-12-26 01:29:48,755 - app.services.analysis - INFO - ๅผ€ๅง‹ๆ‰ง่กŒๅคšๆ™บ่ƒฝไฝ“ๅˆ†ๆž: AShare:300475 +2025-12-26 01:29:48,756 - app.services.agents.coordinator - INFO - ๅผ€ๅง‹ๅคšๆ™บ่ƒฝไฝ“ๅˆ†ๆž: AShare:300475, ๆจกๅž‹: openai/gpt-4o +2025-12-26 01:29:51,347 - app.services.agents.tools - ERROR - ่Žทๅ–K็บฟๆ•ฐๆฎๅคฑ่ดฅ AShare:300475: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:29:52,988 - app.services.agents.tools - INFO - ๆ‰ง่กŒๆ–ฐ้—ปๆœ็ดข: "้ฆ™ๅ†œ่Šฏๅˆ›" 300475 (ๅˆฉๅฅฝ OR ๅˆฉ็ฉบ OR ่ดขๆŠฅ OR ๅ…ฌๅ‘Š OR ไธš็ปฉ) after:2024 +2025-12-26 01:29:53,990 - app.services.agents.tools - INFO - ๆญฃๅœจๆทฑๅบฆ้˜…่ฏปๆ–ฐ้—ป: ้ฆ™ๅ†œ่Šฏๅˆ›(300475)_่‚ก็ฅจไปทๆ ผ_่กŒๆƒ…_่ตฐๅŠฟๅ›พโ€”ไธœๆ–น่ดขๅฏŒ็ฝ‘ +2025-12-26 01:30:02,941 - app.services.agents.tools - INFO - ๆญฃๅœจๆทฑๅบฆ้˜…่ฏปๆ–ฐ้—ป: ๅ…ณไบŽ้ฆ™ๅ†œ่Šฏๅˆ›๏ผˆ300475๏ผ‰่ฏๅˆธไบคๆ˜“้ฃŽ้™ฉ็š„ๆ็คบๅ…ฌๅ‘Š +2025-12-26 01:30:16,084 - app.services.agents.coordinator - INFO - ้˜ถๆฎต1: ๅˆ†ๆžๅธˆๅ›ข้˜Ÿๅˆ†ๆž (ๅนถ่กŒๆ‰ง่กŒ) +2025-12-26 01:30:17,305 - app.services.agents.tools - ERROR - ่Žทๅ–K็บฟๆ•ฐๆฎๅคฑ่ดฅ AShare:300475: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:30:23,475 - app.services.agents.coordinator - INFO - ้˜ถๆฎต2: ็ ”็ฉถ่พฉ่ฎบ (ๅนถ่กŒๆ‰ง่กŒ) +2025-12-26 01:30:31,705 - app.services.agents.coordinator - INFO - ้˜ถๆฎต3: ไบคๆ˜“ๅ‘˜ๅ†ณ็ญ– +2025-12-26 01:30:36,474 - app.services.agents.coordinator - INFO - ้˜ถๆฎต4: ้ฃŽ้™ฉ่พฉ่ฎบ (ๅนถ่กŒๆ‰ง่กŒ) +2025-12-26 01:30:40,614 - app.services.agents.reflection - INFO - ๅทฒ่ฎฐๅฝ•ๅˆ†ๆž็”จไบŽๅๆ€: AShare:300475, ๅฐ†ๅœจ 7 ๅคฉๅŽ้ชŒ่ฏ +2025-12-26 01:30:40,615 - app.services.agents.coordinator - INFO - ๅคšๆ™บ่ƒฝไฝ“ๅˆ†ๆžๅฎŒๆˆ: AShare:300475 +2025-12-26 01:30:40,615 - app.services.agents.coordinator - INFO - ่ฟ”ๅ›ž็ป“ๆžœๅญ—ๆฎตๆฃ€ๆŸฅ - debate: True, trader_decision: True, risk_debate: True, final_decision: True +2025-12-26 01:30:40,616 - app.services.analysis - INFO - ๅคšๆ™บ่ƒฝไฝ“ๅˆ†ๆž่ฟ”ๅ›ž็ป“ๆžœ - keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2025-12-26 01:30:40,628 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:30:40] "POST /api/analysis/multiAnalysis HTTP/1.1" 200 - +2025-12-26 01:30:40,634 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:30:41,260 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:30:41,889 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:30:41,890 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:30:42,240 - app.data_sources.futures - ERROR - ่Žทๅ–ไผ ็ปŸๆœŸ่ดงๆ•ฐๆฎๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:30:42,245 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:30:42,523 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:30:42,523 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:30:42,524 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:30:42] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:30:42,526 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:30:43,109 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:30:43,200 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:30:43,210 - app.data_sources.futures - ERROR - ่Žทๅ–ไผ ็ปŸๆœŸ่ดงๆ•ฐๆฎๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:30:43,555 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:30:43,555 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:30:43,675 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:30:43,676 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:30:43,676 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:30:43] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:30:44,848 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:30:45,123 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:30:45,123 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:30:45,124 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:30:45] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:30:55,653 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:30:56,039 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:30:56,322 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:30:56,328 - app.data_sources.futures - ERROR - ่Žทๅ–ไผ ็ปŸๆœŸ่ดงๆ•ฐๆฎๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:30:56,615 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:30:56,615 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:30:56,646 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:30:56,646 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:30:56,647 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:30:56] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:31:25,356 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:31:25,940 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:31:26,033 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:31:26,309 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:31:26,309 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:31:26,455 - app.data_sources.futures - ERROR - ่Žทๅ–ไผ ็ปŸๆœŸ่ดงๆ•ฐๆฎๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:31:26,553 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:31:26,553 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:31:26,554 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:31:26] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:31:38,528 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:31:38,802 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:31:38,802 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:31:38,802 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:31:38] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:31:55,663 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:31:56,247 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:31:56,355 - app.data_sources.futures - ERROR - ่Žทๅ–ไผ ็ปŸๆœŸ่ดงๆ•ฐๆฎๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:31:56,365 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:31:56,721 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:31:56,721 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:31:56,888 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:31:56,888 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:31:56,889 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:31:56] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:32:25,673 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:32:26,070 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:32:26,354 - app.data_sources.futures - ERROR - ่Žทๅ–ไผ ็ปŸๆœŸ่ดงๆ•ฐๆฎๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:32:26,361 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:32:26,634 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:32:26,635 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:32:26,645 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:32:26,645 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:32:26,646 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:32:26] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:32:38,800 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:32:39,108 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:32:39,109 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:32:39,109 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:32:39] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:32:55,355 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:32:56,022 - app.data_sources.futures - ERROR - ่Žทๅ–ไผ ็ปŸๆœŸ่ดงๆ•ฐๆฎๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:32:56,027 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:32:56,316 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:32:56,316 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:33:15,381 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:33:25,360 - app.routes.market - ERROR - ๆ‰น้‡่Žทๅ–่‡ช้€‰่‚กไปทๆ ผๅคฑ่ดฅ: 1 (of 7) futures unfinished +2025-12-26 01:33:25,362 - app.routes.market - ERROR - Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\quantdinger\backend_api_python\app\routes\market.py", line 361, in get_watchlist_prices + for future in as_completed(futures, timeout=30): + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\concurrent\futures\_base.py", line 239, in as_completed + raise TimeoutError( + '%d (of %d) futures unfinished' % ( + len(pending), total_futures)) +TimeoutError: 1 (of 7) futures unfinished + +2025-12-26 01:33:25,363 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:33:25] "POST /api/market/watchlist/prices HTTP/1.1" 500 - +2025-12-26 01:33:25,679 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:33:26,367 - app.data_sources.futures - ERROR - ่Žทๅ–ไผ ็ปŸๆœŸ่ดงๆ•ฐๆฎๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:33:26,369 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:33:26,774 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:33:26,774 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:33:31,639 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 00700 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (178412็ง’) +2025-12-26 01:33:35,394 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:33:35,394 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:33:45,698 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:33:55,694 - app.routes.market - ERROR - ๆ‰น้‡่Žทๅ–่‡ช้€‰่‚กไปทๆ ผๅคฑ่ดฅ: 1 (of 7) futures unfinished +2025-12-26 01:33:55,695 - app.routes.market - ERROR - Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\quantdinger\backend_api_python\app\routes\market.py", line 361, in get_watchlist_prices + for future in as_completed(futures, timeout=30): + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\concurrent\futures\_base.py", line 239, in as_completed + raise TimeoutError( + '%d (of %d) futures unfinished' % ( + len(pending), total_futures)) +TimeoutError: 1 (of 7) futures unfinished + +2025-12-26 01:33:55,696 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:33:55] "POST /api/market/watchlist/prices HTTP/1.1" 500 - +2025-12-26 01:33:56,374 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:33:56,648 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:33:56,648 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:33:56,649 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:33:56] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:33:56,651 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:33:57,815 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:33:57,817 - app.data_sources.futures - ERROR - ่Žทๅ–ไผ ็ปŸๆœŸ่ดงๆ•ฐๆฎๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:33:58,105 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:33:58,106 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:34:05,711 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:34:05,711 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:34:16,687 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:34:26,659 - app.routes.market - ERROR - ๆ‰น้‡่Žทๅ–่‡ช้€‰่‚กไปทๆ ผๅคฑ่ดฅ: 1 (of 7) futures unfinished +2025-12-26 01:34:26,661 - app.routes.market - ERROR - Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\quantdinger\backend_api_python\app\routes\market.py", line 361, in get_watchlist_prices + for future in as_completed(futures, timeout=30): + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\concurrent\futures\_base.py", line 239, in as_completed + raise TimeoutError( + '%d (of %d) futures unfinished' % ( + len(pending), total_futures)) +TimeoutError: 1 (of 7) futures unfinished + +2025-12-26 01:34:26,662 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:34:26] "POST /api/market/watchlist/prices HTTP/1.1" 500 - +2025-12-26 01:34:26,664 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:34:27,373 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:34:27,418 - app.data_sources.futures - ERROR - ่Žทๅ–ไผ ็ปŸๆœŸ่ดงๆ•ฐๆฎๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:34:27,660 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:34:27,660 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:34:36,718 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:34:36,719 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:34:46,674 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:34:56,679 - app.routes.market - ERROR - ๆ‰น้‡่Žทๅ–่‡ช้€‰่‚กไปทๆ ผๅคฑ่ดฅ: 1 (of 7) futures unfinished +2025-12-26 01:34:56,680 - app.routes.market - ERROR - Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\quantdinger\backend_api_python\app\routes\market.py", line 361, in get_watchlist_prices + for future in as_completed(futures, timeout=30): + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\concurrent\futures\_base.py", line 239, in as_completed + raise TimeoutError( + '%d (of %d) futures unfinished' % ( + len(pending), total_futures)) +TimeoutError: 1 (of 7) futures unfinished + +2025-12-26 01:34:56,681 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:34:56] "POST /api/market/watchlist/prices HTTP/1.1" 500 - +2025-12-26 01:34:58,249 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:34:58,530 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:34:58,530 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:34:58,530 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:34:58] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:34:58,533 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:34:59,674 - app.data_sources.futures - ERROR - ่Žทๅ–ไผ ็ปŸๆœŸ่ดงๆ•ฐๆฎๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:34:59,688 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:34:59,967 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:34:59,967 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:35:06,697 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:35:06,697 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:35:18,540 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:35:28,547 - app.routes.market - ERROR - ๆ‰น้‡่Žทๅ–่‡ช้€‰่‚กไปทๆ ผๅคฑ่ดฅ: 1 (of 7) futures unfinished +2025-12-26 01:35:28,548 - app.routes.market - ERROR - Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\quantdinger\backend_api_python\app\routes\market.py", line 361, in get_watchlist_prices + for future in as_completed(futures, timeout=30): + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\concurrent\futures\_base.py", line 239, in as_completed + raise TimeoutError( + '%d (of %d) futures unfinished' % ( + len(pending), total_futures)) +TimeoutError: 1 (of 7) futures unfinished + +2025-12-26 01:35:28,549 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:35:28] "POST /api/market/watchlist/prices HTTP/1.1" 500 - +2025-12-26 01:35:28,551 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:35:29,846 - app.data_sources.futures - ERROR - ่Žทๅ–ไผ ็ปŸๆœŸ่ดงๆ•ฐๆฎๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:35:29,857 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:35:30,134 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:35:30,135 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:35:38,575 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:35:38,575 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:35:48,575 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:35:58,566 - app.routes.market - ERROR - ๆ‰น้‡่Žทๅ–่‡ช้€‰่‚กไปทๆ ผๅคฑ่ดฅ: 1 (of 7) futures unfinished +2025-12-26 01:35:58,567 - app.routes.market - ERROR - Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\quantdinger\backend_api_python\app\routes\market.py", line 361, in get_watchlist_prices + for future in as_completed(futures, timeout=30): + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\concurrent\futures\_base.py", line 239, in as_completed + raise TimeoutError( + '%d (of %d) futures unfinished' % ( + len(pending), total_futures)) +TimeoutError: 1 (of 7) futures unfinished + +2025-12-26 01:35:58,567 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:35:58] "POST /api/market/watchlist/prices HTTP/1.1" 500 - +2025-12-26 01:35:59,732 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:36:00,135 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:36:00,135 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:36:00,136 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:36:00] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:36:00,138 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:36:00,850 - app.data_sources.futures - ERROR - ่Žทๅ–ไผ ็ปŸๆœŸ่ดงๆ•ฐๆฎๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:36:00,894 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:36:01,300 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:36:01,301 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:36:08,588 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:36:08,589 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:36:20,157 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:36:30,145 - app.routes.market - ERROR - ๆ‰น้‡่Žทๅ–่‡ช้€‰่‚กไปทๆ ผๅคฑ่ดฅ: 1 (of 7) futures unfinished +2025-12-26 01:36:30,146 - app.routes.market - ERROR - Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\quantdinger\backend_api_python\app\routes\market.py", line 361, in get_watchlist_prices + for future in as_completed(futures, timeout=30): + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\concurrent\futures\_base.py", line 239, in as_completed + raise TimeoutError( + '%d (of %d) futures unfinished' % ( + len(pending), total_futures)) +TimeoutError: 1 (of 7) futures unfinished + +2025-12-26 01:36:30,147 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:36:30] "POST /api/market/watchlist/prices HTTP/1.1" 500 - +2025-12-26 01:36:30,151 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:36:30,836 - app.data_sources.futures - ERROR - ่Žทๅ–ไผ ็ปŸๆœŸ่ดงๆ•ฐๆฎๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:36:30,880 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:36:31,169 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:36:31,170 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:36:40,170 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:36:40,170 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:36:50,164 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:37:00,165 - app.routes.market - ERROR - ๆ‰น้‡่Žทๅ–่‡ช้€‰่‚กไปทๆ ผๅคฑ่ดฅ: 1 (of 7) futures unfinished +2025-12-26 01:37:00,167 - app.routes.market - ERROR - Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\quantdinger\backend_api_python\app\routes\market.py", line 361, in get_watchlist_prices + for future in as_completed(futures, timeout=30): + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\concurrent\futures\_base.py", line 239, in as_completed + raise TimeoutError( + '%d (of %d) futures unfinished' % ( + len(pending), total_futures)) +TimeoutError: 1 (of 7) futures unfinished + +2025-12-26 01:37:00,167 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:37:00] "POST /api/market/watchlist/prices HTTP/1.1" 500 - +2025-12-26 01:37:01,803 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:37:02,114 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:37:02,115 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:37:02,115 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:37:02] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:37:02,119 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:37:02,797 - app.data_sources.futures - ERROR - ่Žทๅ–ไผ ็ปŸๆœŸ่ดงๆ•ฐๆฎๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:37:02,800 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:37:03,108 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:37:03,109 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:37:10,192 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:37:10,192 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:37:22,140 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:37:32,120 - app.routes.market - ERROR - ๆ‰น้‡่Žทๅ–่‡ช้€‰่‚กไปทๆ ผๅคฑ่ดฅ: 1 (of 7) futures unfinished +2025-12-26 01:37:32,121 - app.routes.market - ERROR - Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\quantdinger\backend_api_python\app\routes\market.py", line 361, in get_watchlist_prices + for future in as_completed(futures, timeout=30): + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\concurrent\futures\_base.py", line 239, in as_completed + raise TimeoutError( + '%d (of %d) futures unfinished' % ( + len(pending), total_futures)) +TimeoutError: 1 (of 7) futures unfinished + +2025-12-26 01:37:32,121 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:37:32] "POST /api/market/watchlist/prices HTTP/1.1" 500 - +2025-12-26 01:37:32,124 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:37:33,268 - app.data_sources.futures - ERROR - ่Žทๅ–ไผ ็ปŸๆœŸ่ดงๆ•ฐๆฎๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:37:33,270 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:37:33,636 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:37:33,636 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:37:42,163 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:37:42,163 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:37:52,139 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:38:02,138 - app.routes.market - ERROR - ๆ‰น้‡่Žทๅ–่‡ช้€‰่‚กไปทๆ ผๅคฑ่ดฅ: 1 (of 7) futures unfinished +2025-12-26 01:38:02,139 - app.routes.market - ERROR - Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\quantdinger\backend_api_python\app\routes\market.py", line 361, in get_watchlist_prices + for future in as_completed(futures, timeout=30): + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\concurrent\futures\_base.py", line 239, in as_completed + raise TimeoutError( + '%d (of %d) futures unfinished' % ( + len(pending), total_futures)) +TimeoutError: 1 (of 7) futures unfinished + +2025-12-26 01:38:02,139 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:38:02] "POST /api/market/watchlist/prices HTTP/1.1" 500 - +2025-12-26 01:38:03,526 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:38:03,911 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:38:03,912 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:38:03,913 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:38:03] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:38:03,916 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:38:04,593 - app.data_sources.futures - ERROR - ่Žทๅ–ไผ ็ปŸๆœŸ่ดงๆ•ฐๆฎๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:38:04,601 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:38:05,107 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:38:05,107 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:38:12,163 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:38:12,163 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:38:23,929 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:38:33,924 - app.routes.market - ERROR - ๆ‰น้‡่Žทๅ–่‡ช้€‰่‚กไปทๆ ผๅคฑ่ดฅ: 1 (of 7) futures unfinished +2025-12-26 01:38:33,926 - app.routes.market - ERROR - Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\quantdinger\backend_api_python\app\routes\market.py", line 361, in get_watchlist_prices + for future in as_completed(futures, timeout=30): + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\concurrent\futures\_base.py", line 239, in as_completed + raise TimeoutError( + '%d (of %d) futures unfinished' % ( + len(pending), total_futures)) +TimeoutError: 1 (of 7) futures unfinished + +2025-12-26 01:38:33,927 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:38:33] "POST /api/market/watchlist/prices HTTP/1.1" 500 - +2025-12-26 01:38:33,931 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:38:34,612 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:38:34,654 - app.data_sources.futures - ERROR - ่Žทๅ–ไผ ็ปŸๆœŸ่ดงๆ•ฐๆฎๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:38:34,887 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:38:34,887 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:38:43,986 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:38:43,987 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:38:53,947 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:39:03,942 - app.routes.market - ERROR - ๆ‰น้‡่Žทๅ–่‡ช้€‰่‚กไปทๆ ผๅคฑ่ดฅ: 1 (of 7) futures unfinished +2025-12-26 01:39:03,943 - app.routes.market - ERROR - Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\quantdinger\backend_api_python\app\routes\market.py", line 361, in get_watchlist_prices + for future in as_completed(futures, timeout=30): + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\concurrent\futures\_base.py", line 239, in as_completed + raise TimeoutError( + '%d (of %d) futures unfinished' % ( + len(pending), total_futures)) +TimeoutError: 1 (of 7) futures unfinished + +2025-12-26 01:39:03,944 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:39:03] "POST /api/market/watchlist/prices HTTP/1.1" 500 - +2025-12-26 01:39:05,082 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:39:05,365 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:39:05,365 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:39:05,689 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:39:05] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:39:05,692 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:39:06,318 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 00700 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (178746็ง’) +2025-12-26 01:39:06,372 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:39:06,721 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:39:06,722 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:39:06,861 - app.data_sources.futures - ERROR - ่Žทๅ–ไผ ็ปŸๆœŸ่ดงๆ•ฐๆฎๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:39:13,967 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:39:13,968 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:39:25,706 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:39:35,706 - app.routes.market - ERROR - ๆ‰น้‡่Žทๅ–่‡ช้€‰่‚กไปทๆ ผๅคฑ่ดฅ: 1 (of 7) futures unfinished +2025-12-26 01:39:35,708 - app.routes.market - ERROR - Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\quantdinger\backend_api_python\app\routes\market.py", line 361, in get_watchlist_prices + for future in as_completed(futures, timeout=30): + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\concurrent\futures\_base.py", line 239, in as_completed + raise TimeoutError( + '%d (of %d) futures unfinished' % ( + len(pending), total_futures)) +TimeoutError: 1 (of 7) futures unfinished + +2025-12-26 01:39:35,709 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:39:35] "POST /api/market/watchlist/prices HTTP/1.1" 500 - +2025-12-26 01:39:35,712 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:39:36,946 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:39:36,961 - app.data_sources.futures - ERROR - ่Žทๅ–ไผ ็ปŸๆœŸ่ดงๆ•ฐๆฎๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:39:37,219 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:39:37,219 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:39:45,724 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:39:45,725 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:39:55,739 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:40:05,725 - app.routes.market - ERROR - ๆ‰น้‡่Žทๅ–่‡ช้€‰่‚กไปทๆ ผๅคฑ่ดฅ: 1 (of 7) futures unfinished +2025-12-26 01:40:05,726 - app.routes.market - ERROR - Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\quantdinger\backend_api_python\app\routes\market.py", line 361, in get_watchlist_prices + for future in as_completed(futures, timeout=30): + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\concurrent\futures\_base.py", line 239, in as_completed + raise TimeoutError( + '%d (of %d) futures unfinished' % ( + len(pending), total_futures)) +TimeoutError: 1 (of 7) futures unfinished + +2025-12-26 01:40:05,727 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:40:05] "POST /api/market/watchlist/prices HTTP/1.1" 500 - +2025-12-26 01:40:06,910 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:40:07,243 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:40:07,244 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:40:07,244 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:40:07] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:40:07,246 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:40:07,944 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:40:08,180 - app.data_sources.futures - ERROR - ่Žทๅ–ไผ ็ปŸๆœŸ่ดงๆ•ฐๆฎๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:40:08,221 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:40:08,221 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:40:15,767 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:40:15,767 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:40:27,267 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:40:37,258 - app.routes.market - ERROR - ๆ‰น้‡่Žทๅ–่‡ช้€‰่‚กไปทๆ ผๅคฑ่ดฅ: 1 (of 7) futures unfinished +2025-12-26 01:40:37,259 - app.routes.market - ERROR - Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\quantdinger\backend_api_python\app\routes\market.py", line 361, in get_watchlist_prices + for future in as_completed(futures, timeout=30): + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\concurrent\futures\_base.py", line 239, in as_completed + raise TimeoutError( + '%d (of %d) futures unfinished' % ( + len(pending), total_futures)) +TimeoutError: 1 (of 7) futures unfinished + +2025-12-26 01:40:37,259 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:40:37] "POST /api/market/watchlist/prices HTTP/1.1" 500 - +2025-12-26 01:40:37,262 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:40:37,954 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:40:38,316 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:40:38,317 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:40:38,351 - app.data_sources.futures - ERROR - ่Žทๅ–ไผ ็ปŸๆœŸ่ดงๆ•ฐๆฎๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:40:42,427 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-26 01:40:47,288 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:40:47,289 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:40:57,289 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:41:07,262 - app.routes.market - ERROR - ๆ‰น้‡่Žทๅ–่‡ช้€‰่‚กไปทๆ ผๅคฑ่ดฅ: 1 (of 7) futures unfinished +2025-12-26 01:41:07,263 - app.routes.market - ERROR - Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\quantdinger\backend_api_python\app\routes\market.py", line 361, in get_watchlist_prices + for future in as_completed(futures, timeout=30): + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\concurrent\futures\_base.py", line 239, in as_completed + raise TimeoutError( + '%d (of %d) futures unfinished' % ( + len(pending), total_futures)) +TimeoutError: 1 (of 7) futures unfinished + +2025-12-26 01:41:07,263 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:41:07] "POST /api/market/watchlist/prices HTTP/1.1" 500 - +2025-12-26 01:41:08,964 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:41:09,337 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:41:09,337 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:41:09,338 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:41:09] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:41:09,341 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:41:10,062 - app.data_sources.futures - ERROR - ่Žทๅ–ไผ ็ปŸๆœŸ่ดงๆ•ฐๆฎๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:41:10,132 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:41:10,513 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:41:10,514 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:41:17,305 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:41:17,306 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:41:29,362 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:41:39,349 - app.routes.market - ERROR - ๆ‰น้‡่Žทๅ–่‡ช้€‰่‚กไปทๆ ผๅคฑ่ดฅ: 1 (of 7) futures unfinished +2025-12-26 01:41:39,350 - app.routes.market - ERROR - Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\quantdinger\backend_api_python\app\routes\market.py", line 361, in get_watchlist_prices + for future in as_completed(futures, timeout=30): + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\concurrent\futures\_base.py", line 239, in as_completed + raise TimeoutError( + '%d (of %d) futures unfinished' % ( + len(pending), total_futures)) +TimeoutError: 1 (of 7) futures unfinished + +2025-12-26 01:41:39,350 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:41:39] "POST /api/market/watchlist/prices HTTP/1.1" 500 - +2025-12-26 01:41:39,354 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:41:40,567 - app.data_sources.futures - ERROR - ่Žทๅ–ไผ ็ปŸๆœŸ่ดงๆ•ฐๆฎๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:41:40,569 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:41:40,843 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:41:40,843 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:41:49,381 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:41:49,382 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:41:59,381 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:42:09,361 - app.routes.market - ERROR - ๆ‰น้‡่Žทๅ–่‡ช้€‰่‚กไปทๆ ผๅคฑ่ดฅ: 1 (of 7) futures unfinished +2025-12-26 01:42:09,362 - app.routes.market - ERROR - Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\quantdinger\backend_api_python\app\routes\market.py", line 361, in get_watchlist_prices + for future in as_completed(futures, timeout=30): + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\concurrent\futures\_base.py", line 239, in as_completed + raise TimeoutError( + '%d (of %d) futures unfinished' % ( + len(pending), total_futures)) +TimeoutError: 1 (of 7) futures unfinished + +2025-12-26 01:42:09,363 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:42:09] "POST /api/market/watchlist/prices HTTP/1.1" 500 - +2025-12-26 01:42:10,510 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:42:10,788 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:42:10,788 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:42:10,789 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:42:10] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:42:10,792 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:42:11,919 - app.data_sources.futures - ERROR - ่Žทๅ–ไผ ็ปŸๆœŸ่ดงๆ•ฐๆฎๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:42:11,920 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:42:12,228 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:42:12,228 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:42:19,400 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:42:19,400 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:42:30,808 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:42:40,793 - app.routes.market - ERROR - ๆ‰น้‡่Žทๅ–่‡ช้€‰่‚กไปทๆ ผๅคฑ่ดฅ: 1 (of 7) futures unfinished +2025-12-26 01:42:40,794 - app.routes.market - ERROR - Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\quantdinger\backend_api_python\app\routes\market.py", line 361, in get_watchlist_prices + for future in as_completed(futures, timeout=30): + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\concurrent\futures\_base.py", line 239, in as_completed + raise TimeoutError( + '%d (of %d) futures unfinished' % ( + len(pending), total_futures)) +TimeoutError: 1 (of 7) futures unfinished + +2025-12-26 01:42:40,795 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:42:40] "POST /api/market/watchlist/prices HTTP/1.1" 500 - +2025-12-26 01:42:40,799 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:42:41,592 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:42:41,916 - app.data_sources.futures - ERROR - ่Žทๅ–ไผ ็ปŸๆœŸ่ดงๆ•ฐๆฎๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:42:41,960 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:42:41,961 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:42:50,828 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:42:50,829 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:43:00,826 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:43:10,807 - app.routes.market - ERROR - ๆ‰น้‡่Žทๅ–่‡ช้€‰่‚กไปทๆ ผๅคฑ่ดฅ: 1 (of 7) futures unfinished +2025-12-26 01:43:10,809 - app.routes.market - ERROR - Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\quantdinger\backend_api_python\app\routes\market.py", line 361, in get_watchlist_prices + for future in as_completed(futures, timeout=30): + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\concurrent\futures\_base.py", line 239, in as_completed + raise TimeoutError( + '%d (of %d) futures unfinished' % ( + len(pending), total_futures)) +TimeoutError: 1 (of 7) futures unfinished + +2025-12-26 01:43:10,809 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:43:10] "POST /api/market/watchlist/prices HTTP/1.1" 500 - +2025-12-26 01:43:12,535 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:43:17,018 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:43:17,018 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:43:17,019 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:43:17] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:43:17,021 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:43:17,730 - app.data_sources.futures - ERROR - ่Žทๅ–ไผ ็ปŸๆœŸ่ดงๆ•ฐๆฎๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:43:17,736 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:43:18,010 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:43:18,010 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:43:20,838 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:43:20,839 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:43:37,043 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:43:47,029 - app.routes.market - ERROR - ๆ‰น้‡่Žทๅ–่‡ช้€‰่‚กไปทๆ ผๅคฑ่ดฅ: 1 (of 7) futures unfinished +2025-12-26 01:43:47,031 - app.routes.market - ERROR - Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\quantdinger\backend_api_python\app\routes\market.py", line 361, in get_watchlist_prices + for future in as_completed(futures, timeout=30): + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\concurrent\futures\_base.py", line 239, in as_completed + raise TimeoutError( + '%d (of %d) futures unfinished' % ( + len(pending), total_futures)) +TimeoutError: 1 (of 7) futures unfinished + +2025-12-26 01:43:47,031 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:43:47] "POST /api/market/watchlist/prices HTTP/1.1" 500 - +2025-12-26 01:43:47,034 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:43:48,244 - app.data_sources.us_stock - WARNING - yfinance ่Žทๅ–ๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:43:48,250 - app.data_sources.futures - ERROR - ่Žทๅ–ไผ ็ปŸๆœŸ่ดงๆ•ฐๆฎๅคฑ่ดฅ: Too Many Requests. Rate limited. Try after a while. +2025-12-26 01:43:48,526 - app.data_sources.us_stock - ERROR - Finnhub ่Žทๅ–ๅคฑ่ดฅ: FinnhubAPIException(status_code: 403): You don't have access to this resource. +2025-12-26 01:43:48,526 - app.data_sources.base - WARNING - USStock/yfinance: AAPL ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-26 01:43:57,090 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:43:57,090 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:44:07,063 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 01:44:27,082 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo +2025-12-26 01:44:27,082 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 01:44:51,916 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-26 01:44:51,937 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-26 01:44:51,937 - werkzeug - INFO - Press CTRL+C to quit +2025-12-26 01:44:55,643 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-26 01:44:55,647 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:44:55] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 01:44:55,652 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:44:55] "GET /api/market/config?_t=1766684695633 HTTP/1.1" 200 - +2025-12-26 01:44:55,730 - app.data_sources.forex - WARNING - ๆœช้…็ฝฎ Tiingo API Key๏ผŒๅค–ๆฑ‡ๆ•ฐๆฎๅฐ†ๆ— ๆณ•่Žทๅ– +2025-12-26 01:44:55,730 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:44:55,991 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-26 01:44:55,991 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-26 01:44:55,991 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-26 01:44:55,992 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-26 01:44:58,187 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 00700 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (179098็ง’) +2025-12-26 01:44:59,279 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:44:59] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:44:59,283 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:44:59] "GET /api/market/types?_t=1766684695683 HTTP/1.1" 200 - +2025-12-26 01:45:26,576 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:45:26,577 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:45:26] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:45:37,881 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:45:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:45:56,884 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:45:56,885 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:45:56] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:46:26,565 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:46:26,566 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:46:26] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:46:37,579 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:46:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:46:56,889 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:46:56,890 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:46:56] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:47:26,562 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:47:26,563 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:47:26] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:47:37,883 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:47:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:47:56,876 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:47:56,877 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:47:56] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:48:37,578 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:48:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:48:37,579 - app.data_sources.forex - ERROR - Tiingo API Key ๆœช้…็ฝฎ +2025-12-26 01:48:37,580 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:48:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:48:41,041 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-26 01:48:41,057 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-26 01:48:41,057 - werkzeug - INFO - Press CTRL+C to quit +2025-12-26 01:48:46,613 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-26 01:48:46,615 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:48:46] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 01:48:46,619 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:48:46] "GET /api/market/config?_t=1766684926600 HTTP/1.1" 200 - +2025-12-26 01:48:46,996 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-26 01:48:46,996 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-26 01:48:46,996 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-26 01:48:46,996 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-26 01:48:48,129 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 00700 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (179328็ง’) +2025-12-26 01:48:49,961 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:48:49] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:48:49,964 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:48:49] "GET /api/market/types?_t=1766684926651 HTTP/1.1" 200 - +2025-12-26 01:49:00,839 - app.routes.analysis - INFO - Analyze request: AShare:000858, use_multi_agent=True, model=openai/gpt-4o +2025-12-26 01:49:00,857 - app.services.analysis - INFO - ๅคšๆ™บ่ƒฝไฝ“ๆžถๆž„ๅˆๅง‹ๅŒ–ๆˆๅŠŸ +2025-12-26 01:49:00,857 - app.services.analysis - INFO - Starting analysis AShare:000858, language=en-US, mode=multi-agent +2025-12-26 01:49:00,857 - app.services.analysis - INFO - ๅผ€ๅง‹ๆ‰ง่กŒๅคšๆ™บ่ƒฝไฝ“ๅˆ†ๆž: AShare:000858 +2025-12-26 01:49:00,857 - app.services.agents.coordinator - INFO - ๅผ€ๅง‹ๅคšๆ™บ่ƒฝไฝ“ๅˆ†ๆž: AShare:000858, ๆจกๅž‹: openai/gpt-4o +2025-12-26 01:49:36,022 - app.services.agents.tools - INFO - ๆ‰ง่กŒๆ–ฐ้—ปๆœ็ดข: "ไบ” ็ฒฎ ๆถฒ" 000858 (ๅˆฉๅฅฝ OR ๅˆฉ็ฉบ OR ่ดขๆŠฅ OR ๅ…ฌๅ‘Š OR ไธš็ปฉ) after:2024 +2025-12-26 01:49:36,877 - app.services.agents.tools - INFO - ๆญฃๅœจๆทฑๅบฆ้˜…่ฏปๆ–ฐ้—ป: ไบ” ็ฒฎ ๆถฒ๏ผš็ฌฌไธƒๅฑŠ่‘ฃไบ‹ไผš2025ๅนด็ฌฌ4ๆฌกไผš่ฎฎๅ†ณ่ฎฎๅ…ฌๅ‘Š - moomoo +2025-12-26 01:49:52,312 - app.services.agents.tools - WARNING - Jina Reader ่Žทๅ–ๅ†…ๅฎนๅคฑ่ดฅ https://www.moomoo.com/news/notice/305499083/wuliangye-announcement-of-resolutions-of-the-4th-meeting-of-the: SOCKSHTTPSConnectionPool(host='r.jina.ai', port=443): Read timed out. (read timeout=15) +2025-12-26 01:49:52,312 - app.services.agents.tools - INFO - ๆญฃๅœจๆทฑๅบฆ้˜…่ฏปๆ–ฐ้—ป: ๆ˜“ๆ–น่พพไธญ่ฏๅ›ฝไผไธ€ๅธฆไธ€่ทฏไบคๆ˜“ๅž‹ๅผ€ๆ”พๅผๆŒ‡ๆ•ฐ่ฏๅˆธๆŠ•่ต„ๅŸบ้‡‘ +2025-12-26 01:50:07,831 - app.services.agents.tools - WARNING - Jina Reader ่Žทๅ–ๅ†…ๅฎนๅคฑ่ดฅ https://www.efunds.com.cn/Mobile/fund/515110.shtml: SOCKSHTTPSConnectionPool(host='r.jina.ai', port=443): Read timed out. (read timeout=15) +2025-12-26 01:50:07,831 - app.services.agents.coordinator - INFO - ้˜ถๆฎต1: ๅˆ†ๆžๅธˆๅ›ข้˜Ÿๅˆ†ๆž (ๅนถ่กŒๆ‰ง่กŒ) +2025-12-26 01:50:13,716 - app.services.agents.coordinator - INFO - ้˜ถๆฎต2: ็ ”็ฉถ่พฉ่ฎบ (ๅนถ่กŒๆ‰ง่กŒ) +2025-12-26 01:50:18,930 - app.services.agents.coordinator - INFO - ้˜ถๆฎต3: ไบคๆ˜“ๅ‘˜ๅ†ณ็ญ– +2025-12-26 01:50:24,636 - app.services.agents.coordinator - INFO - ้˜ถๆฎต4: ้ฃŽ้™ฉ่พฉ่ฎบ (ๅนถ่กŒๆ‰ง่กŒ) +2025-12-26 01:50:28,537 - app.services.agents.reflection - INFO - ๅทฒ่ฎฐๅฝ•ๅˆ†ๆž็”จไบŽๅๆ€: AShare:000858, ๅฐ†ๅœจ 7 ๅคฉๅŽ้ชŒ่ฏ +2025-12-26 01:50:28,537 - app.services.agents.coordinator - INFO - ๅคšๆ™บ่ƒฝไฝ“ๅˆ†ๆžๅฎŒๆˆ: AShare:000858 +2025-12-26 01:50:28,537 - app.services.agents.coordinator - INFO - ่ฟ”ๅ›ž็ป“ๆžœๅญ—ๆฎตๆฃ€ๆŸฅ - debate: True, trader_decision: True, risk_debate: True, final_decision: True +2025-12-26 01:50:28,538 - app.services.analysis - INFO - ๅคšๆ™บ่ƒฝไฝ“ๅˆ†ๆž่ฟ”ๅ›ž็ป“ๆžœ - keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2025-12-26 01:50:28,547 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:50:28] "POST /api/analysis/multiAnalysis HTTP/1.1" 200 - +2025-12-26 01:50:28,550 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:50:28] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:50:28,553 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:50:28] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:50:28,557 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:50:28] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:50:28,565 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:50:28] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:50:37,567 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:50:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:50:46,882 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:50:46] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:50:48,730 - app.routes.analysis - INFO - Analyze request: USStock:AAPL, use_multi_agent=True, model=openai/gpt-4o +2025-12-26 01:50:48,740 - app.services.analysis - INFO - ๅคšๆ™บ่ƒฝไฝ“ๆžถๆž„ๅˆๅง‹ๅŒ–ๆˆๅŠŸ +2025-12-26 01:50:48,740 - app.services.analysis - INFO - Starting analysis USStock:AAPL, language=en-US, mode=multi-agent +2025-12-26 01:50:48,740 - app.services.analysis - INFO - ๅผ€ๅง‹ๆ‰ง่กŒๅคšๆ™บ่ƒฝไฝ“ๅˆ†ๆž: USStock:AAPL +2025-12-26 01:50:48,741 - app.services.agents.coordinator - INFO - ๅผ€ๅง‹ๅคšๆ™บ่ƒฝไฝ“ๅˆ†ๆž: USStock:AAPL, ๆจกๅž‹: openai/gpt-4o +2025-12-26 01:50:52,730 - app.services.agents.tools - INFO - ๆ‰ง่กŒๆ–ฐ้—ปๆœ็ดข: "Apple Inc" AAPL stock news +2025-12-26 01:50:53,878 - app.services.agents.tools - INFO - ๆญฃๅœจๆทฑๅบฆ้˜…่ฏปๆ–ฐ้—ป: AAPL: Apple Inc - Stock Price, Quote and News - CNBC +2025-12-26 01:50:55,836 - app.services.agents.tools - INFO - ๆญฃๅœจๆทฑๅบฆ้˜…่ฏปๆ–ฐ้—ป: AAPL Stock Quote Price and Forecast | CNN +2025-12-26 01:51:07,766 - app.services.agents.coordinator - INFO - ้˜ถๆฎต1: ๅˆ†ๆžๅธˆๅ›ข้˜Ÿๅˆ†ๆž (ๅนถ่กŒๆ‰ง่กŒ) +2025-12-26 01:51:14,483 - app.services.agents.coordinator - INFO - ้˜ถๆฎต2: ็ ”็ฉถ่พฉ่ฎบ (ๅนถ่กŒๆ‰ง่กŒ) +2025-12-26 01:51:20,922 - app.services.agents.coordinator - INFO - ้˜ถๆฎต3: ไบคๆ˜“ๅ‘˜ๅ†ณ็ญ– +2025-12-26 01:51:27,186 - app.services.agents.coordinator - INFO - ้˜ถๆฎต4: ้ฃŽ้™ฉ่พฉ่ฎบ (ๅนถ่กŒๆ‰ง่กŒ) +2025-12-26 01:51:31,383 - app.services.agents.reflection - INFO - ๅทฒ่ฎฐๅฝ•ๅˆ†ๆž็”จไบŽๅๆ€: USStock:AAPL, ๅฐ†ๅœจ 7 ๅคฉๅŽ้ชŒ่ฏ +2025-12-26 01:51:31,384 - app.services.agents.coordinator - INFO - ๅคšๆ™บ่ƒฝไฝ“ๅˆ†ๆžๅฎŒๆˆ: USStock:AAPL +2025-12-26 01:51:31,384 - app.services.agents.coordinator - INFO - ่ฟ”ๅ›ž็ป“ๆžœๅญ—ๆฎตๆฃ€ๆŸฅ - debate: True, trader_decision: True, risk_debate: True, final_decision: True +2025-12-26 01:51:31,385 - app.services.analysis - INFO - ๅคšๆ™บ่ƒฝไฝ“ๅˆ†ๆž่ฟ”ๅ›ž็ป“ๆžœ - keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2025-12-26 01:51:31,393 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:51:31] "POST /api/analysis/multiAnalysis HTTP/1.1" 200 - +2025-12-26 01:51:31,398 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:51:31] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:51:37,884 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:51:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:51:46,897 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:51:46] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:52:16,585 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:52:16] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:52:37,571 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:52:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:52:46,881 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:52:46] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:53:16,586 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:53:16] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:53:37,873 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:53:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:53:46,890 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:53:46] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:54:16,588 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:54:16] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:54:37,575 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:54:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:54:48,881 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 00700 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (179689็ง’) +2025-12-26 01:54:48,974 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:54:48] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:55:16,576 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:55:16] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:55:37,884 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:55:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:55:46,900 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:55:46] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:56:16,586 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:56:16] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:56:37,564 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:56:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:56:46,890 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:56:46] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:57:16,579 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:57:16] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:57:37,883 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:57:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:57:46,885 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:57:46] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:58:16,581 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:58:16] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:58:37,566 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:58:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:58:46,888 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:58:46] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:59:00,436 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:59:00] "GET /api/market/config?_t=1766685540428 HTTP/1.1" 200 - +2025-12-26 01:59:00,441 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:59:00] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 01:59:00,568 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:59:00] "GET /api/market/types?_t=1766685540469 HTTP/1.1" 200 - +2025-12-26 01:59:00,786 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:59:00] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:59:01,322 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:59:01] "GET /api/market/config?_t=1766685541315 HTTP/1.1" 200 - +2025-12-26 01:59:01,328 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:59:01] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 01:59:01,364 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:59:01] "GET /api/market/types?_t=1766685541354 HTTP/1.1" 200 - +2025-12-26 01:59:01,701 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:59:01] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:59:30,400 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:59:30] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 01:59:31,570 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 01:59:31] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:00:01,826 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 00700 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (180002็ง’) +2025-12-26 02:00:02,599 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:00:02] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:00:02,602 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:00:02] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:00:30,401 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:00:30] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:00:31,578 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:00:31] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:01:00,708 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:01:00] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:01:01,887 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:01:01] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:01:30,403 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:01:30] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:01:31,571 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:01:31] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:02:00,705 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:02:00] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:02:01,871 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:02:01] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:02:30,405 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:02:30] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:02:37,571 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:02:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:03:00,719 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:03:00] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:03:30,405 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:03:30] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:03:37,876 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:03:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:04:00,710 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:04:00] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:04:30,409 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:04:30] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:04:37,574 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:04:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:05:00,713 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:05:00] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:05:30,402 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:05:30] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:05:37,881 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:05:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:06:01,821 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 00700 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (180362็ง’) +2025-12-26 02:06:01,822 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:06:01] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:06:30,413 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:06:30] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:06:37,571 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:06:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:07:00,714 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:07:00] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:07:30,405 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:07:30] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:07:37,882 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:07:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:08:00,713 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:08:00] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:08:30,402 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:08:30] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:08:37,569 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:08:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:09:00,708 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:09:00] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:09:30,402 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:09:30] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:09:37,882 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:09:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:10:00,717 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:10:00] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:10:30,407 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:10:30] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:10:37,562 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:10:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:11:00,712 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:11:00] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:11:30,398 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:11:30] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:11:37,888 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:11:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:12:01,703 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 00700 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (180722็ง’) +2025-12-26 02:12:01,944 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:12:01] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:12:30,411 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:12:30] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:12:37,576 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:12:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:13:00,714 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:13:00] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:13:30,399 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:13:30] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:13:37,885 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:13:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:14:00,712 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:14:00] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:14:30,413 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:14:30] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:14:37,570 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:14:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:15:00,716 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:15:00] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:15:30,401 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:15:30] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:15:37,458 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-26 02:15:37,881 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:15:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:16:00,705 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:16:00] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:16:04,179 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-26 02:16:30,402 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:16:30] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:16:37,569 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:16:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:17:00,704 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:17:00] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:17:30,404 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:17:30] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:17:37,871 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:17:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:18:01,873 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 00700 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (181082็ง’) +2025-12-26 02:18:01,931 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:18:01] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:18:30,408 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:18:30] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:18:37,565 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:18:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:19:00,708 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:19:00] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:19:30,410 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:19:30] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:19:37,872 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:19:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:20:00,709 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:20:00] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:20:10,085 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-26 02:20:30,410 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:20:30] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:20:37,573 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:20:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:21:00,722 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:21:00] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:21:30,402 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:21:30] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:21:37,878 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:21:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:21:53,914 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:21:53] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 02:21:53,919 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:21:53] "GET /api/market/config?_t=1766686913893 HTTP/1.1" 200 - +2025-12-26 02:21:54,017 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:21:54] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:21:54,332 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:21:54] "GET /api/market/types?_t=1766686913994 HTTP/1.1" 200 - +2025-12-26 02:21:54,458 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:21:54] "GET /api/market/config?_t=1766686914449 HTTP/1.1" 200 - +2025-12-26 02:21:54,463 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:21:54] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 02:21:54,798 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:21:54] "GET /api/market/types?_t=1766686914486 HTTP/1.1" 200 - +2025-12-26 02:21:54,860 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:21:54] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:22:24,179 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:22:24] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:22:24,571 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:22:24] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:22:35,159 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-26 02:22:35,173 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-26 02:22:35,173 - werkzeug - INFO - Press CTRL+C to quit +2025-12-26 02:22:38,215 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:22:38] "GET /api/market/config?_t=1766686958188 HTTP/1.1" 200 - +2025-12-26 02:22:38,221 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-26 02:22:38,223 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:22:38] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 02:22:38,574 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:22:38] "GET /api/market/types?_t=1766686958253 HTTP/1.1" 200 - +2025-12-26 02:22:38,725 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-26 02:22:38,725 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-26 02:22:38,725 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-26 02:22:38,726 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-26 02:22:39,783 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 00700 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (181360็ง’) +2025-12-26 02:22:41,847 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:22:41] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:22:54,067 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:22:54] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 02:22:54,883 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:22:54] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:23:00,099 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:23:00] "POST /api/market/watchlist/add HTTP/1.1" 200 - +2025-12-26 02:23:00,330 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:23:00] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 02:23:00,954 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:23:00] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:23:08,149 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:23:08] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:23:11,331 - app.routes.analysis - INFO - Analyze request: AShare:600519, use_multi_agent=True, model=openai/gpt-4o +2025-12-26 02:23:11,416 - app.services.analysis - INFO - Multi-agent coordinator initialized +2025-12-26 02:23:11,416 - app.services.analysis - INFO - Starting analysis AShare:600519, language=ja-JP, mode=multi-agent +2025-12-26 02:23:11,417 - app.services.analysis - INFO - Run coordinator: AShare:600519 +2025-12-26 02:23:11,417 - app.services.agents.coordinator - INFO - Multi-agent analysis start: AShare:600519, model=openai/gpt-4o, language=ja-JP +2025-12-26 02:24:21,349 - app.services.agents.tools - INFO - Running news search: "่ดตๅทž่Œ…ๅฐ" 600519 (ๅˆฉๅฅฝ OR ๅˆฉ็ฉบ OR ่ดขๆŠฅ OR ๅ…ฌๅ‘Š OR ไธš็ปฉ) after:2024 +2025-12-26 02:24:22,216 - app.services.agents.tools - INFO - Deep reading: ่ดตๅทž่Œ…ๅฐ1409.70(0.10%)_ๅ…ฌๅธๅ…ฌๅ‘Š_ๆ–ฐๆตช่ดข็ป_ๆ–ฐๆตช็ฝ‘ +2025-12-26 02:24:24,158 - app.services.agents.tools - INFO - Deep reading: ่ดตๅทž่Œ…ๅฐ(600519)ๅˆ†็บข้…่‚ก_ๆ–ฐๆตช่ดข็ป_ๆ–ฐๆตช็ฝ‘ +2025-12-26 02:24:26,199 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2025-12-26 02:24:33,201 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2025-12-26 02:24:39,328 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2025-12-26 02:24:43,340 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2025-12-26 02:24:46,638 - app.services.agents.reflection - INFO - ๅทฒ่ฎฐๅฝ•ๅˆ†ๆž็”จไบŽๅๆ€: AShare:600519, ๅฐ†ๅœจ 7 ๅคฉๅŽ้ชŒ่ฏ +2025-12-26 02:24:46,638 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: AShare:600519 +2025-12-26 02:24:46,638 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2025-12-26 02:24:46,640 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2025-12-26 02:24:46,649 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:24:46] "POST /api/analysis/multiAnalysis HTTP/1.1" 200 - +2025-12-26 02:24:46,653 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:24:46] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:24:46,657 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:24:46] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:24:46,660 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:24:46] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:24:46,666 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:24:46] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:24:46,673 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:24:46] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:24:46,677 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:24:46] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:24:54,878 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:24:54] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:25:08,460 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:25:08] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:25:37,575 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:25:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:25:38,147 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:25:38] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:26:08,461 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:26:08] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:26:13,077 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:26:13] "POST /api/analysis/getHistoryList HTTP/1.1" 200 - +2025-12-26 02:26:17,570 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:26:17] "POST /api/analysis/getTaskStatus HTTP/1.1" 200 - +2025-12-26 02:26:20,956 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:26:20] "POST /api/analysis/getHistoryList HTTP/1.1" 200 - +2025-12-26 02:26:23,492 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:26:23] "POST /api/analysis/getTaskStatus HTTP/1.1" 200 - +2025-12-26 02:26:31,171 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:26:31] "POST /api/analysis/getHistoryList HTTP/1.1" 200 - +2025-12-26 02:26:35,981 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:26:35] "POST /api/analysis/getTaskStatus HTTP/1.1" 200 - +2025-12-26 02:26:37,883 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:26:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:26:38,146 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:26:38] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:27:08,451 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:27:08] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:27:37,565 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:27:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:27:38,141 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:27:38] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:28:08,453 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:28:08] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:28:38,730 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 00700 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (181719็ง’) +2025-12-26 02:28:39,014 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:28:39] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:28:39,550 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:28:39] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:29:08,460 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:29:08] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:29:37,569 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:29:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:29:38,142 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:29:38] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:30:08,449 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:30:08] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:30:37,579 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:30:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:30:38,150 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:30:38] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:31:08,460 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:31:08] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:31:37,874 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:31:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:31:38,140 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:31:38] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:32:07,838 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-26 02:32:07,867 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-26 02:32:07,868 - werkzeug - INFO - Press CTRL+C to quit +2025-12-26 02:32:08,299 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-26 02:32:08,299 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-26 02:32:08,299 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-26 02:32:08,300 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-26 02:32:08,300 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-26 02:32:11,589 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 00700 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (181932็ง’) +2025-12-26 02:32:11,723 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:32:11] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:32:11,726 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-26 02:32:11,728 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:32:11] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 02:32:11,733 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:32:11] "GET /api/market/config?_t=1766687530795 HTTP/1.1" 200 - +2025-12-26 02:32:11,746 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:32:11] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:32:11,755 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:32:11] "GET /api/market/types?_t=1766687531744 HTTP/1.1" 200 - +2025-12-26 02:32:22,583 - app.routes.analysis - INFO - Analyze request: AShare:600519, use_multi_agent=True, model=openai/gpt-4o-mini +2025-12-26 02:32:22,625 - app.services.analysis - INFO - Multi-agent coordinator initialized +2025-12-26 02:32:22,625 - app.services.analysis - INFO - Starting analysis AShare:600519, language=ja-JP, mode=multi-agent +2025-12-26 02:32:22,625 - app.services.analysis - INFO - Run coordinator: AShare:600519 +2025-12-26 02:32:22,625 - app.services.agents.coordinator - INFO - Multi-agent analysis start: AShare:600519, model=openai/gpt-4o-mini, language=ja-JP +2025-12-26 02:34:00,359 - app.services.agents.tools - INFO - Running news search: "่ดตๅทž่Œ…ๅฐ" 600519 (ๅˆฉๅฅฝ OR ๅˆฉ็ฉบ OR ่ดขๆŠฅ OR ๅ…ฌๅ‘Š OR ไธš็ปฉ) after:2024 +2025-12-26 02:34:01,102 - app.services.agents.tools - INFO - Deep reading: ่ดตๅทž่Œ…ๅฐ1409.70(0.10%)_ๅ…ฌๅธๅ…ฌๅ‘Š_ๆ–ฐๆตช่ดข็ป_ๆ–ฐๆตช็ฝ‘ +2025-12-26 02:34:11,626 - app.services.agents.tools - INFO - Deep reading: ่ดตๅทž่Œ…ๅฐ(600519)ๅˆ†็บข้…่‚ก_ๆ–ฐๆตช่ดข็ป_ๆ–ฐๆตช็ฝ‘ +2025-12-26 02:34:13,808 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2025-12-26 02:34:20,977 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2025-12-26 02:34:35,242 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2025-12-26 02:34:46,131 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2025-12-26 02:34:51,529 - app.services.agents.reflection - INFO - ๅทฒ่ฎฐๅฝ•ๅˆ†ๆž็”จไบŽๅๆ€: AShare:600519, ๅฐ†ๅœจ 7 ๅคฉๅŽ้ชŒ่ฏ +2025-12-26 02:34:51,529 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: AShare:600519 +2025-12-26 02:34:51,530 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2025-12-26 02:34:51,531 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2025-12-26 02:34:51,542 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:34:51] "POST /api/analysis/multiAnalysis HTTP/1.1" 200 - +2025-12-26 02:34:51,546 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:34:51] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:34:51,548 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:34:51] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:34:51,553 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:34:51] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:34:51,560 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:34:51] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:34:51,564 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:34:51] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:34:51,568 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:34:51] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:34:51,576 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:34:51] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:34:51,579 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:34:51] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:35:11,075 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:35:11] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:35:37,885 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:35:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:35:40,763 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:35:40] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:36:11,082 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:36:11] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:36:37,568 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:36:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:36:40,765 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:36:40] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:37:11,076 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:37:11] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:37:38,871 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 00700 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (182259็ง’) +2025-12-26 02:37:39,058 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:37:39] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:37:41,334 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:37:41] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:38:11,075 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:38:11] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:38:37,579 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:38:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:38:40,767 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:38:40] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:39:11,070 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:39:11] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:39:37,883 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:39:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:39:40,771 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:39:40] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:40:11,073 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:40:11] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:40:37,576 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:40:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:40:41,077 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:40:41] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:41:10,772 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:41:10] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:41:37,868 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:41:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:41:41,073 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:41:41] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:42:10,772 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:42:10] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:42:37,579 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:42:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:42:41,077 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:42:41] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:43:10,767 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:43:10] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:43:39,010 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 00700 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (182619็ง’) +2025-12-26 02:43:39,100 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:43:39] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:43:42,506 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:43:42] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:44:11,615 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:44:11] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:44:37,573 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:44:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:45:37,877 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:45:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:45:37,879 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:45:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:46:37,573 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:46:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:46:37,577 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:46:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:47:37,876 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:47:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:47:37,879 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:47:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:48:37,573 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:48:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:48:37,575 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:48:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:49:38,761 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 00700 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (182979็ง’) +2025-12-26 02:49:39,058 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:49:39] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:49:39,061 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:49:39] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:50:37,569 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:50:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:50:37,571 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:50:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:51:37,877 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:51:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:51:37,879 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:51:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:52:37,565 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:52:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:52:37,567 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:52:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:53:37,871 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:53:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:53:37,874 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:53:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:54:37,575 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:54:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:54:37,577 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:54:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:55:38,816 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 02:55:39,025 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT&startTime=1766481578817 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-26 02:55:39,025 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 02:55:40,700 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 00700 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (183341็ง’) +2025-12-26 02:55:51,487 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:55:51] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:55:51,699 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 02:55:51,907 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT&startTime=1766481591699 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-26 02:55:51,907 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 02:55:53,229 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:55:53] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:56:37,774 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 02:56:37,982 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT&startTime=1766481637774 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-26 02:56:37,983 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 02:56:37,983 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:56:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:56:38,194 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 02:56:38,402 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT&startTime=1766481638194 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-26 02:56:38,402 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 02:56:38,403 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:56:38] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:57:38,091 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 02:57:38,300 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT&startTime=1766481698091 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-26 02:57:38,300 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 02:57:38,301 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:57:38] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:57:38,513 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 02:57:38,722 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT&startTime=1766481698514 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-26 02:57:38,723 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 02:57:38,723 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:57:38] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:58:37,785 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 02:58:37,992 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT&startTime=1766481757785 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-26 02:58:37,993 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 02:58:37,993 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:58:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:58:38,203 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 02:58:38,412 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT&startTime=1766481758204 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-26 02:58:38,413 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 02:58:38,413 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:58:38] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:59:38,095 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 02:59:38,303 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT&startTime=1766481818095 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-26 02:59:38,303 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 02:59:38,304 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:59:38] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 02:59:38,515 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 02:59:38,723 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT&startTime=1766481818515 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-26 02:59:38,724 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 02:59:38,724 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 02:59:38] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 22:17:15,997 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-26 22:17:16,010 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-26 22:17:16,010 - werkzeug - INFO - Press CTRL+C to quit +2025-12-26 22:17:35,806 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:17:35] "POST /api/user/login HTTP/1.1" 200 - +2025-12-26 22:17:51,437 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-26 22:17:51,440 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:17:51] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 22:17:51,446 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:17:51] "GET /api/market/config?_t=1766758671419 HTTP/1.1" 200 - +2025-12-26 22:17:51,745 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-26 22:17:51,745 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-26 22:17:51,745 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-26 22:17:51,745 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-26 22:17:51,746 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-26 22:17:53,168 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 22:17:53,397 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-26 22:17:53,397 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 22:17:53,969 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: AAPL ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (206274็ง’) +2025-12-26 22:17:58,984 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 00700 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (253079็ง’) +2025-12-26 22:18:08,507 - urllib3.connectionpool - WARNING - Retrying (Retry(total=2, connect=3, read=2, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Read timed out. (read timeout=15)")': /api/qt/stock/kline/get?secid=1.600519&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2025-12-26 22:18:20,450 - urllib3.connectionpool - WARNING - Retrying (Retry(total=1, connect=3, read=2, redirect=None, status=None)) after connection broken by 'SSLError(SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1020)'))': /api/qt/stock/kline/get?secid=1.600519&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2025-12-26 22:18:21,554 - app.routes.market - ERROR - ๆ‰น้‡่Žทๅ–่‡ช้€‰่‚กไปทๆ ผๅคฑ่ดฅ: 1 (of 8) futures unfinished +2025-12-26 22:18:21,557 - app.routes.market - ERROR - Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\quantdinger\backend_api_python\app\routes\market.py", line 361, in get_watchlist_prices + for future in as_completed(futures, timeout=30): + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\concurrent\futures\_base.py", line 239, in as_completed + raise TimeoutError( + '%d (of %d) futures unfinished' % ( + len(pending), total_futures)) +TimeoutError: 1 (of 8) futures unfinished + +2025-12-26 22:18:21,558 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:18:21] "POST /api/market/watchlist/prices HTTP/1.1" 500 - +2025-12-26 22:18:21,561 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:18:21] "GET /api/market/types?_t=1766758671515 HTTP/1.1" 200 - +2025-12-26 22:18:21,896 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 22:18:22,126 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-26 22:18:22,127 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 22:18:23,984 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:18:23] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 22:18:32,130 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:18:32] "GET /api/market/types?_t=1766758712115 HTTP/1.1" 200 - +2025-12-26 22:18:38,101 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:18:38] "GET /api/market/config?_t=1766758718094 HTTP/1.1" 200 - +2025-12-26 22:18:38,417 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:18:38] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 22:18:38,423 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:18:38] "GET /api/market/types?_t=1766758718109 HTTP/1.1" 200 - +2025-12-26 22:18:38,967 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 22:18:39,196 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-26 22:18:39,196 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 22:18:39,197 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:18:39] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 22:18:40,456 - urllib3.connectionpool - WARNING - Retrying (Retry(total=0, connect=3, read=1, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Read timed out. (read timeout=15)")': /api/qt/stock/kline/get?secid=1.600519&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2025-12-26 22:19:03,341 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:19:03] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 22:19:03,646 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:19:03] "GET /api/market/config?_t=1766758743330 HTTP/1.1" 200 - +2025-12-26 22:19:08,281 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:19:08] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 22:19:08,283 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:19:08] "GET /api/market/types?_t=1766758743652 HTTP/1.1" 200 - +2025-12-26 22:19:33,524 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:19:33] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 22:19:34,908 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:19:34] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 22:19:34,912 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:19:34] "GET /api/market/config?_t=1766758774898 HTTP/1.1" 200 - +2025-12-26 22:19:35,029 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:19:35] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 22:19:35,335 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:19:35] "GET /api/market/types?_t=1766758775024 HTTP/1.1" 200 - +2025-12-26 22:19:36,797 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:19:36] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 22:19:37,097 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:19:37] "GET /api/market/config?_t=1766758776785 HTTP/1.1" 200 - +2025-12-26 22:19:37,137 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:19:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 22:19:37,425 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:19:37] "GET /api/market/types?_t=1766758777103 HTTP/1.1" 200 - +2025-12-26 22:19:42,206 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:19:42] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 22:19:42,211 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:19:42] "GET /api/market/config?_t=1766758781885 HTTP/1.1" 200 - +2025-12-26 22:19:42,465 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:19:42] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 22:19:42,528 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:19:42] "GET /api/market/types?_t=1766758782221 HTTP/1.1" 200 - +2025-12-26 22:20:11,883 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:20:11] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 22:20:42,190 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:20:42] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 22:21:11,886 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:21:11] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 22:21:42,200 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:21:42] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 22:22:11,881 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:22:11] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 22:22:42,193 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:22:42] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 22:23:27,260 - urllib3.connectionpool - WARNING - Retrying (Retry(total=2, connect=3, read=2, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Read timed out. (read timeout=15)")': /api/qt/stock/kline/get?secid=0.000858&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2025-12-26 22:23:39,156 - urllib3.connectionpool - WARNING - Retrying (Retry(total=1, connect=3, read=2, redirect=None, status=None)) after connection broken by 'SSLError(SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1020)'))': /api/qt/stock/kline/get?secid=0.000858&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2025-12-26 22:23:41,889 - app.routes.market - ERROR - ๆ‰น้‡่Žทๅ–่‡ช้€‰่‚กไปทๆ ผๅคฑ่ดฅ: 1 (of 8) futures unfinished +2025-12-26 22:23:41,891 - app.routes.market - ERROR - Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\quantdinger\backend_api_python\app\routes\market.py", line 361, in get_watchlist_prices + for future in as_completed(futures, timeout=30): + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\concurrent\futures\_base.py", line 239, in as_completed + raise TimeoutError( + '%d (of %d) futures unfinished' % ( + len(pending), total_futures)) +TimeoutError: 1 (of 8) futures unfinished + +2025-12-26 22:23:41,892 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:23:41] "POST /api/market/watchlist/prices HTTP/1.1" 500 - +2025-12-26 22:23:51,178 - urllib3.connectionpool - WARNING - Retrying (Retry(total=2, connect=3, read=3, redirect=None, status=None)) after connection broken by 'SSLError(SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1020)'))': /api/qt/stock/kline/get?secid=0.000858&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2025-12-26 22:23:53,455 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:23:53] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 22:24:12,214 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: AAPL ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (206652็ง’) +2025-12-26 22:24:13,457 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 22:24:13,972 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT&startTime=1766551693457 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-26 22:24:13,972 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 22:24:16,718 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 00700 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (253457็ง’) +2025-12-26 22:24:22,881 - urllib3.connectionpool - WARNING - Retrying (Retry(total=2, connect=3, read=3, redirect=None, status=None)) after connection broken by 'SSLError(SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1020)'))': /api/qt/stock/kline/get?secid=0.300475&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2025-12-26 22:24:24,584 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:24:24] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 22:24:42,121 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 22:24:42,348 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT&startTime=1766551722121 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-26 22:24:42,348 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 22:24:42,349 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:24:42] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 22:25:12,418 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 22:25:12,646 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT&startTime=1766551752419 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-26 22:25:12,646 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 22:25:12,646 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:25:12] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 22:25:42,120 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 22:25:42,348 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT&startTime=1766551782121 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-26 22:25:42,349 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 22:25:42,349 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:25:42] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 22:26:12,423 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 22:26:12,650 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT&startTime=1766551812423 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-26 22:26:12,650 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 22:26:12,650 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:26:12] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 22:26:42,109 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 22:26:42,339 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT&startTime=1766551842109 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-26 22:26:42,340 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 22:26:42,341 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:26:42] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 22:27:12,414 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 22:27:13,163 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT&startTime=1766551872414 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-26 22:27:13,163 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 22:27:13,164 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:27:13] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 22:27:42,112 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 22:27:42,340 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT&startTime=1766551902112 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-26 22:27:42,340 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 22:27:42,341 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:27:42] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 22:27:57,972 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:27:57] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 22:27:58,159 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:27:58] "GET /api/market/config?_t=1766759277962 HTTP/1.1" 200 - +2025-12-26 22:27:58,448 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 22:27:58,675 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT&startTime=1766551918448 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-26 22:27:58,676 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 22:27:58,676 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:27:58] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 22:27:58,680 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:27:58] "GET /api/market/types?_t=1766759278165 HTTP/1.1" 200 - +2025-12-26 22:27:58,684 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:27:58] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 22:27:58,688 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:27:58] "GET /api/market/config?_t=1766759278329 HTTP/1.1" 200 - +2025-12-26 22:27:58,929 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 22:27:59,156 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT&startTime=1766551918930 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-26 22:27:59,157 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 22:27:59,158 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:27:59] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 22:27:59,164 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:27:59] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 22:27:59,167 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:27:59] "GET /api/market/config?_t=1766759278757 HTTP/1.1" 200 - +2025-12-26 22:27:59,170 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:27:59] "GET /api/market/types?_t=1766759278762 HTTP/1.1" 200 - +2025-12-26 22:27:59,726 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 22:28:00,200 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT&startTime=1766551919726 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-26 22:28:00,200 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 22:28:00,201 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:28:00] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 22:28:00,203 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:28:00] "GET /api/market/types?_t=1766759279198 HTTP/1.1" 200 - +2025-12-26 22:28:17,976 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:28:17] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 22:28:20,947 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:28:20] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 22:28:22,519 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:28:22] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 22:28:23,631 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:28:23] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 22:28:24,197 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:28:24] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 22:28:25,751 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:28:25] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 22:28:28,987 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 22:28:29,456 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT&startTime=1766551948987 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-26 22:28:29,456 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 22:28:29,456 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:28:29] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 22:28:29,460 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:28:29] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 22:28:33,752 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:28:33] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 22:28:33,755 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:28:33] "GET /api/market/config?_t=1766759313745 HTTP/1.1" 200 - +2025-12-26 22:28:33,995 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 22:28:34,222 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT&startTime=1766551953995 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-26 22:28:34,222 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 22:28:34,223 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:28:34] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 22:28:34,226 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:28:34] "GET /api/market/types?_t=1766759313769 HTTP/1.1" 200 - +2025-12-26 22:28:41,251 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:28:41] "GET /api/market/config?_t=1766759321240 HTTP/1.1" 200 - +2025-12-26 22:28:41,256 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:28:41] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 22:28:41,268 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:28:41] "GET /api/market/types?_t=1766759321260 HTTP/1.1" 200 - +2025-12-26 22:28:42,081 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 22:28:42,309 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT&startTime=1766551962081 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-26 22:28:42,309 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 22:28:42,312 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:28:42] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 22:28:42,317 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:28:42] "GET /api/market/types?_t=1766759322235 HTTP/1.1" 200 - +2025-12-26 22:28:46,737 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:28:46] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 22:28:46,742 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:28:46] "GET /api/market/config?_t=1766759326410 HTTP/1.1" 200 - +2025-12-26 22:28:47,210 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 22:28:47,438 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT&startTime=1766551967211 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-26 22:28:47,438 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 22:28:47,439 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:28:47] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 22:28:47,441 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:28:47] "GET /api/market/types?_t=1766759326754 HTTP/1.1" 200 - +2025-12-26 22:28:47,947 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:28:47] "GET /api/market/types?_t=1766759327936 HTTP/1.1" 200 - +2025-12-26 22:36:40,957 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:36:40] "GET /api/market/types?_t=1766759800950 HTTP/1.1" 200 - +2025-12-26 22:37:59,961 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:37:59] "GET /api/market/types?_t=1766759879951 HTTP/1.1" 200 - +2025-12-26 22:38:12,980 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:38:12] "GET /api/market/types?_t=1766759892972 HTTP/1.1" 200 - +2025-12-26 22:38:15,253 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:38:15] "GET /api/market/types?_t=1766759894945 HTTP/1.1" 200 - +2025-12-26 22:38:25,303 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-26 22:38:25,317 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-26 22:38:25,317 - werkzeug - INFO - Press CTRL+C to quit +2025-12-26 22:38:32,221 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:38:32] "GET /api/market/types?_t=1766759912211 HTTP/1.1" 200 - +2025-12-26 22:38:35,805 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:38:35] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 22:38:38,296 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-26 22:38:38,299 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:38:38] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 22:38:38,304 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:38:38] "GET /api/market/config?_t=1766759918276 HTTP/1.1" 200 - +2025-12-26 22:38:38,784 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-26 22:38:38,785 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-26 22:38:38,785 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-26 22:38:38,785 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-26 22:38:38,785 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-26 22:38:41,047 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 22:38:41,205 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: AAPL ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (207521็ง’) +2025-12-26 22:38:42,517 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-26 22:38:42,518 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 22:38:44,969 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 00700 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (254325็ง’) +2025-12-26 22:38:44,970 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:38:44] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-26 22:38:44,972 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:38:44] "GET /api/market/types?_t=1766759918338 HTTP/1.1" 200 - +2025-12-26 22:38:51,410 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:38:51] "GET /api/market/types?_t=1766759931401 HTTP/1.1" 200 - +2025-12-26 22:52:48,097 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:52:48] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-26 22:52:48,321 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:52:48] "GET /api/market/types?_t=1766760768086 HTTP/1.1" 200 - +2025-12-26 22:52:48,396 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:52:48] "GET /api/market/types?_t=1766760768389 HTTP/1.1" 200 - +2025-12-26 22:52:48,400 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:52:48] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-26 22:52:48,433 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:52:48] "GET /api/market/types?_t=1766760768426 HTTP/1.1" 200 - +2025-12-26 22:52:48,682 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:52:48] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-26 22:52:48,740 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:52:48] "GET /api/market/types?_t=1766760768732 HTTP/1.1" 200 - +2025-12-26 22:52:48,745 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:52:48] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-26 22:52:48,780 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:52:48] "GET /api/market/types?_t=1766760768774 HTTP/1.1" 200 - +2025-12-26 22:52:49,023 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:52:49] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-26 22:52:49,082 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:52:49] "GET /api/market/types?_t=1766760769076 HTTP/1.1" 200 - +2025-12-26 22:52:49,085 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:52:49] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 22:52:49,089 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:52:49] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-26 22:52:49,413 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:52:49] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 22:52:49,417 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:52:49] "GET /api/market/types?_t=1766760769405 HTTP/1.1" 200 - +2025-12-26 22:52:49,800 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:52:49] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-26 22:52:49,802 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: AShare:600519, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-26 22:52:54,518 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:52:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 22:53:13,193 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:53:13] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 22:53:13,435 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:53:13] "GET /api/market/types?_t=1766760793181 HTTP/1.1" 200 - +2025-12-26 22:53:13,500 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:53:13] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-26 22:53:13,502 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: AShare:600519, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-26 22:53:13,503 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:53:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 22:53:39,248 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:53:39] "GET /api/market/types?_t=1766760819242 HTTP/1.1" 200 - +2025-12-26 22:53:39,513 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:53:39] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 22:53:39,560 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:53:39] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-26 22:53:39,563 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: AShare:600519, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-26 22:53:39,565 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:53:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 22:55:28,412 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-26 22:55:28,428 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-26 22:55:28,429 - werkzeug - INFO - Press CTRL+C to quit +2025-12-26 22:55:31,067 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-26 22:55:31,069 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:55:31] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 22:55:31,074 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:55:31] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-26 22:55:31,077 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:55:31] "GET /api/market/types?_t=1766760930684 HTTP/1.1" 200 - +2025-12-26 22:55:31,271 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: AShare:600519, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-26 22:55:31,366 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-26 22:55:36,816 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:55:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 22:55:38,284 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: AShare:600519, ๅ‘จๆœŸ: 4H, ๆกๆ•ฐ: 500 +2025-12-26 22:55:42,254 - app.data_sources.cn_stock - WARNING - ไธœๆ–น่ดขๅฏŒๆ— ๆ•ฐๆฎ่ฟ”ๅ›ž +2025-12-26 22:55:42,255 - app.data_sources.cn_stock - WARNING - AShare 600519 data fetch failed +2025-12-26 22:55:42,256 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:55:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 22:55:43,973 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: AShare:600519, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 500 +2025-12-26 22:55:47,221 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 600519 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (28547็ง’) +2025-12-26 22:55:47,222 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:55:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 22:55:49,072 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: AShare:600519, ๅ‘จๆœŸ: 30m, ๆกๆ•ฐ: 500 +2025-12-26 22:55:51,148 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 600519 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (28551็ง’) +2025-12-26 22:55:51,150 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:55:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 22:55:52,655 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: AShare:600519, ๅ‘จๆœŸ: 15m, ๆกๆ•ฐ: 500 +2025-12-26 22:55:55,351 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 600519 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (28555็ง’) +2025-12-26 22:55:55,353 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:55:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 22:55:56,237 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: AShare:600519, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 500 +2025-12-26 22:55:59,177 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 600519 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (28559็ง’) +2025-12-26 22:55:59,179 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:55:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 22:56:00,428 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: AShare:600519, ๅ‘จๆœŸ: 1m, ๆกๆ•ฐ: 500 +2025-12-26 22:56:02,442 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 600519 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (28562็ง’) +2025-12-26 22:56:02,443 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:56:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 22:56:04,227 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: AShare:600519, ๅ‘จๆœŸ: 4H, ๆกๆ•ฐ: 500 +2025-12-26 22:56:06,969 - app.data_sources.cn_stock - WARNING - ไธœๆ–น่ดขๅฏŒๆ— ๆ•ฐๆฎ่ฟ”ๅ›ž +2025-12-26 22:56:06,971 - app.data_sources.cn_stock - WARNING - AShare 600519 data fetch failed +2025-12-26 22:56:06,971 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:56:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 22:56:08,041 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: AShare:600519, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-26 22:56:08,042 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:56:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 22:56:08,934 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: AShare:600519, ๅ‘จๆœŸ: 1W, ๆกๆ•ฐ: 500 +2025-12-26 22:56:11,012 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:56:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 22:56:15,060 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BTC/USDT, ๅ‘จๆœŸ: 1W, ๆกๆ•ฐ: 500 +2025-12-26 22:56:17,034 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 22:56:17,253 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-26 22:56:17,254 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 22:56:17,254 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:56:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 22:56:18,518 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BTC/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-26 22:56:18,737 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 22:56:18,956 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-26 22:56:18,957 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 22:56:18,957 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:56:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 22:56:20,445 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BTC/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-26 22:56:20,664 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-26 22:56:20,883 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-26 22:56:20,884 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-26 22:56:20,884 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:56:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 22:56:55,603 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BTC/USDT, ๅ‘จๆœŸ: 4H, ๆกๆ•ฐ: 500 +2025-12-26 22:57:00,673 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:57:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 22:57:05,064 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BTC/USDT, ๅ‘จๆœŸ: 15m, ๆกๆ•ฐ: 500 +2025-12-26 22:57:05,590 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:57:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 22:57:14,877 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:57:14] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 22:57:16,428 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:57:16] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-26 22:57:20,606 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BTC/USDT, ๅ‘จๆœŸ: 15m, ๆกๆ•ฐ: 5 +2025-12-26 22:57:20,715 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:57:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 22:57:21,613 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:57:21] "POST /api/market/watchlist/add HTTP/1.1" 200 - +2025-12-26 22:57:21,872 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:57:21] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 22:57:27,283 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 15m, ๆกๆ•ฐ: 500 +2025-12-26 22:57:27,642 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:57:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 22:57:32,574 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 500 +2025-12-26 22:57:33,211 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:57:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 22:57:43,546 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 22:57:43,655 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:57:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 22:57:53,850 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 22:57:53,850 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:57:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 22:58:03,539 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 22:58:03,540 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:58:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 22:58:13,851 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 22:58:13,851 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:58:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 22:58:23,545 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 22:58:23,545 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:58:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 22:58:33,854 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 22:58:33,854 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:58:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 22:58:58,424 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 22:58:59,125 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:58:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 22:59:03,555 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 22:59:03,556 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:59:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 22:59:13,241 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 22:59:13,241 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:59:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 22:59:23,549 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 22:59:23,549 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:59:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 22:59:33,235 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 22:59:33,235 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:59:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 22:59:43,538 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 22:59:43,538 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:59:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 22:59:53,235 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 22:59:53,236 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 22:59:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:00:03,549 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:00:03,871 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:00:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:00:13,242 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:00:13,242 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:00:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:00:23,550 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:00:23,550 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:00:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:00:33,248 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:00:33,248 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:00:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:00:43,544 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:00:43,544 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:00:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:00:53,232 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:00:53,233 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:00:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:01:03,539 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:01:03,539 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:01:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:01:13,231 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:01:13,434 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:01:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:01:23,539 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:01:23,539 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:01:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:01:33,231 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:01:33,232 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:01:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:01:43,547 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:01:43,547 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:01:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:01:53,233 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:01:53,233 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:01:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:02:03,535 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:02:03,536 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:02:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:02:13,233 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:02:13,233 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:02:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:02:23,536 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:02:23,731 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:02:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:02:33,231 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:02:33,231 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:02:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:02:43,546 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:02:43,547 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:02:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:02:53,235 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:02:53,236 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:02:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:03:03,544 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:03:03,544 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:03:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:03:13,236 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:03:13,237 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:03:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:03:23,539 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:03:23,539 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:03:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:03:33,236 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:03:33,343 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:03:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:03:43,550 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:03:43,551 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:03:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:03:53,235 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:03:53,236 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:03:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:04:03,537 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:04:03,538 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:04:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:04:13,245 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:04:13,246 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:04:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:04:23,542 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:04:23,542 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:04:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:04:33,232 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:04:33,232 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:04:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:04:43,542 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:04:43,910 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:04:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:04:53,238 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:04:53,238 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:04:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:05:03,549 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:05:03,549 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:05:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:05:13,233 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:05:13,233 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:05:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:05:23,554 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:05:23,555 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:05:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:05:33,239 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:05:33,239 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:05:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:05:43,554 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:05:43,554 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:05:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:05:53,231 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:05:53,338 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:05:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:06:03,543 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:06:03,544 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:06:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:06:13,243 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:06:13,243 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:06:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:06:23,551 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:06:23,551 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:06:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:06:33,244 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:06:33,244 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:06:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:06:43,549 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:06:43,549 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:06:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:06:53,232 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:06:53,233 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:06:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:07:03,545 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:07:03,736 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:07:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:07:13,236 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:07:13,237 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:07:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:07:23,549 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:07:23,549 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:07:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:07:33,234 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:07:33,234 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:07:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:07:43,546 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:07:43,546 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:07:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:07:53,243 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:07:53,244 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:07:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:08:03,548 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:08:03,549 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:08:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:08:13,234 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:08:13,420 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:08:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:08:23,553 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:08:23,553 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:08:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:08:33,232 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:08:33,232 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:08:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:08:43,536 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:08:43,536 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:08:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:08:53,231 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:08:53,232 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:08:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:09:03,547 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:09:03,547 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:09:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:09:13,232 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:09:13,233 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:09:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:09:23,535 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:09:23,642 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:09:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:09:33,233 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:09:33,233 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:09:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:09:43,536 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:09:43,537 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:09:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:09:53,234 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:09:53,235 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:09:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:10:03,549 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:10:03,550 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:10:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:10:13,232 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:10:13,232 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:10:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:10:23,542 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:10:23,543 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:10:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:10:33,231 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:10:33,425 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:10:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:10:43,546 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:10:43,547 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:10:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:10:53,236 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:10:53,237 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:10:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:11:03,553 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:11:03,553 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:11:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:11:13,237 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:11:13,237 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:11:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:11:23,541 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:11:23,542 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:11:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:11:33,237 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:11:33,238 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:11:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:11:43,555 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:11:43,767 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:11:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:11:53,237 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:11:53,238 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:11:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:12:03,541 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:12:03,542 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:12:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:12:13,238 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:12:13,239 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:12:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:12:23,546 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:12:23,546 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:12:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:12:33,239 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:12:33,239 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:12:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:12:43,547 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:12:43,547 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:12:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:12:53,239 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:12:53,727 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:12:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:13:03,553 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:13:03,554 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:13:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:13:13,239 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:13:13,240 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:13:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:13:23,906 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:13:23,906 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:13:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:13:33,235 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:13:33,235 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:13:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:13:43,543 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:13:43,543 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:13:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:13:53,243 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:13:53,243 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:13:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:14:03,542 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:14:03,746 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:14:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:14:13,232 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:14:13,232 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:14:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:14:23,542 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:14:23,543 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:14:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:14:33,244 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:14:33,244 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:14:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:14:43,549 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:14:43,550 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:14:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:14:54,440 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:14:54,440 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:14:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:15:03,557 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:15:03,558 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:15:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:15:13,245 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:15:13,597 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:15:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:15:23,545 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:15:23,545 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:15:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:15:33,245 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:15:33,245 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:15:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:15:43,546 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:15:43,546 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:15:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:15:53,233 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:15:53,233 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:15:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:16:03,545 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-26 23:16:03,546 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:16:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:16:44,979 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 15m, ๆกๆ•ฐ: 500 +2025-12-26 23:16:45,838 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:16:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:17:01,181 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 15m, ๆกๆ•ฐ: 5 +2025-12-26 23:17:01,290 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:17:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:17:15,865 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 15m, ๆกๆ•ฐ: 5 +2025-12-26 23:17:15,866 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:17:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:17:31,168 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 15m, ๆกๆ•ฐ: 5 +2025-12-26 23:17:31,169 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:17:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:17:45,867 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 15m, ๆกๆ•ฐ: 5 +2025-12-26 23:17:45,867 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:17:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:18:01,183 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 15m, ๆกๆ•ฐ: 5 +2025-12-26 23:18:01,183 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:18:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:18:15,859 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 15m, ๆกๆ•ฐ: 5 +2025-12-26 23:18:15,859 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:18:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:18:31,175 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 15m, ๆกๆ•ฐ: 5 +2025-12-26 23:18:31,175 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:18:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:18:45,869 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 15m, ๆกๆ•ฐ: 5 +2025-12-26 23:18:45,869 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:18:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:19:01,173 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 15m, ๆกๆ•ฐ: 5 +2025-12-26 23:19:01,174 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:19:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:19:16,543 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 15m, ๆกๆ•ฐ: 5 +2025-12-26 23:19:16,544 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:19:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:19:31,175 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 15m, ๆกๆ•ฐ: 5 +2025-12-26 23:19:31,175 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:19:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:19:45,859 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 15m, ๆกๆ•ฐ: 5 +2025-12-26 23:19:45,860 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:19:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:20:01,178 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 15m, ๆกๆ•ฐ: 5 +2025-12-26 23:20:01,178 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:20:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:20:15,868 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 15m, ๆกๆ•ฐ: 5 +2025-12-26 23:20:15,869 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:20:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:20:19,610 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:20:19] "POST /api/indicator/saveIndicator HTTP/1.1" 200 - +2025-12-26 23:20:19,871 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:20:19] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-26 23:20:30,865 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 15m, ๆกๆ•ฐ: 5 +2025-12-26 23:20:30,865 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:20:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:20:43,188 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:20:43] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 23:20:43,192 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:20:43] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-26 23:20:43,193 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:20:43] "GET /api/market/types?_t=1766762442862 HTTP/1.1" 200 - +2025-12-26 23:20:43,429 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-26 23:20:44,257 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:20:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:20:47,390 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 15m, ๆกๆ•ฐ: 500 +2025-12-26 23:20:47,391 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:20:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:20:49,293 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 4H, ๆกๆ•ฐ: 500 +2025-12-26 23:20:49,958 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:20:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:25:50,291 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 4H, ๆกๆ•ฐ: 5 +2025-12-26 23:25:53,115 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:25:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:30:50,282 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 4H, ๆกๆ•ฐ: 5 +2025-12-26 23:30:50,283 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:30:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:35:50,309 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 4H, ๆกๆ•ฐ: 5 +2025-12-26 23:35:51,014 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:35:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:38:19,846 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:38:19] "GET /api/market/types?_t=1766763499527 HTTP/1.1" 200 - +2025-12-26 23:38:19,850 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:38:19] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-26 23:38:19,853 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:38:19] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-26 23:38:20,110 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-26 23:38:20,520 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:38:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:41:30,115 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:41:30] "POST /api/indicator/saveIndicator HTTP/1.1" 400 - +2025-12-26 23:41:36,385 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-26 23:41:36,400 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-26 23:41:36,400 - werkzeug - INFO - Press CTRL+C to quit +2025-12-26 23:41:37,871 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-26 23:41:37,880 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:41:37] "POST /api/indicator/saveIndicator HTTP/1.1" 200 - +2025-12-26 23:41:38,328 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:41:38] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-26 23:48:20,863 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-26 23:48:26,252 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:48:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-26 23:58:20,857 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-26 23:58:21,494 - werkzeug - INFO - 127.0.0.1 - - [26/Dec/2025 23:58:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 00:08:22,776 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-27 00:08:22,788 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-27 00:08:22,789 - werkzeug - INFO - Press CTRL+C to quit +2025-12-27 00:08:26,236 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-27 00:08:26,238 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 00:08:26] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 00:08:26,245 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 00:08:26] "GET /api/market/types?_t=1766765306218 HTTP/1.1" 200 - +2025-12-27 00:08:26,254 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 00:08:26] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 00:08:26,583 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 00:08:32,097 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 00:08:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 00:11:10,643 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 00:11:10] "POST /api/indicator/aiGenerate HTTP/1.1" 200 - +2025-12-27 00:11:17,493 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 00:11:17] "POST /api/indicator/saveIndicator HTTP/1.1" 200 - +2025-12-27 00:11:17,836 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 00:11:17] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 00:11:34,804 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 500 +2025-12-27 00:11:35,082 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 00:11:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 00:12:35,107 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 00:12:35,215 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 00:12:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 00:13:35,419 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 00:13:35,420 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 00:13:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 00:14:19,245 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 00:14:19] "POST /api/indicator/saveIndicator HTTP/1.1" 200 - +2025-12-27 00:14:19,608 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 00:14:19] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 00:14:29,239 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 00:14:29] "POST /api/indicator/deleteIndicator HTTP/1.1" 200 - +2025-12-27 00:14:29,554 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 00:14:29] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 00:14:33,009 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 00:14:33] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 00:14:33,333 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 00:14:33] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 00:14:33,341 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 00:14:33] "GET /api/market/types?_t=1766765673000 HTTP/1.1" 200 - +2025-12-27 00:14:33,349 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 00:14:33,995 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 00:14:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 00:14:59,769 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 00:14:59] "POST /api/indicator/saveIndicator HTTP/1.1" 200 - +2025-12-27 00:15:00,014 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 00:15:00] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 00:15:50,983 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 00:15:50] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 00:15:51,304 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 00:15:51] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 00:15:51,308 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 00:15:51] "GET /api/market/types?_t=1766765750974 HTTP/1.1" 200 - +2025-12-27 00:15:51,321 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 00:15:51,326 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 00:15:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 00:17:32,568 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 00:17:32] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 00:17:32,574 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 00:17:32] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 00:17:32,576 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 00:17:32] "GET /api/market/types?_t=1766765852253 HTTP/1.1" 200 - +2025-12-27 00:17:32,828 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 00:17:32,830 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 00:17:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 00:18:24,239 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 00:18:24,657 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: BNB/USDT ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (43258705็ง’) +2025-12-27 00:18:24,659 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 00:18:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 00:24:54,758 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 00:24:54] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 00:24:54,763 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 00:24:54] "GET /api/market/types?_t=1766766294732 HTTP/1.1" 200 - +2025-12-27 00:24:54,768 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 00:24:54] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 00:24:55,233 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 00:24:56,155 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 00:24:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 00:34:57,284 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-27 00:34:57,909 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 00:34:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 00:44:57,294 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-27 00:44:57,942 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 00:44:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 00:54:57,289 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-27 00:54:57,959 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 00:54:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 01:04:57,289 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-27 01:04:57,810 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:04:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 01:08:05,962 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-27 01:08:05,983 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-27 01:08:05,983 - werkzeug - INFO - Press CTRL+C to quit +2025-12-27 01:08:44,788 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-27 01:08:44,793 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:08:44] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 01:08:44,861 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:08:44] "GET /api/market/types?_t=1766768924764 HTTP/1.1" 200 - +2025-12-27 01:08:44,924 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:08:44] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 01:09:39,354 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:09:39] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 01:09:39,358 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:09:39] "GET /api/market/types?_t=1766768979342 HTTP/1.1" 200 - +2025-12-27 01:09:39,361 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:09:39] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 01:09:39,365 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:09:39] "POST /api/strategy/getStrategies HTTP/1.1" 200 - +2025-12-27 01:09:40,071 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 01:09:43,756 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:09:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 01:16:56,032 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:16:56] "POST /api/strategy/saveStrategy HTTP/1.1" 200 - +2025-12-27 01:16:56,392 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:16:56] "POST /api/strategy/getStrategies HTTP/1.1" 200 - +2025-12-27 01:19:44,102 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-27 01:19:44,669 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:19:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 01:26:29,078 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:26:29] "GET /api/market/types?_t=1766769989069 HTTP/1.1" 200 - +2025-12-27 01:26:29,251 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:26:29] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 01:26:29,296 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:26:29] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 01:26:29,396 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:26:29] "POST /api/strategy/getStrategies HTTP/1.1" 200 - +2025-12-27 01:26:29,405 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 01:26:30,375 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:26:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 01:26:35,369 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:26:35] "GET /api/market/types?_t=1766769995358 HTTP/1.1" 200 - +2025-12-27 01:26:35,379 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:26:35] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 01:26:35,677 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:26:35] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 01:26:35,680 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:26:35] "POST /api/strategy/getStrategies HTTP/1.1" 200 - +2025-12-27 01:26:35,739 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 01:26:35,741 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:26:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 01:28:45,767 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:28:45] "GET /api/market/types?_t=1766770125757 HTTP/1.1" 200 - +2025-12-27 01:28:45,968 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:28:45] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 01:28:46,014 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:28:46] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 01:28:46,109 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:28:46] "GET /api/market/types?_t=1766770126103 HTTP/1.1" 200 - +2025-12-27 01:28:46,112 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:28:46] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 01:28:46,117 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:28:46] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 01:28:46,460 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:28:46] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 01:28:46,729 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:28:46] "GET /api/market/types?_t=1766770126453 HTTP/1.1" 200 - +2025-12-27 01:28:46,762 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:28:46] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 01:28:46,808 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:28:46] "GET /api/market/types?_t=1766770126801 HTTP/1.1" 200 - +2025-12-27 01:28:46,812 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:28:46] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 01:28:47,126 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:28:47] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 01:28:47,179 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:28:47] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 01:28:47,437 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:28:47] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 01:28:47,484 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:28:47] "GET /api/market/types?_t=1766770127171 HTTP/1.1" 200 - +2025-12-27 01:28:47,524 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:28:47] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 01:28:47,529 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:28:47] "GET /api/market/types?_t=1766770127515 HTTP/1.1" 200 - +2025-12-27 01:28:47,845 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:28:47] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 01:28:47,883 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:28:47] "GET /api/market/types?_t=1766770127873 HTTP/1.1" 200 - +2025-12-27 01:28:48,155 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:28:48] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 01:28:48,187 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:28:48] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 01:28:48,234 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:28:48] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 01:28:48,242 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:28:48] "GET /api/market/types?_t=1766770128226 HTTP/1.1" 200 - +2025-12-27 01:28:48,544 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:28:48] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 01:28:48,576 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 01:28:48,578 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:28:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 01:37:01,695 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:37:01] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 01:37:01,700 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:37:01] "GET /api/market/types?_t=1766770621678 HTTP/1.1" 200 - +2025-12-27 01:37:01,706 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:37:01] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 01:37:02,245 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 01:37:02,987 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:37:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 01:38:05,210 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-27 01:38:05,225 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-27 01:38:05,225 - werkzeug - INFO - Press CTRL+C to quit +2025-12-27 01:38:16,734 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:38:16] "GET /api/market/types?_t=1766770696725 HTTP/1.1" 200 - +2025-12-27 01:38:16,915 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-27 01:38:16,916 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:38:16] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 01:38:16,964 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:38:16] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 01:38:17,037 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 01:38:20,610 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:38:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 01:40:50,529 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:40:50] "GET /api/market/types?_t=1766770850518 HTTP/1.1" 200 - +2025-12-27 01:40:50,534 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:40:50] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 01:40:50,539 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:40:50] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 01:40:51,002 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 01:40:51,007 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:40:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 01:42:58,026 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:42:58] "GET /api/market/types?_t=1766770978013 HTTP/1.1" 200 - +2025-12-27 01:42:58,036 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:42:58] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 01:42:58,043 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:42:58] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 01:42:58,235 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 01:42:58,237 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:42:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 01:44:27,092 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:44:27] "GET /api/market/types?_t=1766771067079 HTTP/1.1" 200 - +2025-12-27 01:44:27,100 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:44:27] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 01:44:27,111 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:44:27] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 01:44:27,468 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 01:44:28,177 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:44:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 01:44:35,221 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-27 01:44:35,247 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-27 01:44:35,247 - werkzeug - INFO - Press CTRL+C to quit +2025-12-27 01:44:37,700 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-27 01:44:37,705 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:44:37] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 01:44:38,009 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:44:38] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 01:44:38,013 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:44:38] "GET /api/market/types?_t=1766771077690 HTTP/1.1" 200 - +2025-12-27 01:44:38,061 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 01:44:41,840 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:44:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 01:45:22,229 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 01:45:22,246 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:45:22] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 01:51:18,674 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:51:18] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 01:51:18,876 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:51:18] "GET /api/market/types?_t=1766771478667 HTTP/1.1" 200 - +2025-12-27 01:51:18,924 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:51:18] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 01:51:18,982 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 01:51:19,723 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:51:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 01:55:03,779 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:55:03] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 01:55:03,998 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:55:03] "GET /api/market/types?_t=1766771703773 HTTP/1.1" 200 - +2025-12-27 01:55:04,041 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:55:04] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 01:55:04,086 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 01:55:04,089 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:55:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 01:55:12,251 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-27 01:55:12,264 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-27 01:55:12,264 - werkzeug - INFO - Press CTRL+C to quit +2025-12-27 01:55:14,964 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-27 01:55:14,967 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:55:14] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 01:55:14,975 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:55:14] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 01:55:15,253 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:55:15] "GET /api/market/types?_t=1766771714938 HTTP/1.1" 200 - +2025-12-27 01:55:15,317 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 01:55:18,894 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 01:55:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 02:01:54,122 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:01:54] "GET /api/market/types?_t=1766772114113 HTTP/1.1" 200 - +2025-12-27 02:01:54,126 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:01:54] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 02:01:54,131 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:01:54] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 02:01:54,184 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 02:01:54,903 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:01:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 02:02:21,551 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 02:02:21,577 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:02:21] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 02:02:42,365 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 02:02:42,387 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:02:42] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 02:07:02,731 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:07:02] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 02:07:02,740 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:07:02] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 02:07:02,743 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:07:02] "GET /api/market/types?_t=1766772422712 HTTP/1.1" 200 - +2025-12-27 02:07:02,803 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 02:07:03,619 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:07:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 02:07:50,641 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:07:50] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 02:07:50,648 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:07:50] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 02:07:50,652 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:07:50] "GET /api/market/types?_t=1766772470627 HTTP/1.1" 200 - +2025-12-27 02:07:50,747 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 02:07:50,757 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:07:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 02:11:05,975 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:11:05] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 02:11:05,980 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:11:05] "GET /api/market/types?_t=1766772665955 HTTP/1.1" 200 - +2025-12-27 02:11:05,985 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:11:05] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 02:11:06,070 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 02:11:06,075 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:11:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 02:11:29,330 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:11:29] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 02:11:29,334 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:11:29] "GET /api/market/types?_t=1766772689319 HTTP/1.1" 200 - +2025-12-27 02:11:29,337 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:11:29] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 02:11:29,452 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 02:11:29,454 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:11:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 02:21:29,809 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-27 02:21:30,332 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:21:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 02:28:39,388 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:28:39] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 02:28:39,392 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:28:39] "GET /api/market/types?_t=1766773719371 HTTP/1.1" 200 - +2025-12-27 02:28:39,396 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:28:39] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 02:28:39,470 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 02:28:40,168 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:28:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 02:31:27,224 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:31:27] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 02:31:27,231 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:31:27] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 02:31:27,236 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:31:27] "GET /api/market/types?_t=1766773887199 HTTP/1.1" 200 - +2025-12-27 02:31:27,315 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 02:31:27,322 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:31:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 02:31:30,543 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:31:30] "GET /api/market/types?_t=1766773890532 HTTP/1.1" 200 - +2025-12-27 02:31:30,547 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:31:30] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 02:31:30,554 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:31:30] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 02:31:30,615 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 02:31:30,618 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:31:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 02:31:52,511 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:31:52] "GET /api/market/types?_t=1766773912497 HTTP/1.1" 200 - +2025-12-27 02:31:52,515 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:31:52] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 02:31:52,521 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:31:52] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 02:31:52,601 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 02:31:52,607 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:31:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 02:33:36,257 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:33:36] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 02:33:36,263 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:33:36] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 02:33:36,266 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:33:36] "GET /api/market/types?_t=1766774016233 HTTP/1.1" 200 - +2025-12-27 02:33:36,348 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 02:33:36,352 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:33:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 02:36:36,727 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 02:36:36,735 - app.services.backtest - WARNING - ๅš็ฉบ็ˆ†ไป“๏ผๅผ€ไป“ไปท=593.88, ๅฝ“ๅ‰ไปท=666.29, ็ˆ†ไป“็บฟ=653.27 +2025-12-27 02:36:36,750 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:36:36] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 02:43:36,791 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-27 02:43:37,334 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:43:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 02:43:57,048 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:43:57] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 02:43:57,361 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:43:57] "GET /api/market/config?_t=1766774637025 HTTP/1.1" 200 - +2025-12-27 02:43:57,623 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-27 02:43:57,624 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-27 02:43:57,624 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-27 02:43:57,624 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-27 02:43:57,624 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-27 02:43:58,718 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 00700 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (269039็ง’) +2025-12-27 02:43:58,871 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:43:58] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-27 02:43:58,874 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:43:58] "GET /api/market/types?_t=1766774637374 HTTP/1.1" 200 - +2025-12-27 02:43:59,777 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:43:59] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-27 02:44:00,691 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:44:00] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-27 02:44:04,922 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:44:04] "POST /api/market/symbols/search HTTP/1.1" 200 - +2025-12-27 02:44:06,810 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:44:06] "POST /api/market/symbols/search HTTP/1.1" 200 - +2025-12-27 02:44:20,353 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:44:20] "POST /api/market/watchlist/add HTTP/1.1" 200 - +2025-12-27 02:44:20,611 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:44:20] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 02:44:21,787 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:44:21] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-27 02:44:28,039 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:44:28] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-27 02:44:31,757 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:44:31] "POST /api/market/watchlist/remove HTTP/1.1" 200 - +2025-12-27 02:44:32,002 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:44:32] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 02:44:32,076 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:44:32] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-27 02:44:57,005 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:44:57] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-27 02:45:26,996 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:45:26] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-27 02:45:32,061 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:45:32] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 02:45:32,070 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:45:32] "GET /api/market/types?_t=1766774732042 HTTP/1.1" 200 - +2025-12-27 02:45:32,081 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:45:32] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 02:45:32,109 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 02:45:32,280 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:45:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 02:46:50,642 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 02:46:50,667 - app.services.backtest - WARNING - ๅนณ็ฉบๆ—ถ่ต„้‡‘ไธ่ถณ็ˆ†ไป“: ๆœฌ้‡‘=3754.99, ไบๆŸ=6846.80 +2025-12-27 02:46:50,681 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:46:50] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 02:51:27,925 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-27 02:51:27,939 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-27 02:51:27,939 - werkzeug - INFO - Press CTRL+C to quit +2025-12-27 02:52:18,623 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-27 02:52:21,625 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 02:52:21,632 - app.routes.backtest - ERROR - ๅ›žๆต‹ๅคฑ่ดฅ: name 'stop_loss_pct_eff' is not defined +2025-12-27 02:52:21,635 - app.routes.backtest - ERROR - Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\quantdinger\backend_api_python\app\routes\backtest.py", line 117, in run_backtest + result = backtest_service.run( + indicator_code=indicator_code, + ...<10 lines>... + strategy_config=strategy_config + ) + File "C:\Users\Administrator\Desktop\Xtrade\quantdinger\backend_api_python\app\services\backtest.py", line 131, in run + equity_curve, trades, total_commission = self._simulate_trading( + ~~~~~~~~~~~~~~~~~~~~~~^ + df, signals, initial_capital, commission, slippage, leverage, trade_direction, strategy_config + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "C:\Users\Administrator\Desktop\Xtrade\quantdinger\backend_api_python\app\services\backtest.py", line 417, in _simulate_trading + return self._simulate_trading_old_format(df, signals, initial_capital, commission, slippage, leverage, trade_direction, strategy_config) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\Administrator\Desktop\Xtrade\quantdinger\backend_api_python\app\services\backtest.py", line 1566, in _simulate_trading_old_format + if stop_loss_pct_eff > 0: + ^^^^^^^^^^^^^^^^^ +NameError: name 'stop_loss_pct_eff' is not defined. Did you mean: 'stop_loss_pct'? + +2025-12-27 02:52:21,644 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:52:21] "POST /api/indicator/backtest HTTP/1.1" 500 - +2025-12-27 02:54:38,493 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-27 02:54:38,508 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-27 02:54:38,508 - werkzeug - INFO - Press CTRL+C to quit +2025-12-27 02:55:16,122 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-27 02:55:19,093 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 02:55:19,107 - app.services.backtest - WARNING - ๅนณ็ฉบๆ—ถ่ต„้‡‘ไธ่ถณ็ˆ†ไป“: ๆœฌ้‡‘=3754.99, ไบๆŸ=6846.80 +2025-12-27 02:55:19,163 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:55:19] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 02:55:32,659 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-27 02:55:32,765 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 02:55:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 03:05:32,645 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-27 03:05:33,165 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:05:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 03:10:51,808 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:10:51] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 03:10:51,816 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:10:51] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 03:10:51,822 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:10:51] "GET /api/market/types?_t=1766776251782 HTTP/1.1" 200 - +2025-12-27 03:10:51,866 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 03:10:52,629 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:10:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 03:10:59,895 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:10:59] "GET /api/market/types?_t=1766776259886 HTTP/1.1" 200 - +2025-12-27 03:10:59,899 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:10:59] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 03:10:59,905 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:10:59] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 03:10:59,958 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 03:10:59,959 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:10:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 03:11:14,165 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:11:14] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 03:11:14,189 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:11:14] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 03:11:14,633 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 03:11:14,636 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:11:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 03:11:16,029 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:11:16] "GET /api/market/types?_t=1766776274120 HTTP/1.1" 200 - +2025-12-27 03:12:55,371 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 03:12:55,399 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:12:55] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 03:13:04,811 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:13:04] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 03:13:04,816 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:13:04] "GET /api/market/types?_t=1766776384782 HTTP/1.1" 200 - +2025-12-27 03:13:04,820 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:13:04] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 03:13:04,896 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 03:13:04,900 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:13:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 03:13:12,259 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:13:12] "GET /api/market/types?_t=1766776392244 HTTP/1.1" 200 - +2025-12-27 03:13:12,264 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:13:12] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 03:13:12,270 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:13:12] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 03:13:12,369 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 03:13:12,371 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:13:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 03:13:26,712 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:13:26] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 03:13:26,719 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:13:26] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 03:13:26,722 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:13:26] "GET /api/market/types?_t=1766776406699 HTTP/1.1" 200 - +2025-12-27 03:13:26,779 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 03:13:26,781 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:13:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 03:14:01,797 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 03:14:01,822 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:14:01] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 03:14:10,833 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 03:14:10,857 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:14:10] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 03:14:23,458 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 03:14:23,484 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:14:23] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 03:14:41,232 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 500 +2025-12-27 03:14:41,400 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:14:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 03:15:41,741 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 03:15:41,847 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:15:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 03:15:46,012 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 03:15:46,340 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:15:46] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 03:16:02,721 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 03:16:03,047 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:16:03] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 03:16:11,602 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 03:16:11,921 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:16:11] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 03:16:41,739 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 03:16:41,740 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:16:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 03:17:41,437 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 03:17:41,437 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:17:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 03:17:47,998 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 03:17:48,354 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:17:48] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 03:18:41,427 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 03:18:41,427 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:18:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 03:19:02,021 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-27 03:19:02,034 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-27 03:19:02,034 - werkzeug - INFO - Press CTRL+C to quit +2025-12-27 03:19:34,234 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-27 03:19:39,112 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 03:19:39,393 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:19:39] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 03:19:41,435 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 03:19:41,540 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:19:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 03:20:41,732 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 03:20:41,732 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:20:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 03:21:18,610 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 03:21:18,819 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:21:18] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 03:21:41,743 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 03:21:41,744 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:21:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 03:22:41,429 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 03:22:41,429 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:22:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 03:23:41,735 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 03:23:41,736 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:23:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 03:24:41,428 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 03:24:41,429 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:24:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 03:25:41,745 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 03:25:42,264 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:25:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 03:26:35,275 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-27 03:26:35,291 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-27 03:26:35,291 - werkzeug - INFO - Press CTRL+C to quit +2025-12-27 03:26:41,424 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 03:26:44,495 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:26:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 03:27:00,594 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-27 03:27:02,582 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 03:27:02,927 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:27:02] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 03:27:41,427 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 03:27:41,427 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:27:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 03:28:41,745 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 03:28:41,746 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:28:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 03:29:41,429 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 03:29:41,429 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:29:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 03:30:40,953 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-27 03:30:40,967 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-27 03:30:40,967 - werkzeug - INFO - Press CTRL+C to quit +2025-12-27 03:30:41,737 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 03:30:44,763 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:30:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 03:31:02,486 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-27 03:31:04,309 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 03:31:04,681 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:31:04] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 03:31:41,749 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 03:31:41,749 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:31:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 03:32:41,436 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 03:32:41,437 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:32:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 03:33:41,733 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 03:33:41,734 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:33:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 03:33:50,996 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 03:33:51,328 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:33:51] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 03:34:41,747 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 03:34:41,747 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:34:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 03:35:41,430 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 03:35:41,430 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:35:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 03:36:41,733 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 03:36:41,839 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:36:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 03:37:41,428 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 03:37:41,428 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:37:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 03:38:41,742 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 03:38:41,743 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:38:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 03:39:41,437 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 03:39:41,437 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:39:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 03:40:41,743 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 03:40:41,744 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:40:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 03:41:41,436 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 03:41:41,437 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:41:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 03:42:41,745 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 03:42:42,257 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:42:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 03:42:58,629 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:42:58] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 03:42:58,632 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:42:58] "GET /api/market/types?_t=1766778178617 HTTP/1.1" 200 - +2025-12-27 03:42:58,636 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:42:58] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 03:42:58,714 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 03:42:58,886 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:42:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 03:43:26,642 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:43:26] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 03:43:26,646 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:43:26] "GET /api/market/types?_t=1766778206631 HTTP/1.1" 200 - +2025-12-27 03:43:26,649 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:43:26] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 03:43:26,758 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 03:43:26,763 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:43:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 03:43:40,343 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-27 03:43:40,367 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-27 03:43:40,367 - werkzeug - INFO - Press CTRL+C to quit +2025-12-27 03:43:45,401 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-27 03:43:45,411 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:43:45] "POST /api/indicator/saveIndicator HTTP/1.1" 200 - +2025-12-27 03:43:45,657 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:43:45] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 03:44:44,887 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 03:44:44,898 - app.services.backtest - WARNING - [K็บฟ287] ๅผ€็ฉบๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=1102.47, ๆœ€้ซ˜=1278.52, ็ˆ†ไป“็บฟ=1212.72, ๆญขๆŸ็บฟ=1107.98, ๆญขๆŸ้˜ˆๅ€ผ=0.5000%, ๆ—ถ้—ด=2025-10-10 00:00:00 +2025-12-27 03:44:44,899 - app.services.backtest - WARNING - [K็บฟ289] ๅผ€ๅคšๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=1302.65, ๆœ€ไฝŽ=1107.43, ็ˆ†ไป“็บฟ=1172.39, ๆญขๆŸ็บฟ=1296.14, ๆญขๆŸ้˜ˆๅ€ผ=0.5000%, ๆ—ถ้—ด=2025-10-12 00:00:00 +2025-12-27 03:44:44,913 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 03:44:44] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 15:47:07,629 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-27 15:47:07,646 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-27 15:47:07,646 - werkzeug - INFO - Press CTRL+C to quit +2025-12-27 15:47:10,114 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-27 15:47:10,116 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 15:47:10] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 15:47:10,122 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 15:47:10] "GET /api/market/config?_t=1766821630100 HTTP/1.1" 200 - +2025-12-27 15:47:10,602 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-27 15:47:10,602 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-27 15:47:10,603 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-27 15:47:10,603 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-27 15:47:10,603 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-27 15:47:12,186 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-27 15:47:12,328 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-27 15:47:12,420 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-27 15:47:12,420 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BNB/USDT +2025-12-27 15:47:12,562 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-27 15:47:12,562 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-27 15:47:14,683 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 00700 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (316035็ง’) +2025-12-27 15:47:21,406 - urllib3.connectionpool - WARNING - Retrying (Retry(total=2, connect=3, read=3, redirect=None, status=None)) after connection broken by 'SSLError(SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1020)'))': /api/qt/stock/kline/get?secid=1.600519&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2025-12-27 15:47:26,273 - urllib3.connectionpool - WARNING - Retrying (Retry(total=2, connect=3, read=2, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Read timed out. (read timeout=15)")': /api/qt/stock/kline/get?secid=0.300475&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2025-12-27 15:47:26,289 - urllib3.connectionpool - WARNING - Retrying (Retry(total=2, connect=3, read=2, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Read timed out. (read timeout=15)")': /api/qt/stock/kline/get?secid=0.000858&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2025-12-27 15:47:28,815 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 15:47:28] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-27 15:47:28,819 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 15:47:28] "GET /api/market/types?_t=1766821630153 HTTP/1.1" 200 - +2025-12-27 15:47:40,318 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-27 15:47:40,719 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-27 15:47:40,720 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-27 15:47:41,534 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-27 15:47:41,753 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-27 15:47:41,754 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BNB/USDT +2025-12-27 15:47:41,755 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 15:47:41] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-27 15:48:10,651 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-27 15:48:10,834 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-27 15:48:11,034 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-27 15:48:11,034 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BNB/USDT +2025-12-27 15:48:11,235 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-27 15:48:11,235 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-27 15:48:11,236 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 15:48:11] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-27 15:48:25,843 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 15:48:25] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 15:48:26,157 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 15:48:26] "GET /api/market/types?_t=1766821705830 HTTP/1.1" 200 - +2025-12-27 15:48:26,166 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 15:48:26] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 15:48:26,188 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 15:48:26,408 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-27 15:48:26,627 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-27 15:48:26,628 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BNB/USDT +2025-12-27 15:48:26,628 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 15:48:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 15:48:27,818 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 15:48:27] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 15:48:27,823 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 15:48:27] "GET /api/market/config?_t=1766821707486 HTTP/1.1" 200 - +2025-12-27 15:48:28,270 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-27 15:48:28,473 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-27 15:48:28,674 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-27 15:48:28,674 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BNB/USDT +2025-12-27 15:48:28,872 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-27 15:48:28,873 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-27 15:48:28,873 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 15:48:28] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-27 15:48:28,877 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 15:48:28] "GET /api/market/types?_t=1766821707833 HTTP/1.1" 200 - +2025-12-27 15:48:37,921 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 15:48:37] "GET /api/market/config?_t=1766821717913 HTTP/1.1" 200 - +2025-12-27 15:48:38,225 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 15:48:38] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 15:48:38,240 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 15:48:38] "GET /api/market/types?_t=1766821717929 HTTP/1.1" 200 - +2025-12-27 15:48:44,762 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 15:48:44] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-27 15:48:47,368 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 15:48:47] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 15:48:47,374 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 15:48:47] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 15:48:47,381 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 15:48:47] "GET /api/market/types?_t=1766821727031 HTTP/1.1" 200 - +2025-12-27 15:48:47,602 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 15:48:48,345 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 15:48:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 15:48:49,747 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 4H, ๆกๆ•ฐ: 500 +2025-12-27 15:48:50,319 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 15:48:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 15:48:51,739 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 15:48:51,740 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 15:48:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 15:49:03,636 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 15:49:03] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 15:49:03,641 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 15:49:03] "GET /api/market/types?_t=1766821743614 HTTP/1.1" 200 - +2025-12-27 15:49:03,646 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 15:49:03] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 15:49:03,704 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 15:49:03,706 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 15:49:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 15:51:04,014 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 15:51:04] "POST /api/indicator/aiGenerate HTTP/1.1" 200 - +2025-12-27 15:51:11,849 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 15:51:11] "POST /api/indicator/saveIndicator HTTP/1.1" 200 - +2025-12-27 15:51:12,205 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 15:51:12] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 15:53:21,437 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 15:53:21] "POST /api/indicator/saveIndicator HTTP/1.1" 200 - +2025-12-27 15:53:21,695 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 15:53:21] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 15:59:04,164 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-27 15:59:05,220 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 15:59:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:02:08,809 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:02:08] "GET /api/market/types?_t=1766822528796 HTTP/1.1" 200 - +2025-12-27 16:02:08,814 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:02:08] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 16:02:08,819 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:02:08] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 16:02:08,889 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 16:02:09,759 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:02:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:04:22,545 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-27 16:04:22,560 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-27 16:04:22,560 - werkzeug - INFO - Press CTRL+C to quit +2025-12-27 16:04:26,469 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 4H, ๆกๆ•ฐ: 500 +2025-12-27 16:04:33,637 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:04:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:04:37,318 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:04:37] "GET /api/market/types?_t=1766822677301 HTTP/1.1" 200 - +2025-12-27 16:04:37,325 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-27 16:04:37,327 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:04:37] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 16:04:37,334 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:04:37] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 16:04:37,403 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 16:04:37,991 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:04:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:07:33,382 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:07:33] "POST /api/indicator/saveIndicator HTTP/1.1" 200 - +2025-12-27 16:07:33,641 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:07:33] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 16:11:18,166 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:11:18] "POST /api/indicator/saveIndicator HTTP/1.1" 200 - +2025-12-27 16:11:18,409 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:11:18] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 16:11:41,664 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 4H, ๆกๆ•ฐ: 500 +2025-12-27 16:11:43,822 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:11:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:11:46,983 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 4H, ๆกๆ•ฐ: 500 +2025-12-27 16:11:47,609 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: BNB/USDT ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (7200708็ง’) +2025-12-27 16:11:47,610 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:11:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:11:48,536 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 4H, ๆกๆ•ฐ: 500 +2025-12-27 16:11:49,131 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: BNB/USDT ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (14400709็ง’) +2025-12-27 16:11:49,132 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:11:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:13:20,172 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:13:20] "POST /api/indicator/saveIndicator HTTP/1.1" 200 - +2025-12-27 16:13:20,435 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:13:20] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 16:13:26,354 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:13:26] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 16:13:26,661 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:13:26] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 16:13:26,665 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:13:26] "GET /api/market/types?_t=1766823206347 HTTP/1.1" 200 - +2025-12-27 16:13:26,677 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 16:13:27,295 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:13:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:13:43,321 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:13:43] "POST /api/indicator/saveIndicator HTTP/1.1" 200 - +2025-12-27 16:13:43,582 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:13:43] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 16:14:19,338 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 500 +2025-12-27 16:14:20,090 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:14:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:14:22,878 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 15m, ๆกๆ•ฐ: 500 +2025-12-27 16:14:23,617 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:14:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:14:38,650 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 15m, ๆกๆ•ฐ: 5 +2025-12-27 16:14:39,015 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:14:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:14:53,954 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 15m, ๆกๆ•ฐ: 5 +2025-12-27 16:14:53,954 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:14:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:15:08,654 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 15m, ๆกๆ•ฐ: 5 +2025-12-27 16:15:08,654 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:15:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:15:23,958 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 15m, ๆกๆ•ฐ: 5 +2025-12-27 16:15:23,958 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:15:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:15:38,641 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 15m, ๆกๆ•ฐ: 5 +2025-12-27 16:15:38,642 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:15:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:15:49,052 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:15:49] "POST /api/indicator/saveIndicator HTTP/1.1" 200 - +2025-12-27 16:15:49,298 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:15:49] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 16:15:53,654 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 15m, ๆกๆ•ฐ: 5 +2025-12-27 16:15:53,654 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:15:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:16:08,964 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 15m, ๆกๆ•ฐ: 5 +2025-12-27 16:16:08,964 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:16:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:16:23,639 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 15m, ๆกๆ•ฐ: 5 +2025-12-27 16:16:23,640 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:16:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:16:38,947 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 15m, ๆกๆ•ฐ: 5 +2025-12-27 16:16:38,947 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:16:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:16:53,641 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 15m, ๆกๆ•ฐ: 5 +2025-12-27 16:16:53,641 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:16:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:16:57,516 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:16:57] "POST /api/indicator/saveIndicator HTTP/1.1" 200 - +2025-12-27 16:16:57,748 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:16:57] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 16:17:08,640 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 15m, ๆกๆ•ฐ: 5 +2025-12-27 16:17:08,640 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:17:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:17:23,949 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 15m, ๆกๆ•ฐ: 5 +2025-12-27 16:17:23,950 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:17:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:17:38,642 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 15m, ๆกๆ•ฐ: 5 +2025-12-27 16:17:38,643 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:17:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:17:53,952 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 15m, ๆกๆ•ฐ: 5 +2025-12-27 16:17:53,952 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:17:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:17:57,350 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 500 +2025-12-27 16:17:58,572 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:17:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:18:08,900 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-27 16:18:09,112 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:18:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:18:18,593 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-27 16:18:18,593 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:18:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:18:28,902 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-27 16:18:28,902 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:18:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:18:38,594 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-27 16:18:38,594 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:18:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:18:48,906 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-27 16:18:48,907 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:18:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:18:58,592 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-27 16:18:58,592 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:18:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:19:08,902 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-27 16:19:08,902 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:19:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:19:18,596 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-27 16:19:18,997 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:19:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:19:28,906 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-27 16:19:28,907 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:19:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:19:38,596 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-27 16:19:38,596 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:19:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:19:48,902 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-27 16:19:48,902 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:19:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:19:58,596 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-27 16:19:58,597 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:19:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:20:08,913 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-27 16:20:08,913 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:20:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:20:18,598 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-27 16:20:18,599 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:20:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:20:28,901 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 5m, ๆกๆ•ฐ: 5 +2025-12-27 16:20:29,016 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:20:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:20:36,348 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 16:20:37,058 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:20:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:26:34,848 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: HShare:00700, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 16:26:34,968 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-27 16:26:37,851 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 00700 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (318398็ง’) +2025-12-27 16:26:37,853 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:26:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:26:39,290 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:26:39] "GET /api/market/types?_t=1766823999275 HTTP/1.1" 200 - +2025-12-27 16:26:39,294 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:26:39] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 16:26:39,300 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:26:39] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 16:26:39,397 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 16:26:40,798 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:26:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:26:41,552 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: AShare:300475, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 16:26:41,553 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-27 16:26:42,718 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:26:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:30:23,502 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: AShare:300475, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 16:30:25,788 - app.data_sources.base - WARNING - AShare: 300475 ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-27 16:30:25,789 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:30:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:36:11,162 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-27 16:36:11,179 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-27 16:36:11,179 - werkzeug - INFO - Press CTRL+C to quit +2025-12-27 16:36:43,828 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: AShare:300475, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-27 16:36:43,925 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-27 16:36:45,137 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:36:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:39:36,592 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:39:36] "POST /api/indicator/aiGenerate HTTP/1.1" 200 - +2025-12-27 16:39:42,387 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-27 16:39:42,396 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:39:42] "POST /api/indicator/saveIndicator HTTP/1.1" 200 - +2025-12-27 16:39:42,753 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:39:42] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 16:43:35,132 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:43:35] "POST /api/indicator/saveIndicator HTTP/1.1" 200 - +2025-12-27 16:43:35,379 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:43:35] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 16:43:42,225 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: AShare:300475, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 500 +2025-12-27 16:43:43,483 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 300475 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (92623็ง’) +2025-12-27 16:43:43,484 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:43:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:43:43,813 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: AShare:300475, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 500 +2025-12-27 16:43:44,808 - app.data_sources.base - WARNING - AShare: 300475 ๆœช่Žทๅ–ๅˆฐๆ•ฐๆฎ +2025-12-27 16:43:44,809 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:43:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:43:47,543 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: AShare:300475, ๅ‘จๆœŸ: 30m, ๆกๆ•ฐ: 500 +2025-12-27 16:43:49,912 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 300475 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (92630็ง’) +2025-12-27 16:43:49,913 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:43:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:44:01,356 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Forex:XAUUSD, ๅ‘จๆœŸ: 30m, ๆกๆ•ฐ: 500 +2025-12-27 16:44:03,978 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:44:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:44:14,113 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 30m, ๆกๆ•ฐ: 500 +2025-12-27 16:44:27,871 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:44:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:44:58,211 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 30m, ๆกๆ•ฐ: 5 +2025-12-27 16:44:58,422 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:44:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:45:27,901 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 30m, ๆกๆ•ฐ: 5 +2025-12-27 16:45:27,901 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:45:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:45:58,827 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 30m, ๆกๆ•ฐ: 5 +2025-12-27 16:45:58,828 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:45:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:46:28,507 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 30m, ๆกๆ•ฐ: 5 +2025-12-27 16:46:28,507 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:46:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:46:58,844 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 30m, ๆกๆ•ฐ: 5 +2025-12-27 16:46:58,844 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:46:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:47:06,356 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:47:06] "POST /api/indicator/saveIndicator HTTP/1.1" 200 - +2025-12-27 16:47:06,715 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:47:06] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 16:47:27,907 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 30m, ๆกๆ•ฐ: 5 +2025-12-27 16:47:27,907 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:47:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:47:58,216 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 30m, ๆกๆ•ฐ: 5 +2025-12-27 16:47:58,216 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:47:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:48:03,478 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 30m, ๆกๆ•ฐ: 500 +2025-12-27 16:48:04,029 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: BNB/USDT ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (901084็ง’) +2025-12-27 16:48:04,030 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:48:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:48:10,208 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 500 +2025-12-27 16:48:10,744 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:48:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:48:14,160 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 30m, ๆกๆ•ฐ: 500 +2025-12-27 16:48:14,161 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:48:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:48:16,443 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:48:16] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 16:48:16,447 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:48:16] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 16:48:16,449 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:48:16] "GET /api/market/types?_t=1766825296122 HTTP/1.1" 200 - +2025-12-27 16:48:16,707 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 16:48:17,651 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:48:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 16:58:17,988 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-27 16:58:19,844 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 16:58:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 17:02:40,845 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:02:40] "POST /api/indicator/saveIndicator HTTP/1.1" 200 - +2025-12-27 17:02:41,105 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:02:41] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 17:08:17,984 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-27 17:08:19,066 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:08:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 17:17:51,305 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:17:51] "POST /api/indicator/aiGenerate HTTP/1.1" 200 - +2025-12-27 17:17:55,764 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:17:55] "POST /api/indicator/saveIndicator HTTP/1.1" 200 - +2025-12-27 17:17:56,105 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:17:56] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 17:18:17,328 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 17:18:19,024 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: BNB/USDT ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (43233499็ง’) +2025-12-27 17:18:19,026 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:18:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 17:18:19,029 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-27 17:18:19,892 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:18:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 17:18:44,003 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:18:44] "POST /api/indicator/aiGenerate HTTP/1.1" 200 - +2025-12-27 17:18:49,937 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:18:49] "POST /api/indicator/saveIndicator HTTP/1.1" 200 - +2025-12-27 17:18:50,284 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:18:50] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 17:25:21,908 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:25:21] "GET /api/market/types?_t=1766827521888 HTTP/1.1" 200 - +2025-12-27 17:25:21,914 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:25:21] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 17:25:21,924 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:25:21] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 17:25:21,994 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 17:25:24,218 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:25:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 17:29:08,517 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:29:08] "POST /api/indicator/saveIndicator HTTP/1.1" 200 - +2025-12-27 17:29:08,761 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:29:08] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 17:30:47,818 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:30:47] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 17:30:47,997 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:30:47] "GET /api/market/config?_t=1766827847804 HTTP/1.1" 200 - +2025-12-27 17:30:48,137 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-27 17:30:48,138 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-27 17:30:50,219 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 00700 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (322250็ง’) +2025-12-27 17:30:51,144 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:30:51] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-27 17:30:51,147 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:30:51] "GET /api/market/types?_t=1766827848010 HTTP/1.1" 200 - +2025-12-27 17:30:54,902 - app.routes.analysis - INFO - Analyze request: Futures:SI, use_multi_agent=True, model=openai/gpt-4o-mini +2025-12-27 17:30:54,915 - app.services.analysis - INFO - Multi-agent coordinator initialized +2025-12-27 17:30:54,916 - app.services.analysis - INFO - Starting analysis Futures:SI, language=zh-TW, mode=multi-agent +2025-12-27 17:30:54,916 - app.services.analysis - INFO - Run coordinator: Futures:SI +2025-12-27 17:30:54,916 - app.services.agents.coordinator - INFO - Multi-agent analysis start: Futures:SI, model=openai/gpt-4o-mini, language=zh-TW +2025-12-27 17:30:57,566 - app.services.agents.tools - INFO - Running news search: "SI" SI stock news +2025-12-27 17:30:59,804 - app.services.agents.tools - INFO - Deep reading: Investor Relations - Quantum-Si Incorporated +2025-12-27 17:31:04,459 - app.services.agents.tools - INFO - Deep reading: Shoulder Innovations, Inc. (SI) Stock Price, News, Quote & History ... +2025-12-27 17:31:06,589 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2025-12-27 17:31:16,838 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2025-12-27 17:31:26,139 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2025-12-27 17:31:34,480 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2025-12-27 17:31:42,740 - app.services.agents.coordinator - WARNING - Record reflection failed: 'NoneType' object has no attribute 'get' +2025-12-27 17:31:42,740 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: Futures:SI +2025-12-27 17:31:42,740 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2025-12-27 17:31:42,742 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2025-12-27 17:31:42,750 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:31:42] "POST /api/analysis/multiAnalysis HTTP/1.1" 200 - +2025-12-27 17:31:42,753 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:31:42] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-27 17:31:48,100 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:31:48] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-27 17:32:17,804 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:32:17] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-27 17:32:48,115 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:32:48] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-27 17:33:17,797 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:33:17] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-27 17:33:27,961 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:33:27] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-27 17:33:47,797 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:33:47] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-27 17:34:18,111 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:34:18] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-27 17:34:47,799 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:34:47] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-27 17:35:18,104 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:35:18] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-27 17:35:47,795 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:35:47] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-27 17:36:17,530 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:36:17] "GET /api/market/types?_t=1766828177215 HTTP/1.1" 200 - +2025-12-27 17:36:17,534 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:36:17] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 17:36:17,540 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:36:17] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 17:36:17,788 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 17:36:19,939 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:36:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 17:36:36,877 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:36:36] "POST /api/indicator/aiGenerate HTTP/1.1" 200 - +2025-12-27 17:36:42,335 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:36:42] "POST /api/indicator/saveIndicator HTTP/1.1" 200 - +2025-12-27 17:36:42,597 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:36:42] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 17:38:44,322 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 17:38:44,346 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:38:44] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 17:39:50,687 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 17:39:50,692 - app.services.backtest - WARNING - ๅšๅคš็ˆ†ไป“๏ผๅผ€ไป“ไปท=698.89, ๆœ€ไฝŽไปท=600.00, ็ˆ†ไป“็บฟ=629.00, ๆญขๆŸไปท=0.00 +2025-12-27 17:39:50,706 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:39:50] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 17:40:25,521 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 17:40:25,543 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:40:25] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 17:40:59,805 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 17:40:59,810 - app.services.backtest - WARNING - ๅšๅคš็ˆ†ไป“๏ผๅผ€ไป“ไปท=698.89, ๆœ€ไฝŽไปท=600.00, ็ˆ†ไป“็บฟ=629.00, ๆญขๆŸไปท=0.00 +2025-12-27 17:40:59,824 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:40:59] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 17:41:17,114 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 17:41:17,146 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:41:17] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 17:41:47,416 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 17:41:47,431 - app.services.backtest - WARNING - [K็บฟ47] ๅผ€ๅคšๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=696.93, ๆœ€ไฝŽ=626.88, ็ˆ†ไป“็บฟ=627.24, ๆญขๆŸ็บฟ=693.45, ๆญขๆŸ้˜ˆๅ€ผ=0.5000%, ๆ—ถ้—ด=2025-02-12 00:00:00 +2025-12-27 17:41:47,431 - app.services.backtest - WARNING - [K็บฟ76] ๅš็ฉบ่งฆๅŠ็ˆ†ไป“็บฟ๏ผๅผ€ไป“=554.65, ๆœ€้ซ˜=613.71, ็ˆ†ไป“็บฟ=610.12, ๆญขๆŸไฟกๅท=False, ๆญขๆŸไปท=0.0000, ๆ—ถ้—ด=2025-03-13 00:00:00 +2025-12-27 17:41:47,432 - app.services.backtest - WARNING - ๅš็ฉบ็ˆ†ไป“๏ผๅผ€ไป“ไปท=554.65, ๆœ€้ซ˜ไปท=613.71, ็ˆ†ไป“็บฟ=610.12, ๆญขๆŸไปท=0.00 +2025-12-27 17:41:47,446 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:41:47] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 17:42:00,012 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 17:42:00,027 - app.services.backtest - WARNING - ๅšๅคš็ˆ†ไป“๏ผๅผ€ไป“ไปท=696.93, ๆœ€ไฝŽไปท=546.83, ็ˆ†ไป“็บฟ=557.54, ๆญขๆŸไปท=0.00 +2025-12-27 17:42:00,042 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:42:00] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 17:42:11,169 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 17:42:11,200 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:42:11] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 17:42:19,805 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 17:42:19,836 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:42:19] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 17:42:27,581 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 17:42:27,612 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:42:27] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 17:43:14,415 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 17:43:14,446 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:43:14] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 17:43:24,836 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 17:43:24,850 - app.services.backtest - WARNING - [K็บฟ47] ๅผ€ๅคšๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=696.93, ๆœ€ไฝŽ=626.88, ็ˆ†ไป“็บฟ=627.24, ๆญขๆŸ็บฟ=693.45, ๆญขๆŸ้˜ˆๅ€ผ=0.5000%, ๆ—ถ้—ด=2025-02-12 00:00:00 +2025-12-27 17:43:24,856 - app.services.backtest - WARNING - [K็บฟ287] ๅผ€็ฉบๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=1102.47, ๆœ€้ซ˜=1278.52, ็ˆ†ไป“็บฟ=1212.72, ๆญขๆŸ็บฟ=1107.98, ๆญขๆŸ้˜ˆๅ€ผ=0.5000%, ๆ—ถ้—ด=2025-10-10 00:00:00 +2025-12-27 17:43:24,868 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:43:24] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 17:43:32,666 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 17:43:32,680 - app.services.backtest - WARNING - [K็บฟ36] ๅผ€็ฉบๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=652.94, ๆœ€้ซ˜=681.56, ็ˆ†ไป“็บฟ=659.47, ๆญขๆŸ็บฟ=653.27, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-02-01 00:00:00 +2025-12-27 17:43:32,681 - app.services.backtest - WARNING - [K็บฟ47] ๅผ€ๅคšๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=696.93, ๆœ€ไฝŽ=626.88, ็ˆ†ไป“็บฟ=689.96, ๆญขๆŸ็บฟ=696.58, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-02-12 00:00:00 +2025-12-27 17:43:32,681 - app.services.backtest - WARNING - [K็บฟ72] ๅผ€็ฉบๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=554.65, ๆœ€้ซ˜=593.10, ็ˆ†ไป“็บฟ=560.20, ๆญขๆŸ็บฟ=554.93, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-03-09 00:00:00 +2025-12-27 17:43:32,683 - app.services.backtest - WARNING - [K็บฟ132] ๅผ€ๅคšๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=629.17, ๆœ€ไฝŽ=600.80, ็ˆ†ไป“็บฟ=622.88, ๆญขๆŸ็บฟ=628.86, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-05-08 00:00:00 +2025-12-27 17:43:32,684 - app.services.backtest - WARNING - [K็บฟ177] ๅผ€็ฉบๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=615.81, ๆœ€้ซ˜=635.51, ็ˆ†ไป“็บฟ=621.97, ๆญขๆŸ็บฟ=616.12, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-06-22 00:00:00 +2025-12-27 17:43:32,685 - app.services.backtest - WARNING - [K็บฟ195] ๅผ€ๅคšๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=685.80, ๆœ€ไฝŽ=667.25, ็ˆ†ไป“็บฟ=678.94, ๆญขๆŸ็บฟ=685.46, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-07-10 00:00:00 +2025-12-27 17:43:32,685 - app.services.backtest - WARNING - [K็บฟ218] ๅผ€็ฉบๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=736.42, ๆœ€้ซ˜=770.11, ็ˆ†ไป“็บฟ=743.78, ๆญขๆŸ็บฟ=736.79, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-08-02 00:00:00 +2025-12-27 17:43:32,686 - app.services.backtest - WARNING - [K็บฟ229] ๅผ€ๅคšๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=848.01, ๆœ€ไฝŽ=828.23, ็ˆ†ไป“็บฟ=839.53, ๆญขๆŸ็บฟ=847.59, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-08-13 00:00:00 +2025-12-27 17:43:32,687 - app.services.backtest - WARNING - [K็บฟ272] ๅผ€็ฉบๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=945.90, ๆœ€้ซ˜=1019.90, ็ˆ†ไป“็บฟ=955.36, ๆญขๆŸ็บฟ=946.37, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-09-25 00:00:00 +2025-12-27 17:43:32,687 - app.services.backtest - WARNING - [K็บฟ279] ๅผ€ๅคšๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=1090.22, ๆœ€ไฝŽ=1022.01, ็ˆ†ไป“็บฟ=1079.32, ๆญขๆŸ็บฟ=1089.67, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-10-02 00:00:00 +2025-12-27 17:43:32,688 - app.services.backtest - WARNING - [K็บฟ287] ๅผ€็ฉบๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=1102.47, ๆœ€้ซ˜=1278.52, ็ˆ†ไป“็บฟ=1113.49, ๆญขๆŸ็บฟ=1103.02, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-10-10 00:00:00 +2025-12-27 17:43:32,699 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:43:32] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 17:44:11,694 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 17:44:11,708 - app.services.backtest - WARNING - [K็บฟ36] ๅผ€็ฉบๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=652.94, ๆœ€้ซ˜=681.56, ็ˆ†ไป“็บฟ=659.47, ๆญขๆŸ็บฟ=653.27, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-02-01 00:00:00 +2025-12-27 17:44:11,708 - app.services.backtest - WARNING - [K็บฟ47] ๅผ€ๅคšๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=696.93, ๆœ€ไฝŽ=626.88, ็ˆ†ไป“็บฟ=689.96, ๆญขๆŸ็บฟ=696.58, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-02-12 00:00:00 +2025-12-27 17:44:11,709 - app.services.backtest - WARNING - [K็บฟ72] ๅผ€็ฉบๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=554.65, ๆœ€้ซ˜=593.10, ็ˆ†ไป“็บฟ=560.20, ๆญขๆŸ็บฟ=554.93, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-03-09 00:00:00 +2025-12-27 17:44:11,710 - app.services.backtest - WARNING - [K็บฟ132] ๅผ€ๅคšๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=629.17, ๆœ€ไฝŽ=600.80, ็ˆ†ไป“็บฟ=622.88, ๆญขๆŸ็บฟ=628.86, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-05-08 00:00:00 +2025-12-27 17:44:11,711 - app.services.backtest - WARNING - [K็บฟ177] ๅผ€็ฉบๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=615.81, ๆœ€้ซ˜=635.51, ็ˆ†ไป“็บฟ=621.97, ๆญขๆŸ็บฟ=616.12, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-06-22 00:00:00 +2025-12-27 17:44:11,712 - app.services.backtest - WARNING - [K็บฟ195] ๅผ€ๅคšๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=685.80, ๆœ€ไฝŽ=667.25, ็ˆ†ไป“็บฟ=678.94, ๆญขๆŸ็บฟ=685.46, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-07-10 00:00:00 +2025-12-27 17:44:11,713 - app.services.backtest - WARNING - [K็บฟ218] ๅผ€็ฉบๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=736.42, ๆœ€้ซ˜=770.11, ็ˆ†ไป“็บฟ=743.78, ๆญขๆŸ็บฟ=736.79, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-08-02 00:00:00 +2025-12-27 17:44:11,713 - app.services.backtest - WARNING - [K็บฟ229] ๅผ€ๅคšๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=848.01, ๆœ€ไฝŽ=828.23, ็ˆ†ไป“็บฟ=839.53, ๆญขๆŸ็บฟ=847.59, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-08-13 00:00:00 +2025-12-27 17:44:11,714 - app.services.backtest - WARNING - [K็บฟ272] ๅผ€็ฉบๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=945.90, ๆœ€้ซ˜=1019.90, ็ˆ†ไป“็บฟ=955.36, ๆญขๆŸ็บฟ=946.37, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-09-25 00:00:00 +2025-12-27 17:44:11,715 - app.services.backtest - WARNING - [K็บฟ279] ๅผ€ๅคšๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=1090.22, ๆœ€ไฝŽ=1022.01, ็ˆ†ไป“็บฟ=1079.32, ๆญขๆŸ็บฟ=1089.67, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-10-02 00:00:00 +2025-12-27 17:44:11,715 - app.services.backtest - WARNING - [K็บฟ287] ๅผ€็ฉบๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=1102.47, ๆœ€้ซ˜=1278.52, ็ˆ†ไป“็บฟ=1113.49, ๆญขๆŸ็บฟ=1103.02, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-10-10 00:00:00 +2025-12-27 17:44:11,725 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:44:11] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 17:44:19,347 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 17:44:19,361 - app.services.backtest - WARNING - [K็บฟ47] ๅผ€ๅคšๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=696.93, ๆœ€ไฝŽ=626.88, ็ˆ†ไป“็บฟ=627.24, ๆญขๆŸ็บฟ=693.45, ๆญขๆŸ้˜ˆๅ€ผ=0.5000%, ๆ—ถ้—ด=2025-02-12 00:00:00 +2025-12-27 17:44:19,366 - app.services.backtest - WARNING - [K็บฟ287] ๅผ€็ฉบๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=1102.47, ๆœ€้ซ˜=1278.52, ็ˆ†ไป“็บฟ=1212.72, ๆญขๆŸ็บฟ=1107.98, ๆญขๆŸ้˜ˆๅ€ผ=0.5000%, ๆ—ถ้—ด=2025-10-10 00:00:00 +2025-12-27 17:44:19,377 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:44:19] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 17:46:20,291 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-27 17:46:20,465 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:46:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 17:50:02,546 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 17:50:02,561 - app.services.backtest - WARNING - [K็บฟ47] ๅผ€ๅคšๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=696.93, ๆœ€ไฝŽ=626.88, ็ˆ†ไป“็บฟ=627.24, ๆญขๆŸ็บฟ=693.45, ๆญขๆŸ้˜ˆๅ€ผ=0.5000%, ๆ—ถ้—ด=2025-02-12 00:00:00 +2025-12-27 17:50:02,566 - app.services.backtest - WARNING - [K็บฟ287] ๅผ€็ฉบๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=1102.47, ๆœ€้ซ˜=1278.52, ็ˆ†ไป“็บฟ=1212.72, ๆญขๆŸ็บฟ=1107.98, ๆญขๆŸ้˜ˆๅ€ผ=0.5000%, ๆ—ถ้—ด=2025-10-10 00:00:00 +2025-12-27 17:50:02,578 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:50:02] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 17:56:20,297 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-27 17:56:23,583 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 17:56:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 17:57:58,500 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-27 17:57:58,513 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-27 17:57:58,513 - werkzeug - INFO - Press CTRL+C to quit +2025-12-27 18:06:20,282 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-27 18:06:26,808 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:06:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 18:16:02,320 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:16:02] "GET /api/market/types?_t=1766830562308 HTTP/1.1" 200 - +2025-12-27 18:16:02,326 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-27 18:16:02,327 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:16:02] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 18:16:02,334 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:16:02] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 18:16:02,380 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 18:16:03,906 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:16:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 18:17:32,989 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:17:32] "GET /api/market/types?_t=1766830652978 HTTP/1.1" 200 - +2025-12-27 18:17:32,995 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:17:32] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 18:17:33,002 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:17:33] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 18:17:33,083 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 18:17:33,086 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:17:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 18:18:16,430 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:18:16] "GET /api/market/types?_t=1766830696419 HTTP/1.1" 200 - +2025-12-27 18:18:16,434 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:18:16] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 18:18:16,440 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:18:16] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 18:18:16,536 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 18:18:16,539 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:18:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 18:18:29,642 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:18:29] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 18:18:29,646 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:18:29] "GET /api/market/types?_t=1766830709632 HTTP/1.1" 200 - +2025-12-27 18:18:29,650 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:18:29] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 18:18:29,720 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 18:18:29,722 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:18:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 18:19:42,824 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:19:42] "POST /api/indicator/aiGenerate HTTP/1.1" 200 - +2025-12-27 18:19:52,953 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:19:52] "POST /api/indicator/saveIndicator HTTP/1.1" 200 - +2025-12-27 18:19:53,304 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:19:53] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 18:23:16,250 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 18:23:18,056 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: BNB/USDT ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (43237398็ง’) +2025-12-27 18:23:18,058 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:23:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 18:23:59,643 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:23:59] "POST /api/indicator/saveIndicator HTTP/1.1" 200 - +2025-12-27 18:23:59,994 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:23:59] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 18:25:25,829 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 18:25:25,839 - app.services.backtest - WARNING - ๅšๅคš็ˆ†ไป“๏ผๅผ€ไป“ไปท=642.11, ๆœ€ไฝŽไปท=559.71, ็ˆ†ไป“็บฟ=577.90, ๆญขๆŸไปท=0.00 +2025-12-27 18:25:25,852 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:25:25] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 18:26:37,527 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:26:37] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 18:26:37,532 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:26:37] "GET /api/market/types?_t=1766831197509 HTTP/1.1" 200 - +2025-12-27 18:26:37,537 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:26:37] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 18:26:37,592 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 18:26:38,040 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:26:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 18:27:48,528 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 18:27:48,552 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:27:48] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 18:28:30,131 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-27 18:28:30,309 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:28:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 18:36:15,143 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-27 18:36:15,158 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-27 18:36:15,159 - werkzeug - INFO - Press CTRL+C to quit +2025-12-27 18:36:39,820 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-27 18:36:49,045 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:36:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 18:37:08,149 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-27 18:37:09,866 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 18:37:09,899 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:37:09] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 18:38:08,863 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 500 +2025-12-27 18:38:09,812 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:38:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 18:39:10,155 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 18:39:10,604 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:39:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 18:40:09,847 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 18:40:09,847 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:40:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 18:41:08,040 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 18:41:08,473 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:41:08] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 18:41:09,849 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 18:41:09,850 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:41:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 18:42:10,156 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 18:42:10,156 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:42:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 18:43:09,847 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 18:43:09,847 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:43:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 18:44:10,167 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 18:44:10,167 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:44:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 18:44:20,281 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 18:44:20,528 - app.services.backtest - WARNING - [K็บฟ469] ๅผ€็ฉบๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=690.08, ๆœ€้ซ˜=700.00, ็ˆ†ไป“็บฟ=696.98, ๆญขๆŸ็บฟ=690.43, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-01-15 13:00:00 +2025-12-27 18:44:20,530 - app.services.backtest - WARNING - [K็บฟ574] ๅผ€็ฉบๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=686.13, ๆœ€้ซ˜=693.39, ็ˆ†ไป“็บฟ=692.99, ๆญขๆŸ็บฟ=686.47, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-01-19 22:00:00 +2025-12-27 18:44:20,531 - app.services.backtest - WARNING - [K็บฟ583] ๅผ€ๅคšๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=703.85, ๆœ€ไฝŽ=695.99, ็ˆ†ไป“็บฟ=696.81, ๆญขๆŸ็บฟ=703.50, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-01-20 07:00:00 +2025-12-27 18:44:20,540 - app.services.backtest - WARNING - [K็บฟ942] ๅผ€็ฉบๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=575.92, ๆœ€้ซ˜=582.42, ็ˆ†ไป“็บฟ=581.68, ๆญขๆŸ็บฟ=576.21, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-02-04 06:00:00 +2025-12-27 18:44:20,543 - app.services.backtest - WARNING - [K็บฟ1078] ๅผ€็ฉบๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=606.19, ๆœ€้ซ˜=618.00, ็ˆ†ไป“็บฟ=612.25, ๆญขๆŸ็บฟ=606.49, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-02-09 22:00:00 +2025-12-27 18:44:20,555 - app.services.backtest - WARNING - [K็บฟ1591] ๅผ€็ฉบๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=601.78, ๆœ€้ซ˜=608.93, ็ˆ†ไป“็บฟ=607.80, ๆญขๆŸ็บฟ=602.08, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-03-03 07:00:00 +2025-12-27 18:44:20,559 - app.services.backtest - WARNING - [K็บฟ1784] ๅผ€ๅคšๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=558.17, ๆœ€ไฝŽ=552.51, ็ˆ†ไป“็บฟ=552.59, ๆญขๆŸ็บฟ=557.89, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-03-11 08:00:00 +2025-12-27 18:44:20,571 - app.services.backtest - WARNING - [K็บฟ2341] ๅผ€็ฉบๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=585.14, ๆœ€้ซ˜=591.37, ็ˆ†ไป“็บฟ=590.99, ๆญขๆŸ็บฟ=585.43, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-04-03 13:00:00 +2025-12-27 18:44:20,625 - app.services.backtest - WARNING - [K็บฟ4973] ๅผ€็ฉบๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=745.24, ๆœ€้ซ˜=754.16, ็ˆ†ไป“็บฟ=752.69, ๆญขๆŸ็บฟ=745.61, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-07-22 05:00:00 +2025-12-27 18:44:20,629 - app.services.backtest - WARNING - [K็บฟ5127] ๅผ€็ฉบๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=832.85, ๆœ€้ซ˜=841.46, ็ˆ†ไป“็บฟ=841.18, ๆญขๆŸ็บฟ=833.27, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-07-28 15:00:00 +2025-12-27 18:44:20,630 - app.services.backtest - WARNING - [K็บฟ5199] ๅผ€็ฉบๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=789.66, ๆœ€้ซ˜=801.27, ็ˆ†ไป“็บฟ=797.56, ๆญขๆŸ็บฟ=790.05, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-07-31 15:00:00 +2025-12-27 18:44:20,631 - app.services.backtest - WARNING - [K็บฟ5201] ๅผ€ๅคšๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=813.30, ๆœ€ไฝŽ=801.90, ็ˆ†ไป“็บฟ=805.17, ๆญขๆŸ็บฟ=812.89, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-07-31 17:00:00 +2025-12-27 18:44:20,638 - app.services.backtest - WARNING - [K็บฟ5533] ๅผ€็ฉบๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=834.66, ๆœ€้ซ˜=847.05, ็ˆ†ไป“็บฟ=843.01, ๆญขๆŸ็บฟ=835.08, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-08-14 13:00:00 +2025-12-27 18:44:20,643 - app.services.backtest - WARNING - [K็บฟ5779] ๅผ€ๅคšๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=879.71, ๆœ€ไฝŽ=859.34, ็ˆ†ไป“็บฟ=870.91, ๆญขๆŸ็บฟ=879.27, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-08-24 19:00:00 +2025-12-27 18:44:20,667 - app.services.backtest - WARNING - [K็บฟ6867] ๅผ€็ฉบๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=1259.52, ๆœ€้ซ˜=1279.30, ็ˆ†ไป“็บฟ=1272.12, ๆญขๆŸ็บฟ=1260.15, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-10-09 03:00:00 +2025-12-27 18:44:20,670 - app.services.backtest - WARNING - [K็บฟ6975] ๅผ€็ฉบๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=1259.37, ๆœ€้ซ˜=1281.39, ็ˆ†ไป“็บฟ=1271.96, ๆญขๆŸ็บฟ=1260.00, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-10-13 15:00:00 +2025-12-27 18:44:20,686 - app.services.backtest - WARNING - [K็บฟ7694] ๅผ€ๅคšๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=976.85, ๆœ€ไฝŽ=959.39, ็ˆ†ไป“็บฟ=967.08, ๆญขๆŸ็บฟ=976.36, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-11-12 14:00:00 +2025-12-27 18:44:20,694 - app.services.backtest - WARNING - [K็บฟ8072] ๅผ€็ฉบๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=882.46, ๆœ€้ซ˜=896.30, ็ˆ†ไป“็บฟ=891.28, ๆญขๆŸ็บฟ=882.90, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-11-28 08:00:00 +2025-12-27 18:44:20,698 - app.services.backtest - WARNING - [K็บฟ8295] ๅผ€็ฉบๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=873.66, ๆœ€้ซ˜=892.58, ็ˆ†ไป“็บฟ=882.40, ๆญขๆŸ็บฟ=874.10, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-12-07 15:00:00 +2025-12-27 18:44:20,727 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:44:20] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 18:45:10,146 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 18:45:10,263 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:45:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 18:45:30,117 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 18:45:30,359 - app.services.backtest - WARNING - [K็บฟ583] ๅผ€ๅคšๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=703.85, ๆœ€ไฝŽ=695.99, ็ˆ†ไป“็บฟ=696.81, ๆญขๆŸ็บฟ=703.50, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-01-20 07:00:00 +2025-12-27 18:45:30,383 - app.services.backtest - WARNING - [K็บฟ1784] ๅผ€ๅคšๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=558.17, ๆœ€ไฝŽ=552.51, ็ˆ†ไป“็บฟ=552.59, ๆญขๆŸ็บฟ=557.89, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-03-11 08:00:00 +2025-12-27 18:45:30,454 - app.services.backtest - WARNING - [K็บฟ5201] ๅผ€ๅคšๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=813.30, ๆœ€ไฝŽ=801.90, ็ˆ†ไป“็บฟ=805.17, ๆญขๆŸ็บฟ=812.89, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-07-31 17:00:00 +2025-12-27 18:45:30,465 - app.services.backtest - WARNING - [K็บฟ5779] ๅผ€ๅคšๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=879.71, ๆœ€ไฝŽ=859.34, ็ˆ†ไป“็บฟ=870.91, ๆญขๆŸ็บฟ=879.27, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-08-24 19:00:00 +2025-12-27 18:45:30,505 - app.services.backtest - WARNING - [K็บฟ7694] ๅผ€ๅคšๅŽ่งฆๅŠ็ˆ†ไป“็บฟๆฃ€ๆŸฅ: ๅผ€ไป“=976.85, ๆœ€ไฝŽ=959.39, ็ˆ†ไป“็บฟ=967.08, ๆญขๆŸ็บฟ=976.36, ๆญขๆŸ้˜ˆๅ€ผ=0.0500%, ๆ—ถ้—ด=2025-11-12 14:00:00 +2025-12-27 18:45:30,541 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:45:30] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 18:46:10,157 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 18:46:10,158 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:46:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 18:46:39,512 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-27 18:46:40,024 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:46:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 18:47:10,158 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 18:47:10,159 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:47:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 18:48:09,845 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 18:48:09,846 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:48:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 18:49:10,157 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 18:49:10,158 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:49:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 18:50:09,851 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 18:50:09,852 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:50:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 18:51:10,156 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 18:51:10,954 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:51:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 18:52:09,847 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 18:52:09,847 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:52:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 18:53:10,143 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 18:53:10,144 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:53:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 18:54:09,843 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 18:54:09,844 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:54:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 18:55:10,152 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 18:55:10,153 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:55:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 18:56:09,840 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 18:56:09,841 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:56:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 18:56:39,831 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-27 18:56:42,270 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:56:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 18:57:09,849 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 18:57:10,383 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:57:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 18:58:10,159 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 18:58:10,159 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:58:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 18:59:09,854 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 18:59:09,854 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 18:59:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:00:10,154 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 19:00:10,154 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:00:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:01:09,843 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 19:01:09,843 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:01:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:02:10,156 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 19:02:10,156 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:02:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:03:09,846 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 19:03:10,684 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:03:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:04:10,163 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 19:04:10,164 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:04:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:05:09,852 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 19:05:09,852 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:05:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:06:10,162 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 19:06:10,163 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:06:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:06:39,511 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-27 19:06:39,624 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:06:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:07:10,160 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 19:07:10,161 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:07:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:08:09,849 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 19:08:09,850 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:08:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:08:52,423 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-27 19:08:52,438 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-27 19:08:52,438 - werkzeug - INFO - Press CTRL+C to quit +2025-12-27 19:08:56,212 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-27 19:09:12,373 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 19:09:12,797 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:09:12] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 19:09:12,799 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 19:09:13,072 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:09:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:10:10,147 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 19:10:10,147 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:10:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:10:30,260 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 19:10:30,677 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:10:30] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 19:10:48,189 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 19:10:48,608 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:10:48] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 19:11:08,806 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 19:11:09,226 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:11:09] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 19:11:10,151 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 19:11:10,152 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:11:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:11:54,193 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 19:11:54,608 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:11:54] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 19:12:10,163 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 19:12:10,163 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:12:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:12:26,025 - app.utils.safe_exec - WARNING - Windows็ณป็ปŸไธๆ”ฏๆŒsignal่ถ…ๆ—ถ๏ผŒไปฃ็ ๆ‰ง่กŒๅฏ่ƒฝๆ— ๆณ•้™ๅˆถๆ—ถ้—ด +2025-12-27 19:12:26,460 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:12:26] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-27 19:13:10,168 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 19:13:10,168 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:13:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:14:09,849 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 19:14:09,850 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:14:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:15:10,153 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 19:15:10,272 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:15:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:16:09,842 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 19:16:09,842 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:16:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:16:39,819 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-27 19:16:40,048 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:16:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:17:09,843 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 19:17:09,844 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:17:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:18:10,162 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 19:18:10,163 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:18:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:19:09,843 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 19:19:09,843 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:19:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:20:10,164 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 19:20:10,165 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:20:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:21:09,853 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 19:21:14,734 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:21:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:22:10,160 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 19:22:10,160 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:22:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:23:09,846 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 19:23:09,846 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:23:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:23:45,526 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:23:45] "GET /api/market/types?_t=1766834625517 HTTP/1.1" 200 - +2025-12-27 19:23:45,668 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:23:45] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 19:23:45,733 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:23:45] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 19:23:45,737 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:23:45] "GET /api/market/types?_t=1766834625555 HTTP/1.1" 200 - +2025-12-27 19:23:45,743 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:23:45] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 19:23:45,749 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:23:45] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 19:23:45,874 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 19:23:46,280 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:23:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:23:46,283 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 19:23:46,286 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:23:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:23:46,290 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:23:46] "GET /api/market/types?_t=1766834626134 HTTP/1.1" 200 - +2025-12-27 19:23:46,295 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:23:46] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 19:23:46,301 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:23:46] "GET /api/market/types?_t=1766834626163 HTTP/1.1" 200 - +2025-12-27 19:23:46,371 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:23:46] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 19:23:46,598 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:23:46] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 19:23:46,605 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:23:46] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 19:23:46,611 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 19:23:46,613 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:23:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:23:46,620 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 19:23:46,622 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:23:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:23:48,143 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:23:48] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 19:23:48,152 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:23:48] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 19:23:48,159 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:23:48] "GET /api/market/types?_t=1766834628120 HTTP/1.1" 200 - +2025-12-27 19:23:48,214 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 19:23:48,218 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:23:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:23:48,880 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:23:48] "GET /api/market/types?_t=1766834628872 HTTP/1.1" 200 - +2025-12-27 19:23:48,886 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:23:48] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 19:23:48,896 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:23:48] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 19:23:48,950 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 19:23:48,952 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:23:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:23:52,972 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:23:52] "POST /api/indicator/backtest/history HTTP/1.1" 200 - +2025-12-27 19:24:03,550 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:24:03] "POST /api/indicator/backtest/history HTTP/1.1" 200 - +2025-12-27 19:28:10,459 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:28:10] "GET /api/market/types?_t=1766834890445 HTTP/1.1" 200 - +2025-12-27 19:28:10,466 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:28:10] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 19:28:10,474 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:28:10] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 19:28:10,554 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 19:28:10,558 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:28:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:28:11,211 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:28:11] "GET /api/market/types?_t=1766834891198 HTTP/1.1" 200 - +2025-12-27 19:28:11,217 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:28:11] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 19:28:11,224 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:28:11] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 19:28:11,523 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 19:28:11,525 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:28:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:28:22,734 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:28:22] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 19:28:22,757 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:28:22] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 19:28:22,761 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:28:22] "GET /api/market/types?_t=1766834902716 HTTP/1.1" 200 - +2025-12-27 19:28:22,805 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 19:28:22,809 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:28:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:28:23,735 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:28:23] "GET /api/market/types?_t=1766834903724 HTTP/1.1" 200 - +2025-12-27 19:28:23,739 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:28:23] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 19:28:23,746 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:28:23] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 19:28:23,824 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 19:28:23,826 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:28:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:29:00,656 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:29:00] "GET /api/market/types?_t=1766834940647 HTTP/1.1" 200 - +2025-12-27 19:29:00,664 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:29:00] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 19:29:00,676 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:29:00] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 19:29:00,809 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 19:29:02,618 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:29:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:29:05,901 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-27 19:29:05,914 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-27 19:29:05,914 - werkzeug - INFO - Press CTRL+C to quit +2025-12-27 19:29:09,307 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-27 19:29:09,309 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:29:09] "POST /api/indicator/backtest/history HTTP/1.1" 200 - +2025-12-27 19:29:13,360 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:29:13] "POST /api/indicator/backtest/get HTTP/1.1" 200 - +2025-12-27 19:29:31,586 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:29:31] "POST /api/indicator/backtest/get HTTP/1.1" 200 - +2025-12-27 19:29:35,710 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:29:35] "POST /api/indicator/backtest/history HTTP/1.1" 200 - +2025-12-27 19:29:38,109 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:29:38] "POST /api/indicator/backtest/get HTTP/1.1" 200 - +2025-12-27 19:29:53,724 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:29:53] "POST /api/indicator/backtest/get HTTP/1.1" 200 - +2025-12-27 19:30:10,897 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:30:10] "POST /api/indicator/backtest/history HTTP/1.1" 200 - +2025-12-27 19:30:14,341 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:30:14] "POST /api/indicator/backtest/history HTTP/1.1" 200 - +2025-12-27 19:30:20,659 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:30:20] "POST /api/indicator/backtest/history HTTP/1.1" 200 - +2025-12-27 19:30:28,220 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 500 +2025-12-27 19:30:38,699 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:30:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:30:38,707 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:30:38] "POST /api/indicator/backtest/history HTTP/1.1" 200 - +2025-12-27 19:30:48,577 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:30:48] "POST /api/indicator/backtest/get HTTP/1.1" 200 - +2025-12-27 19:30:51,933 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:30:51] "POST /api/indicator/backtest/get HTTP/1.1" 200 - +2025-12-27 19:31:39,041 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 19:31:39,352 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:31:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:32:38,734 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 19:32:38,735 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:32:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:32:55,395 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:32:55] "POST /api/indicator/backtest/get HTTP/1.1" 200 - +2025-12-27 19:33:04,180 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:33:04] "POST /api/indicator/backtest/get HTTP/1.1" 200 - +2025-12-27 19:33:39,054 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 19:33:39,055 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:33:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:34:38,737 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 19:34:38,737 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:34:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:35:39,047 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 19:35:39,048 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:35:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:36:38,735 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 19:36:38,735 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:36:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:37:39,041 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 19:37:40,658 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:37:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:38:38,739 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 19:38:38,740 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:38:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:39:39,056 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 19:39:39,057 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:39:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:40:38,743 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1H, ๆกๆ•ฐ: 5 +2025-12-27 19:40:38,743 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:40:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:41:19,327 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:41:19] "GET /api/market/types?_t=1766835679312 HTTP/1.1" 200 - +2025-12-27 19:41:19,332 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:41:19] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 19:41:19,340 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:41:19] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 19:41:19,389 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 19:41:20,443 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:41:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 19:42:02,371 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:42:02] "POST /api/indicator/backtest/history HTTP/1.1" 200 - +2025-12-27 19:42:08,653 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:42:08] "POST /api/indicator/backtest/aiAnalyze HTTP/1.1" 404 - +2025-12-27 19:42:32,182 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:42:32] "POST /api/indicator/backtest/aiAnalyze HTTP/1.1" 404 - +2025-12-27 19:42:36,642 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:42:36] "POST /api/indicator/backtest/get HTTP/1.1" 200 - +2025-12-27 19:42:44,759 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:42:44] "POST /api/indicator/backtest/aiAnalyze HTTP/1.1" 404 - +2025-12-27 19:42:57,626 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-27 19:42:57,639 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-27 19:42:57,639 - werkzeug - INFO - Press CTRL+C to quit +2025-12-27 19:43:01,138 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-27 19:43:08,113 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:43:08] "POST /api/indicator/backtest/aiAnalyze HTTP/1.1" 200 - +2025-12-27 19:44:50,480 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:44:50] "POST /api/indicator/backtest/history HTTP/1.1" 200 - +2025-12-27 19:45:08,798 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:45:08] "POST /api/indicator/backtest/aiAnalyze HTTP/1.1" 200 - +2025-12-27 19:46:22,035 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:46:22] "POST /api/indicator/backtest/get HTTP/1.1" 200 - +2025-12-27 19:51:20,945 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-27 19:51:27,895 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 19:51:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 20:01:20,948 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-27 20:01:22,772 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 20:01:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 20:07:03,407 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-27 20:07:03,421 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-27 20:07:03,421 - werkzeug - INFO - Press CTRL+C to quit +2025-12-27 20:07:08,521 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-27 20:07:08,523 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 20:07:08] "POST /api/indicator/backtest/history HTTP/1.1" 200 - +2025-12-27 20:07:23,944 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 20:07:23] "POST /api/indicator/backtest/aiAnalyze HTTP/1.1" 200 - +2025-12-27 20:07:42,273 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 20:07:42] "POST /api/indicator/backtest/history HTTP/1.1" 200 - +2025-12-27 20:10:21,342 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 20:10:21] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 20:10:21,348 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 20:10:21] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 20:10:21,351 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 20:10:21] "GET /api/market/types?_t=1766837421326 HTTP/1.1" 200 - +2025-12-27 20:10:21,410 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 20:10:31,679 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 20:10:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 20:10:42,097 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 20:10:42] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 20:10:42,102 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 20:10:42] "GET /api/market/types?_t=1766837442089 HTTP/1.1" 200 - +2025-12-27 20:10:42,191 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 20:10:42] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 20:10:42,214 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 20:10:42,217 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 20:10:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 20:12:26,157 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 20:12:26] "POST /api/indicator/backtest/history HTTP/1.1" 200 - +2025-12-27 20:13:11,637 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 20:13:11] "POST /api/indicator/backtest/history HTTP/1.1" 200 - +2025-12-27 20:13:16,812 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 20:13:16] "POST /api/indicator/backtest/history HTTP/1.1" 200 - +2025-12-27 20:13:19,247 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 20:13:19] "POST /api/indicator/backtest/get HTTP/1.1" 200 - +2025-12-27 20:13:28,747 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 20:13:28] "POST /api/indicator/backtest/get HTTP/1.1" 200 - +2025-12-27 20:20:42,699 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-27 20:20:43,698 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 20:20:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 20:28:43,197 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 20:28:43] "POST /api/indicator/backtest/get HTTP/1.1" 200 - +2025-12-27 20:29:13,545 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 20:29:13] "POST /api/indicator/backtest/history HTTP/1.1" 200 - +2025-12-27 20:29:46,285 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 20:29:46] "POST /api/indicator/backtest/history HTTP/1.1" 200 - +2025-12-27 20:29:47,677 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 20:29:47] "POST /api/indicator/backtest/get HTTP/1.1" 200 - +2025-12-27 20:30:07,594 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 20:30:07] "POST /api/indicator/backtest/aiAnalyze HTTP/1.1" 200 - +2025-12-27 20:30:42,394 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-27 20:30:43,944 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 20:30:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 20:30:46,869 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 20:30:46] "POST /api/indicator/backtest/history HTTP/1.1" 200 - +2025-12-27 20:40:42,826 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-27 20:40:45,213 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 20:40:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 20:50:42,077 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-27 20:50:43,446 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 20:50:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 20:50:43,450 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-27 20:50:43,451 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 20:50:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 20:50:43,655 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 20:50:43] "GET /api/market/types?_t=1766839843645 HTTP/1.1" 200 - +2025-12-27 20:50:43,659 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 20:50:43] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 20:50:43,665 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 20:50:43] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 20:50:43,712 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 20:50:44,269 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 20:50:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 20:50:44,734 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 20:50:44] "GET /api/market/types?_t=1766839844726 HTTP/1.1" 200 - +2025-12-27 20:50:44,741 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 20:50:44] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 20:50:44,778 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 20:50:44] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 20:50:44,805 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 20:50:44,807 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 20:50:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 20:50:47,491 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 20:50:47] "POST /api/indicator/backtest/history HTTP/1.1" 200 - +2025-12-27 20:50:50,705 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 20:50:50] "POST /api/indicator/backtest/history HTTP/1.1" 200 - +2025-12-27 20:50:56,478 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 20:50:56] "POST /api/indicator/backtest/get HTTP/1.1" 200 - +2025-12-27 21:28:12,006 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-27 21:28:14,040 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 21:28:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 21:28:14,045 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 21:28:14] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 21:28:14,052 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 21:28:14] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 21:28:14,055 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 21:28:14] "GET /api/market/types?_t=1766842093211 HTTP/1.1" 200 - +2025-12-27 21:28:14,276 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 21:28:15,741 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 21:28:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 21:31:18,056 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 21:31:18] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 21:31:18,064 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 21:31:18] "GET /api/market/types?_t=1766842278043 HTTP/1.1" 200 - +2025-12-27 21:31:18,070 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 21:31:18] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 21:31:18,157 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-27 21:31:18,162 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 21:31:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-27 21:53:10,712 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 21:53:10] "GET /api/strategies?_t=1766843590704 HTTP/1.1" 404 - +2025-12-27 22:00:39,511 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:00:39] "GET /api/strategies?_t=1766844039472 HTTP/1.1" 404 - +2025-12-27 22:00:39,577 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:00:39] "GET /api/strategies?_t=1766844039570 HTTP/1.1" 404 - +2025-12-27 22:00:39,829 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:00:39] "GET /api/strategies?_t=1766844039823 HTTP/1.1" 404 - +2025-12-27 22:00:39,886 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:00:39] "GET /api/strategies?_t=1766844039875 HTTP/1.1" 404 - +2025-12-27 22:00:39,940 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:00:39] "GET /api/strategies?_t=1766844039932 HTTP/1.1" 404 - +2025-12-27 22:00:39,978 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:00:39] "GET /api/strategies?_t=1766844039972 HTTP/1.1" 404 - +2025-12-27 22:00:40,023 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:00:40] "GET /api/strategies?_t=1766844040011 HTTP/1.1" 404 - +2025-12-27 22:00:40,137 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:00:40] "GET /api/strategies?_t=1766844040127 HTTP/1.1" 404 - +2025-12-27 22:00:40,339 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:00:40] "GET /api/strategies?_t=1766844040326 HTTP/1.1" 404 - +2025-12-27 22:00:40,394 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:00:40] "GET /api/strategies?_t=1766844040382 HTTP/1.1" 404 - +2025-12-27 22:00:40,444 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:00:40] "GET /api/strategies?_t=1766844040430 HTTP/1.1" 404 - +2025-12-27 22:01:13,984 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:01:13] "GET /api/strategies?_t=1766844073976 HTTP/1.1" 404 - +2025-12-27 22:01:53,721 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:01:53] "GET /api/strategies?_t=1766844113712 HTTP/1.1" 404 - +2025-12-27 22:03:27,632 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:03:27] "GET /api/strategies?_t=1766844207624 HTTP/1.1" 404 - +2025-12-27 22:04:25,474 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:04:25] "GET /api/strategies?_t=1766844265465 HTTP/1.1" 404 - +2025-12-27 22:05:28,291 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:05:28] "GET /api/strategies?_t=1766844328280 HTTP/1.1" 404 - +2025-12-27 22:06:22,763 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:06:22] "GET /api/strategies?_t=1766844382753 HTTP/1.1" 404 - +2025-12-27 22:06:23,943 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:06:23] "GET /api/strategies?_t=1766844383937 HTTP/1.1" 404 - +2025-12-27 22:06:25,852 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:06:25] "GET /api/strategies?_t=1766844385833 HTTP/1.1" 404 - +2025-12-27 22:06:31,901 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-27 22:06:31,915 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-27 22:06:31,915 - werkzeug - INFO - Press CTRL+C to quit +2025-12-27 22:06:37,966 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-27 22:06:37,968 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:06:37] "GET /api/strategies?_t=1766844397609 HTTP/1.1" 200 - +2025-12-27 22:06:39,370 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:06:39] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 22:06:39,373 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:06:39] "GET /api/market/types?_t=1766844399164 HTTP/1.1" 200 - +2025-12-27 22:28:57,536 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:28:57] "GET /api/strategies?_t=1766845737520 HTTP/1.1" 200 - +2025-12-27 22:31:02,540 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:31:02] "GET /api/strategies?_t=1766845862529 HTTP/1.1" 200 - +2025-12-27 22:32:12,001 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:32:12] "GET /api/strategies?_t=1766845931992 HTTP/1.1" 200 - +2025-12-27 22:32:21,734 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:32:21] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 22:32:21,736 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:32:21] "GET /api/market/types?_t=1766845941720 HTTP/1.1" 200 - +2025-12-27 22:39:44,231 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:39:44] "GET /api/strategies?_t=1766846384217 HTTP/1.1" 200 - +2025-12-27 22:40:59,185 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:40:59] "GET /api/strategies?_t=1766846459175 HTTP/1.1" 200 - +2025-12-27 22:41:47,704 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:41:47] "GET /api/strategies?_t=1766846507690 HTTP/1.1" 200 - +2025-12-27 22:42:24,866 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:42:24] "GET /api/strategies?_t=1766846544859 HTTP/1.1" 200 - +2025-12-27 22:42:44,040 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:42:44] "GET /api/strategies?_t=1766846564031 HTTP/1.1" 200 - +2025-12-27 22:42:57,860 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:42:57] "GET /api/strategies?_t=1766846577848 HTTP/1.1" 200 - +2025-12-27 22:43:19,300 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:43:19] "GET /api/strategies?_t=1766846599292 HTTP/1.1" 200 - +2025-12-27 22:43:38,013 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:43:38] "GET /api/strategies?_t=1766846618004 HTTP/1.1" 200 - +2025-12-27 22:44:38,784 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:44:38] "GET /api/strategies?_t=1766846678777 HTTP/1.1" 200 - +2025-12-27 22:46:04,188 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:46:04] "GET /api/market/types?_t=1766846763864 HTTP/1.1" 200 - +2025-12-27 22:46:04,201 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:46:04] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 22:49:49,795 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:49:49] "GET /api/strategies?_t=1766846989783 HTTP/1.1" 200 - +2025-12-27 22:49:53,899 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-27 22:49:53,913 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-27 22:49:53,913 - werkzeug - INFO - Press CTRL+C to quit +2025-12-27 22:49:56,598 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-27 22:49:56,600 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:49:56] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 22:49:56,604 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:49:56] "GET /api/market/types?_t=1766846996266 HTTP/1.1" 200 - +2025-12-27 22:54:21,362 - app.routes.strategy - INFO - ๆญฃๅœจๆต‹่ฏ•่ฟžๆŽฅ: exchange_id=okx +2025-12-27 22:54:21,362 - app.routes.strategy - INFO - API Key: pJRJ:... (len=15) +2025-12-27 22:54:21,362 - app.routes.strategy - INFO - Secret Key: pJRJ:... (len=15) +2025-12-27 22:54:21,363 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:54:21] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-27 22:54:27,264 - app.utils.encryption - WARNING - ENCRYPTION_KEY not set; generating an ephemeral in-memory key (development only). +2025-12-27 22:54:27,264 - app.utils.encryption - WARNING - For production, set ENCRYPTION_KEY or provide a .encryption_key file. +2025-12-27 22:54:27,280 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:54:27] "POST /api/strategies/create HTTP/1.1" 200 - +2025-12-27 22:54:27,665 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 22:54:27,665 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 22:54:27,665 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 22:54:27,666 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:54:27] "GET /api/strategies?_t=1766847267637 HTTP/1.1" 200 - +2025-12-27 22:54:29,133 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 22:54:29,134 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 22:54:29,134 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 22:54:29,135 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:54:29] "GET /api/strategies/equityCurve?id=1&_t=1766847269113 HTTP/1.1" 200 - +2025-12-27 22:54:29,437 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 22:54:29,437 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 22:54:29,437 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 22:54:29,438 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:54:29] "GET /api/strategies/equityCurve?id=1&_t=1766847269113 HTTP/1.1" 200 - +2025-12-27 22:54:29,441 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:54:29] "GET /api/strategies/positions?id=1&_t=1766847269127 HTTP/1.1" 200 - +2025-12-27 22:54:30,953 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:54:30] "GET /api/strategies/trades?id=1&_t=1766847270644 HTTP/1.1" 200 - +2025-12-27 22:54:32,486 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 22:54:32,486 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 22:54:32,486 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 22:54:32,488 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:54:32] "GET /api/strategies/equityCurve?id=1&_t=1766847272465 HTTP/1.1" 200 - +2025-12-27 22:54:32,798 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 22:54:32,799 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 22:54:32,799 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 22:54:32,800 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:54:32] "GET /api/strategies/equityCurve?id=1&_t=1766847272465 HTTP/1.1" 200 - +2025-12-27 22:54:33,268 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 22:54:33,268 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 22:54:33,268 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 22:54:33,270 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:54:33] "GET /api/strategies/equityCurve?id=1&_t=1766847272943 HTTP/1.1" 200 - +2025-12-27 22:54:33,272 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 22:54:33,272 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 22:54:33,273 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 22:54:33,274 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:54:33] "GET /api/strategies/equityCurve?id=1&_t=1766847272943 HTTP/1.1" 200 - +2025-12-27 22:54:33,820 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 22:54:33,820 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 22:54:33,820 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 22:54:33,821 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:54:33] "GET /api/strategies/equityCurve?id=1&_t=1766847273798 HTTP/1.1" 200 - +2025-12-27 22:54:34,126 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 22:54:34,126 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 22:54:34,126 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 22:54:34,127 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:54:34] "GET /api/strategies/equityCurve?id=1&_t=1766847273798 HTTP/1.1" 200 - +2025-12-27 22:54:34,408 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:54:34] "GET /api/strategies/positions?id=1&_t=1766847274090 HTTP/1.1" 200 - +2025-12-27 22:54:39,396 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:54:39] "GET /api/strategies/positions?id=1&_t=1766847279089 HTTP/1.1" 200 - +2025-12-27 22:54:44,100 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:54:44] "GET /api/strategies/positions?id=1&_t=1766847284094 HTTP/1.1" 200 - +2025-12-27 22:54:49,413 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:54:49] "GET /api/strategies/positions?id=1&_t=1766847289097 HTTP/1.1" 200 - +2025-12-27 22:54:54,098 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:54:54] "GET /api/strategies/positions?id=1&_t=1766847294091 HTTP/1.1" 200 - +2025-12-27 22:54:59,404 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:54:59] "GET /api/strategies/positions?id=1&_t=1766847299089 HTTP/1.1" 200 - +2025-12-27 22:55:03,786 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 22:55:03,786 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 22:55:03,786 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 22:55:03,787 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:55:03] "GET /api/strategies/equityCurve?id=1&_t=1766847303780 HTTP/1.1" 200 - +2025-12-27 22:55:04,412 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:55:04] "GET /api/strategies/positions?id=1&_t=1766847304095 HTTP/1.1" 200 - +2025-12-27 22:55:09,100 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:55:09] "GET /api/strategies/positions?id=1&_t=1766847309093 HTTP/1.1" 200 - +2025-12-27 22:55:14,417 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:55:14] "GET /api/strategies/positions?id=1&_t=1766847314097 HTTP/1.1" 200 - +2025-12-27 22:55:19,099 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:55:19] "GET /api/strategies/positions?id=1&_t=1766847319092 HTTP/1.1" 200 - +2025-12-27 22:55:24,405 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:55:24] "GET /api/strategies/positions?id=1&_t=1766847324089 HTTP/1.1" 200 - +2025-12-27 22:55:29,105 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:55:29] "GET /api/strategies/positions?id=1&_t=1766847329099 HTTP/1.1" 200 - +2025-12-27 22:55:34,097 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 22:55:34,097 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 22:55:34,097 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 22:55:34,099 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:55:34] "GET /api/strategies/equityCurve?id=1&_t=1766847333777 HTTP/1.1" 200 - +2025-12-27 22:55:34,364 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:55:34] "GET /api/strategies/positions?id=1&_t=1766847334093 HTTP/1.1" 200 - +2025-12-27 22:55:39,097 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:55:39] "GET /api/strategies/positions?id=1&_t=1766847339090 HTTP/1.1" 200 - +2025-12-27 22:55:44,416 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:55:44] "GET /api/strategies/positions?id=1&_t=1766847344094 HTTP/1.1" 200 - +2025-12-27 22:55:49,095 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:55:49] "GET /api/strategies/positions?id=1&_t=1766847349089 HTTP/1.1" 200 - +2025-12-27 22:55:54,412 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:55:54] "GET /api/strategies/positions?id=1&_t=1766847354091 HTTP/1.1" 200 - +2025-12-27 22:55:59,101 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:55:59] "GET /api/strategies/positions?id=1&_t=1766847359095 HTTP/1.1" 200 - +2025-12-27 22:56:04,100 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 22:56:04,101 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 22:56:04,101 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 22:56:04,102 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:56:04] "GET /api/strategies/equityCurve?id=1&_t=1766847363782 HTTP/1.1" 200 - +2025-12-27 22:56:04,370 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:56:04] "GET /api/strategies/positions?id=1&_t=1766847364096 HTTP/1.1" 200 - +2025-12-27 22:56:09,103 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:56:09] "GET /api/strategies/positions?id=1&_t=1766847369097 HTTP/1.1" 200 - +2025-12-27 22:56:14,409 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:56:14] "GET /api/strategies/positions?id=1&_t=1766847374092 HTTP/1.1" 200 - +2025-12-27 22:56:19,102 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:56:19] "GET /api/strategies/positions?id=1&_t=1766847379096 HTTP/1.1" 200 - +2025-12-27 22:56:24,417 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:56:24] "GET /api/strategies/positions?id=1&_t=1766847384098 HTTP/1.1" 200 - +2025-12-27 22:56:29,107 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:56:29] "GET /api/strategies/positions?id=1&_t=1766847389101 HTTP/1.1" 200 - +2025-12-27 22:56:34,083 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 22:56:34,083 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 22:56:34,084 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 22:56:34,085 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:56:34] "GET /api/strategies/equityCurve?id=1&_t=1766847393774 HTTP/1.1" 200 - +2025-12-27 22:56:34,352 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:56:34] "GET /api/strategies/positions?id=1&_t=1766847394088 HTTP/1.1" 200 - +2025-12-27 22:56:39,104 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:56:39] "GET /api/strategies/positions?id=1&_t=1766847399097 HTTP/1.1" 200 - +2025-12-27 22:56:44,416 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:56:44] "GET /api/strategies/positions?id=1&_t=1766847404094 HTTP/1.1" 200 - +2025-12-27 22:56:49,107 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:56:49] "GET /api/strategies/positions?id=1&_t=1766847409101 HTTP/1.1" 200 - +2025-12-27 22:56:54,417 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:56:54] "GET /api/strategies/positions?id=1&_t=1766847414099 HTTP/1.1" 200 - +2025-12-27 22:56:59,094 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:56:59] "GET /api/strategies/positions?id=1&_t=1766847419088 HTTP/1.1" 200 - +2025-12-27 22:57:04,096 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 22:57:04,096 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 22:57:04,097 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 22:57:04,098 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:57:04] "GET /api/strategies/equityCurve?id=1&_t=1766847423774 HTTP/1.1" 200 - +2025-12-27 22:57:04,351 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:57:04] "GET /api/strategies/positions?id=1&_t=1766847424091 HTTP/1.1" 200 - +2025-12-27 22:57:09,100 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:57:09] "GET /api/strategies/positions?id=1&_t=1766847429093 HTTP/1.1" 200 - +2025-12-27 22:57:14,411 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:57:14] "GET /api/strategies/positions?id=1&_t=1766847434094 HTTP/1.1" 200 - +2025-12-27 22:57:19,104 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:57:19] "GET /api/strategies/positions?id=1&_t=1766847439097 HTTP/1.1" 200 - +2025-12-27 22:57:24,414 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:57:24] "GET /api/strategies/positions?id=1&_t=1766847444097 HTTP/1.1" 200 - +2025-12-27 22:57:29,095 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:57:29] "GET /api/strategies/positions?id=1&_t=1766847449089 HTTP/1.1" 200 - +2025-12-27 22:57:34,090 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 22:57:34,090 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 22:57:34,090 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 22:57:34,091 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:57:34] "GET /api/strategies/equityCurve?id=1&_t=1766847453774 HTTP/1.1" 200 - +2025-12-27 22:57:34,342 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:57:34] "GET /api/strategies/positions?id=1&_t=1766847454093 HTTP/1.1" 200 - +2025-12-27 22:57:39,105 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:57:39] "GET /api/strategies/positions?id=1&_t=1766847459098 HTTP/1.1" 200 - +2025-12-27 22:57:44,411 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:57:44] "GET /api/strategies/positions?id=1&_t=1766847464092 HTTP/1.1" 200 - +2025-12-27 22:57:49,095 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:57:49] "GET /api/strategies/positions?id=1&_t=1766847469088 HTTP/1.1" 200 - +2025-12-27 22:57:54,406 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:57:54] "GET /api/strategies/positions?id=1&_t=1766847474089 HTTP/1.1" 200 - +2025-12-27 22:57:59,099 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:57:59] "GET /api/strategies/positions?id=1&_t=1766847479092 HTTP/1.1" 200 - +2025-12-27 22:58:04,088 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 22:58:04,088 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 22:58:04,088 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 22:58:04,089 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:58:04] "GET /api/strategies/equityCurve?id=1&_t=1766847483774 HTTP/1.1" 200 - +2025-12-27 22:58:04,355 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:58:04] "GET /api/strategies/positions?id=1&_t=1766847484091 HTTP/1.1" 200 - +2025-12-27 22:58:09,096 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:58:09] "GET /api/strategies/positions?id=1&_t=1766847489090 HTTP/1.1" 200 - +2025-12-27 22:58:14,404 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:58:14] "GET /api/strategies/positions?id=1&_t=1766847494090 HTTP/1.1" 200 - +2025-12-27 22:58:19,108 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:58:19] "GET /api/strategies/positions?id=1&_t=1766847499102 HTTP/1.1" 200 - +2025-12-27 22:58:24,413 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:58:24] "GET /api/strategies/positions?id=1&_t=1766847504095 HTTP/1.1" 200 - +2025-12-27 22:58:29,103 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:58:29] "GET /api/strategies/positions?id=1&_t=1766847509097 HTTP/1.1" 200 - +2025-12-27 22:58:34,095 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 22:58:34,096 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 22:58:34,096 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 22:58:34,097 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:58:34] "GET /api/strategies/equityCurve?id=1&_t=1766847513774 HTTP/1.1" 200 - +2025-12-27 22:58:34,346 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:58:34] "GET /api/strategies/positions?id=1&_t=1766847514090 HTTP/1.1" 200 - +2025-12-27 22:58:39,098 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:58:39] "GET /api/strategies/positions?id=1&_t=1766847519092 HTTP/1.1" 200 - +2025-12-27 22:58:44,410 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:58:44] "GET /api/strategies/positions?id=1&_t=1766847524090 HTTP/1.1" 200 - +2025-12-27 22:58:49,096 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:58:49] "GET /api/strategies/positions?id=1&_t=1766847529089 HTTP/1.1" 200 - +2025-12-27 22:58:54,422 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:58:54] "GET /api/strategies/positions?id=1&_t=1766847534104 HTTP/1.1" 200 - +2025-12-27 22:58:59,103 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:58:59] "GET /api/strategies/positions?id=1&_t=1766847539097 HTTP/1.1" 200 - +2025-12-27 22:59:04,081 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 22:59:04,081 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 22:59:04,081 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 22:59:04,083 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:59:04] "GET /api/strategies/equityCurve?id=1&_t=1766847543774 HTTP/1.1" 200 - +2025-12-27 22:59:04,343 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:59:04] "GET /api/strategies/positions?id=1&_t=1766847544092 HTTP/1.1" 200 - +2025-12-27 22:59:09,098 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:59:09] "GET /api/strategies/positions?id=1&_t=1766847549091 HTTP/1.1" 200 - +2025-12-27 22:59:14,415 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:59:14] "GET /api/strategies/positions?id=1&_t=1766847554099 HTTP/1.1" 200 - +2025-12-27 22:59:19,102 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:59:19] "GET /api/strategies/positions?id=1&_t=1766847559096 HTTP/1.1" 200 - +2025-12-27 22:59:24,419 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:59:24] "GET /api/strategies/positions?id=1&_t=1766847564104 HTTP/1.1" 200 - +2025-12-27 22:59:29,110 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:59:29] "GET /api/strategies/positions?id=1&_t=1766847569103 HTTP/1.1" 200 - +2025-12-27 22:59:34,089 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 22:59:34,090 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 22:59:34,090 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 22:59:34,091 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:59:34] "GET /api/strategies/equityCurve?id=1&_t=1766847573775 HTTP/1.1" 200 - +2025-12-27 22:59:34,359 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:59:34] "GET /api/strategies/positions?id=1&_t=1766847574094 HTTP/1.1" 200 - +2025-12-27 22:59:39,103 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:59:39] "GET /api/strategies/positions?id=1&_t=1766847579097 HTTP/1.1" 200 - +2025-12-27 22:59:44,406 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:59:44] "GET /api/strategies/positions?id=1&_t=1766847584092 HTTP/1.1" 200 - +2025-12-27 22:59:49,106 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:59:49] "GET /api/strategies/positions?id=1&_t=1766847589100 HTTP/1.1" 200 - +2025-12-27 22:59:54,413 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:59:54] "GET /api/strategies/positions?id=1&_t=1766847594094 HTTP/1.1" 200 - +2025-12-27 22:59:59,104 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 22:59:59] "GET /api/strategies/positions?id=1&_t=1766847599097 HTTP/1.1" 200 - +2025-12-27 23:00:04,096 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:00:04,097 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:00:04,097 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:00:04,098 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:00:04] "GET /api/strategies/equityCurve?id=1&_t=1766847603775 HTTP/1.1" 200 - +2025-12-27 23:00:04,347 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:00:04] "GET /api/strategies/positions?id=1&_t=1766847604090 HTTP/1.1" 200 - +2025-12-27 23:00:09,110 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:00:09] "GET /api/strategies/positions?id=1&_t=1766847609103 HTTP/1.1" 200 - +2025-12-27 23:00:14,415 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:00:14] "GET /api/strategies/positions?id=1&_t=1766847614097 HTTP/1.1" 200 - +2025-12-27 23:00:19,100 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:00:19] "GET /api/strategies/positions?id=1&_t=1766847619094 HTTP/1.1" 200 - +2025-12-27 23:00:24,421 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:00:24] "GET /api/strategies/positions?id=1&_t=1766847624102 HTTP/1.1" 200 - +2025-12-27 23:00:29,097 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:00:29] "GET /api/strategies/positions?id=1&_t=1766847629090 HTTP/1.1" 200 - +2025-12-27 23:00:34,578 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:00:34,578 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:00:34,579 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:00:34,580 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:00:34] "GET /api/strategies/equityCurve?id=1&_t=1766847633774 HTTP/1.1" 200 - +2025-12-27 23:00:34,583 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:00:34] "GET /api/strategies/positions?id=1&_t=1766847634088 HTTP/1.1" 200 - +2025-12-27 23:00:34,633 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:00:34,634 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:00:34,635 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:00:34,637 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:00:34] "GET /api/strategies?_t=1766847634622 HTTP/1.1" 200 - +2025-12-27 23:00:56,558 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:00:56,559 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:00:56,559 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:00:56,560 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:00:56] "GET /api/strategies?_t=1766847656529 HTTP/1.1" 200 - +2025-12-27 23:01:22,287 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:01:22,288 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:01:22,288 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:01:22,288 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:01:22] "GET /api/strategies?_t=1766847682272 HTTP/1.1" 200 - +2025-12-27 23:02:03,891 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:02:03,891 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:02:03,891 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:02:03,891 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:02:03] "GET /api/strategies?_t=1766847723883 HTTP/1.1" 200 - +2025-12-27 23:02:19,442 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:02:19,443 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:02:19,443 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:02:19,443 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:02:19] "GET /api/strategies?_t=1766847739436 HTTP/1.1" 200 - +2025-12-27 23:02:59,679 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:02:59,680 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:02:59,680 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:02:59,680 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:02:59] "GET /api/strategies?_t=1766847779661 HTTP/1.1" 200 - +2025-12-27 23:03:12,870 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:03:12,870 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:03:12,870 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:03:12,870 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:03:12] "GET /api/strategies?_t=1766847792860 HTTP/1.1" 200 - +2025-12-27 23:03:29,595 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:03:29,595 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:03:29,596 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:03:29,596 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:03:29] "GET /api/strategies?_t=1766847809579 HTTP/1.1" 200 - +2025-12-27 23:03:58,056 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:03:58,056 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:03:58,056 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:03:58,056 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:03:58] "GET /api/strategies?_t=1766847838047 HTTP/1.1" 200 - +2025-12-27 23:04:08,377 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:04:08] "GET /api/market/types?_t=1766847848365 HTTP/1.1" 200 - +2025-12-27 23:04:08,681 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:04:08] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 23:04:08,692 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:04:08] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 23:06:33,294 - app.routes.strategy - INFO - ๆญฃๅœจๆต‹่ฏ•่ฟžๆŽฅ: exchange_id=okx +2025-12-27 23:06:33,294 - app.routes.strategy - INFO - API Key: pJRJ:... (len=15) +2025-12-27 23:06:33,294 - app.routes.strategy - INFO - Secret Key: pJRJ:... (len=15) +2025-12-27 23:06:33,294 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:06:33] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-27 23:06:35,339 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:06:35] "POST /api/strategies/create HTTP/1.1" 200 - +2025-12-27 23:06:35,707 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:06:35,707 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:06:35,707 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:06:35,707 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:06:35,708 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:06:35,708 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:06:35,708 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:06:35] "GET /api/strategies?_t=1766847995687 HTTP/1.1" 200 - +2025-12-27 23:06:37,987 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:06:37,988 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:06:37,988 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:06:37,989 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:06:37] "GET /api/strategies/equityCurve?id=2&_t=1766847997969 HTTP/1.1" 200 - +2025-12-27 23:06:38,298 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:06:38,298 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:06:38,298 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:06:38,299 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:06:38] "GET /api/strategies/equityCurve?id=2&_t=1766847997969 HTTP/1.1" 200 - +2025-12-27 23:06:38,302 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:06:38] "GET /api/strategies/positions?id=2&_t=1766847997981 HTTP/1.1" 200 - +2025-12-27 23:06:39,009 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:06:39,009 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:06:39,009 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:06:39,010 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:06:39] "GET /api/strategies/equityCurve?id=2&_t=1766847998680 HTTP/1.1" 200 - +2025-12-27 23:06:39,013 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:06:39,013 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:06:39,013 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:06:39,014 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:06:39] "GET /api/strategies/equityCurve?id=2&_t=1766847998680 HTTP/1.1" 200 - +2025-12-27 23:06:39,695 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:06:39] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 23:06:40,091 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:06:40,092 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:06:40,092 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:06:40,094 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:06:40] "GET /api/strategies/equityCurve?id=2&_t=1766847999761 HTTP/1.1" 200 - +2025-12-27 23:06:40,098 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:06:40,098 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:06:40,098 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:06:40,099 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:06:40] "GET /api/strategies/equityCurve?id=2&_t=1766847999761 HTTP/1.1" 200 - +2025-12-27 23:06:42,955 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:06:42] "GET /api/strategies/positions?id=2&_t=1766848002948 HTTP/1.1" 200 - +2025-12-27 23:06:48,263 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:06:48] "GET /api/strategies/positions?id=2&_t=1766848007945 HTTP/1.1" 200 - +2025-12-27 23:06:52,964 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:06:52] "GET /api/strategies/positions?id=2&_t=1766848012958 HTTP/1.1" 200 - +2025-12-27 23:06:58,260 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:06:58] "GET /api/strategies/positions?id=2&_t=1766848017945 HTTP/1.1" 200 - +2025-12-27 23:07:02,954 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:07:02] "GET /api/strategies/positions?id=2&_t=1766848022948 HTTP/1.1" 200 - +2025-12-27 23:07:08,254 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:07:08] "GET /api/strategies/positions?id=2&_t=1766848027945 HTTP/1.1" 200 - +2025-12-27 23:07:09,745 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:07:09,745 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:07:09,746 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:07:09,747 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:07:09] "GET /api/strategies/equityCurve?id=2&_t=1766848029739 HTTP/1.1" 200 - +2025-12-27 23:07:13,270 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:07:13] "GET /api/strategies/positions?id=2&_t=1766848032955 HTTP/1.1" 200 - +2025-12-27 23:07:17,953 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:07:17] "GET /api/strategies/positions?id=2&_t=1766848037947 HTTP/1.1" 200 - +2025-12-27 23:07:23,265 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:07:23] "GET /api/strategies/positions?id=2&_t=1766848042946 HTTP/1.1" 200 - +2025-12-27 23:07:27,953 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:07:27] "GET /api/strategies/positions?id=2&_t=1766848047946 HTTP/1.1" 200 - +2025-12-27 23:07:33,272 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:07:33] "GET /api/strategies/positions?id=2&_t=1766848052953 HTTP/1.1" 200 - +2025-12-27 23:07:37,955 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:07:37] "GET /api/strategies/positions?id=2&_t=1766848057949 HTTP/1.1" 200 - +2025-12-27 23:07:40,058 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:07:40,059 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:07:40,059 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:07:40,060 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:07:40] "GET /api/strategies/equityCurve?id=2&_t=1766848059739 HTTP/1.1" 200 - +2025-12-27 23:07:42,953 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:07:42] "GET /api/strategies/positions?id=2&_t=1766848062946 HTTP/1.1" 200 - +2025-12-27 23:07:48,262 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:07:48] "GET /api/strategies/positions?id=2&_t=1766848067945 HTTP/1.1" 200 - +2025-12-27 23:07:52,952 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:07:52] "GET /api/strategies/positions?id=2&_t=1766848072945 HTTP/1.1" 200 - +2025-12-27 23:07:58,276 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:07:58] "GET /api/strategies/positions?id=2&_t=1766848077957 HTTP/1.1" 200 - +2025-12-27 23:08:02,958 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:08:02] "GET /api/strategies/positions?id=2&_t=1766848082952 HTTP/1.1" 200 - +2025-12-27 23:08:08,270 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:08:08] "GET /api/strategies/positions?id=2&_t=1766848087952 HTTP/1.1" 200 - +2025-12-27 23:08:09,756 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:08:09,756 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:08:09,756 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:08:09,757 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:08:09] "GET /api/strategies/equityCurve?id=2&_t=1766848089748 HTTP/1.1" 200 - +2025-12-27 23:08:13,265 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:08:13] "GET /api/strategies/positions?id=2&_t=1766848092948 HTTP/1.1" 200 - +2025-12-27 23:08:17,964 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:08:17] "GET /api/strategies/positions?id=2&_t=1766848097957 HTTP/1.1" 200 - +2025-12-27 23:08:23,269 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:08:23] "GET /api/strategies/positions?id=2&_t=1766848102949 HTTP/1.1" 200 - +2025-12-27 23:08:27,952 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:08:27] "GET /api/strategies/positions?id=2&_t=1766848107946 HTTP/1.1" 200 - +2025-12-27 23:08:33,264 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:08:33] "GET /api/strategies/positions?id=2&_t=1766848112948 HTTP/1.1" 200 - +2025-12-27 23:08:37,730 - app.routes.strategy - INFO - ๆญฃๅœจๆต‹่ฏ•่ฟžๆŽฅ: exchange_id=okx +2025-12-27 23:08:37,730 - app.routes.strategy - INFO - API Key: pJRJ:... (len=15) +2025-12-27 23:08:37,731 - app.routes.strategy - INFO - Secret Key: pJRJ:... (len=15) +2025-12-27 23:08:37,731 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:08:37] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-27 23:08:38,260 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:08:38] "GET /api/strategies/positions?id=2&_t=1766848117948 HTTP/1.1" 200 - +2025-12-27 23:08:39,744 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:08:39,744 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:08:39,744 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:08:39,745 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:08:39] "GET /api/strategies/equityCurve?id=2&_t=1766848119737 HTTP/1.1" 200 - +2025-12-27 23:08:43,274 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:08:43] "GET /api/strategies/positions?id=2&_t=1766848122954 HTTP/1.1" 200 - +2025-12-27 23:08:47,955 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:08:47] "GET /api/strategies/positions?id=2&_t=1766848127948 HTTP/1.1" 200 - +2025-12-27 23:08:53,274 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:08:53] "GET /api/strategies/positions?id=2&_t=1766848132954 HTTP/1.1" 200 - +2025-12-27 23:08:57,952 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:08:57] "GET /api/strategies/positions?id=2&_t=1766848137946 HTTP/1.1" 200 - +2025-12-27 23:09:03,262 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:09:03] "GET /api/strategies/positions?id=2&_t=1766848142946 HTTP/1.1" 200 - +2025-12-27 23:09:07,952 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:09:07] "GET /api/strategies/positions?id=2&_t=1766848147946 HTTP/1.1" 200 - +2025-12-27 23:09:10,063 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:09:10,063 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:09:10,063 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:09:10,064 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:09:10] "GET /api/strategies/equityCurve?id=2&_t=1766848149745 HTTP/1.1" 200 - +2025-12-27 23:09:12,967 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:09:12] "GET /api/strategies/positions?id=2&_t=1766848152960 HTTP/1.1" 200 - +2025-12-27 23:09:18,266 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:09:18] "GET /api/strategies/positions?id=2&_t=1766848157948 HTTP/1.1" 200 - +2025-12-27 23:09:22,958 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:09:22] "GET /api/strategies/positions?id=2&_t=1766848162951 HTTP/1.1" 200 - +2025-12-27 23:09:28,268 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:09:28] "GET /api/strategies/positions?id=2&_t=1766848167947 HTTP/1.1" 200 - +2025-12-27 23:09:32,963 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:09:32] "GET /api/strategies/positions?id=2&_t=1766848172957 HTTP/1.1" 200 - +2025-12-27 23:09:38,266 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:09:38] "GET /api/strategies/positions?id=2&_t=1766848177948 HTTP/1.1" 200 - +2025-12-27 23:09:39,748 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:09:39,748 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:09:39,748 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:09:39,749 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:09:39] "GET /api/strategies/equityCurve?id=2&_t=1766848179741 HTTP/1.1" 200 - +2025-12-27 23:09:43,273 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:09:43] "GET /api/strategies/positions?id=2&_t=1766848182954 HTTP/1.1" 200 - +2025-12-27 23:09:47,952 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:09:47] "GET /api/strategies/positions?id=2&_t=1766848187946 HTTP/1.1" 200 - +2025-12-27 23:09:53,256 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:09:53] "GET /api/strategies/positions?id=2&_t=1766848192945 HTTP/1.1" 200 - +2025-12-27 23:09:57,953 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:09:57] "GET /api/strategies/positions?id=2&_t=1766848197945 HTTP/1.1" 200 - +2025-12-27 23:10:03,265 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:10:03] "GET /api/strategies/positions?id=2&_t=1766848202946 HTTP/1.1" 200 - +2025-12-27 23:10:07,956 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:10:07] "GET /api/strategies/positions?id=2&_t=1766848207950 HTTP/1.1" 200 - +2025-12-27 23:10:10,056 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:10:10,057 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:10:10,057 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:10:10,058 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:10:10] "GET /api/strategies/equityCurve?id=2&_t=1766848209740 HTTP/1.1" 200 - +2025-12-27 23:10:12,952 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:10:12] "GET /api/strategies/positions?id=2&_t=1766848212945 HTTP/1.1" 200 - +2025-12-27 23:10:18,268 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:10:18] "GET /api/strategies/positions?id=2&_t=1766848217945 HTTP/1.1" 200 - +2025-12-27 23:10:22,952 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:10:22] "GET /api/strategies/positions?id=2&_t=1766848222946 HTTP/1.1" 200 - +2025-12-27 23:10:28,269 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:10:28] "GET /api/strategies/positions?id=2&_t=1766848227946 HTTP/1.1" 200 - +2025-12-27 23:10:32,962 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:10:32] "GET /api/strategies/positions?id=2&_t=1766848232956 HTTP/1.1" 200 - +2025-12-27 23:10:38,277 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:10:38] "GET /api/strategies/positions?id=2&_t=1766848237958 HTTP/1.1" 200 - +2025-12-27 23:10:39,754 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:10:39,754 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:10:39,754 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:10:39,755 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:10:39] "GET /api/strategies/equityCurve?id=2&_t=1766848239747 HTTP/1.1" 200 - +2025-12-27 23:10:43,263 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:10:43] "GET /api/strategies/positions?id=2&_t=1766848242946 HTTP/1.1" 200 - +2025-12-27 23:10:47,951 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:10:47] "GET /api/strategies/positions?id=2&_t=1766848247945 HTTP/1.1" 200 - +2025-12-27 23:10:53,275 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:10:53] "GET /api/strategies/positions?id=2&_t=1766848252960 HTTP/1.1" 200 - +2025-12-27 23:10:57,952 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:10:57] "GET /api/strategies/positions?id=2&_t=1766848257945 HTTP/1.1" 200 - +2025-12-27 23:11:03,273 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:11:03] "GET /api/strategies/positions?id=2&_t=1766848262955 HTTP/1.1" 200 - +2025-12-27 23:11:07,957 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:11:07] "GET /api/strategies/positions?id=2&_t=1766848267951 HTTP/1.1" 200 - +2025-12-27 23:11:10,055 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:11:10,055 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:11:10,055 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:11:10,056 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:11:10] "GET /api/strategies/equityCurve?id=2&_t=1766848269738 HTTP/1.1" 200 - +2025-12-27 23:11:12,968 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:11:12] "GET /api/strategies/positions?id=2&_t=1766848272961 HTTP/1.1" 200 - +2025-12-27 23:11:18,259 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:11:18] "GET /api/strategies/positions?id=2&_t=1766848277946 HTTP/1.1" 200 - +2025-12-27 23:11:22,953 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:11:22] "GET /api/strategies/positions?id=2&_t=1766848282945 HTTP/1.1" 200 - +2025-12-27 23:11:28,261 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:11:28] "GET /api/strategies/positions?id=2&_t=1766848287946 HTTP/1.1" 200 - +2025-12-27 23:11:32,964 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:11:32] "GET /api/strategies/positions?id=2&_t=1766848292956 HTTP/1.1" 200 - +2025-12-27 23:11:38,266 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:11:38] "GET /api/strategies/positions?id=2&_t=1766848297952 HTTP/1.1" 200 - +2025-12-27 23:11:39,750 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:11:39,751 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:11:39,751 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:11:39,752 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:11:39] "GET /api/strategies/equityCurve?id=2&_t=1766848299744 HTTP/1.1" 200 - +2025-12-27 23:11:43,267 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:11:43] "GET /api/strategies/positions?id=2&_t=1766848302949 HTTP/1.1" 200 - +2025-12-27 23:11:47,966 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:11:47] "GET /api/strategies/positions?id=2&_t=1766848307960 HTTP/1.1" 200 - +2025-12-27 23:11:53,275 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:11:53] "GET /api/strategies/positions?id=2&_t=1766848312957 HTTP/1.1" 200 - +2025-12-27 23:11:57,955 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:11:57] "GET /api/strategies/positions?id=2&_t=1766848317948 HTTP/1.1" 200 - +2025-12-27 23:12:03,271 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:12:03] "GET /api/strategies/positions?id=2&_t=1766848322952 HTTP/1.1" 200 - +2025-12-27 23:12:09,270 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:12:09] "GET /api/strategies/positions?id=2&_t=1766848327951 HTTP/1.1" 200 - +2025-12-27 23:12:09,643 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:12:09,643 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:12:09,643 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:12:09,644 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:12:09,644 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:12:09,644 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:12:09,644 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:12:09] "GET /api/strategies?_t=1766848329598 HTTP/1.1" 200 - +2025-12-27 23:12:21,223 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:12:21,223 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:12:21,224 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:12:21,224 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:12:21,224 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:12:21,224 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:12:21,224 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:12:21] "GET /api/strategies?_t=1766848341213 HTTP/1.1" 200 - +2025-12-27 23:12:39,485 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:12:39,485 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:12:39,486 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:12:39,486 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:12:39,486 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:12:39,486 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:12:39,486 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:12:39] "GET /api/strategies?_t=1766848359477 HTTP/1.1" 200 - +2025-12-27 23:12:53,293 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:12:53,293 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:12:53,293 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:12:53,294 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:12:53,294 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:12:53,294 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:12:53,294 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:12:53] "GET /api/strategies?_t=1766848373278 HTTP/1.1" 200 - +2025-12-27 23:13:20,069 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:13:20,069 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:13:20,069 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:13:20,069 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:13:20,070 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:13:20,070 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:13:20,070 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:13:20] "GET /api/strategies?_t=1766848400061 HTTP/1.1" 200 - +2025-12-27 23:13:35,462 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:13:35,462 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:13:35,463 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:13:35,463 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:13:35,463 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:13:35,463 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:13:35,463 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:13:35] "GET /api/strategies?_t=1766848415454 HTTP/1.1" 200 - +2025-12-27 23:14:16,794 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:14:16,794 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:14:16,794 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:14:16,794 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:14:16,795 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:14:16,795 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:14:16,795 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:14:16] "GET /api/strategies?_t=1766848456784 HTTP/1.1" 200 - +2025-12-27 23:25:10,653 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-27 23:25:10,676 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-27 23:25:10,676 - werkzeug - INFO - Press CTRL+C to quit +2025-12-27 23:25:12,609 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-27 23:25:12,612 - app.utils.encryption - WARNING - ENCRYPTION_KEY not set; generating an ephemeral in-memory key (development only). +2025-12-27 23:25:12,612 - app.utils.encryption - WARNING - For production, set ENCRYPTION_KEY or provide a .encryption_key file. +2025-12-27 23:25:12,620 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-27 23:25:12,621 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-27 23:25:12,621 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 111 +2025-12-27 23:25:12,621 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:25:12,621 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:25:12,622 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:25:12,627 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:25:12] "GET /api/strategies/equityCurve?id=2&_t=1766849112284 HTTP/1.1" 200 - +2025-12-27 23:25:12,633 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-27 23:25:12,633 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-27 23:25:12,634 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 111 +2025-12-27 23:25:12,634 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:25:12,634 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:25:12,634 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:25:12,637 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:25:12] "GET /api/strategies/equityCurve?id=2&_t=1766849112285 HTTP/1.1" 200 - +2025-12-27 23:25:12,643 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:25:12] "GET /api/strategies/positions?id=2&_t=1766849112286 HTTP/1.1" 200 - +2025-12-27 23:25:13,807 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-27 23:25:13,807 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-27 23:25:13,807 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 111 +2025-12-27 23:25:13,807 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:25:13,807 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:25:13,808 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:25:13,809 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:25:13] "GET /api/strategies/equityCurve?id=2&_t=1766849113800 HTTP/1.1" 200 - +2025-12-27 23:25:14,121 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-27 23:25:14,121 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-27 23:25:14,121 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 111 +2025-12-27 23:25:14,121 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:25:14,121 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:25:14,121 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:25:14,122 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:25:14] "GET /api/strategies/equityCurve?id=2&_t=1766849113800 HTTP/1.1" 200 - +2025-12-27 23:25:15,287 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:25:15] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 23:25:15,292 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:25:15] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 23:25:15,305 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-27 23:25:15,305 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-27 23:25:15,306 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 111 +2025-12-27 23:25:15,306 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:25:15,306 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:25:15,306 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:25:15,307 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:25:15] "GET /api/strategies/equityCurve?id=2&_t=1766849114987 HTTP/1.1" 200 - +2025-12-27 23:25:15,312 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-27 23:25:15,312 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-27 23:25:15,312 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 111 +2025-12-27 23:25:15,313 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:25:15,313 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:25:15,313 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:25:15,314 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:25:15] "GET /api/strategies/equityCurve?id=2&_t=1766849114987 HTTP/1.1" 200 - +2025-12-27 23:25:17,302 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:25:17] "GET /api/strategies/positions?id=2&_t=1766849117294 HTTP/1.1" 200 - +2025-12-27 23:25:22,599 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:25:22] "GET /api/strategies/positions?id=2&_t=1766849122287 HTTP/1.1" 200 - +2025-12-27 23:25:27,289 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:25:27] "GET /api/strategies/positions?id=2&_t=1766849127283 HTTP/1.1" 200 - +2025-12-27 23:25:32,609 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:25:32] "GET /api/strategies/positions?id=2&_t=1766849132290 HTTP/1.1" 200 - +2025-12-27 23:25:37,303 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:25:37] "GET /api/strategies/positions?id=2&_t=1766849137297 HTTP/1.1" 200 - +2025-12-27 23:25:42,604 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:25:42] "GET /api/strategies/positions?id=2&_t=1766849142294 HTTP/1.1" 200 - +2025-12-27 23:25:44,987 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-27 23:25:44,987 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-27 23:25:44,987 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 111 +2025-12-27 23:25:44,987 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:25:44,987 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:25:44,988 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:25:44,989 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:25:44] "GET /api/strategies/equityCurve?id=2&_t=1766849144981 HTTP/1.1" 200 - +2025-12-27 23:25:47,603 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:25:47] "GET /api/strategies/positions?id=2&_t=1766849147284 HTTP/1.1" 200 - +2025-12-27 23:25:52,298 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:25:52] "GET /api/strategies/positions?id=2&_t=1766849152292 HTTP/1.1" 200 - +2025-12-27 23:25:57,610 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:25:57] "GET /api/strategies/positions?id=2&_t=1766849157293 HTTP/1.1" 200 - +2025-12-27 23:26:02,300 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:26:02] "GET /api/strategies/positions?id=2&_t=1766849162294 HTTP/1.1" 200 - +2025-12-27 23:26:07,617 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:26:07] "GET /api/strategies/positions?id=2&_t=1766849167307 HTTP/1.1" 200 - +2025-12-27 23:26:12,293 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:26:12] "GET /api/strategies/positions?id=2&_t=1766849172287 HTTP/1.1" 200 - +2025-12-27 23:26:15,299 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-27 23:26:15,299 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-27 23:26:15,300 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 111 +2025-12-27 23:26:15,300 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:26:15,300 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:26:15,300 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:26:15,301 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:26:15] "GET /api/strategies/equityCurve?id=2&_t=1766849174978 HTTP/1.1" 200 - +2025-12-27 23:26:17,299 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:26:17] "GET /api/strategies/positions?id=2&_t=1766849177293 HTTP/1.1" 200 - +2025-12-27 23:26:22,616 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:26:22] "GET /api/strategies/positions?id=2&_t=1766849182298 HTTP/1.1" 200 - +2025-12-27 23:26:27,298 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:26:27] "GET /api/strategies/positions?id=2&_t=1766849187292 HTTP/1.1" 200 - +2025-12-27 23:26:32,611 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:26:32] "GET /api/strategies/positions?id=2&_t=1766849192293 HTTP/1.1" 200 - +2025-12-27 23:26:37,305 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:26:37] "GET /api/strategies/positions?id=2&_t=1766849197298 HTTP/1.1" 200 - +2025-12-27 23:26:37,954 - app.routes.strategy - INFO - ๆญฃๅœจๆต‹่ฏ•่ฟžๆŽฅ: exchange_id=okx +2025-12-27 23:26:37,954 - app.routes.strategy - INFO - API Key: pJRJ:... (len=15) +2025-12-27 23:26:37,954 - app.routes.strategy - INFO - Secret Key: pJRJ:... (len=15) +2025-12-27 23:26:53,567 - app.services.strategy - ERROR - test_exchange_connection failed: okx GET https://www.okx.com/api/v5/asset/currencies +2025-12-27 23:26:53,568 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:26:53] "POST /api/strategies/test-connection HTTP/1.1" 400 - +2025-12-27 23:26:53,571 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:26:53] "GET /api/strategies/positions?id=2&_t=1766849202288 HTTP/1.1" 200 - +2025-12-27 23:26:53,574 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-27 23:26:53,574 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-27 23:26:53,574 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 111 +2025-12-27 23:26:53,574 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:26:53,574 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:26:53,574 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:26:53,575 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:26:53] "GET /api/strategies/equityCurve?id=2&_t=1766849204981 HTTP/1.1" 200 - +2025-12-27 23:26:53,578 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:26:53] "GET /api/strategies/positions?id=2&_t=1766849207296 HTTP/1.1" 200 - +2025-12-27 23:26:53,583 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:26:53] "GET /api/strategies/positions?id=2&_t=1766849212292 HTTP/1.1" 200 - +2025-12-27 23:26:57,611 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:26:57] "GET /api/strategies/positions?id=2&_t=1766849217294 HTTP/1.1" 200 - +2025-12-27 23:27:02,293 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:27:02] "GET /api/strategies/positions?id=2&_t=1766849222286 HTTP/1.1" 200 - +2025-12-27 23:27:07,931 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:27:07] "GET /api/strategies/positions?id=2&_t=1766849227509 HTTP/1.1" 200 - +2025-12-27 23:27:12,516 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:27:12] "GET /api/strategies/positions?id=2&_t=1766849232509 HTTP/1.1" 200 - +2025-12-27 23:27:15,825 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-27 23:27:15,825 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-27 23:27:15,825 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 111 +2025-12-27 23:27:15,825 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:27:15,825 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:27:15,825 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:27:15,826 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:27:15] "GET /api/strategies/equityCurve?id=2&_t=1766849235512 HTTP/1.1" 200 - +2025-12-27 23:27:17,516 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:27:17] "GET /api/strategies/positions?id=2&_t=1766849237509 HTTP/1.1" 200 - +2025-12-27 23:27:22,829 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:27:22] "GET /api/strategies/positions?id=2&_t=1766849242511 HTTP/1.1" 200 - +2025-12-27 23:27:27,513 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:27:27] "GET /api/strategies/positions?id=2&_t=1766849247507 HTTP/1.1" 200 - +2025-12-27 23:27:32,290 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:27:32] "GET /api/strategies/positions?id=2&_t=1766849252283 HTTP/1.1" 200 - +2025-12-27 23:27:37,290 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:27:37] "GET /api/strategies/positions?id=2&_t=1766849257283 HTTP/1.1" 200 - +2025-12-27 23:27:42,595 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:27:42] "GET /api/strategies/positions?id=2&_t=1766849262282 HTTP/1.1" 200 - +2025-12-27 23:27:45,511 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-27 23:27:45,512 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-27 23:27:45,512 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 111 +2025-12-27 23:27:45,512 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:27:45,512 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:27:45,512 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:27:45,513 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:27:45] "GET /api/strategies/equityCurve?id=2&_t=1766849265503 HTTP/1.1" 200 - +2025-12-27 23:27:47,743 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:27:47] "GET /api/strategies/positions?id=2&_t=1766849267419 HTTP/1.1" 200 - +2025-12-27 23:27:52,298 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:27:52] "GET /api/strategies/positions?id=2&_t=1766849272291 HTTP/1.1" 200 - +2025-12-27 23:27:57,593 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:27:57] "GET /api/strategies/positions?id=2&_t=1766849277283 HTTP/1.1" 200 - +2025-12-27 23:27:57,848 - app.routes.strategy - INFO - ๆญฃๅœจๆต‹่ฏ•่ฟžๆŽฅ: exchange_id=okx +2025-12-27 23:27:57,849 - app.routes.strategy - INFO - API Key: 4cd9c... (len=36) +2025-12-27 23:27:57,849 - app.routes.strategy - INFO - Secret Key: 2B295... (len=32) +2025-12-27 23:28:12,922 - app.services.strategy - ERROR - test_exchange_connection failed: okx GET https://www.okx.com/api/v5/asset/currencies +2025-12-27 23:28:12,923 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:28:12] "POST /api/strategies/test-connection HTTP/1.1" 400 - +2025-12-27 23:28:12,926 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:28:12] "GET /api/strategies/positions?id=2&_t=1766849282284 HTTP/1.1" 200 - +2025-12-27 23:28:12,929 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:28:12] "GET /api/strategies/positions?id=2&_t=1766849287284 HTTP/1.1" 200 - +2025-12-27 23:28:12,932 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:28:12] "GET /api/strategies/positions?id=2&_t=1766849292284 HTTP/1.1" 200 - +2025-12-27 23:28:15,289 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-27 23:28:15,289 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-27 23:28:15,289 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 111 +2025-12-27 23:28:15,290 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:28:15,290 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:28:15,290 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:28:15,291 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:28:15] "GET /api/strategies/equityCurve?id=2&_t=1766849294973 HTTP/1.1" 200 - +2025-12-27 23:28:17,289 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:28:17] "GET /api/strategies/positions?id=2&_t=1766849297283 HTTP/1.1" 200 - +2025-12-27 23:28:19,425 - app.routes.strategy - INFO - ๆญฃๅœจๆต‹่ฏ•่ฟžๆŽฅ: exchange_id=okx +2025-12-27 23:28:19,425 - app.routes.strategy - INFO - API Key: 4cd9c... (len=36) +2025-12-27 23:28:19,425 - app.routes.strategy - INFO - Secret Key: 2B295... (len=32) +2025-12-27 23:28:34,450 - app.services.strategy - ERROR - test_exchange_connection failed: okx GET https://www.okx.com/api/v5/asset/currencies +2025-12-27 23:28:34,451 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:28:34] "POST /api/strategies/test-connection HTTP/1.1" 400 - +2025-12-27 23:28:34,456 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:28:34] "GET /api/strategies/positions?id=2&_t=1766849302284 HTTP/1.1" 200 - +2025-12-27 23:28:34,459 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:28:34] "GET /api/strategies/positions?id=2&_t=1766849307285 HTTP/1.1" 200 - +2025-12-27 23:28:34,462 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:28:34] "GET /api/strategies/positions?id=2&_t=1766849312285 HTTP/1.1" 200 - +2025-12-27 23:28:37,607 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:28:37] "GET /api/strategies/positions?id=2&_t=1766849317288 HTTP/1.1" 200 - +2025-12-27 23:28:42,302 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:28:42] "GET /api/strategies/positions?id=2&_t=1766849322294 HTTP/1.1" 200 - +2025-12-27 23:28:45,296 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-27 23:28:45,296 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-27 23:28:45,296 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 111 +2025-12-27 23:28:45,296 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:28:45,296 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:28:45,296 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:28:45,298 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:28:45] "GET /api/strategies/equityCurve?id=2&_t=1766849324980 HTTP/1.1" 200 - +2025-12-27 23:28:47,299 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:28:47] "GET /api/strategies/positions?id=2&_t=1766849327293 HTTP/1.1" 200 - +2025-12-27 23:28:52,606 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:28:52] "GET /api/strategies/positions?id=2&_t=1766849332284 HTTP/1.1" 200 - +2025-12-27 23:28:57,292 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:28:57] "GET /api/strategies/positions?id=2&_t=1766849337285 HTTP/1.1" 200 - +2025-12-27 23:29:02,611 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:29:02] "GET /api/strategies/positions?id=2&_t=1766849342293 HTTP/1.1" 200 - +2025-12-27 23:29:07,292 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:29:07] "GET /api/strategies/positions?id=2&_t=1766849347286 HTTP/1.1" 200 - +2025-12-27 23:29:12,613 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:29:12] "GET /api/strategies/positions?id=2&_t=1766849352297 HTTP/1.1" 200 - +2025-12-27 23:29:14,981 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-27 23:29:14,981 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-27 23:29:14,981 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 111 +2025-12-27 23:29:14,981 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:29:14,981 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:29:14,981 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:29:14,982 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:29:14] "GET /api/strategies/equityCurve?id=2&_t=1766849354974 HTTP/1.1" 200 - +2025-12-27 23:29:17,612 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:29:17] "GET /api/strategies/positions?id=2&_t=1766849357290 HTTP/1.1" 200 - +2025-12-27 23:29:22,296 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:29:22] "GET /api/strategies/positions?id=2&_t=1766849362289 HTTP/1.1" 200 - +2025-12-27 23:29:27,603 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:29:27] "GET /api/strategies/positions?id=2&_t=1766849367284 HTTP/1.1" 200 - +2025-12-27 23:29:32,291 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:29:32] "GET /api/strategies/positions?id=2&_t=1766849372285 HTTP/1.1" 200 - +2025-12-27 23:29:37,615 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:29:37] "GET /api/strategies/positions?id=2&_t=1766849377295 HTTP/1.1" 200 - +2025-12-27 23:29:42,300 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:29:42] "GET /api/strategies/positions?id=2&_t=1766849382294 HTTP/1.1" 200 - +2025-12-27 23:29:45,307 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-27 23:29:45,307 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-27 23:29:45,307 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 111 +2025-12-27 23:29:45,307 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:29:45,307 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:29:45,307 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:29:45,308 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:29:45] "GET /api/strategies/equityCurve?id=2&_t=1766849384988 HTTP/1.1" 200 - +2025-12-27 23:29:47,295 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:29:47] "GET /api/strategies/positions?id=2&_t=1766849387288 HTTP/1.1" 200 - +2025-12-27 23:29:52,610 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:29:52] "GET /api/strategies/positions?id=2&_t=1766849392294 HTTP/1.1" 200 - +2025-12-27 23:29:57,297 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:29:57] "GET /api/strategies/positions?id=2&_t=1766849397291 HTTP/1.1" 200 - +2025-12-27 23:30:02,611 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:30:02] "GET /api/strategies/positions?id=2&_t=1766849402297 HTTP/1.1" 200 - +2025-12-27 23:30:07,293 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:30:07] "GET /api/strategies/positions?id=2&_t=1766849407284 HTTP/1.1" 200 - +2025-12-27 23:30:12,608 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:30:12] "GET /api/strategies/positions?id=2&_t=1766849412291 HTTP/1.1" 200 - +2025-12-27 23:30:14,995 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-27 23:30:14,996 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-27 23:30:14,996 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 111 +2025-12-27 23:30:14,996 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:30:14,996 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:30:14,996 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:30:14,997 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:30:14] "GET /api/strategies/equityCurve?id=2&_t=1766849414989 HTTP/1.1" 200 - +2025-12-27 23:30:17,605 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:30:17] "GET /api/strategies/positions?id=2&_t=1766849417289 HTTP/1.1" 200 - +2025-12-27 23:30:22,293 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:30:22] "GET /api/strategies/positions?id=2&_t=1766849422285 HTTP/1.1" 200 - +2025-12-27 23:30:27,601 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:30:27] "GET /api/strategies/positions?id=2&_t=1766849427283 HTTP/1.1" 200 - +2025-12-27 23:30:32,303 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:30:32] "GET /api/strategies/positions?id=2&_t=1766849432297 HTTP/1.1" 200 - +2025-12-27 23:30:37,599 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:30:37] "GET /api/strategies/positions?id=2&_t=1766849437283 HTTP/1.1" 200 - +2025-12-27 23:30:42,291 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:30:42] "GET /api/strategies/positions?id=2&_t=1766849442285 HTTP/1.1" 200 - +2025-12-27 23:30:45,303 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-27 23:30:45,304 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-27 23:30:45,304 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 111 +2025-12-27 23:30:45,304 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:30:45,304 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:30:45,304 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:30:45,305 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:30:45] "GET /api/strategies/equityCurve?id=2&_t=1766849444985 HTTP/1.1" 200 - +2025-12-27 23:30:47,299 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:30:47] "GET /api/strategies/positions?id=2&_t=1766849447293 HTTP/1.1" 200 - +2025-12-27 23:30:52,610 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:30:52] "GET /api/strategies/positions?id=2&_t=1766849452294 HTTP/1.1" 200 - +2025-12-27 23:30:57,293 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:30:57] "GET /api/strategies/positions?id=2&_t=1766849457286 HTTP/1.1" 200 - +2025-12-27 23:31:02,610 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:31:02] "GET /api/strategies/positions?id=2&_t=1766849462296 HTTP/1.1" 200 - +2025-12-27 23:31:07,295 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:31:07] "GET /api/strategies/positions?id=2&_t=1766849467288 HTTP/1.1" 200 - +2025-12-27 23:31:12,608 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:31:12] "GET /api/strategies/positions?id=2&_t=1766849472289 HTTP/1.1" 200 - +2025-12-27 23:31:14,984 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-27 23:31:14,985 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-27 23:31:14,985 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 111 +2025-12-27 23:31:14,985 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:31:14,985 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:31:14,985 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:31:14,986 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:31:14] "GET /api/strategies/equityCurve?id=2&_t=1766849474979 HTTP/1.1" 200 - +2025-12-27 23:31:17,608 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:31:17] "GET /api/strategies/positions?id=2&_t=1766849477289 HTTP/1.1" 200 - +2025-12-27 23:31:22,293 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:31:22] "GET /api/strategies/positions?id=2&_t=1766849482286 HTTP/1.1" 200 - +2025-12-27 23:31:27,612 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:31:27] "GET /api/strategies/positions?id=2&_t=1766849487293 HTTP/1.1" 200 - +2025-12-27 23:31:32,295 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:31:32] "GET /api/strategies/positions?id=2&_t=1766849492288 HTTP/1.1" 200 - +2025-12-27 23:31:37,609 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:31:37] "GET /api/strategies/positions?id=2&_t=1766849497291 HTTP/1.1" 200 - +2025-12-27 23:31:42,294 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:31:42] "GET /api/strategies/positions?id=2&_t=1766849502287 HTTP/1.1" 200 - +2025-12-27 23:31:45,293 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-27 23:31:45,293 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-27 23:31:45,293 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 111 +2025-12-27 23:31:45,293 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:31:45,294 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:31:45,294 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:31:45,295 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:31:45] "GET /api/strategies/equityCurve?id=2&_t=1766849504977 HTTP/1.1" 200 - +2025-12-27 23:31:47,301 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:31:47] "GET /api/strategies/positions?id=2&_t=1766849507294 HTTP/1.1" 200 - +2025-12-27 23:31:52,613 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:31:52] "GET /api/strategies/positions?id=2&_t=1766849512292 HTTP/1.1" 200 - +2025-12-27 23:31:57,300 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:31:57] "GET /api/strategies/positions?id=2&_t=1766849517294 HTTP/1.1" 200 - +2025-12-27 23:32:02,613 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:32:02] "GET /api/strategies/positions?id=2&_t=1766849522293 HTTP/1.1" 200 - +2025-12-27 23:32:07,300 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:32:07] "GET /api/strategies/positions?id=2&_t=1766849527293 HTTP/1.1" 200 - +2025-12-27 23:32:12,614 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:32:12] "GET /api/strategies/positions?id=2&_t=1766849532293 HTTP/1.1" 200 - +2025-12-27 23:32:14,994 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-27 23:32:14,994 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-27 23:32:14,995 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 111 +2025-12-27 23:32:14,995 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:32:14,995 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:32:14,995 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:32:14,996 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:32:14] "GET /api/strategies/equityCurve?id=2&_t=1766849534987 HTTP/1.1" 200 - +2025-12-27 23:32:17,603 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:32:17] "GET /api/strategies/positions?id=2&_t=1766849537287 HTTP/1.1" 200 - +2025-12-27 23:32:22,302 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:32:22] "GET /api/strategies/positions?id=2&_t=1766849542295 HTTP/1.1" 200 - +2025-12-27 23:32:27,617 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:32:27] "GET /api/strategies/positions?id=2&_t=1766849547297 HTTP/1.1" 200 - +2025-12-27 23:32:32,295 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:32:32] "GET /api/strategies/positions?id=2&_t=1766849552288 HTTP/1.1" 200 - +2025-12-27 23:32:37,602 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:32:37] "GET /api/strategies/positions?id=2&_t=1766849557284 HTTP/1.1" 200 - +2025-12-27 23:32:42,294 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:32:42] "GET /api/strategies/positions?id=2&_t=1766849562287 HTTP/1.1" 200 - +2025-12-27 23:32:45,300 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-27 23:32:45,301 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-27 23:32:45,301 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 111 +2025-12-27 23:32:45,301 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:32:45,301 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:32:45,301 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:32:45,302 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:32:45] "GET /api/strategies/equityCurve?id=2&_t=1766849564982 HTTP/1.1" 200 - +2025-12-27 23:32:47,296 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:32:47] "GET /api/strategies/positions?id=2&_t=1766849567289 HTTP/1.1" 200 - +2025-12-27 23:32:52,610 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:32:52] "GET /api/strategies/positions?id=2&_t=1766849572295 HTTP/1.1" 200 - +2025-12-27 23:32:57,295 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:32:57] "GET /api/strategies/positions?id=2&_t=1766849577288 HTTP/1.1" 200 - +2025-12-27 23:33:02,605 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:33:02] "GET /api/strategies/positions?id=2&_t=1766849582288 HTTP/1.1" 200 - +2025-12-27 23:33:07,293 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:33:07] "GET /api/strategies/positions?id=2&_t=1766849587284 HTTP/1.1" 200 - +2025-12-27 23:33:12,603 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:33:12] "GET /api/strategies/positions?id=2&_t=1766849592285 HTTP/1.1" 200 - +2025-12-27 23:33:14,994 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-27 23:33:14,994 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-27 23:33:14,994 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 111 +2025-12-27 23:33:14,994 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:33:14,994 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:33:14,994 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:33:14,995 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:33:14] "GET /api/strategies/equityCurve?id=2&_t=1766849594987 HTTP/1.1" 200 - +2025-12-27 23:33:17,602 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:33:17] "GET /api/strategies/positions?id=2&_t=1766849597286 HTTP/1.1" 200 - +2025-12-27 23:33:22,298 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:33:22] "GET /api/strategies/positions?id=2&_t=1766849602292 HTTP/1.1" 200 - +2025-12-27 23:33:27,605 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:33:27] "GET /api/strategies/positions?id=2&_t=1766849607287 HTTP/1.1" 200 - +2025-12-27 23:33:32,291 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:33:32] "GET /api/strategies/positions?id=2&_t=1766849612284 HTTP/1.1" 200 - +2025-12-27 23:33:37,614 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:33:37] "GET /api/strategies/positions?id=2&_t=1766849617295 HTTP/1.1" 200 - +2025-12-27 23:33:42,298 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:33:42] "GET /api/strategies/positions?id=2&_t=1766849622292 HTTP/1.1" 200 - +2025-12-27 23:33:45,298 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-27 23:33:45,298 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-27 23:33:45,298 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 111 +2025-12-27 23:33:45,298 - app.utils.encryption - ERROR - Base64 ่งฃ็ ๅคฑ่ดฅ: Only base64 data is allowed +2025-12-27 23:33:45,298 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒ้•ฟๅบฆ: 4001 +2025-12-27 23:33:45,298 - app.utils.encryption - ERROR - ๅŠ ๅฏ†ๅญ—็ฌฆไธฒๅ‰50ๅญ—็ฌฆ: {"indicator_id": 1, "indicator_name": "SuperTrend" +2025-12-27 23:33:45,299 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:33:45] "GET /api/strategies/equityCurve?id=2&_t=1766849624979 HTTP/1.1" 200 - +2025-12-27 23:33:47,299 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:33:47] "GET /api/strategies/positions?id=2&_t=1766849627292 HTTP/1.1" 200 - +2025-12-27 23:33:52,616 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:33:52] "GET /api/strategies/positions?id=2&_t=1766849632297 HTTP/1.1" 200 - +2025-12-27 23:33:57,298 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:33:57] "GET /api/strategies/positions?id=2&_t=1766849637290 HTTP/1.1" 200 - +2025-12-27 23:34:02,607 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:34:02] "GET /api/strategies/positions?id=2&_t=1766849642287 HTTP/1.1" 200 - +2025-12-27 23:34:05,618 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-27 23:34:05,631 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-27 23:34:05,632 - werkzeug - INFO - Press CTRL+C to quit +2025-12-27 23:34:07,306 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-27 23:34:07,307 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:34:07] "GET /api/strategies/positions?id=2&_t=1766849647298 HTTP/1.1" 200 - +2025-12-27 23:34:09,384 - app.routes.strategy - INFO - ๆญฃๅœจๆต‹่ฏ•่ฟžๆŽฅ: exchange_id=okx +2025-12-27 23:34:09,384 - app.routes.strategy - INFO - API Key: 4cd9c... (len=36) +2025-12-27 23:34:09,384 - app.routes.strategy - INFO - Secret Key: 2B295... (len=32) +2025-12-27 23:34:25,049 - app.services.strategy - ERROR - test_exchange_connection failed: okx GET https://www.okx.com/api/v5/asset/currencies +2025-12-27 23:34:25,049 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:34:25] "POST /api/strategies/test-connection HTTP/1.1" 400 - +2025-12-27 23:34:25,053 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:34:25] "GET /api/strategies/positions?id=2&_t=1766849652295 HTTP/1.1" 200 - +2025-12-27 23:34:25,056 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:34:25] "GET /api/strategies/equityCurve?id=2&_t=1766849654980 HTTP/1.1" 200 - +2025-12-27 23:34:25,059 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:34:25] "GET /api/strategies/positions?id=2&_t=1766849657292 HTTP/1.1" 200 - +2025-12-27 23:34:25,062 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:34:25] "GET /api/strategies/positions?id=2&_t=1766849662290 HTTP/1.1" 200 - +2025-12-27 23:34:27,615 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:34:27] "GET /api/strategies/positions?id=2&_t=1766849667295 HTTP/1.1" 200 - +2025-12-27 23:34:32,297 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:34:32] "GET /api/strategies/positions?id=2&_t=1766849672289 HTTP/1.1" 200 - +2025-12-27 23:34:37,615 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:34:37] "GET /api/strategies/positions?id=2&_t=1766849677298 HTTP/1.1" 200 - +2025-12-27 23:34:42,516 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:34:42] "GET /api/strategies/positions?id=2&_t=1766849682503 HTTP/1.1" 200 - +2025-12-27 23:34:45,825 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:34:45] "GET /api/strategies/equityCurve?id=2&_t=1766849685503 HTTP/1.1" 200 - +2025-12-27 23:34:47,519 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:34:47] "GET /api/strategies/positions?id=2&_t=1766849687513 HTTP/1.1" 200 - +2025-12-27 23:34:52,828 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:34:52] "GET /api/strategies/positions?id=2&_t=1766849692509 HTTP/1.1" 200 - +2025-12-27 23:34:57,516 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:34:57] "GET /api/strategies/positions?id=2&_t=1766849697507 HTTP/1.1" 200 - +2025-12-27 23:35:02,826 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:35:02] "GET /api/strategies/positions?id=2&_t=1766849702508 HTTP/1.1" 200 - +2025-12-27 23:35:07,515 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:35:07] "GET /api/strategies/positions?id=2&_t=1766849707506 HTTP/1.1" 200 - +2025-12-27 23:35:12,937 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:35:12] "GET /api/strategies/positions?id=2&_t=1766849712505 HTTP/1.1" 200 - +2025-12-27 23:35:15,513 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:35:15] "GET /api/strategies/equityCurve?id=2&_t=1766849715505 HTTP/1.1" 200 - +2025-12-27 23:35:17,814 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:35:17] "GET /api/strategies/positions?id=2&_t=1766849717500 HTTP/1.1" 200 - +2025-12-27 23:35:22,303 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:35:22] "GET /api/strategies/positions?id=2&_t=1766849722295 HTTP/1.1" 200 - +2025-12-27 23:35:23,825 - app.routes.strategy - INFO - ๆญฃๅœจๆต‹่ฏ•่ฟžๆŽฅ: exchange_id=okx +2025-12-27 23:35:23,825 - app.routes.strategy - INFO - API Key: 4cd9c... (len=36) +2025-12-27 23:35:23,825 - app.routes.strategy - INFO - Secret Key: 2B295... (len=32) +2025-12-27 23:35:38,853 - app.services.strategy - ERROR - test_exchange_connection failed: okx GET https://www.okx.com/api/v5/asset/currencies +2025-12-27 23:35:38,854 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:35:38] "POST /api/strategies/test-connection HTTP/1.1" 400 - +2025-12-27 23:35:38,857 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:35:38] "GET /api/strategies/positions?id=2&_t=1766849727283 HTTP/1.1" 200 - +2025-12-27 23:35:38,859 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:35:38] "GET /api/strategies/positions?id=2&_t=1766849732283 HTTP/1.1" 200 - +2025-12-27 23:35:38,862 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:35:38] "GET /api/strategies/positions?id=2&_t=1766849737283 HTTP/1.1" 200 - +2025-12-27 23:35:42,594 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:35:42] "GET /api/strategies/positions?id=2&_t=1766849742282 HTTP/1.1" 200 - +2025-12-27 23:35:44,981 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:35:44] "GET /api/strategies/equityCurve?id=2&_t=1766849744974 HTTP/1.1" 200 - +2025-12-27 23:35:47,611 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:35:47] "GET /api/strategies/positions?id=2&_t=1766849747291 HTTP/1.1" 200 - +2025-12-27 23:35:52,294 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:35:52] "GET /api/strategies/positions?id=2&_t=1766849752287 HTTP/1.1" 200 - +2025-12-27 23:35:57,613 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:35:57] "GET /api/strategies/positions?id=2&_t=1766849757295 HTTP/1.1" 200 - +2025-12-27 23:36:02,303 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:36:02] "GET /api/strategies/positions?id=2&_t=1766849762296 HTTP/1.1" 200 - +2025-12-27 23:36:07,610 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:36:07] "GET /api/strategies/positions?id=2&_t=1766849767295 HTTP/1.1" 200 - +2025-12-27 23:36:12,295 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:36:12] "GET /api/strategies/positions?id=2&_t=1766849772289 HTTP/1.1" 200 - +2025-12-27 23:36:15,294 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:36:15] "GET /api/strategies/equityCurve?id=2&_t=1766849774975 HTTP/1.1" 200 - +2025-12-27 23:36:17,291 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:36:17] "GET /api/strategies/positions?id=2&_t=1766849777283 HTTP/1.1" 200 - +2025-12-27 23:36:22,609 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:36:22] "GET /api/strategies/positions?id=2&_t=1766849782293 HTTP/1.1" 200 - +2025-12-27 23:36:27,300 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:36:27] "GET /api/strategies/positions?id=2&_t=1766849787295 HTTP/1.1" 200 - +2025-12-27 23:36:32,601 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:36:32] "GET /api/strategies/positions?id=2&_t=1766849792285 HTTP/1.1" 200 - +2025-12-27 23:36:37,297 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:36:37] "GET /api/strategies/positions?id=2&_t=1766849797291 HTTP/1.1" 200 - +2025-12-27 23:36:42,607 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:36:42] "GET /api/strategies/positions?id=2&_t=1766849802295 HTTP/1.1" 200 - +2025-12-27 23:36:44,988 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:36:44] "GET /api/strategies/equityCurve?id=2&_t=1766849804980 HTTP/1.1" 200 - +2025-12-27 23:36:47,610 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:36:47] "GET /api/strategies/positions?id=2&_t=1766849807292 HTTP/1.1" 200 - +2025-12-27 23:36:52,304 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:36:52] "GET /api/strategies/positions?id=2&_t=1766849812298 HTTP/1.1" 200 - +2025-12-27 23:36:57,612 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:36:57] "GET /api/strategies/positions?id=2&_t=1766849817295 HTTP/1.1" 200 - +2025-12-27 23:37:02,300 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:37:02] "GET /api/strategies/positions?id=2&_t=1766849822293 HTTP/1.1" 200 - +2025-12-27 23:37:07,608 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:37:07] "GET /api/strategies/positions?id=2&_t=1766849827289 HTTP/1.1" 200 - +2025-12-27 23:37:12,302 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:37:12] "GET /api/strategies/positions?id=2&_t=1766849832296 HTTP/1.1" 200 - +2025-12-27 23:37:15,299 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:37:15] "GET /api/strategies/equityCurve?id=2&_t=1766849834978 HTTP/1.1" 200 - +2025-12-27 23:37:17,297 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:37:17] "GET /api/strategies/positions?id=2&_t=1766849837289 HTTP/1.1" 200 - +2025-12-27 23:37:22,599 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:37:22] "GET /api/strategies/positions?id=2&_t=1766849842283 HTTP/1.1" 200 - +2025-12-27 23:37:27,294 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:37:27] "GET /api/strategies/positions?id=2&_t=1766849847285 HTTP/1.1" 200 - +2025-12-27 23:37:33,453 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-27 23:37:33,478 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-27 23:37:33,478 - werkzeug - INFO - Press CTRL+C to quit +2025-12-27 23:37:35,516 - app.routes.strategy - INFO - ๆญฃๅœจๆต‹่ฏ•่ฟžๆŽฅ: exchange_id=okx +2025-12-27 23:37:35,519 - app.routes.strategy - INFO - API Key: 4cd9c... (len=36) +2025-12-27 23:37:35,520 - app.routes.strategy - INFO - Secret Key: 2B295... (len=32) +2025-12-27 23:38:06,234 - app.services.strategy - ERROR - test_exchange_connection failed: okx GET https://www.okx.com/api/v5/asset/currencies +2025-12-27 23:38:06,235 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:38:06] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-27 23:38:06,240 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-27 23:38:06,242 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:38:06] "GET /api/strategies/positions?id=2&_t=1766849857286 HTTP/1.1" 200 - +2025-12-27 23:38:06,246 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:38:06] "GET /api/strategies/positions?id=2&_t=1766849862286 HTTP/1.1" 200 - +2025-12-27 23:38:06,250 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:38:06] "GET /api/strategies/equityCurve?id=2&_t=1766849864986 HTTP/1.1" 200 - +2025-12-27 23:38:06,253 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:38:06] "GET /api/strategies/positions?id=2&_t=1766849867287 HTTP/1.1" 200 - +2025-12-27 23:38:06,260 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:38:06] "GET /api/strategies/positions?id=2&_t=1766849872288 HTTP/1.1" 200 - +2025-12-27 23:38:06,551 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:38:06] "GET /api/strategies/positions?id=2&_t=1766849877288 HTTP/1.1" 200 - +2025-12-27 23:38:06,554 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:38:06] "GET /api/strategies/positions?id=2&_t=1766849882288 HTTP/1.1" 200 - +2025-12-27 23:38:07,619 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:38:07] "GET /api/strategies/positions?id=2&_t=1766849887299 HTTP/1.1" 200 - +2025-12-27 23:38:12,291 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:38:12] "GET /api/strategies/positions?id=2&_t=1766849892284 HTTP/1.1" 200 - +2025-12-27 23:38:15,305 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:38:15] "GET /api/strategies/equityCurve?id=2&_t=1766849894987 HTTP/1.1" 200 - +2025-12-27 23:38:17,292 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:38:17] "GET /api/strategies/positions?id=2&_t=1766849897285 HTTP/1.1" 200 - +2025-12-27 23:38:22,607 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:38:22] "GET /api/strategies/positions?id=2&_t=1766849902284 HTTP/1.1" 200 - +2025-12-27 23:38:27,293 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:38:27] "GET /api/strategies/positions?id=2&_t=1766849907285 HTTP/1.1" 200 - +2025-12-27 23:38:32,605 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:38:32] "GET /api/strategies/positions?id=2&_t=1766849912286 HTTP/1.1" 200 - +2025-12-27 23:38:37,300 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:38:37] "GET /api/strategies/positions?id=2&_t=1766849917294 HTTP/1.1" 200 - +2025-12-27 23:38:42,616 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:38:42] "GET /api/strategies/positions?id=2&_t=1766849922297 HTTP/1.1" 200 - +2025-12-27 23:38:44,982 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:38:44] "GET /api/strategies/equityCurve?id=2&_t=1766849924975 HTTP/1.1" 200 - +2025-12-27 23:38:47,609 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:38:47] "GET /api/strategies/positions?id=2&_t=1766849927288 HTTP/1.1" 200 - +2025-12-27 23:38:52,305 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:38:52] "GET /api/strategies/positions?id=2&_t=1766849932297 HTTP/1.1" 200 - +2025-12-27 23:38:57,610 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:38:57] "GET /api/strategies/positions?id=2&_t=1766849937292 HTTP/1.1" 200 - +2025-12-27 23:39:02,298 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:39:02] "GET /api/strategies/positions?id=2&_t=1766849942291 HTTP/1.1" 200 - +2025-12-27 23:39:07,620 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:39:07] "GET /api/strategies/positions?id=2&_t=1766849947298 HTTP/1.1" 200 - +2025-12-27 23:39:12,297 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:39:12] "GET /api/strategies/positions?id=2&_t=1766849952291 HTTP/1.1" 200 - +2025-12-27 23:39:15,299 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:39:15] "GET /api/strategies/equityCurve?id=2&_t=1766849954980 HTTP/1.1" 200 - +2025-12-27 23:39:17,299 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:39:17] "GET /api/strategies/positions?id=2&_t=1766849957293 HTTP/1.1" 200 - +2025-12-27 23:39:22,612 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:39:22] "GET /api/strategies/positions?id=2&_t=1766849962290 HTTP/1.1" 200 - +2025-12-27 23:39:27,296 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:39:27] "GET /api/strategies/positions?id=2&_t=1766849967289 HTTP/1.1" 200 - +2025-12-27 23:39:32,599 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:39:32] "GET /api/strategies/positions?id=2&_t=1766849972283 HTTP/1.1" 200 - +2025-12-27 23:39:37,301 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:39:37] "GET /api/strategies/positions?id=2&_t=1766849977294 HTTP/1.1" 200 - +2025-12-27 23:39:42,603 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:39:42] "GET /api/strategies/positions?id=2&_t=1766849982285 HTTP/1.1" 200 - +2025-12-27 23:39:44,983 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:39:44] "GET /api/strategies/equityCurve?id=2&_t=1766849984977 HTTP/1.1" 200 - +2025-12-27 23:39:47,605 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:39:47] "GET /api/strategies/positions?id=2&_t=1766849987286 HTTP/1.1" 200 - +2025-12-27 23:39:52,300 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:39:52] "GET /api/strategies/positions?id=2&_t=1766849992293 HTTP/1.1" 200 - +2025-12-27 23:39:57,606 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:39:57] "GET /api/strategies/positions?id=2&_t=1766849997290 HTTP/1.1" 200 - +2025-12-27 23:40:02,298 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:40:02] "GET /api/strategies/positions?id=2&_t=1766850002291 HTTP/1.1" 200 - +2025-12-27 23:40:07,617 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:40:07] "GET /api/strategies/positions?id=2&_t=1766850007296 HTTP/1.1" 200 - +2025-12-27 23:40:12,293 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:40:12] "GET /api/strategies/positions?id=2&_t=1766850012287 HTTP/1.1" 200 - +2025-12-27 23:40:15,300 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:40:15] "GET /api/strategies/equityCurve?id=2&_t=1766850014983 HTTP/1.1" 200 - +2025-12-27 23:40:17,302 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:40:17] "GET /api/strategies/positions?id=2&_t=1766850017295 HTTP/1.1" 200 - +2025-12-27 23:40:22,609 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:40:22] "GET /api/strategies/positions?id=2&_t=1766850022293 HTTP/1.1" 200 - +2025-12-27 23:40:27,305 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:40:27] "GET /api/strategies/positions?id=2&_t=1766850027298 HTTP/1.1" 200 - +2025-12-27 23:40:32,613 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:40:32] "GET /api/strategies/positions?id=2&_t=1766850032291 HTTP/1.1" 200 - +2025-12-27 23:40:37,293 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:40:37] "GET /api/strategies/positions?id=2&_t=1766850037286 HTTP/1.1" 200 - +2025-12-27 23:40:42,611 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:40:42] "GET /api/strategies/positions?id=2&_t=1766850042292 HTTP/1.1" 200 - +2025-12-27 23:40:44,990 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:40:44] "GET /api/strategies/equityCurve?id=2&_t=1766850044982 HTTP/1.1" 200 - +2025-12-27 23:40:47,608 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:40:47] "GET /api/strategies/positions?id=2&_t=1766850047294 HTTP/1.1" 200 - +2025-12-27 23:40:52,299 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:40:52] "GET /api/strategies/positions?id=2&_t=1766850052293 HTTP/1.1" 200 - +2025-12-27 23:40:57,609 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:40:57] "GET /api/strategies/positions?id=2&_t=1766850057290 HTTP/1.1" 200 - +2025-12-27 23:41:02,300 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:41:02] "GET /api/strategies/positions?id=2&_t=1766850062292 HTTP/1.1" 200 - +2025-12-27 23:41:07,611 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:41:07] "GET /api/strategies/positions?id=2&_t=1766850067291 HTTP/1.1" 200 - +2025-12-27 23:41:12,299 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:41:12] "GET /api/strategies/positions?id=2&_t=1766850072292 HTTP/1.1" 200 - +2025-12-27 23:41:15,297 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:41:15] "GET /api/strategies/equityCurve?id=2&_t=1766850074976 HTTP/1.1" 200 - +2025-12-27 23:41:17,305 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:41:17] "GET /api/strategies/positions?id=2&_t=1766850077299 HTTP/1.1" 200 - +2025-12-27 23:41:22,611 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:41:22] "GET /api/strategies/positions?id=2&_t=1766850082292 HTTP/1.1" 200 - +2025-12-27 23:41:27,297 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:41:27] "GET /api/strategies/positions?id=2&_t=1766850087290 HTTP/1.1" 200 - +2025-12-27 23:41:32,605 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:41:32] "GET /api/strategies/positions?id=2&_t=1766850092285 HTTP/1.1" 200 - +2025-12-27 23:41:37,298 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:41:37] "GET /api/strategies/positions?id=2&_t=1766850097292 HTTP/1.1" 200 - +2025-12-27 23:41:42,604 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:41:42] "GET /api/strategies/positions?id=2&_t=1766850102285 HTTP/1.1" 200 - +2025-12-27 23:41:44,988 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:41:44] "GET /api/strategies/equityCurve?id=2&_t=1766850104981 HTTP/1.1" 200 - +2025-12-27 23:41:47,605 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:41:47] "GET /api/strategies/positions?id=2&_t=1766850107287 HTTP/1.1" 200 - +2025-12-27 23:41:52,292 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:41:52] "GET /api/strategies/positions?id=2&_t=1766850112285 HTTP/1.1" 200 - +2025-12-27 23:41:57,609 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:41:57] "GET /api/strategies/positions?id=2&_t=1766850117291 HTTP/1.1" 200 - +2025-12-27 23:42:02,302 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:42:02] "GET /api/strategies/positions?id=2&_t=1766850122295 HTTP/1.1" 200 - +2025-12-27 23:42:07,616 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:42:07] "GET /api/strategies/positions?id=2&_t=1766850127295 HTTP/1.1" 200 - +2025-12-27 23:42:12,303 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:42:12] "GET /api/strategies/positions?id=2&_t=1766850132297 HTTP/1.1" 200 - +2025-12-27 23:42:15,298 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:42:15] "GET /api/strategies/equityCurve?id=2&_t=1766850134977 HTTP/1.1" 200 - +2025-12-27 23:42:17,292 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:42:17] "GET /api/strategies/positions?id=2&_t=1766850137285 HTTP/1.1" 200 - +2025-12-27 23:42:22,614 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:42:22] "GET /api/strategies/positions?id=2&_t=1766850142295 HTTP/1.1" 200 - +2025-12-27 23:42:27,294 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:42:27] "GET /api/strategies/positions?id=2&_t=1766850147288 HTTP/1.1" 200 - +2025-12-27 23:42:32,612 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:42:32] "GET /api/strategies/positions?id=2&_t=1766850152292 HTTP/1.1" 200 - +2025-12-27 23:42:37,305 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:42:37] "GET /api/strategies/positions?id=2&_t=1766850157298 HTTP/1.1" 200 - +2025-12-27 23:42:42,608 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:42:42] "GET /api/strategies/positions?id=2&_t=1766850162292 HTTP/1.1" 200 - +2025-12-27 23:42:44,984 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:42:44] "GET /api/strategies/equityCurve?id=2&_t=1766850164976 HTTP/1.1" 200 - +2025-12-27 23:42:47,619 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:42:47] "GET /api/strategies/positions?id=2&_t=1766850167297 HTTP/1.1" 200 - +2025-12-27 23:42:52,296 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:42:52] "GET /api/strategies/positions?id=2&_t=1766850172290 HTTP/1.1" 200 - +2025-12-27 23:42:57,611 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:42:57] "GET /api/strategies/positions?id=2&_t=1766850177293 HTTP/1.1" 200 - +2025-12-27 23:43:02,294 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:43:02] "GET /api/strategies/positions?id=2&_t=1766850182287 HTTP/1.1" 200 - +2025-12-27 23:43:07,615 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:43:07] "GET /api/strategies/positions?id=2&_t=1766850187293 HTTP/1.1" 200 - +2025-12-27 23:43:12,301 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:43:12] "GET /api/strategies/positions?id=2&_t=1766850192295 HTTP/1.1" 200 - +2025-12-27 23:43:15,298 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:43:15] "GET /api/strategies/equityCurve?id=2&_t=1766850194978 HTTP/1.1" 200 - +2025-12-27 23:43:17,299 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:43:17] "GET /api/strategies/positions?id=2&_t=1766850197293 HTTP/1.1" 200 - +2025-12-27 23:43:22,608 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:43:22] "GET /api/strategies/positions?id=2&_t=1766850202289 HTTP/1.1" 200 - +2025-12-27 23:43:27,298 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:43:27] "GET /api/strategies/positions?id=2&_t=1766850207291 HTTP/1.1" 200 - +2025-12-27 23:43:32,620 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:43:32] "GET /api/strategies/positions?id=2&_t=1766850212297 HTTP/1.1" 200 - +2025-12-27 23:43:37,298 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:43:37] "GET /api/strategies/positions?id=2&_t=1766850217292 HTTP/1.1" 200 - +2025-12-27 23:43:42,619 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:43:42] "GET /api/strategies/positions?id=2&_t=1766850222297 HTTP/1.1" 200 - +2025-12-27 23:43:44,987 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:43:44] "GET /api/strategies/equityCurve?id=2&_t=1766850224979 HTTP/1.1" 200 - +2025-12-27 23:43:47,613 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:43:47] "GET /api/strategies/positions?id=2&_t=1766850227295 HTTP/1.1" 200 - +2025-12-27 23:43:52,295 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:43:52] "GET /api/strategies/positions?id=2&_t=1766850232289 HTTP/1.1" 200 - +2025-12-27 23:43:57,620 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:43:57] "GET /api/strategies/positions?id=2&_t=1766850237296 HTTP/1.1" 200 - +2025-12-27 23:44:02,291 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:44:02] "GET /api/strategies/positions?id=2&_t=1766850242284 HTTP/1.1" 200 - +2025-12-27 23:44:07,613 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:44:07] "GET /api/strategies/positions?id=2&_t=1766850247294 HTTP/1.1" 200 - +2025-12-27 23:44:12,304 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:44:12] "GET /api/strategies/positions?id=2&_t=1766850252298 HTTP/1.1" 200 - +2025-12-27 23:44:15,311 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:44:15] "GET /api/strategies/equityCurve?id=2&_t=1766850254989 HTTP/1.1" 200 - +2025-12-27 23:44:17,303 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:44:17] "GET /api/strategies/positions?id=2&_t=1766850257295 HTTP/1.1" 200 - +2025-12-27 23:44:22,602 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:44:22] "GET /api/strategies/positions?id=2&_t=1766850262285 HTTP/1.1" 200 - +2025-12-27 23:44:27,294 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:44:27] "GET /api/strategies/positions?id=2&_t=1766850267287 HTTP/1.1" 200 - +2025-12-27 23:44:32,613 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:44:32] "GET /api/strategies/positions?id=2&_t=1766850272296 HTTP/1.1" 200 - +2025-12-27 23:44:37,305 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:44:37] "GET /api/strategies/positions?id=2&_t=1766850277298 HTTP/1.1" 200 - +2025-12-27 23:44:42,611 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:44:42] "GET /api/strategies/positions?id=2&_t=1766850282292 HTTP/1.1" 200 - +2025-12-27 23:44:44,988 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:44:44] "GET /api/strategies/equityCurve?id=2&_t=1766850284980 HTTP/1.1" 200 - +2025-12-27 23:44:47,599 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:44:47] "GET /api/strategies/positions?id=2&_t=1766850287283 HTTP/1.1" 200 - +2025-12-27 23:44:52,301 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:44:52] "GET /api/strategies/positions?id=2&_t=1766850292295 HTTP/1.1" 200 - +2025-12-27 23:44:57,602 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:44:57] "GET /api/strategies/positions?id=2&_t=1766850297284 HTTP/1.1" 200 - +2025-12-27 23:45:02,295 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:45:02] "GET /api/strategies/positions?id=2&_t=1766850302287 HTTP/1.1" 200 - +2025-12-27 23:45:07,615 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:45:07] "GET /api/strategies/positions?id=2&_t=1766850307298 HTTP/1.1" 200 - +2025-12-27 23:45:12,296 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:45:12] "GET /api/strategies/positions?id=2&_t=1766850312290 HTTP/1.1" 200 - +2025-12-27 23:45:15,298 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:45:15] "GET /api/strategies/equityCurve?id=2&_t=1766850314981 HTTP/1.1" 200 - +2025-12-27 23:45:17,293 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:45:17] "GET /api/strategies/positions?id=2&_t=1766850317287 HTTP/1.1" 200 - +2025-12-27 23:45:22,606 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:45:22] "GET /api/strategies/positions?id=2&_t=1766850322285 HTTP/1.1" 200 - +2025-12-27 23:45:27,295 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:45:27] "GET /api/strategies/positions?id=2&_t=1766850327289 HTTP/1.1" 200 - +2025-12-27 23:45:32,613 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:45:32] "GET /api/strategies/positions?id=2&_t=1766850332294 HTTP/1.1" 200 - +2025-12-27 23:45:37,301 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:45:37] "GET /api/strategies/positions?id=2&_t=1766850337295 HTTP/1.1" 200 - +2025-12-27 23:45:42,617 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:45:42] "GET /api/strategies/positions?id=2&_t=1766850342294 HTTP/1.1" 200 - +2025-12-27 23:45:44,985 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:45:44] "GET /api/strategies/equityCurve?id=2&_t=1766850344978 HTTP/1.1" 200 - +2025-12-27 23:45:47,615 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:45:47] "GET /api/strategies/positions?id=2&_t=1766850347294 HTTP/1.1" 200 - +2025-12-27 23:45:52,298 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:45:52] "GET /api/strategies/positions?id=2&_t=1766850352292 HTTP/1.1" 200 - +2025-12-27 23:45:57,606 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:45:57] "GET /api/strategies/positions?id=2&_t=1766850357284 HTTP/1.1" 200 - +2025-12-27 23:46:02,300 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:46:02] "GET /api/strategies/positions?id=2&_t=1766850362293 HTTP/1.1" 200 - +2025-12-27 23:46:07,613 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:46:07] "GET /api/strategies/positions?id=2&_t=1766850367294 HTTP/1.1" 200 - +2025-12-27 23:46:12,301 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:46:12] "GET /api/strategies/positions?id=2&_t=1766850372295 HTTP/1.1" 200 - +2025-12-27 23:46:15,303 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:46:15] "GET /api/strategies/equityCurve?id=2&_t=1766850374983 HTTP/1.1" 200 - +2025-12-27 23:46:17,300 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:46:17] "GET /api/strategies/positions?id=2&_t=1766850377294 HTTP/1.1" 200 - +2025-12-27 23:46:22,612 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:46:22] "GET /api/strategies/positions?id=2&_t=1766850382298 HTTP/1.1" 200 - +2025-12-27 23:46:27,297 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:46:27] "GET /api/strategies/positions?id=2&_t=1766850387291 HTTP/1.1" 200 - +2025-12-27 23:46:32,609 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:46:32] "GET /api/strategies/positions?id=2&_t=1766850392288 HTTP/1.1" 200 - +2025-12-27 23:46:37,289 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:46:37] "GET /api/strategies/positions?id=2&_t=1766850397283 HTTP/1.1" 200 - +2025-12-27 23:46:42,606 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:46:42] "GET /api/strategies/positions?id=2&_t=1766850402288 HTTP/1.1" 200 - +2025-12-27 23:46:44,980 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:46:44] "GET /api/strategies/equityCurve?id=2&_t=1766850404973 HTTP/1.1" 200 - +2025-12-27 23:46:47,605 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:46:47] "GET /api/strategies/positions?id=2&_t=1766850407288 HTTP/1.1" 200 - +2025-12-27 23:46:52,295 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:46:52] "GET /api/strategies/positions?id=2&_t=1766850412289 HTTP/1.1" 200 - +2025-12-27 23:46:57,614 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:46:57] "GET /api/strategies/positions?id=2&_t=1766850417292 HTTP/1.1" 200 - +2025-12-27 23:47:02,291 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:47:02] "GET /api/strategies/positions?id=2&_t=1766850422283 HTTP/1.1" 200 - +2025-12-27 23:47:07,606 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:47:07] "GET /api/strategies/positions?id=2&_t=1766850427284 HTTP/1.1" 200 - +2025-12-27 23:47:12,291 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:47:12] "GET /api/strategies/positions?id=2&_t=1766850432284 HTTP/1.1" 200 - +2025-12-27 23:47:15,298 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:47:15] "GET /api/strategies/equityCurve?id=2&_t=1766850434978 HTTP/1.1" 200 - +2025-12-27 23:47:17,302 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:47:17] "GET /api/strategies/positions?id=2&_t=1766850437295 HTTP/1.1" 200 - +2025-12-27 23:47:22,609 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:47:22] "GET /api/strategies/positions?id=2&_t=1766850442289 HTTP/1.1" 200 - +2025-12-27 23:47:27,301 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:47:27] "GET /api/strategies/positions?id=2&_t=1766850447295 HTTP/1.1" 200 - +2025-12-27 23:47:32,606 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:47:32] "GET /api/strategies/positions?id=2&_t=1766850452287 HTTP/1.1" 200 - +2025-12-27 23:47:37,298 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:47:37] "GET /api/strategies/positions?id=2&_t=1766850457292 HTTP/1.1" 200 - +2025-12-27 23:47:42,618 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:47:42] "GET /api/strategies/positions?id=2&_t=1766850462299 HTTP/1.1" 200 - +2025-12-27 23:47:44,996 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:47:44] "GET /api/strategies/equityCurve?id=2&_t=1766850464988 HTTP/1.1" 200 - +2025-12-27 23:47:47,608 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:47:47] "GET /api/strategies/positions?id=2&_t=1766850467288 HTTP/1.1" 200 - +2025-12-27 23:47:52,289 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:47:52] "GET /api/strategies/positions?id=2&_t=1766850472283 HTTP/1.1" 200 - +2025-12-27 23:47:57,614 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:47:57] "GET /api/strategies/positions?id=2&_t=1766850477297 HTTP/1.1" 200 - +2025-12-27 23:48:02,289 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:48:02] "GET /api/strategies/positions?id=2&_t=1766850482282 HTTP/1.1" 200 - +2025-12-27 23:48:07,611 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:48:07] "GET /api/strategies/positions?id=2&_t=1766850487295 HTTP/1.1" 200 - +2025-12-27 23:48:12,291 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:48:12] "GET /api/strategies/positions?id=2&_t=1766850492285 HTTP/1.1" 200 - +2025-12-27 23:48:15,293 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:48:15] "GET /api/strategies/equityCurve?id=2&_t=1766850494977 HTTP/1.1" 200 - +2025-12-27 23:48:17,305 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:48:17] "GET /api/strategies/positions?id=2&_t=1766850497299 HTTP/1.1" 200 - +2025-12-27 23:48:22,607 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:48:22] "GET /api/strategies/positions?id=2&_t=1766850502288 HTTP/1.1" 200 - +2025-12-27 23:48:27,293 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:48:27] "GET /api/strategies/positions?id=2&_t=1766850507286 HTTP/1.1" 200 - +2025-12-27 23:48:32,602 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:48:32] "GET /api/strategies/positions?id=2&_t=1766850512283 HTTP/1.1" 200 - +2025-12-27 23:48:37,304 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:48:37] "GET /api/strategies/positions?id=2&_t=1766850517297 HTTP/1.1" 200 - +2025-12-27 23:48:42,612 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:48:42] "GET /api/strategies/positions?id=2&_t=1766850522294 HTTP/1.1" 200 - +2025-12-27 23:48:44,994 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:48:44] "GET /api/strategies/equityCurve?id=2&_t=1766850524987 HTTP/1.1" 200 - +2025-12-27 23:48:47,607 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:48:47] "GET /api/strategies/positions?id=2&_t=1766850527287 HTTP/1.1" 200 - +2025-12-27 23:48:52,295 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:48:52] "GET /api/strategies/positions?id=2&_t=1766850532289 HTTP/1.1" 200 - +2025-12-27 23:48:57,609 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:48:57] "GET /api/strategies/positions?id=2&_t=1766850537292 HTTP/1.1" 200 - +2025-12-27 23:49:02,292 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:49:02] "GET /api/strategies/positions?id=2&_t=1766850542286 HTTP/1.1" 200 - +2025-12-27 23:49:07,599 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:49:07] "GET /api/strategies/positions?id=2&_t=1766850547286 HTTP/1.1" 200 - +2025-12-27 23:49:12,298 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:49:12] "GET /api/strategies/positions?id=2&_t=1766850552292 HTTP/1.1" 200 - +2025-12-27 23:49:15,299 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:49:15] "GET /api/strategies/equityCurve?id=2&_t=1766850554981 HTTP/1.1" 200 - +2025-12-27 23:49:17,301 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:49:17] "GET /api/strategies/positions?id=2&_t=1766850557295 HTTP/1.1" 200 - +2025-12-27 23:49:22,616 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:49:22] "GET /api/strategies/positions?id=2&_t=1766850562297 HTTP/1.1" 200 - +2025-12-27 23:49:27,304 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:49:27] "GET /api/strategies/positions?id=2&_t=1766850567298 HTTP/1.1" 200 - +2025-12-27 23:49:32,618 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:49:32] "GET /api/strategies/positions?id=2&_t=1766850572299 HTTP/1.1" 200 - +2025-12-27 23:49:37,304 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:49:37] "GET /api/strategies/positions?id=2&_t=1766850577298 HTTP/1.1" 200 - +2025-12-27 23:49:42,602 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:49:42] "GET /api/strategies/positions?id=2&_t=1766850582286 HTTP/1.1" 200 - +2025-12-27 23:49:44,992 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:49:44] "GET /api/strategies/equityCurve?id=2&_t=1766850584986 HTTP/1.1" 200 - +2025-12-27 23:49:47,602 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:49:47] "GET /api/strategies/positions?id=2&_t=1766850587287 HTTP/1.1" 200 - +2025-12-27 23:49:52,298 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:49:52] "GET /api/strategies/positions?id=2&_t=1766850592291 HTTP/1.1" 200 - +2025-12-27 23:49:57,609 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:49:57] "GET /api/strategies/positions?id=2&_t=1766850597292 HTTP/1.1" 200 - +2025-12-27 23:50:02,296 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:50:02] "GET /api/strategies/positions?id=2&_t=1766850602290 HTTP/1.1" 200 - +2025-12-27 23:50:07,607 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:50:07] "GET /api/strategies/positions?id=2&_t=1766850607288 HTTP/1.1" 200 - +2025-12-27 23:50:12,290 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:50:12] "GET /api/strategies/positions?id=2&_t=1766850612283 HTTP/1.1" 200 - +2025-12-27 23:50:15,290 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:50:15] "GET /api/strategies/equityCurve?id=2&_t=1766850614974 HTTP/1.1" 200 - +2025-12-27 23:50:17,302 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:50:17] "GET /api/strategies/positions?id=2&_t=1766850617294 HTTP/1.1" 200 - +2025-12-27 23:50:22,609 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:50:22] "GET /api/strategies/positions?id=2&_t=1766850622292 HTTP/1.1" 200 - +2025-12-27 23:50:27,290 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:50:27] "GET /api/strategies/positions?id=2&_t=1766850627283 HTTP/1.1" 200 - +2025-12-27 23:50:32,608 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:50:32] "GET /api/strategies/positions?id=2&_t=1766850632293 HTTP/1.1" 200 - +2025-12-27 23:50:37,303 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:50:37] "GET /api/strategies/positions?id=2&_t=1766850637295 HTTP/1.1" 200 - +2025-12-27 23:50:42,601 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:50:42] "GET /api/strategies/positions?id=2&_t=1766850642283 HTTP/1.1" 200 - +2025-12-27 23:50:44,990 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:50:44] "GET /api/strategies/equityCurve?id=2&_t=1766850644982 HTTP/1.1" 200 - +2025-12-27 23:50:47,606 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:50:47] "GET /api/strategies/positions?id=2&_t=1766850647285 HTTP/1.1" 200 - +2025-12-27 23:50:52,299 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:50:52] "GET /api/strategies/positions?id=2&_t=1766850652292 HTTP/1.1" 200 - +2025-12-27 23:50:57,611 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:50:57] "GET /api/strategies/positions?id=2&_t=1766850657295 HTTP/1.1" 200 - +2025-12-27 23:51:02,303 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:51:02] "GET /api/strategies/positions?id=2&_t=1766850662294 HTTP/1.1" 200 - +2025-12-27 23:51:07,608 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:51:07] "GET /api/strategies/positions?id=2&_t=1766850667290 HTTP/1.1" 200 - +2025-12-27 23:51:12,291 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:51:12] "GET /api/strategies/positions?id=2&_t=1766850672285 HTTP/1.1" 200 - +2025-12-27 23:51:15,296 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:51:15] "GET /api/strategies/equityCurve?id=2&_t=1766850674976 HTTP/1.1" 200 - +2025-12-27 23:51:17,294 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:51:17] "GET /api/strategies/positions?id=2&_t=1766850677287 HTTP/1.1" 200 - +2025-12-27 23:51:22,613 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:51:22] "GET /api/strategies/positions?id=2&_t=1766850682294 HTTP/1.1" 200 - +2025-12-27 23:51:27,297 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:51:27] "GET /api/strategies/positions?id=2&_t=1766850687291 HTTP/1.1" 200 - +2025-12-27 23:51:32,614 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:51:32] "GET /api/strategies/positions?id=2&_t=1766850692295 HTTP/1.1" 200 - +2025-12-27 23:51:37,295 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:51:37] "GET /api/strategies/positions?id=2&_t=1766850697288 HTTP/1.1" 200 - +2025-12-27 23:51:42,616 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:51:42] "GET /api/strategies/positions?id=2&_t=1766850702297 HTTP/1.1" 200 - +2025-12-27 23:51:44,987 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:51:44] "GET /api/strategies/equityCurve?id=2&_t=1766850704980 HTTP/1.1" 200 - +2025-12-27 23:51:47,611 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:51:47] "GET /api/strategies/positions?id=2&_t=1766850707295 HTTP/1.1" 200 - +2025-12-27 23:51:52,300 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:51:52] "GET /api/strategies/positions?id=2&_t=1766850712294 HTTP/1.1" 200 - +2025-12-27 23:51:57,604 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:51:57] "GET /api/strategies/positions?id=2&_t=1766850717286 HTTP/1.1" 200 - +2025-12-27 23:52:02,290 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:52:02] "GET /api/strategies/positions?id=2&_t=1766850722284 HTTP/1.1" 200 - +2025-12-27 23:52:07,605 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:52:07] "GET /api/strategies/positions?id=2&_t=1766850727285 HTTP/1.1" 200 - +2025-12-27 23:52:12,303 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:52:12] "GET /api/strategies/positions?id=2&_t=1766850732297 HTTP/1.1" 200 - +2025-12-27 23:52:15,299 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:52:15] "GET /api/strategies/equityCurve?id=2&_t=1766850734980 HTTP/1.1" 200 - +2025-12-27 23:52:17,295 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:52:17] "GET /api/strategies/positions?id=2&_t=1766850737289 HTTP/1.1" 200 - +2025-12-27 23:52:22,611 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:52:22] "GET /api/strategies/positions?id=2&_t=1766850742293 HTTP/1.1" 200 - +2025-12-27 23:52:27,301 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:52:27] "GET /api/strategies/positions?id=2&_t=1766850747295 HTTP/1.1" 200 - +2025-12-27 23:52:32,615 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:52:32] "GET /api/strategies/positions?id=2&_t=1766850752296 HTTP/1.1" 200 - +2025-12-27 23:52:37,299 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:52:37] "GET /api/strategies/positions?id=2&_t=1766850757292 HTTP/1.1" 200 - +2025-12-27 23:52:42,600 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:52:42] "GET /api/strategies/positions?id=2&_t=1766850762286 HTTP/1.1" 200 - +2025-12-27 23:52:44,994 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:52:44] "GET /api/strategies/equityCurve?id=2&_t=1766850764987 HTTP/1.1" 200 - +2025-12-27 23:52:47,606 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:52:47] "GET /api/strategies/positions?id=2&_t=1766850767286 HTTP/1.1" 200 - +2025-12-27 23:52:52,296 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:52:52] "GET /api/strategies/positions?id=2&_t=1766850772289 HTTP/1.1" 200 - +2025-12-27 23:52:57,607 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:52:57] "GET /api/strategies/positions?id=2&_t=1766850777291 HTTP/1.1" 200 - +2025-12-27 23:53:02,300 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:53:02] "GET /api/strategies/positions?id=2&_t=1766850782292 HTTP/1.1" 200 - +2025-12-27 23:53:07,601 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:53:07] "GET /api/strategies/positions?id=2&_t=1766850787283 HTTP/1.1" 200 - +2025-12-27 23:53:12,303 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:53:12] "GET /api/strategies/positions?id=2&_t=1766850792297 HTTP/1.1" 200 - +2025-12-27 23:53:15,306 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:53:15] "GET /api/strategies/equityCurve?id=2&_t=1766850794987 HTTP/1.1" 200 - +2025-12-27 23:53:17,291 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:53:17] "GET /api/strategies/positions?id=2&_t=1766850797285 HTTP/1.1" 200 - +2025-12-27 23:53:22,618 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:53:22] "GET /api/strategies/positions?id=2&_t=1766850802297 HTTP/1.1" 200 - +2025-12-27 23:53:27,299 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:53:27] "GET /api/strategies/positions?id=2&_t=1766850807293 HTTP/1.1" 200 - +2025-12-27 23:53:32,614 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:53:32] "GET /api/strategies/positions?id=2&_t=1766850812297 HTTP/1.1" 200 - +2025-12-27 23:53:37,291 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:53:37] "GET /api/strategies/positions?id=2&_t=1766850817285 HTTP/1.1" 200 - +2025-12-27 23:53:42,605 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:53:42] "GET /api/strategies/positions?id=2&_t=1766850822287 HTTP/1.1" 200 - +2025-12-27 23:53:44,983 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:53:44] "GET /api/strategies/equityCurve?id=2&_t=1766850824976 HTTP/1.1" 200 - +2025-12-27 23:53:47,608 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:53:47] "GET /api/strategies/positions?id=2&_t=1766850827292 HTTP/1.1" 200 - +2025-12-27 23:53:52,302 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:53:52] "GET /api/strategies/positions?id=2&_t=1766850832296 HTTP/1.1" 200 - +2025-12-27 23:53:57,613 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:53:57] "GET /api/strategies/positions?id=2&_t=1766850837297 HTTP/1.1" 200 - +2025-12-27 23:54:01,416 - app.routes.strategy - INFO - ๆญฃๅœจๆต‹่ฏ•่ฟžๆŽฅ: exchange_id=okx +2025-12-27 23:54:01,416 - app.routes.strategy - INFO - API Key: 4cd9c... (len=36) +2025-12-27 23:54:01,416 - app.routes.strategy - INFO - Secret Key: 2B295... (len=32) +2025-12-27 23:54:19,752 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-27 23:54:19,765 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-27 23:54:19,765 - werkzeug - INFO - Press CTRL+C to quit +2025-12-27 23:54:22,293 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-27 23:54:22,296 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:54:22] "GET /api/strategies/positions?id=2&_t=1766850862285 HTTP/1.1" 200 - +2025-12-27 23:54:27,602 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:54:27] "GET /api/strategies/positions?id=2&_t=1766850867284 HTTP/1.1" 200 - +2025-12-27 23:54:32,302 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:54:32] "GET /api/strategies/positions?id=2&_t=1766850872295 HTTP/1.1" 200 - +2025-12-27 23:54:37,602 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:54:37] "GET /api/strategies/positions?id=2&_t=1766850877283 HTTP/1.1" 200 - +2025-12-27 23:54:38,340 - app.routes.strategy - INFO - ๆญฃๅœจๆต‹่ฏ•่ฟžๆŽฅ: exchange_id=okx +2025-12-27 23:54:38,340 - app.routes.strategy - INFO - API Key: 4cd9c... (len=36) +2025-12-27 23:54:38,340 - app.routes.strategy - INFO - Secret Key: 2B295... (len=32) +2025-12-27 23:54:42,319 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:54:42] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-27 23:54:42,599 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:54:42] "GET /api/strategies/positions?id=2&_t=1766850882290 HTTP/1.1" 200 - +2025-12-27 23:54:45,297 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:54:45] "GET /api/strategies/equityCurve?id=2&_t=1766850884978 HTTP/1.1" 200 - +2025-12-27 23:54:47,293 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:54:47] "GET /api/strategies/positions?id=2&_t=1766850887286 HTTP/1.1" 200 - +2025-12-27 23:54:52,602 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:54:52] "GET /api/strategies/positions?id=2&_t=1766850892284 HTTP/1.1" 200 - +2025-12-27 23:54:57,292 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:54:57] "GET /api/strategies/positions?id=2&_t=1766850897286 HTTP/1.1" 200 - +2025-12-27 23:55:02,606 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:55:02] "GET /api/strategies/positions?id=2&_t=1766850902289 HTTP/1.1" 200 - +2025-12-27 23:55:07,296 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:55:07] "GET /api/strategies/positions?id=2&_t=1766850907288 HTTP/1.1" 200 - +2025-12-27 23:55:12,607 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:55:12] "GET /api/strategies/positions?id=2&_t=1766850912288 HTTP/1.1" 200 - +2025-12-27 23:55:14,982 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:55:14] "GET /api/strategies/equityCurve?id=2&_t=1766850914974 HTTP/1.1" 200 - +2025-12-27 23:55:17,603 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:55:17] "GET /api/strategies/positions?id=2&_t=1766850917289 HTTP/1.1" 200 - +2025-12-27 23:55:22,303 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:55:22] "GET /api/strategies/positions?id=2&_t=1766850922296 HTTP/1.1" 200 - +2025-12-27 23:55:27,614 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:55:27] "GET /api/strategies/positions?id=2&_t=1766850927293 HTTP/1.1" 200 - +2025-12-27 23:55:32,299 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:55:32] "GET /api/strategies/positions?id=2&_t=1766850932292 HTTP/1.1" 200 - +2025-12-27 23:55:37,604 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:55:37] "GET /api/strategies/positions?id=2&_t=1766850937285 HTTP/1.1" 200 - +2025-12-27 23:55:42,290 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:55:42] "GET /api/strategies/positions?id=2&_t=1766850942284 HTTP/1.1" 200 - +2025-12-27 23:55:45,297 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:55:45] "GET /api/strategies/equityCurve?id=2&_t=1766850944978 HTTP/1.1" 200 - +2025-12-27 23:55:47,298 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:55:47] "GET /api/strategies/positions?id=2&_t=1766850947290 HTTP/1.1" 200 - +2025-12-27 23:55:52,608 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:55:52] "GET /api/strategies/positions?id=2&_t=1766850952291 HTTP/1.1" 200 - +2025-12-27 23:55:57,302 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:55:57] "GET /api/strategies/positions?id=2&_t=1766850957296 HTTP/1.1" 200 - +2025-12-27 23:56:02,603 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:56:02] "GET /api/strategies/positions?id=2&_t=1766850962288 HTTP/1.1" 200 - +2025-12-27 23:56:07,298 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:56:07] "GET /api/strategies/positions?id=2&_t=1766850967290 HTTP/1.1" 200 - +2025-12-27 23:56:12,610 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:56:12] "GET /api/strategies/positions?id=2&_t=1766850972292 HTTP/1.1" 200 - +2025-12-27 23:56:14,987 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:56:14] "GET /api/strategies/equityCurve?id=2&_t=1766850974979 HTTP/1.1" 200 - +2025-12-27 23:56:17,610 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:56:17] "GET /api/strategies/positions?id=2&_t=1766850977288 HTTP/1.1" 200 - +2025-12-27 23:56:22,295 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:56:22] "GET /api/strategies/positions?id=2&_t=1766850982288 HTTP/1.1" 200 - +2025-12-27 23:56:27,611 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:56:27] "GET /api/strategies/positions?id=2&_t=1766850987295 HTTP/1.1" 200 - +2025-12-27 23:56:32,289 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:56:32] "GET /api/strategies/positions?id=2&_t=1766850992283 HTTP/1.1" 200 - +2025-12-27 23:56:37,616 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:56:37] "GET /api/strategies/positions?id=2&_t=1766850997295 HTTP/1.1" 200 - +2025-12-27 23:56:42,294 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:56:42] "GET /api/strategies/positions?id=2&_t=1766851002287 HTTP/1.1" 200 - +2025-12-27 23:56:45,308 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:56:45] "GET /api/strategies/equityCurve?id=2&_t=1766851004986 HTTP/1.1" 200 - +2025-12-27 23:56:47,298 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:56:47] "GET /api/strategies/positions?id=2&_t=1766851007291 HTTP/1.1" 200 - +2025-12-27 23:56:52,616 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:56:52] "GET /api/strategies/positions?id=2&_t=1766851012297 HTTP/1.1" 200 - +2025-12-27 23:56:57,293 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:56:57] "GET /api/strategies/positions?id=2&_t=1766851017285 HTTP/1.1" 200 - +2025-12-27 23:57:02,611 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:57:02] "GET /api/strategies/positions?id=2&_t=1766851022291 HTTP/1.1" 200 - +2025-12-27 23:57:03,859 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:57:03] "PUT /api/strategies/update?id=2 HTTP/1.1" 200 - +2025-12-27 23:57:04,269 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:57:04] "GET /api/strategies?_t=1766851024254 HTTP/1.1" 200 - +2025-12-27 23:57:07,291 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:57:07] "GET /api/strategies/positions?id=2&_t=1766851027285 HTTP/1.1" 200 - +2025-12-27 23:57:08,172 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:57:08] "GET /api/strategies/equityCurve?id=2&_t=1766851027849 HTTP/1.1" 200 - +2025-12-27 23:57:08,176 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:57:08] "GET /api/strategies/equityCurve?id=2&_t=1766851027849 HTTP/1.1" 200 - +2025-12-27 23:57:08,738 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:57:08] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 23:57:09,120 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:57:09] "GET /api/strategies/equityCurve?id=2&_t=1766851028790 HTTP/1.1" 200 - +2025-12-27 23:57:09,125 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:57:09] "GET /api/strategies/equityCurve?id=2&_t=1766851028790 HTTP/1.1" 200 - +2025-12-27 23:57:12,289 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:57:12] "GET /api/strategies/positions?id=2&_t=1766851032283 HTTP/1.1" 200 - +2025-12-27 23:57:17,605 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:57:17] "GET /api/strategies/positions?id=2&_t=1766851037283 HTTP/1.1" 200 - +2025-12-27 23:57:22,303 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:57:22] "GET /api/strategies/positions?id=2&_t=1766851042296 HTTP/1.1" 200 - +2025-12-27 23:57:27,615 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:57:27] "GET /api/strategies/positions?id=2&_t=1766851047295 HTTP/1.1" 200 - +2025-12-27 23:57:32,290 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:57:32] "GET /api/strategies/positions?id=2&_t=1766851052283 HTTP/1.1" 200 - +2025-12-27 23:57:37,597 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:57:37] "GET /api/strategies/positions?id=2&_t=1766851057284 HTTP/1.1" 200 - +2025-12-27 23:57:38,781 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:57:38] "GET /api/strategies/equityCurve?id=2&_t=1766851058770 HTTP/1.1" 200 - +2025-12-27 23:57:42,608 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:57:42] "GET /api/strategies/positions?id=2&_t=1766851062290 HTTP/1.1" 200 - +2025-12-27 23:57:47,300 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:57:47] "GET /api/strategies/positions?id=2&_t=1766851067293 HTTP/1.1" 200 - +2025-12-27 23:57:52,599 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:57:52] "GET /api/strategies/positions?id=2&_t=1766851072284 HTTP/1.1" 200 - +2025-12-27 23:57:57,295 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:57:57] "GET /api/strategies/positions?id=2&_t=1766851077289 HTTP/1.1" 200 - +2025-12-27 23:57:58,987 - app.routes.strategy - INFO - ๆญฃๅœจๆต‹่ฏ•่ฟžๆŽฅ: exchange_id=okx +2025-12-27 23:57:58,987 - app.routes.strategy - INFO - API Key: 4cd9c... (len=36) +2025-12-27 23:57:58,987 - app.routes.strategy - INFO - Secret Key: 2B295... (len=32) +2025-12-27 23:58:01,233 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:58:01] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-27 23:58:02,292 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:58:02] "GET /api/strategies/positions?id=2&_t=1766851082285 HTTP/1.1" 200 - +2025-12-27 23:58:03,801 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:58:03] "PUT /api/strategies/update?id=2 HTTP/1.1" 200 - +2025-12-27 23:58:04,081 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:58:04] "GET /api/strategies?_t=1766851084068 HTTP/1.1" 200 - +2025-12-27 23:58:07,303 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:58:07] "GET /api/strategies/positions?id=2&_t=1766851087295 HTTP/1.1" 200 - +2025-12-27 23:58:09,099 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:58:09] "GET /api/strategies/equityCurve?id=2&_t=1766851088779 HTTP/1.1" 200 - +2025-12-27 23:58:11,347 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:58:11] "GET /api/strategies?_t=1766851091332 HTTP/1.1" 200 - +2025-12-27 23:58:13,357 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:58:13] "GET /api/strategies/equityCurve?id=2&_t=1766851093340 HTTP/1.1" 200 - +2025-12-27 23:58:13,668 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:58:13] "GET /api/strategies/equityCurve?id=2&_t=1766851093340 HTTP/1.1" 200 - +2025-12-27 23:58:13,671 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:58:13] "GET /api/strategies/positions?id=2&_t=1766851093346 HTTP/1.1" 200 - +2025-12-27 23:58:14,826 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:58:14] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-27 23:58:14,830 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:58:14] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-27 23:58:14,835 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:58:14] "GET /api/strategies/equityCurve?id=2&_t=1766851094519 HTTP/1.1" 200 - +2025-12-27 23:58:14,844 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:58:14] "GET /api/strategies/equityCurve?id=2&_t=1766851094519 HTTP/1.1" 200 - +2025-12-27 23:58:18,348 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:58:18] "GET /api/strategies/positions?id=2&_t=1766851098342 HTTP/1.1" 200 - +2025-12-27 23:58:23,662 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:58:23] "GET /api/strategies/positions?id=2&_t=1766851103348 HTTP/1.1" 200 - +2025-12-27 23:58:28,356 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:58:28] "GET /api/strategies/positions?id=2&_t=1766851108349 HTTP/1.1" 200 - +2025-12-27 23:58:33,666 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:58:33] "GET /api/strategies/positions?id=2&_t=1766851113348 HTTP/1.1" 200 - +2025-12-27 23:58:38,346 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:58:38] "GET /api/strategies/positions?id=2&_t=1766851118341 HTTP/1.1" 200 - +2025-12-27 23:58:43,664 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:58:43] "GET /api/strategies/positions?id=2&_t=1766851123345 HTTP/1.1" 200 - +2025-12-27 23:58:44,515 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:58:44] "GET /api/strategies/equityCurve?id=2&_t=1766851124507 HTTP/1.1" 200 - +2025-12-27 23:58:48,666 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:58:48] "GET /api/strategies/positions?id=2&_t=1766851128343 HTTP/1.1" 200 - +2025-12-27 23:58:53,358 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:58:53] "GET /api/strategies/positions?id=2&_t=1766851133351 HTTP/1.1" 200 - +2025-12-27 23:58:58,672 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:58:58] "GET /api/strategies/positions?id=2&_t=1766851138353 HTTP/1.1" 200 - +2025-12-27 23:59:03,353 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:59:03] "GET /api/strategies/positions?id=2&_t=1766851143347 HTTP/1.1" 200 - +2025-12-27 23:59:08,669 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:59:08] "GET /api/strategies/positions?id=2&_t=1766851148346 HTTP/1.1" 200 - +2025-12-27 23:59:13,347 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:59:13] "GET /api/strategies/positions?id=2&_t=1766851153339 HTTP/1.1" 200 - +2025-12-27 23:59:14,830 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:59:14] "GET /api/strategies/equityCurve?id=2&_t=1766851154514 HTTP/1.1" 200 - +2025-12-27 23:59:18,347 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:59:18] "GET /api/strategies/positions?id=2&_t=1766851158341 HTTP/1.1" 200 - +2025-12-27 23:59:23,659 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:59:23] "GET /api/strategies/positions?id=2&_t=1766851163343 HTTP/1.1" 200 - +2025-12-27 23:59:28,358 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:59:28] "GET /api/strategies/positions?id=2&_t=1766851168351 HTTP/1.1" 200 - +2025-12-27 23:59:33,671 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:59:33] "GET /api/strategies/positions?id=2&_t=1766851173353 HTTP/1.1" 200 - +2025-12-27 23:59:38,351 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:59:38] "GET /api/strategies/positions?id=2&_t=1766851178344 HTTP/1.1" 200 - +2025-12-27 23:59:43,659 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:59:43] "GET /api/strategies/positions?id=2&_t=1766851183342 HTTP/1.1" 200 - +2025-12-27 23:59:44,522 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:59:44] "GET /api/strategies/equityCurve?id=2&_t=1766851184514 HTTP/1.1" 200 - +2025-12-27 23:59:48,672 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:59:48] "GET /api/strategies/positions?id=2&_t=1766851188352 HTTP/1.1" 200 - +2025-12-27 23:59:53,359 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:59:53] "GET /api/strategies/positions?id=2&_t=1766851193352 HTTP/1.1" 200 - +2025-12-27 23:59:58,665 - werkzeug - INFO - 127.0.0.1 - - [27/Dec/2025 23:59:58] "GET /api/strategies/positions?id=2&_t=1766851198347 HTTP/1.1" 200 - +2025-12-28 00:00:03,346 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:00:03] "GET /api/strategies/positions?id=2&_t=1766851203338 HTTP/1.1" 200 - +2025-12-28 00:00:08,662 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:00:08] "GET /api/strategies/positions?id=2&_t=1766851208344 HTTP/1.1" 200 - +2025-12-28 00:00:13,346 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:00:13] "GET /api/strategies/positions?id=2&_t=1766851213339 HTTP/1.1" 200 - +2025-12-28 00:00:14,827 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:00:14] "GET /api/strategies/equityCurve?id=2&_t=1766851214510 HTTP/1.1" 200 - +2025-12-28 00:00:18,354 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:00:18] "GET /api/strategies/positions?id=2&_t=1766851218348 HTTP/1.1" 200 - +2025-12-28 00:00:23,653 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:00:23] "GET /api/strategies/positions?id=2&_t=1766851223340 HTTP/1.1" 200 - +2025-12-28 00:00:28,347 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:00:28] "GET /api/strategies/positions?id=2&_t=1766851228340 HTTP/1.1" 200 - +2025-12-28 00:00:33,667 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:00:33] "GET /api/strategies/positions?id=2&_t=1766851233353 HTTP/1.1" 200 - +2025-12-28 00:00:38,353 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:00:38] "GET /api/strategies/positions?id=2&_t=1766851238347 HTTP/1.1" 200 - +2025-12-28 00:00:43,663 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:00:43] "GET /api/strategies/positions?id=2&_t=1766851243345 HTTP/1.1" 200 - +2025-12-28 00:00:44,527 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:00:44] "GET /api/strategies/equityCurve?id=2&_t=1766851244519 HTTP/1.1" 200 - +2025-12-28 00:00:48,662 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:00:48] "GET /api/strategies/positions?id=2&_t=1766851248343 HTTP/1.1" 200 - +2025-12-28 00:00:53,349 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:00:53] "GET /api/strategies/positions?id=2&_t=1766851253343 HTTP/1.1" 200 - +2025-12-28 00:00:58,659 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:00:58] "GET /api/strategies/positions?id=2&_t=1766851258342 HTTP/1.1" 200 - +2025-12-28 00:01:03,357 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:01:03] "GET /api/strategies/positions?id=2&_t=1766851263350 HTTP/1.1" 200 - +2025-12-28 00:01:08,669 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:01:08] "GET /api/strategies/positions?id=2&_t=1766851268349 HTTP/1.1" 200 - +2025-12-28 00:01:13,359 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:01:13] "GET /api/strategies/positions?id=2&_t=1766851273353 HTTP/1.1" 200 - +2025-12-28 00:01:14,827 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:01:14] "GET /api/strategies/equityCurve?id=2&_t=1766851274512 HTTP/1.1" 200 - +2025-12-28 00:01:18,356 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:01:18] "GET /api/strategies/positions?id=2&_t=1766851278350 HTTP/1.1" 200 - +2025-12-28 00:01:23,668 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:01:23] "GET /api/strategies/positions?id=2&_t=1766851283347 HTTP/1.1" 200 - +2025-12-28 00:01:28,355 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:01:28] "GET /api/strategies/positions?id=2&_t=1766851288348 HTTP/1.1" 200 - +2025-12-28 00:01:33,674 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:01:33] "GET /api/strategies/positions?id=2&_t=1766851293352 HTTP/1.1" 200 - +2025-12-28 00:01:38,353 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:01:38] "GET /api/strategies/positions?id=2&_t=1766851298347 HTTP/1.1" 200 - +2025-12-28 00:01:43,660 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:01:43] "GET /api/strategies/positions?id=2&_t=1766851303348 HTTP/1.1" 200 - +2025-12-28 00:01:44,514 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:01:44] "GET /api/strategies/equityCurve?id=2&_t=1766851304507 HTTP/1.1" 200 - +2025-12-28 00:01:48,658 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:01:48] "GET /api/strategies/positions?id=2&_t=1766851308337 HTTP/1.1" 200 - +2025-12-28 00:01:53,357 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:01:53] "GET /api/strategies/positions?id=2&_t=1766851313351 HTTP/1.1" 200 - +2025-12-28 00:01:58,671 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:01:58] "GET /api/strategies/positions?id=2&_t=1766851318352 HTTP/1.1" 200 - +2025-12-28 00:02:03,350 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:02:03] "GET /api/strategies/positions?id=2&_t=1766851323343 HTTP/1.1" 200 - +2025-12-28 00:02:08,672 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:02:08] "GET /api/strategies/positions?id=2&_t=1766851328351 HTTP/1.1" 200 - +2025-12-28 00:02:13,345 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:02:13] "GET /api/strategies/positions?id=2&_t=1766851333338 HTTP/1.1" 200 - +2025-12-28 00:02:14,837 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:02:14] "GET /api/strategies/equityCurve?id=2&_t=1766851334518 HTTP/1.1" 200 - +2025-12-28 00:02:18,353 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:02:18] "GET /api/strategies/positions?id=2&_t=1766851338347 HTTP/1.1" 200 - +2025-12-28 00:02:23,661 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:02:23] "GET /api/strategies/positions?id=2&_t=1766851343343 HTTP/1.1" 200 - +2025-12-28 00:02:28,347 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:02:28] "GET /api/strategies/positions?id=2&_t=1766851348341 HTTP/1.1" 200 - +2025-12-28 00:02:33,661 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:02:33] "GET /api/strategies/positions?id=2&_t=1766851353342 HTTP/1.1" 200 - +2025-12-28 00:02:38,355 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:02:38] "GET /api/strategies/positions?id=2&_t=1766851358350 HTTP/1.1" 200 - +2025-12-28 00:02:43,666 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:02:43] "GET /api/strategies/positions?id=2&_t=1766851363348 HTTP/1.1" 200 - +2025-12-28 00:02:44,519 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:02:44] "GET /api/strategies/equityCurve?id=2&_t=1766851364512 HTTP/1.1" 200 - +2025-12-28 00:02:48,659 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:02:48] "GET /api/strategies/positions?id=2&_t=1766851368338 HTTP/1.1" 200 - +2025-12-28 00:02:53,348 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:02:53] "GET /api/strategies/positions?id=2&_t=1766851373341 HTTP/1.1" 200 - +2025-12-28 00:02:58,662 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:02:58] "GET /api/strategies/positions?id=2&_t=1766851378341 HTTP/1.1" 200 - +2025-12-28 00:03:03,347 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:03:03] "GET /api/strategies/positions?id=2&_t=1766851383341 HTTP/1.1" 200 - +2025-12-28 00:03:08,667 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:03:08] "GET /api/strategies/positions?id=2&_t=1766851388346 HTTP/1.1" 200 - +2025-12-28 00:03:13,354 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:03:13] "GET /api/strategies/positions?id=2&_t=1766851393348 HTTP/1.1" 200 - +2025-12-28 00:03:14,840 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:03:14] "GET /api/strategies/equityCurve?id=2&_t=1766851394517 HTTP/1.1" 200 - +2025-12-28 00:03:18,349 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:03:18] "GET /api/strategies/positions?id=2&_t=1766851398343 HTTP/1.1" 200 - +2025-12-28 00:03:23,665 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:03:23] "GET /api/strategies/positions?id=2&_t=1766851403347 HTTP/1.1" 200 - +2025-12-28 00:03:28,345 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:03:28] "GET /api/strategies/positions?id=2&_t=1766851408339 HTTP/1.1" 200 - +2025-12-28 00:03:33,661 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:03:33] "GET /api/strategies/positions?id=2&_t=1766851413350 HTTP/1.1" 200 - +2025-12-28 00:03:38,347 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:03:38] "GET /api/strategies/positions?id=2&_t=1766851418341 HTTP/1.1" 200 - +2025-12-28 00:03:43,665 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:03:43] "GET /api/strategies/positions?id=2&_t=1766851423346 HTTP/1.1" 200 - +2025-12-28 00:03:44,519 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:03:44] "GET /api/strategies/equityCurve?id=2&_t=1766851424512 HTTP/1.1" 200 - +2025-12-28 00:03:48,673 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:03:48] "GET /api/strategies/positions?id=2&_t=1766851428353 HTTP/1.1" 200 - +2025-12-28 00:03:53,346 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:03:53] "GET /api/strategies/positions?id=2&_t=1766851433340 HTTP/1.1" 200 - +2025-12-28 00:03:58,672 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:03:58] "GET /api/strategies/positions?id=2&_t=1766851438350 HTTP/1.1" 200 - +2025-12-28 00:04:03,359 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:04:03] "GET /api/strategies/positions?id=2&_t=1766851443353 HTTP/1.1" 200 - +2025-12-28 00:04:08,667 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:04:08] "GET /api/strategies/positions?id=2&_t=1766851448350 HTTP/1.1" 200 - +2025-12-28 00:04:13,349 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:04:13] "GET /api/strategies/positions?id=2&_t=1766851453342 HTTP/1.1" 200 - +2025-12-28 00:04:14,821 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:04:14] "GET /api/strategies/equityCurve?id=2&_t=1766851454509 HTTP/1.1" 200 - +2025-12-28 00:04:18,352 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:04:18] "GET /api/strategies/positions?id=2&_t=1766851458344 HTTP/1.1" 200 - +2025-12-28 00:04:23,665 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:04:23] "GET /api/strategies/positions?id=2&_t=1766851463349 HTTP/1.1" 200 - +2025-12-28 00:04:28,350 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:04:28] "GET /api/strategies/positions?id=2&_t=1766851468344 HTTP/1.1" 200 - +2025-12-28 00:04:33,659 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:04:33] "GET /api/strategies/positions?id=2&_t=1766851473341 HTTP/1.1" 200 - +2025-12-28 00:04:38,349 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:04:38] "GET /api/strategies/positions?id=2&_t=1766851478343 HTTP/1.1" 200 - +2025-12-28 00:04:43,665 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:04:43] "GET /api/strategies/positions?id=2&_t=1766851483347 HTTP/1.1" 200 - +2025-12-28 00:04:44,514 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:04:44] "GET /api/strategies/equityCurve?id=2&_t=1766851484508 HTTP/1.1" 200 - +2025-12-28 00:04:48,666 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:04:48] "GET /api/strategies/positions?id=2&_t=1766851488345 HTTP/1.1" 200 - +2025-12-28 00:04:53,356 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:04:53] "GET /api/strategies/positions?id=2&_t=1766851493350 HTTP/1.1" 200 - +2025-12-28 00:04:58,663 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:04:58] "GET /api/strategies/positions?id=2&_t=1766851498342 HTTP/1.1" 200 - +2025-12-28 00:05:03,354 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:05:03] "GET /api/strategies/positions?id=2&_t=1766851503348 HTTP/1.1" 200 - +2025-12-28 00:05:08,658 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:05:08] "GET /api/strategies/positions?id=2&_t=1766851508339 HTTP/1.1" 200 - +2025-12-28 00:05:13,351 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:05:13] "GET /api/strategies/positions?id=2&_t=1766851513345 HTTP/1.1" 200 - +2025-12-28 00:05:14,834 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:05:14] "GET /api/strategies/equityCurve?id=2&_t=1766851514516 HTTP/1.1" 200 - +2025-12-28 00:05:18,349 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:05:18] "GET /api/strategies/positions?id=2&_t=1766851518342 HTTP/1.1" 200 - +2025-12-28 00:05:23,667 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:05:23] "GET /api/strategies/positions?id=2&_t=1766851523352 HTTP/1.1" 200 - +2025-12-28 00:05:28,348 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:05:28] "GET /api/strategies/positions?id=2&_t=1766851528342 HTTP/1.1" 200 - +2025-12-28 00:05:33,659 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:05:33] "GET /api/strategies/positions?id=2&_t=1766851533338 HTTP/1.1" 200 - +2025-12-28 00:05:38,361 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:05:38] "GET /api/strategies/positions?id=2&_t=1766851538351 HTTP/1.1" 200 - +2025-12-28 00:05:43,667 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:05:43] "GET /api/strategies/positions?id=2&_t=1766851543351 HTTP/1.1" 200 - +2025-12-28 00:05:44,527 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:05:44] "GET /api/strategies/equityCurve?id=2&_t=1766851544520 HTTP/1.1" 200 - +2025-12-28 00:05:48,666 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:05:48] "GET /api/strategies/positions?id=2&_t=1766851548347 HTTP/1.1" 200 - +2025-12-28 00:05:53,357 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:05:53] "GET /api/strategies/positions?id=2&_t=1766851553351 HTTP/1.1" 200 - +2025-12-28 00:05:58,672 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:05:58] "GET /api/strategies/positions?id=2&_t=1766851558351 HTTP/1.1" 200 - +2025-12-28 00:06:03,352 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:06:03] "GET /api/strategies/positions?id=2&_t=1766851563345 HTTP/1.1" 200 - +2025-12-28 00:06:08,657 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:06:08] "GET /api/strategies/positions?id=2&_t=1766851568339 HTTP/1.1" 200 - +2025-12-28 00:06:13,354 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:06:13] "GET /api/strategies/positions?id=2&_t=1766851573348 HTTP/1.1" 200 - +2025-12-28 00:06:14,832 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:06:14] "GET /api/strategies/equityCurve?id=2&_t=1766851574517 HTTP/1.1" 200 - +2025-12-28 00:06:18,347 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:06:18] "GET /api/strategies/positions?id=2&_t=1766851578340 HTTP/1.1" 200 - +2025-12-28 00:06:23,657 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:06:23] "GET /api/strategies/positions?id=2&_t=1766851583342 HTTP/1.1" 200 - +2025-12-28 00:06:28,355 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:06:28] "GET /api/strategies/positions?id=2&_t=1766851588348 HTTP/1.1" 200 - +2025-12-28 00:06:33,673 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:06:33] "GET /api/strategies/positions?id=2&_t=1766851593352 HTTP/1.1" 200 - +2025-12-28 00:06:38,349 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:06:38] "GET /api/strategies/positions?id=2&_t=1766851598342 HTTP/1.1" 200 - +2025-12-28 00:06:43,673 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:06:43] "GET /api/strategies/positions?id=2&_t=1766851603352 HTTP/1.1" 200 - +2025-12-28 00:06:44,526 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:06:44] "GET /api/strategies/equityCurve?id=2&_t=1766851604519 HTTP/1.1" 200 - +2025-12-28 00:06:48,661 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:06:48] "GET /api/strategies/positions?id=2&_t=1766851608341 HTTP/1.1" 200 - +2025-12-28 00:06:53,354 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:06:53] "GET /api/strategies/positions?id=2&_t=1766851613347 HTTP/1.1" 200 - +2025-12-28 00:06:58,662 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:06:58] "GET /api/strategies/positions?id=2&_t=1766851618341 HTTP/1.1" 200 - +2025-12-28 00:07:03,355 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:07:03] "GET /api/strategies/positions?id=2&_t=1766851623348 HTTP/1.1" 200 - +2025-12-28 00:07:08,667 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:07:08] "GET /api/strategies/positions?id=2&_t=1766851628350 HTTP/1.1" 200 - +2025-12-28 00:07:13,351 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:07:13] "GET /api/strategies/positions?id=2&_t=1766851633344 HTTP/1.1" 200 - +2025-12-28 00:07:14,832 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:07:14] "GET /api/strategies/equityCurve?id=2&_t=1766851634512 HTTP/1.1" 200 - +2025-12-28 00:07:18,347 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:07:18] "GET /api/strategies/positions?id=2&_t=1766851638341 HTTP/1.1" 200 - +2025-12-28 00:07:23,668 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:07:23] "GET /api/strategies/positions?id=2&_t=1766851643350 HTTP/1.1" 200 - +2025-12-28 00:07:28,353 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:07:28] "GET /api/strategies/positions?id=2&_t=1766851648347 HTTP/1.1" 200 - +2025-12-28 00:07:33,668 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:07:33] "GET /api/strategies/positions?id=2&_t=1766851653351 HTTP/1.1" 200 - +2025-12-28 00:07:38,352 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:07:38] "GET /api/strategies/positions?id=2&_t=1766851658345 HTTP/1.1" 200 - +2025-12-28 00:07:43,661 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:07:43] "GET /api/strategies/positions?id=2&_t=1766851663345 HTTP/1.1" 200 - +2025-12-28 00:07:44,520 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:07:44] "GET /api/strategies/equityCurve?id=2&_t=1766851664513 HTTP/1.1" 200 - +2025-12-28 00:07:48,663 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:07:48] "GET /api/strategies/positions?id=2&_t=1766851668348 HTTP/1.1" 200 - +2025-12-28 00:07:53,348 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:07:53] "GET /api/strategies/positions?id=2&_t=1766851673342 HTTP/1.1" 200 - +2025-12-28 00:07:58,668 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:07:58] "GET /api/strategies/positions?id=2&_t=1766851678350 HTTP/1.1" 200 - +2025-12-28 00:08:03,348 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:08:03] "GET /api/strategies/positions?id=2&_t=1766851683341 HTTP/1.1" 200 - +2025-12-28 00:08:08,659 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:08:08] "GET /api/strategies/positions?id=2&_t=1766851688341 HTTP/1.1" 200 - +2025-12-28 00:08:13,346 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:08:13] "GET /api/strategies/positions?id=2&_t=1766851693340 HTTP/1.1" 200 - +2025-12-28 00:08:14,829 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:08:14] "GET /api/strategies/equityCurve?id=2&_t=1766851694509 HTTP/1.1" 200 - +2025-12-28 00:08:18,348 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:08:18] "GET /api/strategies/positions?id=2&_t=1766851698342 HTTP/1.1" 200 - +2025-12-28 00:08:23,660 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:08:23] "GET /api/strategies/positions?id=2&_t=1766851703342 HTTP/1.1" 200 - +2025-12-28 00:08:28,356 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:08:28] "GET /api/strategies/positions?id=2&_t=1766851708349 HTTP/1.1" 200 - +2025-12-28 00:08:33,660 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:08:33] "GET /api/strategies/positions?id=2&_t=1766851713347 HTTP/1.1" 200 - +2025-12-28 00:08:38,359 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:08:38] "GET /api/strategies/positions?id=2&_t=1766851718353 HTTP/1.1" 200 - +2025-12-28 00:08:43,667 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:08:43] "GET /api/strategies/positions?id=2&_t=1766851723348 HTTP/1.1" 200 - +2025-12-28 00:08:44,515 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:08:44] "GET /api/strategies/equityCurve?id=2&_t=1766851724507 HTTP/1.1" 200 - +2025-12-28 00:08:48,663 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:08:48] "GET /api/strategies/positions?id=2&_t=1766851728347 HTTP/1.1" 200 - +2025-12-28 00:08:53,350 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:08:53] "GET /api/strategies/positions?id=2&_t=1766851733344 HTTP/1.1" 200 - +2025-12-28 00:08:58,667 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:08:58] "GET /api/strategies/positions?id=2&_t=1766851738353 HTTP/1.1" 200 - +2025-12-28 00:09:03,356 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:09:03] "GET /api/strategies/positions?id=2&_t=1766851743350 HTTP/1.1" 200 - +2025-12-28 00:09:08,668 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:09:08] "GET /api/strategies/positions?id=2&_t=1766851748351 HTTP/1.1" 200 - +2025-12-28 00:09:13,350 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:09:13] "GET /api/strategies/positions?id=2&_t=1766851753344 HTTP/1.1" 200 - +2025-12-28 00:09:14,826 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:09:14] "GET /api/strategies/equityCurve?id=2&_t=1766851754508 HTTP/1.1" 200 - +2025-12-28 00:09:18,350 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:09:18] "GET /api/strategies/positions?id=2&_t=1766851758344 HTTP/1.1" 200 - +2025-12-28 00:09:23,656 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:09:23] "GET /api/strategies/positions?id=2&_t=1766851763341 HTTP/1.1" 200 - +2025-12-28 00:09:28,345 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:09:28] "GET /api/strategies/positions?id=2&_t=1766851768338 HTTP/1.1" 200 - +2025-12-28 00:09:33,662 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:09:33] "GET /api/strategies/positions?id=2&_t=1766851773342 HTTP/1.1" 200 - +2025-12-28 00:09:38,351 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:09:38] "GET /api/strategies/positions?id=2&_t=1766851778346 HTTP/1.1" 200 - +2025-12-28 00:09:43,671 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:09:43] "GET /api/strategies/positions?id=2&_t=1766851783351 HTTP/1.1" 200 - +2025-12-28 00:09:44,521 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:09:44] "GET /api/strategies/equityCurve?id=2&_t=1766851784515 HTTP/1.1" 200 - +2025-12-28 00:09:48,654 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:09:48] "GET /api/strategies/positions?id=2&_t=1766851788341 HTTP/1.1" 200 - +2025-12-28 00:09:53,351 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:09:53] "GET /api/strategies/positions?id=2&_t=1766851793344 HTTP/1.1" 200 - +2025-12-28 00:09:58,664 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:09:58] "GET /api/strategies/positions?id=2&_t=1766851798347 HTTP/1.1" 200 - +2025-12-28 00:10:03,351 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:10:03] "GET /api/strategies/positions?id=2&_t=1766851803345 HTTP/1.1" 200 - +2025-12-28 00:10:08,663 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:10:08] "GET /api/strategies/positions?id=2&_t=1766851808344 HTTP/1.1" 200 - +2025-12-28 00:10:13,351 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:10:13] "GET /api/strategies/positions?id=2&_t=1766851813345 HTTP/1.1" 200 - +2025-12-28 00:10:14,835 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:10:14] "GET /api/strategies/equityCurve?id=2&_t=1766851814521 HTTP/1.1" 200 - +2025-12-28 00:10:18,347 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:10:18] "GET /api/strategies/positions?id=2&_t=1766851818340 HTTP/1.1" 200 - +2025-12-28 00:10:23,667 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:10:23] "GET /api/strategies/positions?id=2&_t=1766851823347 HTTP/1.1" 200 - +2025-12-28 00:10:28,358 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:10:28] "GET /api/strategies/positions?id=2&_t=1766851828352 HTTP/1.1" 200 - +2025-12-28 00:10:33,656 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:10:33] "GET /api/strategies/positions?id=2&_t=1766851833341 HTTP/1.1" 200 - +2025-12-28 00:10:38,349 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:10:38] "GET /api/strategies/positions?id=2&_t=1766851838342 HTTP/1.1" 200 - +2025-12-28 00:10:43,667 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:10:43] "GET /api/strategies/positions?id=2&_t=1766851843350 HTTP/1.1" 200 - +2025-12-28 00:10:44,518 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:10:44] "GET /api/strategies/equityCurve?id=2&_t=1766851844511 HTTP/1.1" 200 - +2025-12-28 00:10:48,667 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:10:48] "GET /api/strategies/positions?id=2&_t=1766851848347 HTTP/1.1" 200 - +2025-12-28 00:10:53,347 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:10:53] "GET /api/strategies/positions?id=2&_t=1766851853341 HTTP/1.1" 200 - +2025-12-28 00:10:58,665 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:10:58] "GET /api/strategies/positions?id=2&_t=1766851858345 HTTP/1.1" 200 - +2025-12-28 00:11:03,355 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:11:03] "GET /api/strategies/positions?id=2&_t=1766851863349 HTTP/1.1" 200 - +2025-12-28 00:11:08,660 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:11:08] "GET /api/strategies/positions?id=2&_t=1766851868340 HTTP/1.1" 200 - +2025-12-28 00:11:13,360 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:11:13] "GET /api/strategies/positions?id=2&_t=1766851873353 HTTP/1.1" 200 - +2025-12-28 00:11:14,830 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:11:14] "GET /api/strategies/equityCurve?id=2&_t=1766851874512 HTTP/1.1" 200 - +2025-12-28 00:11:18,356 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:11:18] "GET /api/strategies/positions?id=2&_t=1766851878350 HTTP/1.1" 200 - +2025-12-28 00:11:23,669 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:11:23] "GET /api/strategies/positions?id=2&_t=1766851883351 HTTP/1.1" 200 - +2025-12-28 00:11:28,352 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:11:28] "GET /api/strategies/positions?id=2&_t=1766851888346 HTTP/1.1" 200 - +2025-12-28 00:11:33,657 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:11:33] "GET /api/strategies/positions?id=2&_t=1766851893341 HTTP/1.1" 200 - +2025-12-28 00:11:38,348 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:11:38] "GET /api/strategies/positions?id=2&_t=1766851898340 HTTP/1.1" 200 - +2025-12-28 00:11:43,672 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:11:43] "GET /api/strategies/positions?id=2&_t=1766851903353 HTTP/1.1" 200 - +2025-12-28 00:11:44,520 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:11:44] "GET /api/strategies/equityCurve?id=2&_t=1766851904513 HTTP/1.1" 200 - +2025-12-28 00:11:48,669 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:11:48] "GET /api/strategies/positions?id=2&_t=1766851908352 HTTP/1.1" 200 - +2025-12-28 00:11:53,355 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:11:53] "GET /api/strategies/positions?id=2&_t=1766851913349 HTTP/1.1" 200 - +2025-12-28 00:11:58,666 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:11:58] "GET /api/strategies/positions?id=2&_t=1766851918348 HTTP/1.1" 200 - +2025-12-28 00:12:03,353 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:12:03] "GET /api/strategies/positions?id=2&_t=1766851923346 HTTP/1.1" 200 - +2025-12-28 00:12:08,669 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:12:08] "GET /api/strategies/positions?id=2&_t=1766851928348 HTTP/1.1" 200 - +2025-12-28 00:12:13,358 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:12:13] "GET /api/strategies/positions?id=2&_t=1766851933352 HTTP/1.1" 200 - +2025-12-28 00:12:14,838 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:12:14] "GET /api/strategies/equityCurve?id=2&_t=1766851934519 HTTP/1.1" 200 - +2025-12-28 00:12:18,357 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:12:18] "GET /api/strategies/positions?id=2&_t=1766851938351 HTTP/1.1" 200 - +2025-12-28 00:12:23,666 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:12:23] "GET /api/strategies/positions?id=2&_t=1766851943348 HTTP/1.1" 200 - +2025-12-28 00:12:28,345 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:12:28] "GET /api/strategies/positions?id=2&_t=1766851948339 HTTP/1.1" 200 - +2025-12-28 00:12:33,666 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:12:33] "GET /api/strategies/positions?id=2&_t=1766851953344 HTTP/1.1" 200 - +2025-12-28 00:12:38,358 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:12:38] "GET /api/strategies/positions?id=2&_t=1766851958351 HTTP/1.1" 200 - +2025-12-28 00:12:43,663 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:12:43] "GET /api/strategies/positions?id=2&_t=1766851963345 HTTP/1.1" 200 - +2025-12-28 00:12:44,528 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:12:44] "GET /api/strategies/equityCurve?id=2&_t=1766851964520 HTTP/1.1" 200 - +2025-12-28 00:12:48,661 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:12:48] "GET /api/strategies/positions?id=2&_t=1766851968340 HTTP/1.1" 200 - +2025-12-28 00:12:53,344 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:12:53] "GET /api/strategies/positions?id=2&_t=1766851973338 HTTP/1.1" 200 - +2025-12-28 00:12:58,670 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:12:58] "GET /api/strategies/positions?id=2&_t=1766851978349 HTTP/1.1" 200 - +2025-12-28 00:13:03,354 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:13:03] "GET /api/strategies/positions?id=2&_t=1766851983348 HTTP/1.1" 200 - +2025-12-28 00:13:08,671 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:13:08] "GET /api/strategies/positions?id=2&_t=1766851988352 HTTP/1.1" 200 - +2025-12-28 00:13:13,356 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:13:13] "GET /api/strategies/positions?id=2&_t=1766851993350 HTTP/1.1" 200 - +2025-12-28 00:13:14,830 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:13:14] "GET /api/strategies/equityCurve?id=2&_t=1766851994509 HTTP/1.1" 200 - +2025-12-28 00:13:18,355 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:13:18] "GET /api/strategies/positions?id=2&_t=1766851998349 HTTP/1.1" 200 - +2025-12-28 00:13:23,667 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:13:23] "GET /api/strategies/positions?id=2&_t=1766852003345 HTTP/1.1" 200 - +2025-12-28 00:13:28,359 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:13:28] "GET /api/strategies/positions?id=2&_t=1766852008352 HTTP/1.1" 200 - +2025-12-28 00:13:33,669 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:13:33] "GET /api/strategies/positions?id=2&_t=1766852013352 HTTP/1.1" 200 - +2025-12-28 00:13:38,358 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:13:38] "GET /api/strategies/positions?id=2&_t=1766852018353 HTTP/1.1" 200 - +2025-12-28 00:13:43,657 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:13:43] "GET /api/strategies/positions?id=2&_t=1766852023342 HTTP/1.1" 200 - +2025-12-28 00:13:44,518 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:13:44] "GET /api/strategies/equityCurve?id=2&_t=1766852024511 HTTP/1.1" 200 - +2025-12-28 00:13:48,671 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:13:48] "GET /api/strategies/positions?id=2&_t=1766852028353 HTTP/1.1" 200 - +2025-12-28 00:13:53,353 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:13:53] "GET /api/strategies/positions?id=2&_t=1766852033346 HTTP/1.1" 200 - +2025-12-28 00:13:58,667 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:13:58] "GET /api/strategies/positions?id=2&_t=1766852038346 HTTP/1.1" 200 - +2025-12-28 00:14:03,353 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:14:03] "GET /api/strategies/positions?id=2&_t=1766852043346 HTTP/1.1" 200 - +2025-12-28 00:14:08,660 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:14:08] "GET /api/strategies/positions?id=2&_t=1766852048345 HTTP/1.1" 200 - +2025-12-28 00:14:13,350 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:14:13] "GET /api/strategies/positions?id=2&_t=1766852053344 HTTP/1.1" 200 - +2025-12-28 00:14:14,839 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:14:14] "GET /api/strategies/equityCurve?id=2&_t=1766852054521 HTTP/1.1" 200 - +2025-12-28 00:14:18,347 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:14:18] "GET /api/strategies/positions?id=2&_t=1766852058341 HTTP/1.1" 200 - +2025-12-28 00:14:23,667 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:14:23] "GET /api/strategies/positions?id=2&_t=1766852063350 HTTP/1.1" 200 - +2025-12-28 00:14:28,347 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:14:28] "GET /api/strategies/positions?id=2&_t=1766852068338 HTTP/1.1" 200 - +2025-12-28 00:14:33,658 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:14:33] "GET /api/strategies/positions?id=2&_t=1766852073342 HTTP/1.1" 200 - +2025-12-28 00:14:38,357 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:14:38] "GET /api/strategies/positions?id=2&_t=1766852078350 HTTP/1.1" 200 - +2025-12-28 00:14:43,664 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:14:43] "GET /api/strategies/positions?id=2&_t=1766852083348 HTTP/1.1" 200 - +2025-12-28 00:14:44,526 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:14:44] "GET /api/strategies/equityCurve?id=2&_t=1766852084519 HTTP/1.1" 200 - +2025-12-28 00:14:48,673 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:14:48] "GET /api/strategies/positions?id=2&_t=1766852088353 HTTP/1.1" 200 - +2025-12-28 00:14:53,354 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:14:53] "GET /api/strategies/positions?id=2&_t=1766852093347 HTTP/1.1" 200 - +2025-12-28 00:14:58,665 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:14:58] "GET /api/strategies/positions?id=2&_t=1766852098348 HTTP/1.1" 200 - +2025-12-28 00:15:03,348 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:15:03] "GET /api/strategies/positions?id=2&_t=1766852103340 HTTP/1.1" 200 - +2025-12-28 00:15:08,655 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:15:08] "GET /api/strategies/positions?id=2&_t=1766852108338 HTTP/1.1" 200 - +2025-12-28 00:15:13,352 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:15:13] "GET /api/strategies/positions?id=2&_t=1766852113345 HTTP/1.1" 200 - +2025-12-28 00:15:14,827 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:15:14] "GET /api/strategies/equityCurve?id=2&_t=1766852114508 HTTP/1.1" 200 - +2025-12-28 00:15:18,352 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:15:18] "GET /api/strategies/positions?id=2&_t=1766852118345 HTTP/1.1" 200 - +2025-12-28 00:15:23,660 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:15:23] "GET /api/strategies/positions?id=2&_t=1766852123342 HTTP/1.1" 200 - +2025-12-28 00:15:28,347 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:15:28] "GET /api/strategies/positions?id=2&_t=1766852128341 HTTP/1.1" 200 - +2025-12-28 00:15:33,662 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:15:33] "GET /api/strategies/positions?id=2&_t=1766852133343 HTTP/1.1" 200 - +2025-12-28 00:15:38,348 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:15:38] "GET /api/strategies/positions?id=2&_t=1766852138342 HTTP/1.1" 200 - +2025-12-28 00:15:43,656 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:15:43] "GET /api/strategies/positions?id=2&_t=1766852143341 HTTP/1.1" 200 - +2025-12-28 00:15:44,522 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:15:44] "GET /api/strategies/equityCurve?id=2&_t=1766852144515 HTTP/1.1" 200 - +2025-12-28 00:15:48,659 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:15:48] "GET /api/strategies/positions?id=2&_t=1766852148340 HTTP/1.1" 200 - +2025-12-28 00:15:53,345 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:15:53] "GET /api/strategies/positions?id=2&_t=1766852153339 HTTP/1.1" 200 - +2025-12-28 00:15:58,666 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:15:58] "GET /api/strategies/positions?id=2&_t=1766852158348 HTTP/1.1" 200 - +2025-12-28 00:16:03,356 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:16:03] "GET /api/strategies/positions?id=2&_t=1766852163349 HTTP/1.1" 200 - +2025-12-28 00:16:08,658 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:16:08] "GET /api/strategies/positions?id=2&_t=1766852168342 HTTP/1.1" 200 - +2025-12-28 00:16:13,345 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:16:13] "GET /api/strategies/positions?id=2&_t=1766852173339 HTTP/1.1" 200 - +2025-12-28 00:16:14,841 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:16:14] "GET /api/strategies/equityCurve?id=2&_t=1766852174521 HTTP/1.1" 200 - +2025-12-28 00:16:18,345 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:16:18] "GET /api/strategies/positions?id=2&_t=1766852178339 HTTP/1.1" 200 - +2025-12-28 00:16:23,665 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:16:23] "GET /api/strategies/positions?id=2&_t=1766852183347 HTTP/1.1" 200 - +2025-12-28 00:16:28,350 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:16:28] "GET /api/strategies/positions?id=2&_t=1766852188344 HTTP/1.1" 200 - +2025-12-28 00:16:33,658 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:16:33] "GET /api/strategies/positions?id=2&_t=1766852193341 HTTP/1.1" 200 - +2025-12-28 00:16:38,356 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:16:38] "GET /api/strategies/positions?id=2&_t=1766852198349 HTTP/1.1" 200 - +2025-12-28 00:16:43,661 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:16:43] "GET /api/strategies/positions?id=2&_t=1766852203342 HTTP/1.1" 200 - +2025-12-28 00:16:44,518 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:16:44] "GET /api/strategies/equityCurve?id=2&_t=1766852204511 HTTP/1.1" 200 - +2025-12-28 00:16:48,662 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:16:48] "GET /api/strategies/positions?id=2&_t=1766852208342 HTTP/1.1" 200 - +2025-12-28 00:16:53,345 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:16:53] "GET /api/strategies/positions?id=2&_t=1766852213339 HTTP/1.1" 200 - +2025-12-28 00:16:58,659 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:16:58] "GET /api/strategies/positions?id=2&_t=1766852218346 HTTP/1.1" 200 - +2025-12-28 00:17:01,839 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:17:01] "GET /api/strategies?_t=1766852221829 HTTP/1.1" 200 - +2025-12-28 00:20:26,630 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:20:26] "POST /api/user/login HTTP/1.1" 200 - +2025-12-28 00:20:32,009 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:20:32] "GET /api/market/types?_t=1766852432002 HTTP/1.1" 200 - +2025-12-28 00:20:32,014 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:20:32] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 00:20:32,020 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:20:32] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 00:20:32,332 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-28 00:20:36,901 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:20:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 00:20:39,506 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:20:39] "GET /api/strategies?user_id=1 HTTP/1.1" 200 - +2025-12-28 00:20:39,591 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:20:39] "POST /addons/quantdinger/credentials/create HTTP/1.1" 200 - +2025-12-28 00:20:39,597 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:20:39] "GET /addons/quantdinger/credentials/list?user_id=1 HTTP/1.1" 200 - +2025-12-28 00:20:39,604 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:20:39] "GET /addons/quantdinger/credentials/get?id=1&user_id=1 HTTP/1.1" 200 - +2025-12-28 00:20:39,622 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:20:39] "DELETE /addons/quantdinger/credentials/delete?id=1&user_id=1 HTTP/1.1" 200 - +2025-12-28 00:20:39,626 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:20:39] "GET /addons/quantdinger/credentials/list?user_id=1 HTTP/1.1" 200 - +2025-12-28 00:20:48,540 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:20:48] "GET /api/strategies?_t=1766852448531 HTTP/1.1" 200 - +2025-12-28 00:20:49,505 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:20:49] "GET /api/strategies/equityCurve?id=2&_t=1766852449495 HTTP/1.1" 200 - +2025-12-28 00:20:49,806 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:20:49] "GET /api/strategies/equityCurve?id=2&_t=1766852449495 HTTP/1.1" 200 - +2025-12-28 00:20:49,809 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:20:49] "GET /api/strategies/positions?id=2&_t=1766852449498 HTTP/1.1" 200 - +2025-12-28 00:20:50,828 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:20:50] "GET /api/strategies/equityCurve?id=2&_t=1766852450507 HTTP/1.1" 200 - +2025-12-28 00:20:50,833 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:20:50] "GET /api/strategies/equityCurve?id=2&_t=1766852450507 HTTP/1.1" 200 - +2025-12-28 00:20:51,294 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:20:51] "GET /api/market/types?_t=1766852451289 HTTP/1.1" 200 - +2025-12-28 00:20:51,599 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:20:51] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 00:20:51,605 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:20:51] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 00:20:51,609 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:20:51] "GET /api/strategies/equityCurve?id=2&_t=1766852451307 HTTP/1.1" 200 - +2025-12-28 00:20:51,630 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:20:51] "GET /api/strategies/equityCurve?id=2&_t=1766852451307 HTTP/1.1" 200 - +2025-12-28 00:20:54,513 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:20:54] "GET /api/strategies/positions?id=2&_t=1766852454508 HTTP/1.1" 200 - +2025-12-28 00:20:59,813 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:20:59] "GET /api/strategies/positions?id=2&_t=1766852459495 HTTP/1.1" 200 - +2025-12-28 00:21:04,510 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:21:04] "GET /api/strategies/positions?id=2&_t=1766852464504 HTTP/1.1" 200 - +2025-12-28 00:21:09,809 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:21:09] "GET /api/strategies/positions?id=2&_t=1766852469494 HTTP/1.1" 200 - +2025-12-28 00:21:14,512 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:21:14] "GET /api/strategies/positions?id=2&_t=1766852474506 HTTP/1.1" 200 - +2025-12-28 00:21:19,824 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:21:19] "GET /api/strategies/positions?id=2&_t=1766852479508 HTTP/1.1" 200 - +2025-12-28 00:21:22,599 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:21:22] "GET /api/strategies/equityCurve?id=2&_t=1766852481293 HTTP/1.1" 200 - +2025-12-28 00:21:22,925 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:21:22] "GET /api/strategies?_t=1766852482914 HTTP/1.1" 200 - +2025-12-28 00:21:22,936 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:21:22] "GET /api/strategies?_t=1766852482920 HTTP/1.1" 200 - +2025-12-28 00:21:27,830 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:21:27] "GET /api/strategies/equityCurve?id=2&_t=1766852487818 HTTP/1.1" 200 - +2025-12-28 00:21:27,836 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:21:27] "GET /api/strategies/equityCurve?id=2&_t=1766852487818 HTTP/1.1" 200 - +2025-12-28 00:21:28,142 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:21:28] "GET /api/strategies/positions?id=2&_t=1766852487822 HTTP/1.1" 200 - +2025-12-28 00:21:29,705 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:21:29] "GET /api/market/types?_t=1766852489385 HTTP/1.1" 200 - +2025-12-28 00:21:29,709 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:21:29] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 00:21:29,716 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:21:29] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 00:21:29,722 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:21:29] "GET /api/strategies/equityCurve?id=2&_t=1766852489403 HTTP/1.1" 200 - +2025-12-28 00:21:29,727 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:21:29] "GET /api/strategies/equityCurve?id=2&_t=1766852489403 HTTP/1.1" 200 - +2025-12-28 00:21:35,217 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-28 00:21:35,229 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-28 00:21:35,229 - werkzeug - INFO - Press CTRL+C to quit +2025-12-28 00:21:38,152 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-28 00:21:38,153 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:21:38] "GET /api/strategies/positions?id=2&_t=1766852497831 HTTP/1.1" 200 - +2025-12-28 00:21:42,836 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:21:42] "GET /api/strategies/positions?id=2&_t=1766852502831 HTTP/1.1" 200 - +2025-12-28 00:21:48,134 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:21:48] "GET /api/strategies/positions?id=2&_t=1766852507817 HTTP/1.1" 200 - +2025-12-28 00:21:52,822 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:21:52] "GET /api/strategies/positions?id=2&_t=1766852512817 HTTP/1.1" 200 - +2025-12-28 00:21:58,145 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:21:58] "GET /api/strategies/positions?id=2&_t=1766852517823 HTTP/1.1" 200 - +2025-12-28 00:21:59,403 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:21:59] "GET /api/strategies/equityCurve?id=2&_t=1766852519397 HTTP/1.1" 200 - +2025-12-28 00:22:03,138 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:22:03] "GET /api/strategies/positions?id=2&_t=1766852522820 HTTP/1.1" 200 - +2025-12-28 00:22:07,822 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:22:07] "GET /api/strategies/positions?id=2&_t=1766852527816 HTTP/1.1" 200 - +2025-12-28 00:22:08,560 - app.routes.strategy - INFO - ๆญฃๅœจๆต‹่ฏ•่ฟžๆŽฅ: exchange_id=okx +2025-12-28 00:22:08,560 - app.routes.strategy - INFO - API Key: 4cd9c... (len=36) +2025-12-28 00:22:08,560 - app.routes.strategy - INFO - Secret Key: 2B295... (len=32) +2025-12-28 00:22:12,945 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:22:12] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-28 00:22:12,949 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:22:12] "GET /api/strategies/positions?id=2&_t=1766852532817 HTTP/1.1" 200 - +2025-12-28 00:22:15,019 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:22:15] "PUT /api/strategies/update?id=2 HTTP/1.1" 200 - +2025-12-28 00:22:15,297 - app.utils.encryption - WARNING - ENCRYPTION_KEY not set; generating a persistent local .encryption_key (development only). +2025-12-28 00:22:15,297 - app.utils.encryption - WARNING - For production, set ENCRYPTION_KEY via environment variables. +2025-12-28 00:22:15,298 - app.utils.encryption - INFO - A new persistent .encryption_key file was created +2025-12-28 00:22:15,303 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:22:15,303 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:22:15,304 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:22:15,304 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:22:15] "GET /api/strategies?_t=1766852535280 HTTP/1.1" 200 - +2025-12-28 00:22:17,832 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:22:17] "GET /api/strategies/positions?id=2&_t=1766852537826 HTTP/1.1" 200 - +2025-12-28 00:22:19,500 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:22:19] "GET /api/strategies/equityCurve?id=2&_t=1766852539176 HTTP/1.1" 200 - +2025-12-28 00:22:19,504 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:22:19] "GET /api/strategies/equityCurve?id=2&_t=1766852539176 HTTP/1.1" 200 - +2025-12-28 00:22:20,051 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:22:20] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 00:22:20,352 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:22:20] "GET /api/market/types?_t=1766852540042 HTTP/1.1" 200 - +2025-12-28 00:22:20,356 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:22:20] "GET /api/strategies/equityCurve?id=2&_t=1766852540100 HTTP/1.1" 200 - +2025-12-28 00:22:20,417 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:22:20] "GET /api/strategies/equityCurve?id=2&_t=1766852540100 HTTP/1.1" 200 - +2025-12-28 00:22:22,827 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:22:22] "GET /api/strategies/positions?id=2&_t=1766852542822 HTTP/1.1" 200 - +2025-12-28 00:22:28,132 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:22:28] "GET /api/strategies/positions?id=2&_t=1766852547818 HTTP/1.1" 200 - +2025-12-28 00:22:32,835 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:22:32] "GET /api/strategies/positions?id=2&_t=1766852552830 HTTP/1.1" 200 - +2025-12-28 00:22:38,148 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:22:38] "GET /api/strategies/positions?id=2&_t=1766852557829 HTTP/1.1" 200 - +2025-12-28 00:22:39,792 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:22:39,792 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:22:39,792 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:22:39,793 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:22:39] "GET /api/strategies?_t=1766852559784 HTTP/1.1" 200 - +2025-12-28 00:22:40,755 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:22:40] "GET /api/strategies/equityCurve?id=2&_t=1766852560745 HTTP/1.1" 200 - +2025-12-28 00:22:41,067 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:22:41] "GET /api/strategies/equityCurve?id=2&_t=1766852560745 HTTP/1.1" 200 - +2025-12-28 00:22:41,071 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:22:41] "GET /api/strategies/positions?id=2&_t=1766852560748 HTTP/1.1" 200 - +2025-12-28 00:22:41,725 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:22:41] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 00:22:41,728 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:22:41] "GET /api/market/types?_t=1766852561410 HTTP/1.1" 200 - +2025-12-28 00:22:41,732 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:22:41] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 00:22:41,738 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:22:41] "GET /api/strategies/equityCurve?id=2&_t=1766852561425 HTTP/1.1" 200 - +2025-12-28 00:22:41,742 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:22:41] "GET /api/strategies/equityCurve?id=2&_t=1766852561425 HTTP/1.1" 200 - +2025-12-28 00:22:45,751 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:22:45] "GET /api/strategies/positions?id=2&_t=1766852565746 HTTP/1.1" 200 - +2025-12-28 00:22:51,073 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:22:51] "GET /api/strategies/positions?id=2&_t=1766852570754 HTTP/1.1" 200 - +2025-12-28 00:22:55,749 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:22:55] "GET /api/strategies/positions?id=2&_t=1766852575744 HTTP/1.1" 200 - +2025-12-28 00:23:01,070 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:23:01] "GET /api/strategies/positions?id=2&_t=1766852580752 HTTP/1.1" 200 - +2025-12-28 00:23:05,766 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:23:05] "GET /api/strategies/positions?id=2&_t=1766852585751 HTTP/1.1" 200 - +2025-12-28 00:23:11,067 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:23:11] "GET /api/strategies/positions?id=2&_t=1766852590750 HTTP/1.1" 200 - +2025-12-28 00:23:11,434 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:23:11] "GET /api/strategies/equityCurve?id=2&_t=1766852591427 HTTP/1.1" 200 - +2025-12-28 00:23:16,065 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:23:16] "GET /api/strategies/positions?id=2&_t=1766852595758 HTTP/1.1" 200 - +2025-12-28 00:23:20,755 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:23:20] "GET /api/strategies/positions?id=2&_t=1766852600750 HTTP/1.1" 200 - +2025-12-28 00:23:26,071 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:23:26] "GET /api/strategies/positions?id=2&_t=1766852605752 HTTP/1.1" 200 - +2025-12-28 00:23:30,749 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:23:30] "GET /api/strategies/positions?id=2&_t=1766852610744 HTTP/1.1" 200 - +2025-12-28 00:23:36,070 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:23:36] "GET /api/strategies/positions?id=2&_t=1766852615749 HTTP/1.1" 200 - +2025-12-28 00:23:40,756 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:23:40] "GET /api/strategies/positions?id=2&_t=1766852620750 HTTP/1.1" 200 - +2025-12-28 00:23:41,734 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:23:41] "GET /api/strategies/equityCurve?id=2&_t=1766852621415 HTTP/1.1" 200 - +2025-12-28 00:23:44,979 - app.routes.strategy - INFO - ๆญฃๅœจๆต‹่ฏ•่ฟžๆŽฅ: exchange_id=okx +2025-12-28 00:23:44,979 - app.routes.strategy - INFO - API Key: 4cd9c... (len=36) +2025-12-28 00:23:44,979 - app.routes.strategy - INFO - Secret Key: 2B295... (len=32) +2025-12-28 00:23:47,341 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:23:47] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-28 00:23:47,345 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:23:47] "GET /api/strategies/positions?id=2&_t=1766852625751 HTTP/1.1" 200 - +2025-12-28 00:23:50,494 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:23:50] "PUT /api/strategies/update?id=2 HTTP/1.1" 200 - +2025-12-28 00:23:50,766 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:23:50,766 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:23:50,766 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:23:50,767 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:23:50] "GET /api/strategies?_t=1766852630757 HTTP/1.1" 200 - +2025-12-28 00:23:50,815 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:23:50] "GET /api/strategies/positions?id=2&_t=1766852630763 HTTP/1.1" 200 - +2025-12-28 00:23:54,725 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:23:54,725 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:23:54,725 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:23:54,726 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:23:54] "GET /api/strategies?_t=1766852634717 HTTP/1.1" 200 - +2025-12-28 00:23:56,843 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:23:56] "GET /api/strategies/equityCurve?id=2&_t=1766852636834 HTTP/1.1" 200 - +2025-12-28 00:23:57,147 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:23:57] "GET /api/strategies/equityCurve?id=2&_t=1766852636834 HTTP/1.1" 200 - +2025-12-28 00:23:57,150 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:23:57] "GET /api/strategies/positions?id=2&_t=1766852636835 HTTP/1.1" 200 - +2025-12-28 00:23:58,184 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:23:58] "GET /api/strategies/equityCurve?id=2&_t=1766852637863 HTTP/1.1" 200 - +2025-12-28 00:23:58,188 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:23:58] "GET /api/strategies/equityCurve?id=2&_t=1766852637863 HTTP/1.1" 200 - +2025-12-28 00:23:58,979 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:23:58] "GET /api/market/types?_t=1766852638974 HTTP/1.1" 200 - +2025-12-28 00:23:59,284 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:23:59] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 00:23:59,288 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:23:59] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 00:23:59,293 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:23:59] "GET /api/strategies/equityCurve?id=2&_t=1766852638990 HTTP/1.1" 200 - +2025-12-28 00:23:59,299 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:23:59] "GET /api/strategies/equityCurve?id=2&_t=1766852638990 HTTP/1.1" 200 - +2025-12-28 00:24:01,840 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:24:01] "GET /api/strategies/positions?id=2&_t=1766852641835 HTTP/1.1" 200 - +2025-12-28 00:24:07,155 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:24:07] "GET /api/strategies/positions?id=2&_t=1766852646835 HTTP/1.1" 200 - +2025-12-28 00:24:11,844 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:24:11] "GET /api/strategies/positions?id=2&_t=1766852651837 HTTP/1.1" 200 - +2025-12-28 00:24:17,154 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:24:17] "GET /api/strategies/positions?id=2&_t=1766852656834 HTTP/1.1" 200 - +2025-12-28 00:24:21,848 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:24:21] "GET /api/strategies/positions?id=2&_t=1766852661842 HTTP/1.1" 200 - +2025-12-28 00:24:27,146 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:24:27] "GET /api/strategies/positions?id=2&_t=1766852666836 HTTP/1.1" 200 - +2025-12-28 00:24:28,982 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:24:28] "GET /api/strategies/equityCurve?id=2&_t=1766852668977 HTTP/1.1" 200 - +2025-12-28 00:24:32,190 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:24:32] "GET /api/strategies/positions?id=2&_t=1766852671873 HTTP/1.1" 200 - +2025-12-28 00:24:36,840 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:24:36] "GET /api/strategies/positions?id=2&_t=1766852676834 HTTP/1.1" 200 - +2025-12-28 00:24:42,162 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:24:42] "GET /api/strategies/positions?id=2&_t=1766852681849 HTTP/1.1" 200 - +2025-12-28 00:24:46,851 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:24:46] "GET /api/strategies/positions?id=2&_t=1766852686846 HTTP/1.1" 200 - +2025-12-28 00:24:52,152 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:24:52] "GET /api/strategies/positions?id=2&_t=1766852691834 HTTP/1.1" 200 - +2025-12-28 00:24:56,849 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:24:56] "GET /api/strategies/positions?id=2&_t=1766852696843 HTTP/1.1" 200 - +2025-12-28 00:24:58,019 - app.routes.strategy - INFO - ๆญฃๅœจๆต‹่ฏ•่ฟžๆŽฅ: exchange_id=okx +2025-12-28 00:24:58,020 - app.routes.strategy - INFO - API Key: 4cd9c... (len=36) +2025-12-28 00:24:58,020 - app.routes.strategy - INFO - Secret Key: 2B295... (len=32) +2025-12-28 00:25:00,178 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:25:00] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-28 00:25:00,182 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:25:00] "GET /api/strategies/equityCurve?id=2&_t=1766852698985 HTTP/1.1" 200 - +2025-12-28 00:25:02,095 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:25:02] "PUT /api/strategies/update?id=2 HTTP/1.1" 200 - +2025-12-28 00:25:02,151 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:25:02] "GET /api/strategies/positions?id=2&_t=1766852701837 HTTP/1.1" 200 - +2025-12-28 00:25:02,376 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:25:02,376 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:25:02,376 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:25:02,377 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:25:02] "GET /api/strategies?_t=1766852702367 HTTP/1.1" 200 - +2025-12-28 00:25:05,313 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:25:05,313 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:25:05,314 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:25:05,314 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:25:05] "GET /api/strategies?_t=1766852705302 HTTP/1.1" 200 - +2025-12-28 00:25:06,755 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:25:06] "GET /api/strategies/equityCurve?id=2&_t=1766852706744 HTTP/1.1" 200 - +2025-12-28 00:25:07,066 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:25:07] "GET /api/strategies/equityCurve?id=2&_t=1766852706744 HTTP/1.1" 200 - +2025-12-28 00:25:07,069 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:25:07] "GET /api/strategies/positions?id=2&_t=1766852706749 HTTP/1.1" 200 - +2025-12-28 00:25:07,762 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:25:07] "GET /api/market/types?_t=1766852707443 HTTP/1.1" 200 - +2025-12-28 00:25:07,765 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:25:07] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 00:25:07,769 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:25:07] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 00:25:07,775 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:25:07] "GET /api/strategies/equityCurve?id=2&_t=1766852707459 HTTP/1.1" 200 - +2025-12-28 00:25:07,780 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:25:07] "GET /api/strategies/equityCurve?id=2&_t=1766852707459 HTTP/1.1" 200 - +2025-12-28 00:25:11,757 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:25:11] "GET /api/strategies/positions?id=2&_t=1766852711752 HTTP/1.1" 200 - +2025-12-28 00:25:17,074 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:25:17] "GET /api/strategies/positions?id=2&_t=1766852716756 HTTP/1.1" 200 - +2025-12-28 00:25:21,755 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:25:21] "GET /api/strategies/positions?id=2&_t=1766852721750 HTTP/1.1" 200 - +2025-12-28 00:25:27,075 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:25:27] "GET /api/strategies/positions?id=2&_t=1766852726756 HTTP/1.1" 200 - +2025-12-28 00:25:31,756 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:25:31] "GET /api/strategies/positions?id=2&_t=1766852731751 HTTP/1.1" 200 - +2025-12-28 00:25:37,065 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:25:37] "GET /api/strategies/positions?id=2&_t=1766852736750 HTTP/1.1" 200 - +2025-12-28 00:25:37,459 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:25:37] "GET /api/strategies/equityCurve?id=2&_t=1766852737452 HTTP/1.1" 200 - +2025-12-28 00:25:42,068 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:25:42] "GET /api/strategies/positions?id=2&_t=1766852741751 HTTP/1.1" 200 - +2025-12-28 00:25:46,761 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:25:46] "GET /api/strategies/positions?id=2&_t=1766852746756 HTTP/1.1" 200 - +2025-12-28 00:25:52,069 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:25:52] "GET /api/strategies/positions?id=2&_t=1766852751747 HTTP/1.1" 200 - +2025-12-28 00:25:56,749 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:25:56] "GET /api/strategies/positions?id=2&_t=1766852756742 HTTP/1.1" 200 - +2025-12-28 00:26:02,061 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:26:02] "GET /api/strategies/positions?id=2&_t=1766852761743 HTTP/1.1" 200 - +2025-12-28 00:26:06,762 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:26:06] "GET /api/strategies/positions?id=2&_t=1766852766757 HTTP/1.1" 200 - +2025-12-28 00:26:07,773 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:26:07] "GET /api/strategies/equityCurve?id=2&_t=1766852767453 HTTP/1.1" 200 - +2025-12-28 00:26:11,753 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:26:11] "GET /api/strategies/positions?id=2&_t=1766852771748 HTTP/1.1" 200 - +2025-12-28 00:26:17,069 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:26:17] "GET /api/strategies/positions?id=2&_t=1766852776751 HTTP/1.1" 200 - +2025-12-28 00:26:21,757 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:26:21] "GET /api/strategies/positions?id=2&_t=1766852781751 HTTP/1.1" 200 - +2025-12-28 00:26:27,058 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:26:27] "GET /api/strategies/positions?id=2&_t=1766852786745 HTTP/1.1" 200 - +2025-12-28 00:26:31,755 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:26:31] "GET /api/strategies/positions?id=2&_t=1766852791750 HTTP/1.1" 200 - +2025-12-28 00:26:37,066 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:26:37] "GET /api/strategies/positions?id=2&_t=1766852796748 HTTP/1.1" 200 - +2025-12-28 00:26:37,451 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:26:37] "GET /api/strategies/equityCurve?id=2&_t=1766852797446 HTTP/1.1" 200 - +2025-12-28 00:26:42,068 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:26:42] "GET /api/strategies/positions?id=2&_t=1766852801749 HTTP/1.1" 200 - +2025-12-28 00:26:46,748 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:26:46] "GET /api/strategies/positions?id=2&_t=1766852806743 HTTP/1.1" 200 - +2025-12-28 00:26:52,067 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:26:52] "GET /api/strategies/positions?id=2&_t=1766852811749 HTTP/1.1" 200 - +2025-12-28 00:26:56,761 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:26:56] "GET /api/strategies/positions?id=2&_t=1766852816755 HTTP/1.1" 200 - +2025-12-28 00:27:02,061 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:27:02] "GET /api/strategies/positions?id=2&_t=1766852821747 HTTP/1.1" 200 - +2025-12-28 00:27:06,760 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:27:06] "GET /api/strategies/positions?id=2&_t=1766852826754 HTTP/1.1" 200 - +2025-12-28 00:27:07,762 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:27:07] "GET /api/strategies/equityCurve?id=2&_t=1766852827445 HTTP/1.1" 200 - +2025-12-28 00:27:11,754 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:27:11] "GET /api/strategies/positions?id=2&_t=1766852831749 HTTP/1.1" 200 - +2025-12-28 00:27:17,069 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:27:17] "GET /api/strategies/positions?id=2&_t=1766852836756 HTTP/1.1" 200 - +2025-12-28 00:27:21,762 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:27:21] "GET /api/strategies/positions?id=2&_t=1766852841756 HTTP/1.1" 200 - +2025-12-28 00:27:27,076 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:27:27] "GET /api/strategies/positions?id=2&_t=1766852846758 HTTP/1.1" 200 - +2025-12-28 00:27:31,752 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:27:31] "GET /api/strategies/positions?id=2&_t=1766852851747 HTTP/1.1" 200 - +2025-12-28 00:27:37,070 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:27:37] "GET /api/strategies/positions?id=2&_t=1766852856750 HTTP/1.1" 200 - +2025-12-28 00:27:37,453 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:27:37] "GET /api/strategies/equityCurve?id=2&_t=1766852857446 HTTP/1.1" 200 - +2025-12-28 00:27:42,075 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:27:42] "GET /api/strategies/positions?id=2&_t=1766852861754 HTTP/1.1" 200 - +2025-12-28 00:27:46,751 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:27:46] "GET /api/strategies/positions?id=2&_t=1766852866746 HTTP/1.1" 200 - +2025-12-28 00:27:52,058 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:27:52] "GET /api/strategies/positions?id=2&_t=1766852871743 HTTP/1.1" 200 - +2025-12-28 00:27:56,762 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:27:56] "GET /api/strategies/positions?id=2&_t=1766852876756 HTTP/1.1" 200 - +2025-12-28 00:28:02,068 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:28:02] "GET /api/strategies/positions?id=2&_t=1766852881755 HTTP/1.1" 200 - +2025-12-28 00:28:06,756 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:28:06] "GET /api/strategies/positions?id=2&_t=1766852886751 HTTP/1.1" 200 - +2025-12-28 00:28:07,768 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:28:07] "GET /api/strategies/equityCurve?id=2&_t=1766852887446 HTTP/1.1" 200 - +2025-12-28 00:28:11,748 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:28:11] "GET /api/strategies/positions?id=2&_t=1766852891743 HTTP/1.1" 200 - +2025-12-28 00:28:17,067 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:28:17] "GET /api/strategies/positions?id=2&_t=1766852896747 HTTP/1.1" 200 - +2025-12-28 00:28:21,751 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:28:21] "GET /api/strategies/positions?id=2&_t=1766852901745 HTTP/1.1" 200 - +2025-12-28 00:28:27,067 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:28:27] "GET /api/strategies/positions?id=2&_t=1766852906750 HTTP/1.1" 200 - +2025-12-28 00:28:31,752 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:28:31] "GET /api/strategies/positions?id=2&_t=1766852911746 HTTP/1.1" 200 - +2025-12-28 00:28:37,072 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:28:37] "GET /api/strategies/positions?id=2&_t=1766852916755 HTTP/1.1" 200 - +2025-12-28 00:28:37,451 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:28:37] "GET /api/strategies/equityCurve?id=2&_t=1766852917445 HTTP/1.1" 200 - +2025-12-28 00:28:42,055 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:28:42] "GET /api/strategies/positions?id=2&_t=1766852921743 HTTP/1.1" 200 - +2025-12-28 00:28:46,753 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:28:46] "GET /api/strategies/positions?id=2&_t=1766852926748 HTTP/1.1" 200 - +2025-12-28 00:28:52,067 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:28:52] "GET /api/strategies/positions?id=2&_t=1766852931750 HTTP/1.1" 200 - +2025-12-28 00:28:56,751 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:28:56] "GET /api/strategies/positions?id=2&_t=1766852936745 HTTP/1.1" 200 - +2025-12-28 00:29:02,063 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:29:02] "GET /api/strategies/positions?id=2&_t=1766852941746 HTTP/1.1" 200 - +2025-12-28 00:29:06,752 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:29:06] "GET /api/strategies/positions?id=2&_t=1766852946746 HTTP/1.1" 200 - +2025-12-28 00:29:07,769 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:29:07] "GET /api/strategies/equityCurve?id=2&_t=1766852947452 HTTP/1.1" 200 - +2025-12-28 00:29:11,753 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:29:11] "GET /api/strategies/positions?id=2&_t=1766852951748 HTTP/1.1" 200 - +2025-12-28 00:29:17,065 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:29:17] "GET /api/strategies/positions?id=2&_t=1766852956747 HTTP/1.1" 200 - +2025-12-28 00:29:21,751 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:29:21] "GET /api/strategies/positions?id=2&_t=1766852961746 HTTP/1.1" 200 - +2025-12-28 00:29:27,074 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:29:27] "GET /api/strategies/positions?id=2&_t=1766852966754 HTTP/1.1" 200 - +2025-12-28 00:29:31,757 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:29:31] "GET /api/strategies/positions?id=2&_t=1766852971752 HTTP/1.1" 200 - +2025-12-28 00:29:37,068 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:29:37] "GET /api/strategies/positions?id=2&_t=1766852976749 HTTP/1.1" 200 - +2025-12-28 00:29:37,451 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:29:37] "GET /api/strategies/equityCurve?id=2&_t=1766852977445 HTTP/1.1" 200 - +2025-12-28 00:29:42,063 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:29:42] "GET /api/strategies/positions?id=2&_t=1766852981745 HTTP/1.1" 200 - +2025-12-28 00:29:46,758 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:29:46] "GET /api/strategies/positions?id=2&_t=1766852986753 HTTP/1.1" 200 - +2025-12-28 00:29:52,064 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:29:52] "GET /api/strategies/positions?id=2&_t=1766852991746 HTTP/1.1" 200 - +2025-12-28 00:29:56,755 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:29:56] "GET /api/strategies/positions?id=2&_t=1766852996749 HTTP/1.1" 200 - +2025-12-28 00:30:02,070 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:30:02] "GET /api/strategies/positions?id=2&_t=1766853001753 HTTP/1.1" 200 - +2025-12-28 00:30:06,762 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:30:06] "GET /api/strategies/positions?id=2&_t=1766853006757 HTTP/1.1" 200 - +2025-12-28 00:30:07,763 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:30:07] "GET /api/strategies/equityCurve?id=2&_t=1766853007446 HTTP/1.1" 200 - +2025-12-28 00:30:11,751 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:30:11] "GET /api/strategies/positions?id=2&_t=1766853011746 HTTP/1.1" 200 - +2025-12-28 00:30:17,059 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:30:17] "GET /api/strategies/positions?id=2&_t=1766853016742 HTTP/1.1" 200 - +2025-12-28 00:30:21,750 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:30:21] "GET /api/strategies/positions?id=2&_t=1766853021745 HTTP/1.1" 200 - +2025-12-28 00:30:27,063 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:30:27] "GET /api/strategies/positions?id=2&_t=1766853026744 HTTP/1.1" 200 - +2025-12-28 00:30:31,756 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:30:31] "GET /api/strategies/positions?id=2&_t=1766853031751 HTTP/1.1" 200 - +2025-12-28 00:30:37,066 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:30:37] "GET /api/strategies/positions?id=2&_t=1766853036750 HTTP/1.1" 200 - +2025-12-28 00:30:37,450 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:30:37] "GET /api/strategies/equityCurve?id=2&_t=1766853037445 HTTP/1.1" 200 - +2025-12-28 00:30:41,680 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:30:41,680 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:30:41,680 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:30:41,680 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:30:41] "GET /api/strategies?_t=1766853041671 HTTP/1.1" 200 - +2025-12-28 00:30:41,690 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:30:41,691 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:30:41,691 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:30:41,691 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:30:41] "GET /api/strategies?_t=1766853041682 HTTP/1.1" 200 - +2025-12-28 00:30:47,639 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:30:47,640 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:30:47,640 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:30:47,641 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:30:47] "GET /api/strategies?_t=1766853047626 HTTP/1.1" 200 - +2025-12-28 00:30:47,652 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:30:47,652 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:30:47,652 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:30:47,653 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:30:47] "GET /api/strategies?_t=1766853047626 HTTP/1.1" 200 - +2025-12-28 00:30:52,240 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:30:52,240 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:30:52,240 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:30:52,241 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:30:52] "GET /api/strategies?_t=1766853052232 HTTP/1.1" 200 - +2025-12-28 00:30:52,245 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:30:52,245 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:30:52,245 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:30:52,246 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:30:52] "GET /api/strategies?_t=1766853052235 HTTP/1.1" 200 - +2025-12-28 00:31:04,185 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:31:04,185 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:31:04,185 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:31:04,186 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:31:04] "GET /api/strategies?_t=1766853064175 HTTP/1.1" 200 - +2025-12-28 00:31:04,189 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:31:04,189 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:31:04,189 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:31:04,190 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:31:04] "GET /api/strategies?_t=1766853064178 HTTP/1.1" 200 - +2025-12-28 00:31:32,438 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:31:32,438 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:31:32,438 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:31:32,439 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:31:32] "GET /api/strategies?_t=1766853092423 HTTP/1.1" 200 - +2025-12-28 00:31:32,444 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:31:32,444 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:31:32,445 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:31:32,445 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:31:32] "GET /api/strategies?_t=1766853092424 HTTP/1.1" 200 - +2025-12-28 00:31:56,539 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:31:56] "GET /api/strategies/equityCurve?id=2&_t=1766853116520 HTTP/1.1" 200 - +2025-12-28 00:31:56,851 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:31:56] "GET /api/strategies/equityCurve?id=2&_t=1766853116520 HTTP/1.1" 200 - +2025-12-28 00:31:56,854 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:31:56] "GET /api/strategies/positions?id=2&_t=1766853116525 HTTP/1.1" 200 - +2025-12-28 00:31:59,710 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:31:59,711 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:31:59,711 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:31:59,711 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:31:59] "GET /api/strategies?_t=1766853119696 HTTP/1.1" 200 - +2025-12-28 00:32:01,165 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:32:01] "GET /api/strategies/equityCurve?id=2&_t=1766853121151 HTTP/1.1" 200 - +2025-12-28 00:32:01,170 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:32:01] "GET /api/strategies/equityCurve?id=2&_t=1766853121151 HTTP/1.1" 200 - +2025-12-28 00:32:01,493 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:32:01] "GET /api/strategies/positions?id=2&_t=1766853121156 HTTP/1.1" 200 - +2025-12-28 00:32:02,287 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:32:02] "GET /api/market/types?_t=1766853121962 HTTP/1.1" 200 - +2025-12-28 00:32:02,294 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:32:02] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 00:32:02,308 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:32:02] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 00:32:02,317 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:32:02] "GET /api/strategies/equityCurve?id=2&_t=1766853121981 HTTP/1.1" 200 - +2025-12-28 00:32:02,323 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:32:02] "GET /api/strategies/equityCurve?id=2&_t=1766853121981 HTTP/1.1" 200 - +2025-12-28 00:32:06,156 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:32:06] "GET /api/strategies/positions?id=2&_t=1766853126150 HTTP/1.1" 200 - +2025-12-28 00:32:11,471 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:32:11] "GET /api/strategies/positions?id=2&_t=1766853131153 HTTP/1.1" 200 - +2025-12-28 00:32:16,170 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:32:16] "GET /api/strategies/positions?id=2&_t=1766853136164 HTTP/1.1" 200 - +2025-12-28 00:32:21,461 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:32:21] "GET /api/strategies/positions?id=2&_t=1766853141149 HTTP/1.1" 200 - +2025-12-28 00:32:26,161 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:32:26] "GET /api/strategies/positions?id=2&_t=1766853146154 HTTP/1.1" 200 - +2025-12-28 00:32:31,462 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:32:31] "GET /api/strategies/positions?id=2&_t=1766853151154 HTTP/1.1" 200 - +2025-12-28 00:32:31,978 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:32:31] "GET /api/strategies/equityCurve?id=2&_t=1766853151970 HTTP/1.1" 200 - +2025-12-28 00:32:36,471 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:32:36] "GET /api/strategies/positions?id=2&_t=1766853156152 HTTP/1.1" 200 - +2025-12-28 00:32:41,171 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:32:41] "GET /api/strategies/positions?id=2&_t=1766853161164 HTTP/1.1" 200 - +2025-12-28 00:32:46,468 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:32:46] "GET /api/strategies/positions?id=2&_t=1766853166150 HTTP/1.1" 200 - +2025-12-28 00:32:51,170 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:32:51] "GET /api/strategies/positions?id=2&_t=1766853171163 HTTP/1.1" 200 - +2025-12-28 00:32:56,482 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:32:56] "GET /api/strategies/positions?id=2&_t=1766853176163 HTTP/1.1" 200 - +2025-12-28 00:33:01,171 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:33:01] "GET /api/strategies/positions?id=2&_t=1766853181164 HTTP/1.1" 200 - +2025-12-28 00:33:02,293 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:33:02] "GET /api/strategies/equityCurve?id=2&_t=1766853181979 HTTP/1.1" 200 - +2025-12-28 00:33:06,157 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:33:06] "GET /api/strategies/positions?id=2&_t=1766853186149 HTTP/1.1" 200 - +2025-12-28 00:33:11,472 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:33:11] "GET /api/strategies/positions?id=2&_t=1766853191151 HTTP/1.1" 200 - +2025-12-28 00:33:16,158 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:33:16] "GET /api/strategies/positions?id=2&_t=1766853196149 HTTP/1.1" 200 - +2025-12-28 00:33:21,518 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:33:21] "GET /api/strategies/positions?id=2&_t=1766853201200 HTTP/1.1" 200 - +2025-12-28 00:33:26,158 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:33:26] "GET /api/strategies/positions?id=2&_t=1766853206151 HTTP/1.1" 200 - +2025-12-28 00:33:31,461 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:33:31] "GET /api/strategies/positions?id=2&_t=1766853211150 HTTP/1.1" 200 - +2025-12-28 00:33:31,973 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:33:31] "GET /api/strategies/equityCurve?id=2&_t=1766853211965 HTTP/1.1" 200 - +2025-12-28 00:33:36,470 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:33:36] "GET /api/strategies/positions?id=2&_t=1766853216151 HTTP/1.1" 200 - +2025-12-28 00:33:41,169 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:33:41] "GET /api/strategies/positions?id=2&_t=1766853221160 HTTP/1.1" 200 - +2025-12-28 00:33:46,473 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:33:46] "GET /api/strategies/positions?id=2&_t=1766853226152 HTTP/1.1" 200 - +2025-12-28 00:33:51,166 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:33:51] "GET /api/strategies/positions?id=2&_t=1766853231157 HTTP/1.1" 200 - +2025-12-28 00:33:56,481 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:33:56] "GET /api/strategies/positions?id=2&_t=1766853236157 HTTP/1.1" 200 - +2025-12-28 00:34:01,157 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:34:01] "GET /api/strategies/positions?id=2&_t=1766853241149 HTTP/1.1" 200 - +2025-12-28 00:34:01,971 - app.routes.strategy - INFO - ๆญฃๅœจๆต‹่ฏ•่ฟžๆŽฅ: exchange_id=okx +2025-12-28 00:34:01,971 - app.routes.strategy - INFO - API Key: 4cd9c... (len=36) +2025-12-28 00:34:01,972 - app.routes.strategy - INFO - Secret Key: 2B295... (len=32) +2025-12-28 00:34:06,587 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:34:06] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-28 00:34:06,592 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:34:06] "GET /api/strategies/equityCurve?id=2&_t=1766853241965 HTTP/1.1" 200 - +2025-12-28 00:34:06,598 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:34:06] "GET /api/strategies/positions?id=2&_t=1766853246157 HTTP/1.1" 200 - +2025-12-28 00:34:09,180 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:34:09] "PUT /api/strategies/update?id=2 HTTP/1.1" 200 - +2025-12-28 00:34:09,484 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:34:09,484 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:34:09,484 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:34:09,485 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:34:09] "GET /api/strategies?_t=1766853249469 HTTP/1.1" 200 - +2025-12-28 00:34:11,169 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:34:11] "GET /api/strategies/positions?id=2&_t=1766853251161 HTTP/1.1" 200 - +2025-12-28 00:34:16,472 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:34:16] "GET /api/strategies/positions?id=2&_t=1766853256155 HTTP/1.1" 200 - +2025-12-28 00:34:21,171 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:34:21] "GET /api/strategies/positions?id=2&_t=1766853261164 HTTP/1.1" 200 - +2025-12-28 00:34:26,475 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:34:26] "GET /api/strategies/positions?id=2&_t=1766853266159 HTTP/1.1" 200 - +2025-12-28 00:34:31,165 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:34:31] "GET /api/strategies/positions?id=2&_t=1766853271158 HTTP/1.1" 200 - +2025-12-28 00:34:32,300 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:34:32] "GET /api/strategies/equityCurve?id=2&_t=1766853271979 HTTP/1.1" 200 - +2025-12-28 00:34:36,165 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:34:36] "GET /api/strategies/positions?id=2&_t=1766853276156 HTTP/1.1" 200 - +2025-12-28 00:34:41,472 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:34:41] "GET /api/strategies/positions?id=2&_t=1766853281153 HTTP/1.1" 200 - +2025-12-28 00:34:46,167 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:34:46] "GET /api/strategies/positions?id=2&_t=1766853286161 HTTP/1.1" 200 - +2025-12-28 00:34:51,469 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:34:51] "GET /api/strategies/positions?id=2&_t=1766853291150 HTTP/1.1" 200 - +2025-12-28 00:34:56,173 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:34:56] "GET /api/strategies/positions?id=2&_t=1766853296165 HTTP/1.1" 200 - +2025-12-28 00:35:01,481 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:35:01] "GET /api/strategies/positions?id=2&_t=1766853301164 HTTP/1.1" 200 - +2025-12-28 00:35:01,980 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:35:01] "GET /api/strategies/equityCurve?id=2&_t=1766853301971 HTTP/1.1" 200 - +2025-12-28 00:35:06,476 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:35:06] "GET /api/strategies/positions?id=2&_t=1766853306155 HTTP/1.1" 200 - +2025-12-28 00:35:11,163 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:35:11] "GET /api/strategies/positions?id=2&_t=1766853311156 HTTP/1.1" 200 - +2025-12-28 00:35:16,468 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:35:16] "GET /api/strategies/positions?id=2&_t=1766853316151 HTTP/1.1" 200 - +2025-12-28 00:35:21,162 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:35:21] "GET /api/strategies/positions?id=2&_t=1766853321152 HTTP/1.1" 200 - +2025-12-28 00:35:26,478 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:35:26] "GET /api/strategies/positions?id=2&_t=1766853326157 HTTP/1.1" 200 - +2025-12-28 00:35:31,168 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:35:31] "GET /api/strategies/positions?id=2&_t=1766853331160 HTTP/1.1" 200 - +2025-12-28 00:35:32,288 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:35:32] "GET /api/strategies/equityCurve?id=2&_t=1766853331965 HTTP/1.1" 200 - +2025-12-28 00:35:35,166 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:35:35] "GET /api/strategies/equityCurve?id=2&_t=1766853335149 HTTP/1.1" 200 - +2025-12-28 00:35:35,482 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:35:35] "GET /api/strategies/equityCurve?id=2&_t=1766853335149 HTTP/1.1" 200 - +2025-12-28 00:35:36,277 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:35:36] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 00:35:36,287 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:35:36] "GET /api/market/types?_t=1766853335951 HTTP/1.1" 200 - +2025-12-28 00:35:36,295 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:35:36] "GET /api/strategies/equityCurve?id=2&_t=1766853336139 HTTP/1.1" 200 - +2025-12-28 00:35:36,470 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:35:36] "GET /api/strategies/equityCurve?id=2&_t=1766853336139 HTTP/1.1" 200 - +2025-12-28 00:35:36,475 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:35:36] "GET /api/strategies/positions?id=2&_t=1766853336173 HTTP/1.1" 200 - +2025-12-28 00:35:41,161 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:35:41] "GET /api/strategies/positions?id=2&_t=1766853341152 HTTP/1.1" 200 - +2025-12-28 00:35:46,468 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:35:46] "GET /api/strategies/positions?id=2&_t=1766853346149 HTTP/1.1" 200 - +2025-12-28 00:35:51,160 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:35:51] "GET /api/strategies/positions?id=2&_t=1766853351151 HTTP/1.1" 200 - +2025-12-28 00:35:56,465 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:35:56] "GET /api/strategies/positions?id=2&_t=1766853356149 HTTP/1.1" 200 - +2025-12-28 00:36:01,161 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:36:01] "GET /api/strategies/positions?id=2&_t=1766853361154 HTTP/1.1" 200 - +2025-12-28 00:36:06,419 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:36:06] "GET /api/strategies/equityCurve?id=2&_t=1766853366104 HTTP/1.1" 200 - +2025-12-28 00:36:06,465 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:36:06] "GET /api/strategies/positions?id=2&_t=1766853366150 HTTP/1.1" 200 - +2025-12-28 00:36:11,170 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:36:11] "GET /api/strategies/positions?id=2&_t=1766853371162 HTTP/1.1" 200 - +2025-12-28 00:36:16,470 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:36:16] "GET /api/strategies/positions?id=2&_t=1766853376158 HTTP/1.1" 200 - +2025-12-28 00:36:21,163 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:36:21] "GET /api/strategies/positions?id=2&_t=1766853381156 HTTP/1.1" 200 - +2025-12-28 00:36:26,468 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:36:26] "GET /api/strategies/positions?id=2&_t=1766853386152 HTTP/1.1" 200 - +2025-12-28 00:36:31,164 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:36:31] "GET /api/strategies/positions?id=2&_t=1766853391155 HTTP/1.1" 200 - +2025-12-28 00:36:36,430 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:36:36] "GET /api/strategies/equityCurve?id=2&_t=1766853396113 HTTP/1.1" 200 - +2025-12-28 00:36:36,477 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:36:36] "GET /api/strategies/positions?id=2&_t=1766853396160 HTTP/1.1" 200 - +2025-12-28 00:36:41,164 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:36:41] "GET /api/strategies/positions?id=2&_t=1766853401156 HTTP/1.1" 200 - +2025-12-28 00:36:46,475 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:36:46] "GET /api/strategies/positions?id=2&_t=1766853406156 HTTP/1.1" 200 - +2025-12-28 00:36:51,167 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:36:51] "GET /api/strategies/positions?id=2&_t=1766853411159 HTTP/1.1" 200 - +2025-12-28 00:36:56,542 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:36:56] "GET /api/strategies/positions?id=2&_t=1766853416163 HTTP/1.1" 200 - +2025-12-28 00:36:56,803 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:36:56,804 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:36:56,804 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:36:56,805 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:36:56] "GET /api/strategies?_t=1766853416791 HTTP/1.1" 200 - +2025-12-28 00:36:56,857 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:36:56,858 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:36:56,858 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:36:56,858 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:36:56] "GET /api/strategies?_t=1766853416843 HTTP/1.1" 200 - +2025-12-28 00:37:48,105 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:37:48,106 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:37:48,106 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:37:48,106 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:37:48] "GET /api/strategies?_t=1766853468079 HTTP/1.1" 200 - +2025-12-28 00:37:48,119 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:37:48,119 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:37:48,119 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:37:48,120 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:37:48] "GET /api/strategies?_t=1766853468089 HTTP/1.1" 200 - +2025-12-28 00:38:59,658 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-28 00:38:59,673 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-28 00:38:59,673 - werkzeug - INFO - Press CTRL+C to quit +2025-12-28 00:39:03,104 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-28 00:39:03,110 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:39:03] "GET /api/strategies/equityCurve?id=2&_t=1766853542780 HTTP/1.1" 200 - +2025-12-28 00:39:03,118 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:39:03] "GET /api/strategies/equityCurve?id=2&_t=1766853542780 HTTP/1.1" 200 - +2025-12-28 00:39:03,129 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:39:03] "GET /api/strategies/positions?id=2&_t=1766853542786 HTTP/1.1" 200 - +2025-12-28 00:39:03,652 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:39:03] "GET /api/market/types?_t=1766853543645 HTTP/1.1" 200 - +2025-12-28 00:39:03,963 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:39:03] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 00:39:03,969 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:39:03] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 00:39:03,975 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:39:03] "GET /api/credentials/list?user_id=1&_t=1766853543645 HTTP/1.1" 200 - +2025-12-28 00:39:03,983 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:39:03] "GET /api/strategies/equityCurve?id=2&_t=1766853543663 HTTP/1.1" 200 - +2025-12-28 00:39:03,990 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:39:03] "GET /api/strategies/equityCurve?id=2&_t=1766853543663 HTTP/1.1" 200 - +2025-12-28 00:39:08,090 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:39:08] "GET /api/strategies/positions?id=2&_t=1766853547777 HTTP/1.1" 200 - +2025-12-28 00:39:12,785 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:39:12] "GET /api/strategies/positions?id=2&_t=1766853552778 HTTP/1.1" 200 - +2025-12-28 00:39:18,110 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:39:18] "GET /api/strategies/positions?id=2&_t=1766853557786 HTTP/1.1" 200 - +2025-12-28 00:39:22,786 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:39:22] "GET /api/strategies/positions?id=2&_t=1766853562779 HTTP/1.1" 200 - +2025-12-28 00:39:28,097 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:39:28] "GET /api/strategies/positions?id=2&_t=1766853567779 HTTP/1.1" 200 - +2025-12-28 00:39:32,787 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:39:32] "GET /api/strategies/positions?id=2&_t=1766853572779 HTTP/1.1" 200 - +2025-12-28 00:39:33,973 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:39:33] "GET /api/strategies/equityCurve?id=2&_t=1766853573652 HTTP/1.1" 200 - +2025-12-28 00:39:37,786 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:39:37] "GET /api/strategies/positions?id=2&_t=1766853577778 HTTP/1.1" 200 - +2025-12-28 00:39:43,104 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:39:43] "GET /api/strategies/positions?id=2&_t=1766853582785 HTTP/1.1" 200 - +2025-12-28 00:39:47,790 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:39:47] "GET /api/strategies/positions?id=2&_t=1766853587782 HTTP/1.1" 200 - +2025-12-28 00:39:53,102 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:39:53] "GET /api/strategies/positions?id=2&_t=1766853592781 HTTP/1.1" 200 - +2025-12-28 00:39:57,798 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:39:57] "GET /api/strategies/positions?id=2&_t=1766853597787 HTTP/1.1" 200 - +2025-12-28 00:40:03,111 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:40:03] "GET /api/strategies/positions?id=2&_t=1766853602791 HTTP/1.1" 200 - +2025-12-28 00:40:03,658 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:40:03] "GET /api/strategies/equityCurve?id=2&_t=1766853603649 HTTP/1.1" 200 - +2025-12-28 00:40:04,609 - app.routes.strategy - INFO - ๆญฃๅœจๆต‹่ฏ•่ฟžๆŽฅ: exchange_id=okx +2025-12-28 00:40:04,609 - app.routes.strategy - INFO - API Key: 4cd9c... (len=36) +2025-12-28 00:40:04,609 - app.routes.strategy - INFO - Secret Key: 2B295... (len=32) +2025-12-28 00:40:07,765 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:40:07] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-28 00:40:07,827 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:40:07] "GET /api/strategies/positions?id=2&_t=1766853607817 HTTP/1.1" 200 - +2025-12-28 00:40:09,559 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:40:09] "PUT /api/strategies/update?id=2 HTTP/1.1" 200 - +2025-12-28 00:40:09,827 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:40:09] "POST /api/credentials/create HTTP/1.1" 200 - +2025-12-28 00:40:09,888 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:40:09] "GET /api/credentials/list?user_id=1&_t=1766853609876 HTTP/1.1" 200 - +2025-12-28 00:40:10,202 - app.utils.encryption - INFO - Encryption key loaded from .encryption_key (persistent local key) +2025-12-28 00:40:10,210 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:40:10,210 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:40:10,210 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:40:10,211 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:40:10] "GET /api/strategies?_t=1766853609876 HTTP/1.1" 200 - +2025-12-28 00:40:13,104 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:40:13] "GET /api/strategies/positions?id=2&_t=1766853612785 HTTP/1.1" 200 - +2025-12-28 00:40:17,786 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:40:17] "GET /api/strategies/positions?id=2&_t=1766853617779 HTTP/1.1" 200 - +2025-12-28 00:40:23,092 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:40:23] "GET /api/strategies/positions?id=2&_t=1766853622778 HTTP/1.1" 200 - +2025-12-28 00:40:26,864 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:40:26] "GET /api/strategies/equityCurve?id=2&_t=1766853626845 HTTP/1.1" 200 - +2025-12-28 00:40:27,174 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:40:27] "GET /api/strategies/equityCurve?id=2&_t=1766853626845 HTTP/1.1" 200 - +2025-12-28 00:40:28,014 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:40:28] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 00:40:28,019 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:40:28] "GET /api/market/types?_t=1766853627690 HTTP/1.1" 200 - +2025-12-28 00:40:28,024 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:40:28] "GET /api/credentials/list?user_id=1&_t=1766853627690 HTTP/1.1" 200 - +2025-12-28 00:40:28,165 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:40:28] "GET /api/strategies/equityCurve?id=2&_t=1766853627849 HTTP/1.1" 200 - +2025-12-28 00:40:28,169 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:40:28] "GET /api/strategies/equityCurve?id=2&_t=1766853627849 HTTP/1.1" 200 - +2025-12-28 00:40:28,195 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:40:28] "GET /api/strategies/positions?id=2&_t=1766853627877 HTTP/1.1" 200 - +2025-12-28 00:40:33,115 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:40:33] "GET /api/strategies/positions?id=2&_t=1766853632788 HTTP/1.1" 200 - +2025-12-28 00:40:37,790 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:40:37] "GET /api/strategies/positions?id=2&_t=1766853637778 HTTP/1.1" 200 - +2025-12-28 00:40:40,751 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:40:40] "GET /api/credentials/get?id=2&user_id=1&_t=1766853640438 HTTP/1.1" 200 - +2025-12-28 00:40:42,786 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:40:42] "GET /api/strategies/positions?id=2&_t=1766853642778 HTTP/1.1" 200 - +2025-12-28 00:40:48,097 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:40:48] "GET /api/strategies/positions?id=2&_t=1766853647777 HTTP/1.1" 200 - +2025-12-28 00:40:52,799 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:40:52] "GET /api/strategies/positions?id=2&_t=1766853652793 HTTP/1.1" 200 - +2025-12-28 00:40:58,091 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:40:58] "GET /api/strategies/positions?id=2&_t=1766853657779 HTTP/1.1" 200 - +2025-12-28 00:40:58,139 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:40:58] "GET /api/strategies/equityCurve?id=2&_t=1766853657819 HTTP/1.1" 200 - +2025-12-28 00:41:02,785 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:41:02] "GET /api/strategies/positions?id=2&_t=1766853662778 HTTP/1.1" 200 - +2025-12-28 00:41:08,103 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:41:08] "GET /api/strategies/positions?id=2&_t=1766853667784 HTTP/1.1" 200 - +2025-12-28 00:41:12,785 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:41:12] "GET /api/strategies/positions?id=2&_t=1766853672778 HTTP/1.1" 200 - +2025-12-28 00:41:18,101 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:41:18] "GET /api/strategies/positions?id=2&_t=1766853677780 HTTP/1.1" 200 - +2025-12-28 00:41:22,785 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:41:22] "GET /api/strategies/positions?id=2&_t=1766853682779 HTTP/1.1" 200 - +2025-12-28 00:41:28,076 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:41:28] "GET /api/strategies/equityCurve?id=2&_t=1766853687747 HTTP/1.1" 200 - +2025-12-28 00:41:28,080 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:41:28] "GET /api/strategies/equityCurve?id=2&_t=1766853687747 HTTP/1.1" 200 - +2025-12-28 00:41:28,084 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:41:28] "GET /api/strategies/positions?id=2&_t=1766853687777 HTTP/1.1" 200 - +2025-12-28 00:41:28,560 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:41:28] "GET /api/market/types?_t=1766853688549 HTTP/1.1" 200 - +2025-12-28 00:41:28,866 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:41:28] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 00:41:28,870 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:41:28] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 00:41:28,874 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:41:28] "GET /api/credentials/list?user_id=1&_t=1766853688549 HTTP/1.1" 200 - +2025-12-28 00:41:28,915 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:41:28] "GET /api/strategies/equityCurve?id=2&_t=1766853688585 HTTP/1.1" 200 - +2025-12-28 00:41:28,919 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:41:28] "GET /api/strategies/equityCurve?id=2&_t=1766853688585 HTTP/1.1" 200 - +2025-12-28 00:41:33,098 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:41:33] "GET /api/strategies/positions?id=2&_t=1766853692778 HTTP/1.1" 200 - +2025-12-28 00:41:33,944 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:41:33] "GET /api/strategies/equityCurve?id=2&_t=1766853693927 HTTP/1.1" 200 - +2025-12-28 00:41:34,255 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:41:34] "GET /api/strategies/equityCurve?id=2&_t=1766853693927 HTTP/1.1" 200 - +2025-12-28 00:41:35,231 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:41:35] "GET /api/market/types?_t=1766853694913 HTTP/1.1" 200 - +2025-12-28 00:41:35,235 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:41:35] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 00:41:35,239 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:41:35] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 00:41:35,246 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:41:35] "GET /api/credentials/list?user_id=1&_t=1766853694913 HTTP/1.1" 200 - +2025-12-28 00:41:35,279 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:41:35] "GET /api/strategies/equityCurve?id=2&_t=1766853694949 HTTP/1.1" 200 - +2025-12-28 00:41:35,284 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:41:35] "GET /api/strategies/equityCurve?id=2&_t=1766853694949 HTTP/1.1" 200 - +2025-12-28 00:41:38,093 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:41:38] "GET /api/strategies/positions?id=2&_t=1766853697777 HTTP/1.1" 200 - +2025-12-28 00:41:42,787 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:41:42] "GET /api/strategies/positions?id=2&_t=1766853702780 HTTP/1.1" 200 - +2025-12-28 00:41:48,092 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:41:48] "GET /api/strategies/positions?id=2&_t=1766853707779 HTTP/1.1" 200 - +2025-12-28 00:41:52,071 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:41:52] "GET /api/credentials/get?id=2&user_id=1&_t=1766853712058 HTTP/1.1" 200 - +2025-12-28 00:41:53,110 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:41:53] "GET /api/strategies/positions?id=2&_t=1766853712789 HTTP/1.1" 200 - +2025-12-28 00:41:56,438 - app.routes.strategy - INFO - ๆญฃๅœจๆต‹่ฏ•่ฟžๆŽฅ: exchange_id=okx +2025-12-28 00:41:56,439 - app.routes.strategy - INFO - API Key: 4cd9c... (len=36) +2025-12-28 00:41:56,439 - app.routes.strategy - INFO - Secret Key: 2B295... (len=32) +2025-12-28 00:41:58,500 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:41:58] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-28 00:41:58,503 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:41:58] "GET /api/strategies/positions?id=2&_t=1766853717782 HTTP/1.1" 200 - +2025-12-28 00:42:02,800 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:42:02] "GET /api/strategies/positions?id=2&_t=1766853722792 HTTP/1.1" 200 - +2025-12-28 00:42:04,935 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:42:04] "GET /api/strategies/equityCurve?id=2&_t=1766853724928 HTTP/1.1" 200 - +2025-12-28 00:42:08,109 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:42:08] "GET /api/strategies/positions?id=2&_t=1766853727787 HTTP/1.1" 200 - +2025-12-28 00:42:12,798 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:42:12] "GET /api/strategies/positions?id=2&_t=1766853732778 HTTP/1.1" 200 - +2025-12-28 00:42:17,966 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:42:17] "GET /api/strategies/equityCurve?id=2&_t=1766853737641 HTTP/1.1" 200 - +2025-12-28 00:42:17,971 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:42:17] "GET /api/strategies/equityCurve?id=2&_t=1766853737641 HTTP/1.1" 200 - +2025-12-28 00:42:18,104 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:42:18] "GET /api/strategies/positions?id=2&_t=1766853737787 HTTP/1.1" 200 - +2025-12-28 00:42:18,561 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:42:18] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 00:42:18,874 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:42:18] "GET /api/market/types?_t=1766853738547 HTTP/1.1" 200 - +2025-12-28 00:42:18,883 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:42:18] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 00:42:18,890 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:42:18] "GET /api/credentials/list?user_id=1&_t=1766853738547 HTTP/1.1" 200 - +2025-12-28 00:42:18,916 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:42:18] "GET /api/strategies/equityCurve?id=2&_t=1766853738585 HTTP/1.1" 200 - +2025-12-28 00:42:18,922 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:42:18] "GET /api/strategies/equityCurve?id=2&_t=1766853738585 HTTP/1.1" 200 - +2025-12-28 00:42:23,101 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:42:23] "GET /api/strategies/positions?id=2&_t=1766853742782 HTTP/1.1" 200 - +2025-12-28 00:42:27,795 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:42:27] "GET /api/strategies/positions?id=2&_t=1766853747788 HTTP/1.1" 200 - +2025-12-28 00:42:33,098 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:42:33] "GET /api/strategies/positions?id=2&_t=1766853752777 HTTP/1.1" 200 - +2025-12-28 00:42:37,785 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:42:37] "GET /api/strategies/positions?id=2&_t=1766853757778 HTTP/1.1" 200 - +2025-12-28 00:42:43,096 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:42:43] "GET /api/strategies/positions?id=2&_t=1766853762777 HTTP/1.1" 200 - +2025-12-28 00:42:47,786 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:42:47] "GET /api/strategies/positions?id=2&_t=1766853767778 HTTP/1.1" 200 - +2025-12-28 00:42:48,886 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:42:48] "GET /api/strategies/equityCurve?id=2&_t=1766853768567 HTTP/1.1" 200 - +2025-12-28 00:42:52,789 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:42:52] "GET /api/strategies/positions?id=2&_t=1766853772782 HTTP/1.1" 200 - +2025-12-28 00:42:58,113 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:42:58] "GET /api/strategies/positions?id=2&_t=1766853777793 HTTP/1.1" 200 - +2025-12-28 00:43:02,786 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:43:02] "GET /api/strategies/positions?id=2&_t=1766853782777 HTTP/1.1" 200 - +2025-12-28 00:43:08,098 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:43:08] "GET /api/strategies/positions?id=2&_t=1766853787777 HTTP/1.1" 200 - +2025-12-28 00:43:12,550 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:43:12] "GET /api/strategies/equityCurve?id=2&_t=1766853792535 HTTP/1.1" 200 - +2025-12-28 00:43:12,868 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:43:12] "GET /api/strategies/equityCurve?id=2&_t=1766853792535 HTTP/1.1" 200 - +2025-12-28 00:43:13,101 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:43:13] "GET /api/strategies/positions?id=2&_t=1766853792779 HTTP/1.1" 200 - +2025-12-28 00:43:13,924 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:43:13] "GET /api/market/types?_t=1766853793593 HTTP/1.1" 200 - +2025-12-28 00:43:13,928 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:43:13] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 00:43:13,938 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:43:13] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 00:43:13,943 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:43:13] "GET /api/credentials/list?user_id=1&_t=1766853793593 HTTP/1.1" 200 - +2025-12-28 00:43:13,951 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:43:13] "GET /api/strategies/equityCurve?id=2&_t=1766853793632 HTTP/1.1" 200 - +2025-12-28 00:43:13,963 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:43:13] "GET /api/strategies/equityCurve?id=2&_t=1766853793632 HTTP/1.1" 200 - +2025-12-28 00:43:18,099 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:43:18] "GET /api/strategies/positions?id=2&_t=1766853797781 HTTP/1.1" 200 - +2025-12-28 00:43:22,785 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:43:22] "GET /api/strategies/positions?id=2&_t=1766853802778 HTTP/1.1" 200 - +2025-12-28 00:43:26,090 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:43:26,090 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:43:26,090 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:43:26,091 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:43:26] "GET /api/strategies?_t=1766853805779 HTTP/1.1" 200 - +2025-12-28 00:43:29,876 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:43:29,876 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:43:29,876 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:43:29,877 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:43:29] "GET /api/strategies?_t=1766853809867 HTTP/1.1" 200 - +2025-12-28 00:43:30,187 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:43:30,187 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:43:30,188 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:43:30,188 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:43:30] "GET /api/strategies?_t=1766853810180 HTTP/1.1" 200 - +2025-12-28 00:43:42,501 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:43:42,502 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:43:42,502 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:43:42,502 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:43:42] "GET /api/strategies?_t=1766853822494 HTTP/1.1" 200 - +2025-12-28 00:43:42,770 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:43:42,770 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:43:42,770 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:43:42,771 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:43:42] "GET /api/strategies?_t=1766853822759 HTTP/1.1" 200 - +2025-12-28 00:43:49,096 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:43:49] "GET /api/market/types?_t=1766853829087 HTTP/1.1" 200 - +2025-12-28 00:43:49,100 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:43:49] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 00:43:49,105 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:43:49] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 00:43:49,416 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:43:49] "GET /api/credentials/list?user_id=1&_t=1766853829087 HTTP/1.1" 200 - +2025-12-28 00:44:03,820 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:44:03,821 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:44:03,821 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:44:03,821 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:44:03] "GET /api/strategies?_t=1766853843813 HTTP/1.1" 200 - +2025-12-28 00:44:04,116 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:44:04,116 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:44:04,117 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:44:04,117 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:44:04] "GET /api/strategies?_t=1766853844106 HTTP/1.1" 200 - +2025-12-28 00:44:05,405 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:44:05] "GET /api/market/types?_t=1766853845396 HTTP/1.1" 200 - +2025-12-28 00:44:05,412 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:44:05] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 00:44:05,419 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:44:05] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 00:44:05,744 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:44:05] "GET /api/credentials/list?user_id=1&_t=1766853845396 HTTP/1.1" 200 - +2025-12-28 00:44:18,194 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:44:18] "GET /api/strategies/equityCurve?id=2&_t=1766853857869 HTTP/1.1" 200 - +2025-12-28 00:44:18,200 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:44:18] "GET /api/strategies/equityCurve?id=2&_t=1766853857869 HTTP/1.1" 200 - +2025-12-28 00:44:18,204 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:44:18] "GET /api/strategies/positions?id=2&_t=1766853857874 HTTP/1.1" 200 - +2025-12-28 00:44:18,526 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:44:18] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 00:44:18,843 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:44:18] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 00:44:18,845 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:44:18] "GET /api/market/types?_t=1766853858519 HTTP/1.1" 200 - +2025-12-28 00:44:18,852 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:44:18] "GET /api/credentials/list?user_id=1&_t=1766853858519 HTTP/1.1" 200 - +2025-12-28 00:44:18,859 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:44:18] "GET /api/strategies/equityCurve?id=2&_t=1766853858538 HTTP/1.1" 200 - +2025-12-28 00:44:18,864 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:44:18] "GET /api/strategies/equityCurve?id=2&_t=1766853858538 HTTP/1.1" 200 - +2025-12-28 00:44:23,166 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:44:23] "GET /api/strategies/positions?id=2&_t=1766853862857 HTTP/1.1" 200 - +2025-12-28 00:44:27,869 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:44:27] "GET /api/strategies/positions?id=2&_t=1766853867862 HTTP/1.1" 200 - +2025-12-28 00:44:33,204 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:44:33] "GET /api/strategies/positions?id=2&_t=1766853872870 HTTP/1.1" 200 - +2025-12-28 00:44:37,871 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:44:37] "GET /api/strategies/positions?id=2&_t=1766853877865 HTTP/1.1" 200 - +2025-12-28 00:44:43,184 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:44:43] "GET /api/strategies/positions?id=2&_t=1766853882864 HTTP/1.1" 200 - +2025-12-28 00:44:47,880 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:44:47] "GET /api/strategies/positions?id=2&_t=1766853887864 HTTP/1.1" 200 - +2025-12-28 00:44:48,846 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:44:48] "GET /api/strategies/equityCurve?id=2&_t=1766853888524 HTTP/1.1" 200 - +2025-12-28 00:44:52,876 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:44:52] "GET /api/strategies/positions?id=2&_t=1766853892869 HTTP/1.1" 200 - +2025-12-28 00:44:58,182 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:44:58] "GET /api/strategies/positions?id=2&_t=1766853897869 HTTP/1.1" 200 - +2025-12-28 00:45:02,876 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:45:02] "GET /api/strategies/positions?id=2&_t=1766853902870 HTTP/1.1" 200 - +2025-12-28 00:45:08,183 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:45:08] "GET /api/strategies/positions?id=2&_t=1766853907865 HTTP/1.1" 200 - +2025-12-28 00:45:12,863 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:45:12] "GET /api/strategies/positions?id=2&_t=1766853912856 HTTP/1.1" 200 - +2025-12-28 00:45:15,620 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:45:15,621 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:45:15,621 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:45:15,622 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:45:15] "GET /api/strategies?_t=1766853915605 HTTP/1.1" 200 - +2025-12-28 00:45:15,643 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:45:15,643 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:45:15,643 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:45:15,644 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:45:15] "GET /api/strategies?_t=1766853915630 HTTP/1.1" 200 - +2025-12-28 00:45:17,522 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:45:17] "GET /api/strategies/equityCurve?id=2&_t=1766853917506 HTTP/1.1" 200 - +2025-12-28 00:45:17,531 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:45:17] "GET /api/strategies/equityCurve?id=2&_t=1766853917506 HTTP/1.1" 200 - +2025-12-28 00:45:17,537 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:45:17] "GET /api/strategies/positions?id=2&_t=1766853917511 HTTP/1.1" 200 - +2025-12-28 00:45:18,605 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:45:18] "GET /api/market/types?_t=1766853918273 HTTP/1.1" 200 - +2025-12-28 00:45:18,610 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:45:18] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 00:45:18,623 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:45:18] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 00:45:18,628 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:45:18] "GET /api/credentials/list?user_id=1&_t=1766853918274 HTTP/1.1" 200 - +2025-12-28 00:45:18,639 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:45:18] "GET /api/strategies/equityCurve?id=2&_t=1766853918300 HTTP/1.1" 200 - +2025-12-28 00:45:18,645 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:45:18] "GET /api/strategies/equityCurve?id=2&_t=1766853918300 HTTP/1.1" 200 - +2025-12-28 00:45:24,116 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:45:24] "GET /api/strategies/positions?id=2&_t=1766853922510 HTTP/1.1" 200 - +2025-12-28 00:45:24,175 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:45:24,175 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:45:24,175 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:45:24,176 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:45:24] "GET /api/strategies?_t=1766853924166 HTTP/1.1" 200 - +2025-12-28 00:45:24,188 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:45:24,188 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:45:24,188 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:45:24,188 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:45:24] "GET /api/strategies?_t=1766853924180 HTTP/1.1" 200 - +2025-12-28 00:45:25,807 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:45:25] "GET /api/market/types?_t=1766853925794 HTTP/1.1" 200 - +2025-12-28 00:45:25,815 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:45:25] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 00:45:26,129 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:45:26] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 00:45:26,139 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:45:26] "GET /api/credentials/list?user_id=1&_t=1766853925795 HTTP/1.1" 200 - +2025-12-28 00:45:31,312 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:45:31] "GET /api/strategies/equityCurve?id=2&_t=1766853930995 HTTP/1.1" 200 - +2025-12-28 00:45:31,317 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:45:31] "GET /api/strategies/equityCurve?id=2&_t=1766853930995 HTTP/1.1" 200 - +2025-12-28 00:45:31,322 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:45:31] "GET /api/strategies/positions?id=2&_t=1766853931001 HTTP/1.1" 200 - +2025-12-28 00:45:31,702 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:45:31] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 00:45:32,015 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:45:32] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 00:45:32,020 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:45:32] "GET /api/market/types?_t=1766853931695 HTTP/1.1" 200 - +2025-12-28 00:45:32,029 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:45:32] "GET /api/credentials/list?user_id=1&_t=1766853931695 HTTP/1.1" 200 - +2025-12-28 00:45:32,036 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:45:32] "GET /api/strategies/equityCurve?id=2&_t=1766853931713 HTTP/1.1" 200 - +2025-12-28 00:45:32,043 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:45:32] "GET /api/strategies/equityCurve?id=2&_t=1766853931713 HTTP/1.1" 200 - +2025-12-28 00:45:36,305 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:45:36] "GET /api/strategies/positions?id=2&_t=1766853935987 HTTP/1.1" 200 - +2025-12-28 00:45:40,989 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:45:40] "GET /api/strategies/positions?id=2&_t=1766853940982 HTTP/1.1" 200 - +2025-12-28 00:45:46,312 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:45:46] "GET /api/strategies/positions?id=2&_t=1766853945992 HTTP/1.1" 200 - +2025-12-28 00:45:51,000 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:45:51] "GET /api/strategies/positions?id=2&_t=1766853950993 HTTP/1.1" 200 - +2025-12-28 00:45:56,305 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:45:56] "GET /api/strategies/positions?id=2&_t=1766853955985 HTTP/1.1" 200 - +2025-12-28 00:46:00,998 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:46:00] "GET /api/strategies/positions?id=2&_t=1766853960990 HTTP/1.1" 200 - +2025-12-28 00:46:02,009 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:46:02] "GET /api/strategies/equityCurve?id=2&_t=1766853961699 HTTP/1.1" 200 - +2025-12-28 00:46:05,998 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:46:05] "GET /api/strategies/positions?id=2&_t=1766853965990 HTTP/1.1" 200 - +2025-12-28 00:46:11,306 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:46:11] "GET /api/strategies/positions?id=2&_t=1766853970985 HTTP/1.1" 200 - +2025-12-28 00:46:15,998 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:46:15] "GET /api/strategies/positions?id=2&_t=1766853975989 HTTP/1.1" 200 - +2025-12-28 00:46:21,309 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:46:21] "GET /api/strategies/positions?id=2&_t=1766853980991 HTTP/1.1" 200 - +2025-12-28 00:46:25,990 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:46:25] "GET /api/strategies/positions?id=2&_t=1766853985981 HTTP/1.1" 200 - +2025-12-28 00:46:31,301 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:46:31] "GET /api/strategies/positions?id=2&_t=1766853990984 HTTP/1.1" 200 - +2025-12-28 00:46:31,707 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:46:31] "GET /api/strategies/equityCurve?id=2&_t=1766853991698 HTTP/1.1" 200 - +2025-12-28 00:46:36,313 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:46:36] "GET /api/strategies/positions?id=2&_t=1766853995992 HTTP/1.1" 200 - +2025-12-28 00:46:41,000 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:46:41] "GET /api/strategies/positions?id=2&_t=1766854000992 HTTP/1.1" 200 - +2025-12-28 00:46:46,310 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:46:46] "GET /api/strategies/positions?id=2&_t=1766854005992 HTTP/1.1" 200 - +2025-12-28 00:46:50,998 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:46:50] "GET /api/strategies/positions?id=2&_t=1766854010991 HTTP/1.1" 200 - +2025-12-28 00:46:56,312 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:46:56] "GET /api/strategies/positions?id=2&_t=1766854015994 HTTP/1.1" 200 - +2025-12-28 00:47:01,004 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:47:01] "GET /api/strategies/positions?id=2&_t=1766854020995 HTTP/1.1" 200 - +2025-12-28 00:47:02,030 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:47:02] "GET /api/strategies/equityCurve?id=2&_t=1766854021713 HTTP/1.1" 200 - +2025-12-28 00:47:06,160 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:47:06] "GET /api/strategies/positions?id=2&_t=1766854025993 HTTP/1.1" 200 - +2025-12-28 00:47:06,470 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:47:06,470 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:47:06,470 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:47:06,471 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:47:06] "GET /api/strategies?_t=1766854026463 HTTP/1.1" 200 - +2025-12-28 00:47:06,477 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:47:06,477 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:47:06,477 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:47:06,478 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:47:06] "GET /api/strategies?_t=1766854026468 HTTP/1.1" 200 - +2025-12-28 00:47:20,125 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:47:20,126 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:47:20,126 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:47:20,127 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:47:20] "GET /api/strategies?_t=1766854040098 HTTP/1.1" 200 - +2025-12-28 00:47:20,131 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:47:20,132 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:47:20,132 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:47:20,132 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:47:20] "GET /api/strategies?_t=1766854040110 HTTP/1.1" 200 - +2025-12-28 00:49:05,907 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:49:05,907 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:49:05,908 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:49:05,908 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:49:05] "GET /api/strategies?_t=1766854145898 HTTP/1.1" 200 - +2025-12-28 00:49:05,912 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:49:05,912 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:49:05,912 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:49:05,912 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:49:05] "GET /api/strategies?_t=1766854145901 HTTP/1.1" 200 - +2025-12-28 00:49:23,364 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:49:23,364 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:49:23,364 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:49:23,365 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:49:23] "GET /api/strategies?_t=1766854163354 HTTP/1.1" 200 - +2025-12-28 00:49:23,375 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:49:23,375 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:49:23,375 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:49:23,376 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:49:23] "GET /api/strategies?_t=1766854163360 HTTP/1.1" 200 - +2025-12-28 00:49:23,497 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:49:23,497 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:49:23,498 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:49:23,498 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:49:23] "GET /api/strategies?_t=1766854163488 HTTP/1.1" 200 - +2025-12-28 00:49:23,514 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:49:23,514 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:49:23,514 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:49:23,515 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:49:23] "GET /api/strategies?_t=1766854163504 HTTP/1.1" 200 - +2025-12-28 00:49:23,725 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:49:23,725 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:49:23,725 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:49:23,726 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:49:23] "GET /api/strategies?_t=1766854163711 HTTP/1.1" 200 - +2025-12-28 00:49:23,778 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:49:23,779 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:49:23,779 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:49:23,780 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:49:23] "GET /api/strategies?_t=1766854163768 HTTP/1.1" 200 - +2025-12-28 00:50:52,337 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:50:52,338 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:50:52,338 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:50:52,340 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:50:52] "GET /api/strategies?_t=1766854252326 HTTP/1.1" 200 - +2025-12-28 00:50:52,362 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:50:52,362 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:50:52,362 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:50:52,363 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:50:52] "GET /api/strategies?_t=1766854252350 HTTP/1.1" 200 - +2025-12-28 00:50:52,627 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:50:52,628 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:50:52,628 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:50:52,628 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:50:52] "GET /api/strategies?_t=1766854252615 HTTP/1.1" 200 - +2025-12-28 00:50:52,633 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:50:52,634 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:50:52,634 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:50:52,635 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:50:52] "GET /api/strategies?_t=1766854252620 HTTP/1.1" 200 - +2025-12-28 00:50:52,703 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:50:52,703 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:50:52,703 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:50:52,704 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:50:52] "GET /api/strategies?_t=1766854252689 HTTP/1.1" 200 - +2025-12-28 00:50:52,728 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:50:52,732 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:50:52,734 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:50:52,739 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:50:52] "GET /api/strategies?_t=1766854252714 HTTP/1.1" 200 - +2025-12-28 00:50:55,818 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:50:55] "GET /api/strategies/equityCurve?id=2&_t=1766854255802 HTTP/1.1" 200 - +2025-12-28 00:50:55,824 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:50:55] "GET /api/strategies/equityCurve?id=2&_t=1766854255802 HTTP/1.1" 200 - +2025-12-28 00:50:56,120 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:50:56] "GET /api/strategies/positions?id=2&_t=1766854255807 HTTP/1.1" 200 - +2025-12-28 00:51:00,226 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:51:00,226 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:51:00,227 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:51:00,227 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:51:00] "GET /api/strategies?_t=1766854259918 HTTP/1.1" 200 - +2025-12-28 00:51:05,893 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:51:05,895 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:51:05,895 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:51:05,897 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:51:05] "GET /api/strategies?_t=1766854265884 HTTP/1.1" 200 - +2025-12-28 00:51:08,513 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:51:08] "GET /api/strategies/equityCurve?id=2&_t=1766854268197 HTTP/1.1" 200 - +2025-12-28 00:51:08,517 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:51:08] "GET /api/strategies/equityCurve?id=2&_t=1766854268197 HTTP/1.1" 200 - +2025-12-28 00:51:08,520 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:51:08] "GET /api/strategies/positions?id=2&_t=1766854268199 HTTP/1.1" 200 - +2025-12-28 00:51:09,474 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:51:09] "GET /api/strategies/equityCurve?id=2&_t=1766854269466 HTTP/1.1" 200 - +2025-12-28 00:51:09,787 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:51:09] "GET /api/strategies/equityCurve?id=2&_t=1766854269466 HTTP/1.1" 200 - +2025-12-28 00:51:10,707 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:51:10] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 00:51:10,712 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:51:10] "GET /api/market/types?_t=1766854270395 HTTP/1.1" 200 - +2025-12-28 00:51:10,721 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:51:10] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 00:51:10,727 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:51:10] "GET /api/credentials/list?user_id=1&_t=1766854270395 HTTP/1.1" 200 - +2025-12-28 00:51:10,734 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:51:10] "GET /api/strategies/equityCurve?id=2&_t=1766854270412 HTTP/1.1" 200 - +2025-12-28 00:51:10,745 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:51:10] "GET /api/strategies/equityCurve?id=2&_t=1766854270412 HTTP/1.1" 200 - +2025-12-28 00:51:13,513 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:51:13] "GET /api/strategies/positions?id=2&_t=1766854273197 HTTP/1.1" 200 - +2025-12-28 00:51:18,209 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:51:18] "GET /api/strategies/positions?id=2&_t=1766854278201 HTTP/1.1" 200 - +2025-12-28 00:51:23,511 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:51:23] "GET /api/strategies/positions?id=2&_t=1766854283194 HTTP/1.1" 200 - +2025-12-28 00:51:28,204 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:51:28] "GET /api/strategies/positions?id=2&_t=1766854288197 HTTP/1.1" 200 - +2025-12-28 00:51:33,515 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:51:33] "GET /api/strategies/positions?id=2&_t=1766854293195 HTTP/1.1" 200 - +2025-12-28 00:51:38,205 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:51:38] "GET /api/strategies/positions?id=2&_t=1766854298197 HTTP/1.1" 200 - +2025-12-28 00:51:40,714 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:51:40] "GET /api/strategies/equityCurve?id=2&_t=1766854300399 HTTP/1.1" 200 - +2025-12-28 00:51:43,213 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:51:43] "GET /api/strategies/positions?id=2&_t=1766854303206 HTTP/1.1" 200 - +2025-12-28 00:51:48,516 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:51:48] "GET /api/strategies/positions?id=2&_t=1766854308195 HTTP/1.1" 200 - +2025-12-28 00:51:53,202 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:51:53] "GET /api/strategies/positions?id=2&_t=1766854313195 HTTP/1.1" 200 - +2025-12-28 00:51:58,531 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:51:58] "GET /api/strategies/positions?id=2&_t=1766854318210 HTTP/1.1" 200 - +2025-12-28 00:52:03,211 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:52:03] "GET /api/strategies/positions?id=2&_t=1766854323204 HTTP/1.1" 200 - +2025-12-28 00:52:08,509 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:52:08] "GET /api/strategies/positions?id=2&_t=1766854328194 HTTP/1.1" 200 - +2025-12-28 00:52:10,412 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:52:10] "GET /api/strategies/equityCurve?id=2&_t=1766854330404 HTTP/1.1" 200 - +2025-12-28 00:52:13,525 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:52:13] "GET /api/strategies/positions?id=2&_t=1766854333208 HTTP/1.1" 200 - +2025-12-28 00:52:18,213 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:52:18] "GET /api/strategies/positions?id=2&_t=1766854338207 HTTP/1.1" 200 - +2025-12-28 00:52:23,523 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:52:23] "GET /api/strategies/positions?id=2&_t=1766854343201 HTTP/1.1" 200 - +2025-12-28 00:52:28,216 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:52:28] "GET /api/strategies/positions?id=2&_t=1766854348210 HTTP/1.1" 200 - +2025-12-28 00:52:33,520 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:52:33] "GET /api/strategies/positions?id=2&_t=1766854353199 HTTP/1.1" 200 - +2025-12-28 00:52:38,213 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:52:38] "GET /api/strategies/positions?id=2&_t=1766854358206 HTTP/1.1" 200 - +2025-12-28 00:52:40,720 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:52:40] "GET /api/strategies/equityCurve?id=2&_t=1766854360407 HTTP/1.1" 200 - +2025-12-28 00:52:43,208 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:52:43] "GET /api/strategies/positions?id=2&_t=1766854363196 HTTP/1.1" 200 - +2025-12-28 00:52:48,524 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:52:48] "GET /api/strategies/positions?id=2&_t=1766854368206 HTTP/1.1" 200 - +2025-12-28 00:52:53,204 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:52:53] "GET /api/strategies/positions?id=2&_t=1766854373197 HTTP/1.1" 200 - +2025-12-28 00:52:58,523 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:52:58] "GET /api/strategies/positions?id=2&_t=1766854378204 HTTP/1.1" 200 - +2025-12-28 00:53:03,202 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:53:03] "GET /api/strategies/positions?id=2&_t=1766854383194 HTTP/1.1" 200 - +2025-12-28 00:53:08,516 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:53:08] "GET /api/strategies/positions?id=2&_t=1766854388200 HTTP/1.1" 200 - +2025-12-28 00:53:10,407 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:53:10] "GET /api/strategies/equityCurve?id=2&_t=1766854390398 HTTP/1.1" 200 - +2025-12-28 00:53:13,521 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:53:13] "GET /api/strategies/positions?id=2&_t=1766854393206 HTTP/1.1" 200 - +2025-12-28 00:53:18,204 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:53:18] "GET /api/strategies/positions?id=2&_t=1766854398197 HTTP/1.1" 200 - +2025-12-28 00:53:23,516 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:53:23] "GET /api/strategies/positions?id=2&_t=1766854403200 HTTP/1.1" 200 - +2025-12-28 00:53:26,014 - app.routes.strategy - INFO - ๆญฃๅœจๆต‹่ฏ•่ฟžๆŽฅ: exchange_id=okx +2025-12-28 00:53:26,014 - app.routes.strategy - INFO - API Key: 4cd9c... (len=36) +2025-12-28 00:53:26,014 - app.routes.strategy - INFO - Secret Key: 2B295... (len=32) +2025-12-28 00:53:28,563 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:53:28] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-28 00:53:28,568 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:53:28] "GET /api/strategies/positions?id=2&_t=1766854408199 HTTP/1.1" 200 - +2025-12-28 00:53:30,055 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:53:30] "PUT /api/strategies/update?id=2 HTTP/1.1" 200 - +2025-12-28 00:53:30,313 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:53:30,313 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:53:30,314 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:53:30,314 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:53:30] "GET /api/strategies?_t=1766854410098 HTTP/1.1" 200 - +2025-12-28 00:53:31,773 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:53:31] "GET /api/strategies/equityCurve?id=2&_t=1766854411763 HTTP/1.1" 200 - +2025-12-28 00:53:32,091 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:53:32] "GET /api/strategies/equityCurve?id=2&_t=1766854411763 HTTP/1.1" 200 - +2025-12-28 00:53:32,639 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:53:32] "GET /api/strategies/equityCurve?id=2&_t=1766854412321 HTTP/1.1" 200 - +2025-12-28 00:53:32,642 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:53:32] "GET /api/strategies/equityCurve?id=2&_t=1766854412321 HTTP/1.1" 200 - +2025-12-28 00:53:32,957 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:53:32] "GET /api/strategies/equityCurve?id=2&_t=1766854412943 HTTP/1.1" 200 - +2025-12-28 00:53:33,260 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:53:33] "GET /api/strategies/equityCurve?id=2&_t=1766854412943 HTTP/1.1" 200 - +2025-12-28 00:53:33,521 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:53:33] "GET /api/strategies/positions?id=2&_t=1766854413195 HTTP/1.1" 200 - +2025-12-28 00:53:33,962 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:53:33] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 00:53:33,968 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:53:33] "GET /api/market/types?_t=1766854413623 HTTP/1.1" 200 - +2025-12-28 00:53:33,979 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:53:33] "GET /api/credentials/list?user_id=1&_t=1766854413623 HTTP/1.1" 200 - +2025-12-28 00:53:34,100 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:53:34] "GET /api/strategies/equityCurve?id=2&_t=1766854413776 HTTP/1.1" 200 - +2025-12-28 00:53:34,113 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:53:34] "GET /api/strategies/equityCurve?id=2&_t=1766854413776 HTTP/1.1" 200 - +2025-12-28 00:53:40,391 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:53:40] "GET /api/strategies/positions?id=2&_t=1766854418196 HTTP/1.1" 200 - +2025-12-28 00:53:40,719 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:53:40,720 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:53:40,720 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:53:40,721 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:53:40] "GET /api/strategies?_t=1766854420711 HTTP/1.1" 200 - +2025-12-28 00:53:40,726 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:53:40,727 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:53:40,727 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:53:40,728 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:53:40] "GET /api/strategies?_t=1766854420711 HTTP/1.1" 200 - +2025-12-28 00:53:43,105 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:53:43] "GET /api/strategies/equityCurve?id=2&_t=1766854423093 HTTP/1.1" 200 - +2025-12-28 00:53:43,408 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:53:43] "GET /api/strategies/equityCurve?id=2&_t=1766854423093 HTTP/1.1" 200 - +2025-12-28 00:53:43,410 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:53:43] "GET /api/strategies/positions?id=2&_t=1766854423097 HTTP/1.1" 200 - +2025-12-28 00:53:44,327 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:53:44] "GET /api/market/types?_t=1766854423984 HTTP/1.1" 200 - +2025-12-28 00:53:44,338 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:53:44] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 00:53:44,346 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:53:44] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 00:53:44,352 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:53:44] "GET /api/credentials/list?user_id=1&_t=1766854423984 HTTP/1.1" 200 - +2025-12-28 00:53:44,362 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:53:44] "GET /api/strategies/equityCurve?id=2&_t=1766854424000 HTTP/1.1" 200 - +2025-12-28 00:53:44,372 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:53:44] "GET /api/strategies/equityCurve?id=2&_t=1766854424000 HTTP/1.1" 200 - +2025-12-28 00:53:48,411 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:53:48] "GET /api/strategies/positions?id=2&_t=1766854428095 HTTP/1.1" 200 - +2025-12-28 00:53:53,103 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:53:53] "GET /api/strategies/positions?id=2&_t=1766854433096 HTTP/1.1" 200 - +2025-12-28 00:53:55,495 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:53:55,496 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:53:55,496 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:53:55,496 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:53:55] "GET /api/strategies?_t=1766854435489 HTTP/1.1" 200 - +2025-12-28 00:53:55,784 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:53:55,784 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:53:55,785 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:53:55,785 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:53:55] "GET /api/strategies?_t=1766854435773 HTTP/1.1" 200 - +2025-12-28 00:54:08,064 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:54:08] "GET /api/strategies/equityCurve?id=2&_t=1766854448047 HTTP/1.1" 200 - +2025-12-28 00:54:08,072 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:54:08] "GET /api/strategies/equityCurve?id=2&_t=1766854448047 HTTP/1.1" 200 - +2025-12-28 00:54:08,371 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:54:08] "GET /api/strategies/positions?id=2&_t=1766854448053 HTTP/1.1" 200 - +2025-12-28 00:54:09,121 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:54:09] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 00:54:09,126 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:54:09] "GET /api/market/types?_t=1766854448799 HTTP/1.1" 200 - +2025-12-28 00:54:09,131 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:54:09] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 00:54:09,141 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:54:09] "GET /api/credentials/list?user_id=1&_t=1766854448799 HTTP/1.1" 200 - +2025-12-28 00:54:09,150 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:54:09] "GET /api/strategies/equityCurve?id=2&_t=1766854448829 HTTP/1.1" 200 - +2025-12-28 00:54:09,159 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:54:09] "GET /api/strategies/equityCurve?id=2&_t=1766854448829 HTTP/1.1" 200 - +2025-12-28 00:54:13,365 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:54:13] "GET /api/strategies/positions?id=2&_t=1766854453050 HTTP/1.1" 200 - +2025-12-28 00:54:18,055 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:54:18] "GET /api/strategies/positions?id=2&_t=1766854458047 HTTP/1.1" 200 - +2025-12-28 00:54:20,194 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:54:20] "GET /api/strategies/equityCurve?id=2&_t=1766854459870 HTTP/1.1" 200 - +2025-12-28 00:54:20,199 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:54:20] "GET /api/strategies/equityCurve?id=2&_t=1766854459870 HTTP/1.1" 200 - +2025-12-28 00:54:20,752 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:54:20] "GET /api/strategies/equityCurve?id=2&_t=1766854460744 HTTP/1.1" 200 - +2025-12-28 00:54:21,058 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:54:21] "GET /api/strategies/equityCurve?id=2&_t=1766854460744 HTTP/1.1" 200 - +2025-12-28 00:54:21,769 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:54:21] "GET /api/market/types?_t=1766854461446 HTTP/1.1" 200 - +2025-12-28 00:54:21,776 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:54:21] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 00:54:21,782 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:54:21] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 00:54:21,788 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:54:21] "GET /api/credentials/list?user_id=1&_t=1766854461446 HTTP/1.1" 200 - +2025-12-28 00:54:21,800 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:54:21] "GET /api/strategies/equityCurve?id=2&_t=1766854461470 HTTP/1.1" 200 - +2025-12-28 00:54:21,805 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:54:21] "GET /api/strategies/equityCurve?id=2&_t=1766854461470 HTTP/1.1" 200 - +2025-12-28 00:54:23,370 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:54:23] "GET /api/strategies/positions?id=2&_t=1766854463048 HTTP/1.1" 200 - +2025-12-28 00:54:28,083 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:54:28] "GET /api/strategies/positions?id=2&_t=1766854468059 HTTP/1.1" 200 - +2025-12-28 00:54:33,380 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:54:33] "GET /api/strategies/positions?id=2&_t=1766854473059 HTTP/1.1" 200 - +2025-12-28 00:54:38,054 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:54:38] "GET /api/strategies/positions?id=2&_t=1766854478048 HTTP/1.1" 200 - +2025-12-28 00:54:43,375 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:54:43] "GET /api/strategies/positions?id=2&_t=1766854483054 HTTP/1.1" 200 - +2025-12-28 00:54:48,054 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:54:48] "GET /api/strategies/positions?id=2&_t=1766854488048 HTTP/1.1" 200 - +2025-12-28 00:54:51,777 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:54:51] "GET /api/strategies/equityCurve?id=2&_t=1766854491458 HTTP/1.1" 200 - +2025-12-28 00:54:53,071 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:54:53] "GET /api/strategies/positions?id=2&_t=1766854493061 HTTP/1.1" 200 - +2025-12-28 00:54:58,365 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:54:58] "GET /api/strategies/positions?id=2&_t=1766854498049 HTTP/1.1" 200 - +2025-12-28 00:55:03,062 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:55:03] "GET /api/strategies/positions?id=2&_t=1766854503055 HTTP/1.1" 200 - +2025-12-28 00:55:08,368 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:55:08] "GET /api/strategies/positions?id=2&_t=1766854508050 HTTP/1.1" 200 - +2025-12-28 00:55:13,051 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:55:13] "GET /api/strategies/positions?id=2&_t=1766854513045 HTTP/1.1" 200 - +2025-12-28 00:55:17,932 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 00:55:17,933 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 00:55:17,933 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 00:55:17,933 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:55:17] "GET /api/strategies?_t=1766854517614 HTTP/1.1" 200 - +2025-12-28 00:55:19,389 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:55:19] "GET /api/strategies/equityCurve?id=2&_t=1766854519375 HTTP/1.1" 200 - +2025-12-28 00:55:19,697 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:55:19] "GET /api/strategies/equityCurve?id=2&_t=1766854519375 HTTP/1.1" 200 - +2025-12-28 00:55:19,700 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:55:19] "GET /api/strategies/positions?id=2&_t=1766854519379 HTTP/1.1" 200 - +2025-12-28 00:55:20,447 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:55:20] "GET /api/market/types?_t=1766854520113 HTTP/1.1" 200 - +2025-12-28 00:55:20,457 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:55:20] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 00:55:20,491 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:55:20] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 00:55:20,501 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:55:20] "GET /api/credentials/list?user_id=1&_t=1766854520113 HTTP/1.1" 200 - +2025-12-28 00:55:20,542 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:55:20] "GET /api/strategies/equityCurve?id=2&_t=1766854520130 HTTP/1.1" 200 - +2025-12-28 00:55:20,550 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:55:20] "GET /api/strategies/equityCurve?id=2&_t=1766854520130 HTTP/1.1" 200 - +2025-12-28 00:55:24,697 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:55:24] "GET /api/strategies/positions?id=2&_t=1766854524374 HTTP/1.1" 200 - +2025-12-28 00:55:29,385 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:55:29] "GET /api/strategies/positions?id=2&_t=1766854529378 HTTP/1.1" 200 - +2025-12-28 00:55:34,702 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:55:34] "GET /api/strategies/positions?id=2&_t=1766854534383 HTTP/1.1" 200 - +2025-12-28 00:55:39,391 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:55:39] "GET /api/strategies/positions?id=2&_t=1766854539384 HTTP/1.1" 200 - +2025-12-28 00:55:44,697 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:55:44] "GET /api/strategies/positions?id=2&_t=1766854544379 HTTP/1.1" 200 - +2025-12-28 00:55:49,395 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:55:49] "GET /api/strategies/positions?id=2&_t=1766854549388 HTTP/1.1" 200 - +2025-12-28 00:55:50,438 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:55:50] "GET /api/strategies/equityCurve?id=2&_t=1766854550117 HTTP/1.1" 200 - +2025-12-28 00:55:54,380 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:55:54] "GET /api/strategies/positions?id=2&_t=1766854554373 HTTP/1.1" 200 - +2025-12-28 00:55:59,698 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:55:59] "GET /api/strategies/positions?id=2&_t=1766854559375 HTTP/1.1" 200 - +2025-12-28 00:56:04,393 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:56:04] "GET /api/strategies/positions?id=2&_t=1766854564385 HTTP/1.1" 200 - +2025-12-28 00:56:09,689 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:56:09] "GET /api/strategies/positions?id=2&_t=1766854569381 HTTP/1.1" 200 - +2025-12-28 00:56:14,382 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:56:14] "GET /api/strategies/positions?id=2&_t=1766854574374 HTTP/1.1" 200 - +2025-12-28 00:56:19,694 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:56:19] "GET /api/strategies/positions?id=2&_t=1766854579374 HTTP/1.1" 200 - +2025-12-28 00:56:20,139 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:56:20] "GET /api/strategies/equityCurve?id=2&_t=1766854580132 HTTP/1.1" 200 - +2025-12-28 00:56:24,699 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:56:24] "GET /api/strategies/positions?id=2&_t=1766854584380 HTTP/1.1" 200 - +2025-12-28 00:56:29,381 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:56:29] "GET /api/strategies/positions?id=2&_t=1766854589374 HTTP/1.1" 200 - +2025-12-28 00:56:34,702 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:56:34] "GET /api/strategies/positions?id=2&_t=1766854594387 HTTP/1.1" 200 - +2025-12-28 00:56:39,322 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:56:39] "GET /api/credentials/get?id=2&user_id=1&_t=1766854599312 HTTP/1.1" 200 - +2025-12-28 00:56:39,696 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:56:39] "GET /api/strategies/positions?id=2&_t=1766854599372 HTTP/1.1" 200 - +2025-12-28 00:56:44,388 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:56:44] "GET /api/strategies/positions?id=2&_t=1766854604381 HTTP/1.1" 200 - +2025-12-28 00:56:49,698 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:56:49] "GET /api/strategies/positions?id=2&_t=1766854609386 HTTP/1.1" 200 - +2025-12-28 00:56:50,136 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:56:50] "GET /api/strategies/equityCurve?id=2&_t=1766854610129 HTTP/1.1" 200 - +2025-12-28 00:56:54,697 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:56:54] "GET /api/strategies/positions?id=2&_t=1766854614385 HTTP/1.1" 200 - +2025-12-28 00:56:59,389 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:56:59] "GET /api/strategies/positions?id=2&_t=1766854619382 HTTP/1.1" 200 - +2025-12-28 00:57:04,695 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:57:04] "GET /api/strategies/positions?id=2&_t=1766854624375 HTTP/1.1" 200 - +2025-12-28 00:57:09,398 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:57:09] "GET /api/strategies/positions?id=2&_t=1766854629389 HTTP/1.1" 200 - +2025-12-28 00:57:14,703 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:57:14] "GET /api/strategies/positions?id=2&_t=1766854634383 HTTP/1.1" 200 - +2025-12-28 00:57:19,387 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:57:19] "GET /api/strategies/positions?id=2&_t=1766854639381 HTTP/1.1" 200 - +2025-12-28 00:57:20,448 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:57:20] "GET /api/strategies/equityCurve?id=2&_t=1766854640131 HTTP/1.1" 200 - +2025-12-28 00:57:24,393 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:57:24] "GET /api/strategies/positions?id=2&_t=1766854644386 HTTP/1.1" 200 - +2025-12-28 00:57:29,691 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:57:29] "GET /api/strategies/positions?id=2&_t=1766854649374 HTTP/1.1" 200 - +2025-12-28 00:57:34,393 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:57:34] "GET /api/strategies/positions?id=2&_t=1766854654386 HTTP/1.1" 200 - +2025-12-28 00:57:39,699 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:57:39] "GET /api/strategies/positions?id=2&_t=1766854659378 HTTP/1.1" 200 - +2025-12-28 00:57:44,391 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:57:44] "GET /api/strategies/positions?id=2&_t=1766854664385 HTTP/1.1" 200 - +2025-12-28 00:57:49,698 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:57:49] "GET /api/strategies/positions?id=2&_t=1766854669383 HTTP/1.1" 200 - +2025-12-28 00:57:50,125 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:57:50] "GET /api/strategies/equityCurve?id=2&_t=1766854670117 HTTP/1.1" 200 - +2025-12-28 00:57:54,695 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:57:54] "GET /api/strategies/positions?id=2&_t=1766854674374 HTTP/1.1" 200 - +2025-12-28 00:57:59,389 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:57:59] "GET /api/strategies/positions?id=2&_t=1766854679383 HTTP/1.1" 200 - +2025-12-28 00:58:04,697 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:58:04] "GET /api/strategies/positions?id=2&_t=1766854684381 HTTP/1.1" 200 - +2025-12-28 00:58:09,401 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:58:09] "GET /api/strategies/positions?id=2&_t=1766854689383 HTTP/1.1" 200 - +2025-12-28 00:58:14,706 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:58:14] "GET /api/strategies/positions?id=2&_t=1766854694387 HTTP/1.1" 200 - +2025-12-28 00:58:19,383 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:58:19] "GET /api/strategies/positions?id=2&_t=1766854699376 HTTP/1.1" 200 - +2025-12-28 00:58:20,452 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:58:20] "GET /api/strategies/equityCurve?id=2&_t=1766854700129 HTTP/1.1" 200 - +2025-12-28 00:58:24,390 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:58:24] "GET /api/strategies/positions?id=2&_t=1766854704383 HTTP/1.1" 200 - +2025-12-28 00:58:29,705 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:58:29] "GET /api/strategies/positions?id=2&_t=1766854709386 HTTP/1.1" 200 - +2025-12-28 00:58:34,390 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:58:34] "GET /api/strategies/positions?id=2&_t=1766854714384 HTTP/1.1" 200 - +2025-12-28 00:58:39,696 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:58:39] "GET /api/strategies/positions?id=2&_t=1766854719378 HTTP/1.1" 200 - +2025-12-28 00:58:44,385 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:58:44] "GET /api/strategies/positions?id=2&_t=1766854724379 HTTP/1.1" 200 - +2025-12-28 00:58:49,700 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:58:49] "GET /api/strategies/positions?id=2&_t=1766854729383 HTTP/1.1" 200 - +2025-12-28 00:58:50,128 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:58:50] "GET /api/strategies/equityCurve?id=2&_t=1766854730120 HTTP/1.1" 200 - +2025-12-28 00:58:54,693 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:58:54] "GET /api/strategies/positions?id=2&_t=1766854734374 HTTP/1.1" 200 - +2025-12-28 00:58:59,392 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:58:59] "GET /api/strategies/positions?id=2&_t=1766854739386 HTTP/1.1" 200 - +2025-12-28 00:59:04,691 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:59:04] "GET /api/strategies/positions?id=2&_t=1766854744374 HTTP/1.1" 200 - +2025-12-28 00:59:09,396 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:59:09] "GET /api/strategies/positions?id=2&_t=1766854749388 HTTP/1.1" 200 - +2025-12-28 00:59:14,692 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:59:14] "GET /api/strategies/positions?id=2&_t=1766854754374 HTTP/1.1" 200 - +2025-12-28 00:59:19,381 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:59:19] "GET /api/strategies/positions?id=2&_t=1766854759374 HTTP/1.1" 200 - +2025-12-28 00:59:20,445 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:59:20] "GET /api/strategies/equityCurve?id=2&_t=1766854760130 HTTP/1.1" 200 - +2025-12-28 00:59:24,391 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:59:24] "GET /api/strategies/positions?id=2&_t=1766854764385 HTTP/1.1" 200 - +2025-12-28 00:59:29,695 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:59:29] "GET /api/strategies/positions?id=2&_t=1766854769377 HTTP/1.1" 200 - +2025-12-28 00:59:34,395 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:59:34] "GET /api/strategies/positions?id=2&_t=1766854774387 HTTP/1.1" 200 - +2025-12-28 00:59:39,697 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:59:39] "GET /api/strategies/positions?id=2&_t=1766854779381 HTTP/1.1" 200 - +2025-12-28 00:59:44,390 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:59:44] "GET /api/strategies/positions?id=2&_t=1766854784383 HTTP/1.1" 200 - +2025-12-28 00:59:49,702 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:59:49] "GET /api/strategies/positions?id=2&_t=1766854789384 HTTP/1.1" 200 - +2025-12-28 00:59:50,128 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:59:50] "GET /api/strategies/equityCurve?id=2&_t=1766854790121 HTTP/1.1" 200 - +2025-12-28 00:59:54,691 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:59:54] "GET /api/strategies/positions?id=2&_t=1766854794380 HTTP/1.1" 200 - +2025-12-28 00:59:59,395 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 00:59:59] "GET /api/strategies/positions?id=2&_t=1766854799388 HTTP/1.1" 200 - +2025-12-28 01:00:04,707 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:00:04] "GET /api/strategies/positions?id=2&_t=1766854804386 HTTP/1.1" 200 - +2025-12-28 01:00:09,380 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:00:09] "GET /api/strategies/positions?id=2&_t=1766854809374 HTTP/1.1" 200 - +2025-12-28 01:00:14,701 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:00:14] "GET /api/strategies/positions?id=2&_t=1766854814385 HTTP/1.1" 200 - +2025-12-28 01:00:19,389 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:00:19] "GET /api/strategies/positions?id=2&_t=1766854819380 HTTP/1.1" 200 - +2025-12-28 01:00:20,443 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:00:20] "GET /api/strategies/equityCurve?id=2&_t=1766854820126 HTTP/1.1" 200 - +2025-12-28 01:00:24,383 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:00:24] "GET /api/strategies/positions?id=2&_t=1766854824377 HTTP/1.1" 200 - +2025-12-28 01:00:29,697 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:00:29] "GET /api/strategies/positions?id=2&_t=1766854829382 HTTP/1.1" 200 - +2025-12-28 01:00:34,388 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:00:34] "GET /api/strategies/positions?id=2&_t=1766854834382 HTTP/1.1" 200 - +2025-12-28 01:00:39,697 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:00:39] "GET /api/strategies/positions?id=2&_t=1766854839379 HTTP/1.1" 200 - +2025-12-28 01:00:44,382 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:00:44] "GET /api/strategies/positions?id=2&_t=1766854844375 HTTP/1.1" 200 - +2025-12-28 01:00:49,692 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:00:49] "GET /api/strategies/positions?id=2&_t=1766854849377 HTTP/1.1" 200 - +2025-12-28 01:00:50,134 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:00:50] "GET /api/strategies/equityCurve?id=2&_t=1766854850126 HTTP/1.1" 200 - +2025-12-28 01:00:54,693 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:00:54] "GET /api/strategies/positions?id=2&_t=1766854854381 HTTP/1.1" 200 - +2025-12-28 01:00:59,386 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:00:59] "GET /api/strategies/positions?id=2&_t=1766854859379 HTTP/1.1" 200 - +2025-12-28 01:01:04,693 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:01:04] "GET /api/strategies/positions?id=2&_t=1766854864378 HTTP/1.1" 200 - +2025-12-28 01:01:09,384 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:01:09] "GET /api/strategies/positions?id=2&_t=1766854869376 HTTP/1.1" 200 - +2025-12-28 01:01:14,701 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:01:14] "GET /api/strategies/positions?id=2&_t=1766854874381 HTTP/1.1" 200 - +2025-12-28 01:01:19,382 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:01:19] "GET /api/strategies/positions?id=2&_t=1766854879375 HTTP/1.1" 200 - +2025-12-28 01:01:20,440 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:01:20] "GET /api/strategies/equityCurve?id=2&_t=1766854880126 HTTP/1.1" 200 - +2025-12-28 01:01:24,393 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:01:24] "GET /api/strategies/positions?id=2&_t=1766854884386 HTTP/1.1" 200 - +2025-12-28 01:01:29,690 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:01:29] "GET /api/strategies/positions?id=2&_t=1766854889376 HTTP/1.1" 200 - +2025-12-28 01:01:34,382 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:01:34] "GET /api/strategies/positions?id=2&_t=1766854894375 HTTP/1.1" 200 - +2025-12-28 01:01:39,696 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:01:39] "GET /api/strategies/positions?id=2&_t=1766854899375 HTTP/1.1" 200 - +2025-12-28 01:01:44,382 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:01:44] "GET /api/strategies/positions?id=2&_t=1766854904373 HTTP/1.1" 200 - +2025-12-28 01:01:49,703 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:01:49] "GET /api/strategies/positions?id=2&_t=1766854909387 HTTP/1.1" 200 - +2025-12-28 01:01:50,129 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:01:50] "GET /api/strategies/equityCurve?id=2&_t=1766854910122 HTTP/1.1" 200 - +2025-12-28 01:01:52,310 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:01:52,310 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:01:52,310 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:01:52,311 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:01:52] "GET /api/strategies?_t=1766854912303 HTTP/1.1" 200 - +2025-12-28 01:01:52,332 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:01:52,332 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:01:52,332 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:01:52,333 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:01:52] "GET /api/strategies?_t=1766854912323 HTTP/1.1" 200 - +2025-12-28 01:01:52,570 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:01:52,570 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:01:52,571 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:01:52,571 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:01:52] "GET /api/strategies?_t=1766854912560 HTTP/1.1" 200 - +2025-12-28 01:01:52,599 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:01:52,599 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:01:52,599 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:01:52,600 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:01:52] "GET /api/strategies?_t=1766854912589 HTTP/1.1" 200 - +2025-12-28 01:01:52,668 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:01:52,668 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:01:52,668 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:01:52,669 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:01:52] "GET /api/strategies?_t=1766854912659 HTTP/1.1" 200 - +2025-12-28 01:01:52,684 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:01:52,684 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:01:52,684 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:01:52,685 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:01:52] "GET /api/strategies?_t=1766854912675 HTTP/1.1" 200 - +2025-12-28 01:01:52,735 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:01:52,735 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:01:52,735 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:01:52,736 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:01:52] "GET /api/strategies?_t=1766854912725 HTTP/1.1" 200 - +2025-12-28 01:01:52,823 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:01:52,824 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:01:52,824 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:01:52,824 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:01:52] "GET /api/strategies?_t=1766854912817 HTTP/1.1" 200 - +2025-12-28 01:02:06,392 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:02:06,392 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:02:06,392 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:02:06,392 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:02:06] "GET /api/strategies?_t=1766854926381 HTTP/1.1" 200 - +2025-12-28 01:02:08,240 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:02:08] "GET /api/strategies/equityCurve?id=2&_t=1766854928225 HTTP/1.1" 200 - +2025-12-28 01:02:08,243 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:02:08] "GET /api/strategies/equityCurve?id=2&_t=1766854928225 HTTP/1.1" 200 - +2025-12-28 01:02:08,246 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:02:08] "GET /api/strategies/positions?id=2&_t=1766854928230 HTTP/1.1" 200 - +2025-12-28 01:02:09,303 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:02:09] "GET /api/market/types?_t=1766854928977 HTTP/1.1" 200 - +2025-12-28 01:02:09,314 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:02:09] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 01:02:09,330 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:02:09] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 01:02:09,337 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:02:09] "GET /api/credentials/list?user_id=1&_t=1766854928977 HTTP/1.1" 200 - +2025-12-28 01:02:09,347 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:02:09] "GET /api/strategies/equityCurve?id=2&_t=1766854928998 HTTP/1.1" 200 - +2025-12-28 01:02:09,354 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:02:09] "GET /api/strategies/equityCurve?id=2&_t=1766854928998 HTTP/1.1" 200 - +2025-12-28 01:02:13,545 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:02:13] "GET /api/strategies/positions?id=2&_t=1766854933224 HTTP/1.1" 200 - +2025-12-28 01:02:18,233 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:02:18] "GET /api/strategies/positions?id=2&_t=1766854938224 HTTP/1.1" 200 - +2025-12-28 01:02:23,548 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:02:23] "GET /api/strategies/positions?id=2&_t=1766854943230 HTTP/1.1" 200 - +2025-12-28 01:02:28,234 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:02:28] "GET /api/strategies/positions?id=2&_t=1766854948228 HTTP/1.1" 200 - +2025-12-28 01:02:33,308 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:02:33] "GET /api/credentials/get?id=2&user_id=1&_t=1766854952982 HTTP/1.1" 200 - +2025-12-28 01:02:33,555 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:02:33] "GET /api/strategies/positions?id=2&_t=1766854953235 HTTP/1.1" 200 - +2025-12-28 01:02:34,813 - app.routes.strategy - INFO - ๆญฃๅœจๆต‹่ฏ•่ฟžๆŽฅ: exchange_id=okx +2025-12-28 01:02:34,814 - app.routes.strategy - INFO - API Key: 4cd9c... (len=36) +2025-12-28 01:02:34,814 - app.routes.strategy - INFO - Secret Key: 2B295... (len=32) +2025-12-28 01:02:36,900 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:02:36] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-28 01:02:38,572 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:02:38] "PUT /api/strategies/update?id=2 HTTP/1.1" 200 - +2025-12-28 01:02:38,576 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:02:38] "GET /api/strategies/positions?id=2&_t=1766854958255 HTTP/1.1" 200 - +2025-12-28 01:02:38,831 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:02:38,831 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:02:38,832 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:02:38,832 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:02:38] "GET /api/strategies?_t=1766854958612 HTTP/1.1" 200 - +2025-12-28 01:02:38,990 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:02:38] "GET /api/strategies/equityCurve?id=2&_t=1766854958981 HTTP/1.1" 200 - +2025-12-28 01:02:43,554 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:02:43] "GET /api/strategies/positions?id=2&_t=1766854963236 HTTP/1.1" 200 - +2025-12-28 01:02:45,245 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:02:45,246 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:02:45,246 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:02:45,247 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:02:45] "GET /api/strategies?_t=1766854965229 HTTP/1.1" 200 - +2025-12-28 01:02:46,757 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:02:46] "GET /api/strategies/equityCurve?id=2&_t=1766854966610 HTTP/1.1" 200 - +2025-12-28 01:02:46,765 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:02:46] "GET /api/strategies/equityCurve?id=2&_t=1766854966610 HTTP/1.1" 200 - +2025-12-28 01:02:47,068 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:02:47] "GET /api/strategies/positions?id=2&_t=1766854966615 HTTP/1.1" 200 - +2025-12-28 01:02:47,921 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:02:47] "GET /api/market/types?_t=1766854967599 HTTP/1.1" 200 - +2025-12-28 01:02:47,926 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:02:47] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 01:02:47,940 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:02:47] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 01:02:47,949 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:02:47] "GET /api/credentials/list?user_id=1&_t=1766854967599 HTTP/1.1" 200 - +2025-12-28 01:02:47,963 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:02:47] "GET /api/strategies/equityCurve?id=2&_t=1766854967619 HTTP/1.1" 200 - +2025-12-28 01:02:47,974 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:02:47] "GET /api/strategies/equityCurve?id=2&_t=1766854967619 HTTP/1.1" 200 - +2025-12-28 01:02:51,933 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:02:51] "GET /api/strategies/positions?id=2&_t=1766854971613 HTTP/1.1" 200 - +2025-12-28 01:02:56,614 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:02:56] "GET /api/strategies/positions?id=2&_t=1766854976607 HTTP/1.1" 200 - +2025-12-28 01:03:01,926 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:03:01] "GET /api/strategies/positions?id=2&_t=1766854981613 HTTP/1.1" 200 - +2025-12-28 01:03:06,629 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:03:06] "GET /api/strategies/positions?id=2&_t=1766854986623 HTTP/1.1" 200 - +2025-12-28 01:03:11,930 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:03:11] "GET /api/strategies/positions?id=2&_t=1766854991609 HTTP/1.1" 200 - +2025-12-28 01:03:16,619 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:03:16] "GET /api/strategies/positions?id=2&_t=1766854996608 HTTP/1.1" 200 - +2025-12-28 01:03:17,937 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:03:17] "GET /api/strategies/equityCurve?id=2&_t=1766854997617 HTTP/1.1" 200 - +2025-12-28 01:03:21,629 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:03:21] "GET /api/strategies/positions?id=2&_t=1766855001622 HTTP/1.1" 200 - +2025-12-28 01:03:26,939 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:03:26] "GET /api/strategies/positions?id=2&_t=1766855006615 HTTP/1.1" 200 - +2025-12-28 01:03:29,805 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:03:29] "GET /api/market/types?_t=1766855009792 HTTP/1.1" 200 - +2025-12-28 01:03:29,811 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:03:29] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 01:03:30,121 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:03:30] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 01:03:30,149 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-28 01:03:33,781 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:03:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 01:06:40,773 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:06:40,774 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:06:40,774 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:06:40,777 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:06:40] "GET /api/strategies?_t=1766855200740 HTTP/1.1" 200 - +2025-12-28 01:06:41,014 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:06:41,014 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:06:41,014 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:06:41,015 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:06:41] "GET /api/strategies?_t=1766855201000 HTTP/1.1" 200 - +2025-12-28 01:06:41,232 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:06:41,233 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:06:41,233 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:06:41,234 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:06:41] "GET /api/strategies?_t=1766855201216 HTTP/1.1" 200 - +2025-12-28 01:06:41,534 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:06:41,535 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:06:41,536 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:06:41,538 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:06:41] "GET /api/strategies?_t=1766855201446 HTTP/1.1" 200 - +2025-12-28 01:06:41,670 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:06:41,670 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:06:41,670 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:06:41,671 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:06:41] "GET /api/strategies?_t=1766855201653 HTTP/1.1" 200 - +2025-12-28 01:06:41,788 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:06:41,789 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:06:41,789 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:06:41,789 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:06:41] "GET /api/strategies?_t=1766855201780 HTTP/1.1" 200 - +2025-12-28 01:06:42,040 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:06:42,040 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:06:42,040 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:06:42,041 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:06:42] "GET /api/strategies?_t=1766855202033 HTTP/1.1" 200 - +2025-12-28 01:06:42,176 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:06:42,176 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:06:42,177 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:06:42,177 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:06:42] "GET /api/strategies?_t=1766855202168 HTTP/1.1" 200 - +2025-12-28 01:06:42,354 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:06:42,354 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:06:42,355 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:06:42,355 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:06:42] "GET /api/strategies?_t=1766855202345 HTTP/1.1" 200 - +2025-12-28 01:06:42,421 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:06:42,421 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:06:42,421 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:06:42,422 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:06:42] "GET /api/strategies?_t=1766855202413 HTTP/1.1" 200 - +2025-12-28 01:06:42,481 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:06:42,482 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:06:42,482 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:06:42,482 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:06:42] "GET /api/strategies?_t=1766855202472 HTTP/1.1" 200 - +2025-12-28 01:06:43,337 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:06:43,338 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:06:43,338 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:06:43,338 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:06:43] "GET /api/strategies?_t=1766855203325 HTTP/1.1" 200 - +2025-12-28 01:06:44,780 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:06:44] "GET /api/strategies/equityCurve?id=2&_t=1766855204764 HTTP/1.1" 200 - +2025-12-28 01:06:44,786 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:06:44] "GET /api/strategies/equityCurve?id=2&_t=1766855204764 HTTP/1.1" 200 - +2025-12-28 01:06:44,792 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:06:44] "GET /api/strategies/positions?id=2&_t=1766855204766 HTTP/1.1" 200 - +2025-12-28 01:06:46,872 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:06:46] "GET /api/strategies/equityCurve?id=2&_t=1766855206864 HTTP/1.1" 200 - +2025-12-28 01:06:47,172 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:06:47] "GET /api/strategies/equityCurve?id=2&_t=1766855206864 HTTP/1.1" 200 - +2025-12-28 01:06:48,738 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:06:48] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 01:06:48,750 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:06:48] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 01:06:48,754 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:06:48] "GET /api/market/types?_t=1766855208413 HTTP/1.1" 200 - +2025-12-28 01:06:48,763 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:06:48] "GET /api/credentials/list?user_id=1&_t=1766855208413 HTTP/1.1" 200 - +2025-12-28 01:06:48,778 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:06:48] "GET /api/strategies/equityCurve?id=2&_t=1766855208430 HTTP/1.1" 200 - +2025-12-28 01:06:48,785 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:06:48] "GET /api/strategies/equityCurve?id=2&_t=1766855208430 HTTP/1.1" 200 - +2025-12-28 01:06:50,080 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:06:50] "GET /api/strategies/positions?id=2&_t=1766855209764 HTTP/1.1" 200 - +2025-12-28 01:06:54,771 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:06:54] "GET /api/strategies/positions?id=2&_t=1766855214762 HTTP/1.1" 200 - +2025-12-28 01:07:00,090 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:07:00] "GET /api/strategies/positions?id=2&_t=1766855219775 HTTP/1.1" 200 - +2025-12-28 01:07:04,197 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:07:04] "GET /api/strategies/equityCurve?id=2&_t=1766855224187 HTTP/1.1" 200 - +2025-12-28 01:07:04,510 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:07:04] "GET /api/strategies/equityCurve?id=2&_t=1766855224187 HTTP/1.1" 200 - +2025-12-28 01:07:05,075 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:07:05] "GET /api/strategies/positions?id=2&_t=1766855224763 HTTP/1.1" 200 - +2025-12-28 01:07:05,339 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:07:05] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 01:07:05,451 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:07:05] "GET /api/market/types?_t=1766855225127 HTTP/1.1" 200 - +2025-12-28 01:07:05,454 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:07:05] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 01:07:05,458 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:07:05] "GET /api/credentials/list?user_id=1&_t=1766855225127 HTTP/1.1" 200 - +2025-12-28 01:07:05,471 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:07:05] "GET /api/strategies/equityCurve?id=2&_t=1766855225160 HTTP/1.1" 200 - +2025-12-28 01:07:05,484 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:07:05] "GET /api/strategies/equityCurve?id=2&_t=1766855225160 HTTP/1.1" 200 - +2025-12-28 01:07:10,076 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:07:10] "GET /api/strategies/positions?id=2&_t=1766855229762 HTTP/1.1" 200 - +2025-12-28 01:07:14,772 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:07:14] "GET /api/strategies/positions?id=2&_t=1766855234766 HTTP/1.1" 200 - +2025-12-28 01:07:20,083 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:07:20] "GET /api/strategies/positions?id=2&_t=1766855239764 HTTP/1.1" 200 - +2025-12-28 01:07:24,771 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:07:24] "GET /api/strategies/positions?id=2&_t=1766855244763 HTTP/1.1" 200 - +2025-12-28 01:07:30,089 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:07:30] "GET /api/strategies/positions?id=2&_t=1766855249773 HTTP/1.1" 200 - +2025-12-28 01:07:34,771 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:07:34] "GET /api/strategies/positions?id=2&_t=1766855254763 HTTP/1.1" 200 - +2025-12-28 01:07:35,466 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:07:35] "GET /api/strategies/equityCurve?id=2&_t=1766855255146 HTTP/1.1" 200 - +2025-12-28 01:07:39,771 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:07:39] "GET /api/strategies/positions?id=2&_t=1766855259763 HTTP/1.1" 200 - +2025-12-28 01:07:45,087 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:07:45] "GET /api/strategies/positions?id=2&_t=1766855264769 HTTP/1.1" 200 - +2025-12-28 01:07:49,779 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:07:49] "GET /api/strategies/positions?id=2&_t=1766855269762 HTTP/1.1" 200 - +2025-12-28 01:07:55,085 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:07:55] "GET /api/strategies/positions?id=2&_t=1766855274767 HTTP/1.1" 200 - +2025-12-28 01:07:59,774 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:07:59] "GET /api/strategies/positions?id=2&_t=1766855279765 HTTP/1.1" 200 - +2025-12-28 01:08:05,090 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:08:05] "GET /api/strategies/positions?id=2&_t=1766855284771 HTTP/1.1" 200 - +2025-12-28 01:08:05,358 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:08:05] "GET /api/strategies/equityCurve?id=2&_t=1766855285131 HTTP/1.1" 200 - +2025-12-28 01:08:09,769 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:08:09] "GET /api/strategies/positions?id=2&_t=1766855289763 HTTP/1.1" 200 - +2025-12-28 01:08:15,087 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:08:15] "GET /api/strategies/positions?id=2&_t=1766855294770 HTTP/1.1" 200 - +2025-12-28 01:08:19,778 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:08:19] "GET /api/strategies/positions?id=2&_t=1766855299772 HTTP/1.1" 200 - +2025-12-28 01:08:25,089 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:08:25] "GET /api/strategies/positions?id=2&_t=1766855304770 HTTP/1.1" 200 - +2025-12-28 01:08:29,781 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:08:29] "GET /api/strategies/positions?id=2&_t=1766855309774 HTTP/1.1" 200 - +2025-12-28 01:08:35,077 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:08:35] "GET /api/strategies/positions?id=2&_t=1766855314766 HTTP/1.1" 200 - +2025-12-28 01:08:35,347 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:08:35] "GET /api/strategies/equityCurve?id=2&_t=1766855315135 HTTP/1.1" 200 - +2025-12-28 01:08:39,777 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:08:39] "GET /api/strategies/positions?id=2&_t=1766855319771 HTTP/1.1" 200 - +2025-12-28 01:08:45,083 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:08:45] "GET /api/strategies/positions?id=2&_t=1766855324768 HTTP/1.1" 200 - +2025-12-28 01:08:49,773 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:08:49] "GET /api/strategies/positions?id=2&_t=1766855329767 HTTP/1.1" 200 - +2025-12-28 01:08:55,277 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:08:55] "GET /api/strategies/positions?id=2&_t=1766855334770 HTTP/1.1" 200 - +2025-12-28 01:08:59,774 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:08:59] "GET /api/strategies/positions?id=2&_t=1766855339768 HTTP/1.1" 200 - +2025-12-28 01:09:05,095 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:09:05] "GET /api/strategies/positions?id=2&_t=1766855344777 HTTP/1.1" 200 - +2025-12-28 01:09:05,361 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:09:05] "GET /api/strategies/equityCurve?id=2&_t=1766855345139 HTTP/1.1" 200 - +2025-12-28 01:09:09,769 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:09:09] "GET /api/strategies/positions?id=2&_t=1766855349763 HTTP/1.1" 200 - +2025-12-28 01:09:15,094 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:09:15] "GET /api/strategies/positions?id=2&_t=1766855354775 HTTP/1.1" 200 - +2025-12-28 01:09:19,776 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:09:19] "GET /api/strategies/positions?id=2&_t=1766855359770 HTTP/1.1" 200 - +2025-12-28 01:09:25,099 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:09:25] "GET /api/strategies/positions?id=2&_t=1766855364777 HTTP/1.1" 200 - +2025-12-28 01:09:29,778 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:09:29] "GET /api/strategies/positions?id=2&_t=1766855369772 HTTP/1.1" 200 - +2025-12-28 01:09:35,088 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:09:35] "GET /api/strategies/positions?id=2&_t=1766855374768 HTTP/1.1" 200 - +2025-12-28 01:09:35,357 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:09:35] "GET /api/strategies/equityCurve?id=2&_t=1766855375146 HTTP/1.1" 200 - +2025-12-28 01:09:39,773 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:09:39] "GET /api/strategies/positions?id=2&_t=1766855379765 HTTP/1.1" 200 - +2025-12-28 01:09:45,090 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:09:45] "GET /api/strategies/positions?id=2&_t=1766855384772 HTTP/1.1" 200 - +2025-12-28 01:09:49,776 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:09:49] "GET /api/strategies/positions?id=2&_t=1766855389769 HTTP/1.1" 200 - +2025-12-28 01:09:55,079 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:09:55] "GET /api/strategies/positions?id=2&_t=1766855394765 HTTP/1.1" 200 - +2025-12-28 01:09:59,776 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:09:59] "GET /api/strategies/positions?id=2&_t=1766855399769 HTTP/1.1" 200 - +2025-12-28 01:10:05,093 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:10:05] "GET /api/strategies/positions?id=2&_t=1766855404776 HTTP/1.1" 200 - +2025-12-28 01:10:05,358 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:10:05] "GET /api/strategies/equityCurve?id=2&_t=1766855405135 HTTP/1.1" 200 - +2025-12-28 01:10:09,774 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:10:09] "GET /api/strategies/positions?id=2&_t=1766855409767 HTTP/1.1" 200 - +2025-12-28 01:10:15,093 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:10:15] "GET /api/strategies/positions?id=2&_t=1766855414775 HTTP/1.1" 200 - +2025-12-28 01:10:19,770 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:10:19] "GET /api/strategies/positions?id=2&_t=1766855419764 HTTP/1.1" 200 - +2025-12-28 01:10:25,082 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:10:25] "GET /api/strategies/positions?id=2&_t=1766855424763 HTTP/1.1" 200 - +2025-12-28 01:10:29,769 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:10:29] "GET /api/strategies/positions?id=2&_t=1766855429763 HTTP/1.1" 200 - +2025-12-28 01:10:35,087 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:10:35] "GET /api/strategies/positions?id=2&_t=1766855434773 HTTP/1.1" 200 - +2025-12-28 01:10:35,353 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:10:35] "GET /api/strategies/equityCurve?id=2&_t=1766855435143 HTTP/1.1" 200 - +2025-12-28 01:10:39,771 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:10:39] "GET /api/strategies/positions?id=2&_t=1766855439763 HTTP/1.1" 200 - +2025-12-28 01:10:45,084 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:10:45] "GET /api/strategies/positions?id=2&_t=1766855444767 HTTP/1.1" 200 - +2025-12-28 01:10:49,778 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:10:49] "GET /api/strategies/positions?id=2&_t=1766855449771 HTTP/1.1" 200 - +2025-12-28 01:10:55,085 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:10:55] "GET /api/strategies/positions?id=2&_t=1766855454770 HTTP/1.1" 200 - +2025-12-28 01:10:59,783 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:10:59] "GET /api/strategies/positions?id=2&_t=1766855459776 HTTP/1.1" 200 - +2025-12-28 01:11:05,090 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:11:05] "GET /api/strategies/positions?id=2&_t=1766855464773 HTTP/1.1" 200 - +2025-12-28 01:11:05,360 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:11:05] "GET /api/strategies/equityCurve?id=2&_t=1766855465131 HTTP/1.1" 200 - +2025-12-28 01:11:09,782 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:11:09] "GET /api/strategies/positions?id=2&_t=1766855469775 HTTP/1.1" 200 - +2025-12-28 01:11:15,086 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:11:15] "GET /api/strategies/positions?id=2&_t=1766855474764 HTTP/1.1" 200 - +2025-12-28 01:11:19,777 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:11:19] "GET /api/strategies/positions?id=2&_t=1766855479766 HTTP/1.1" 200 - +2025-12-28 01:11:25,084 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:11:25] "GET /api/strategies/positions?id=2&_t=1766855484763 HTTP/1.1" 200 - +2025-12-28 01:11:29,719 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:11:29,719 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:11:29,719 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:11:29,720 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:11:29] "GET /api/strategies?_t=1766855489711 HTTP/1.1" 200 - +2025-12-28 01:11:30,010 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:11:30,011 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:11:30,011 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:11:30,011 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:11:30] "GET /api/strategies?_t=1766855490005 HTTP/1.1" 200 - +2025-12-28 01:11:30,037 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:11:30,037 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:11:30,038 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:11:30,038 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:11:30] "GET /api/strategies?_t=1766855490025 HTTP/1.1" 200 - +2025-12-28 01:11:30,119 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:11:30,119 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:11:30,120 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:11:30,121 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:11:30] "GET /api/strategies?_t=1766855490109 HTTP/1.1" 200 - +2025-12-28 01:11:30,288 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:11:30,289 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:11:30,289 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:11:30,289 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:11:30] "GET /api/strategies?_t=1766855490282 HTTP/1.1" 200 - +2025-12-28 01:11:30,352 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:11:30,352 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:11:30,352 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:11:30,353 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:11:30] "GET /api/strategies?_t=1766855490340 HTTP/1.1" 200 - +2025-12-28 01:11:30,413 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:11:30,414 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:11:30,414 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:11:30,415 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:11:30] "GET /api/strategies?_t=1766855490378 HTTP/1.1" 200 - +2025-12-28 01:11:30,482 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:11:30,483 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:11:30,483 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:11:30,483 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:11:30] "GET /api/strategies?_t=1766855490473 HTTP/1.1" 200 - +2025-12-28 01:11:30,512 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:11:30,512 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:11:30,512 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:11:30,512 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:11:30] "GET /api/strategies?_t=1766855490505 HTTP/1.1" 200 - +2025-12-28 01:11:30,584 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:11:30,584 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:11:30,584 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:11:30,585 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:11:30] "GET /api/strategies?_t=1766855490578 HTTP/1.1" 200 - +2025-12-28 01:11:32,056 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:11:32] "GET /api/strategies/equityCurve?id=2&_t=1766855492026 HTTP/1.1" 200 - +2025-12-28 01:11:32,070 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:11:32] "GET /api/strategies/equityCurve?id=2&_t=1766855492026 HTTP/1.1" 200 - +2025-12-28 01:11:32,076 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:11:32] "GET /api/strategies/positions?id=2&_t=1766855492037 HTTP/1.1" 200 - +2025-12-28 01:11:32,838 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:11:32] "GET /api/market/types?_t=1766855492828 HTTP/1.1" 200 - +2025-12-28 01:11:33,145 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:11:33] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 01:11:33,156 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:11:33] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 01:11:33,163 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:11:33] "GET /api/credentials/list?user_id=1&_t=1766855492828 HTTP/1.1" 200 - +2025-12-28 01:11:33,175 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:11:33] "GET /api/strategies/equityCurve?id=2&_t=1766855492849 HTTP/1.1" 200 - +2025-12-28 01:11:33,181 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:11:33] "GET /api/strategies/equityCurve?id=2&_t=1766855492849 HTTP/1.1" 200 - +2025-12-28 01:11:37,344 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:11:37] "GET /api/strategies/positions?id=2&_t=1766855497023 HTTP/1.1" 200 - +2025-12-28 01:11:42,034 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:11:42] "GET /api/strategies/positions?id=2&_t=1766855502028 HTTP/1.1" 200 - +2025-12-28 01:11:47,347 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:11:47] "GET /api/strategies/positions?id=2&_t=1766855507030 HTTP/1.1" 200 - +2025-12-28 01:11:52,054 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:11:52] "GET /api/strategies/positions?id=2&_t=1766855512021 HTTP/1.1" 200 - +2025-12-28 01:11:57,356 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:11:57] "GET /api/strategies/positions?id=2&_t=1766855517022 HTTP/1.1" 200 - +2025-12-28 01:12:02,030 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:12:02] "GET /api/strategies/positions?id=2&_t=1766855522023 HTTP/1.1" 200 - +2025-12-28 01:12:03,148 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:12:03] "GET /api/strategies/equityCurve?id=2&_t=1766855522835 HTTP/1.1" 200 - +2025-12-28 01:12:07,033 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:12:07] "GET /api/strategies/positions?id=2&_t=1766855527022 HTTP/1.1" 200 - +2025-12-28 01:12:12,336 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:12:12] "GET /api/strategies/positions?id=2&_t=1766855532024 HTTP/1.1" 200 - +2025-12-28 01:12:17,032 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:12:17] "GET /api/strategies/positions?id=2&_t=1766855537025 HTTP/1.1" 200 - +2025-12-28 01:12:22,347 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:12:22] "GET /api/strategies/positions?id=2&_t=1766855542025 HTTP/1.1" 200 - +2025-12-28 01:12:27,042 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:12:27] "GET /api/strategies/positions?id=2&_t=1766855547036 HTTP/1.1" 200 - +2025-12-28 01:12:32,338 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:12:32] "GET /api/strategies/positions?id=2&_t=1766855552021 HTTP/1.1" 200 - +2025-12-28 01:12:32,839 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:12:32] "GET /api/strategies/equityCurve?id=2&_t=1766855552833 HTTP/1.1" 200 - +2025-12-28 01:12:37,104 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:12:37] "GET /api/strategies/positions?id=2&_t=1766855557031 HTTP/1.1" 200 - +2025-12-28 01:12:38,831 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:12:38,832 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:12:38,832 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:12:38,832 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:12:38] "GET /api/strategies?_t=1766855558816 HTTP/1.1" 200 - +2025-12-28 01:12:40,509 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:12:40] "GET /api/strategies/equityCurve?id=2&_t=1766855560492 HTTP/1.1" 200 - +2025-12-28 01:12:40,513 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:12:40] "GET /api/strategies/equityCurve?id=2&_t=1766855560492 HTTP/1.1" 200 - +2025-12-28 01:12:40,522 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:12:40] "GET /api/strategies/positions?id=2&_t=1766855560497 HTTP/1.1" 200 - +2025-12-28 01:12:41,891 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:12:41] "GET /api/market/types?_t=1766855561565 HTTP/1.1" 200 - +2025-12-28 01:12:41,899 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:12:41] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 01:12:41,911 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:12:41] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 01:12:41,918 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:12:41] "GET /api/credentials/list?user_id=1&_t=1766855561565 HTTP/1.1" 200 - +2025-12-28 01:12:41,930 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:12:41] "GET /api/strategies/equityCurve?id=2&_t=1766855561585 HTTP/1.1" 200 - +2025-12-28 01:12:41,944 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:12:41] "GET /api/strategies/equityCurve?id=2&_t=1766855561585 HTTP/1.1" 200 - +2025-12-28 01:12:45,814 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:12:45] "GET /api/strategies/positions?id=2&_t=1766855565495 HTTP/1.1" 200 - +2025-12-28 01:12:50,498 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:12:50] "GET /api/strategies/positions?id=2&_t=1766855570490 HTTP/1.1" 200 - +2025-12-28 01:12:55,841 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:12:55] "GET /api/strategies/positions?id=2&_t=1766855575526 HTTP/1.1" 200 - +2025-12-28 01:13:00,502 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:13:00] "GET /api/strategies/positions?id=2&_t=1766855580490 HTTP/1.1" 200 - +2025-12-28 01:13:05,813 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:13:05] "GET /api/strategies/positions?id=2&_t=1766855585493 HTTP/1.1" 200 - +2025-12-28 01:13:07,057 - app.routes.strategy - INFO - ๆญฃๅœจๆต‹่ฏ•่ฟžๆŽฅ: exchange_id=okx +2025-12-28 01:13:07,057 - app.routes.strategy - INFO - API Key: 4cd9c... (len=36) +2025-12-28 01:13:07,057 - app.routes.strategy - INFO - Secret Key: 2B295... (len=32) +2025-12-28 01:13:09,202 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:13:09] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-28 01:13:10,808 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:13:10] "GET /api/strategies/positions?id=2&_t=1766855590490 HTTP/1.1" 200 - +2025-12-28 01:13:11,079 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:13:11] "PUT /api/strategies/update?id=2 HTTP/1.1" 200 - +2025-12-28 01:13:11,172 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:13:11,172 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:13:11,172 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:13:11,173 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:13:11] "GET /api/strategies?_t=1766855591125 HTTP/1.1" 200 - +2025-12-28 01:13:11,594 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:13:11] "GET /api/strategies/equityCurve?id=2&_t=1766855591583 HTTP/1.1" 200 - +2025-12-28 01:13:15,805 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:13:15] "GET /api/strategies/positions?id=2&_t=1766855595491 HTTP/1.1" 200 - +2025-12-28 01:13:16,234 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:13:16] "GET /api/strategies/equityCurve?id=2&_t=1766855596224 HTTP/1.1" 200 - +2025-12-28 01:13:16,537 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:13:16] "GET /api/strategies/equityCurve?id=2&_t=1766855596224 HTTP/1.1" 200 - +2025-12-28 01:13:17,371 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:13:17] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 01:13:17,377 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:13:17] "GET /api/market/types?_t=1766855597037 HTTP/1.1" 200 - +2025-12-28 01:13:17,386 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:13:17] "GET /api/credentials/list?user_id=1&_t=1766855597037 HTTP/1.1" 200 - +2025-12-28 01:13:17,510 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:13:17] "GET /api/strategies/equityCurve?id=2&_t=1766855597185 HTTP/1.1" 200 - +2025-12-28 01:13:17,526 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:13:17] "GET /api/strategies/equityCurve?id=2&_t=1766855597185 HTTP/1.1" 200 - +2025-12-28 01:13:20,503 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:13:20] "GET /api/strategies/positions?id=2&_t=1766855600492 HTTP/1.1" 200 - +2025-12-28 01:13:25,822 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:13:25] "GET /api/strategies/positions?id=2&_t=1766855605504 HTTP/1.1" 200 - +2025-12-28 01:13:30,512 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:13:30] "GET /api/strategies/positions?id=2&_t=1766855610505 HTTP/1.1" 200 - +2025-12-28 01:13:35,811 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:13:35] "GET /api/strategies/positions?id=2&_t=1766855615497 HTTP/1.1" 200 - +2025-12-28 01:13:40,502 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:13:40] "GET /api/strategies/positions?id=2&_t=1766855620495 HTTP/1.1" 200 - +2025-12-28 01:13:45,812 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:13:45] "GET /api/strategies/positions?id=2&_t=1766855625495 HTTP/1.1" 200 - +2025-12-28 01:13:47,174 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:13:47] "GET /api/strategies/equityCurve?id=2&_t=1766855627166 HTTP/1.1" 200 - +2025-12-28 01:13:50,818 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:13:50] "GET /api/strategies/positions?id=2&_t=1766855630502 HTTP/1.1" 200 - +2025-12-28 01:13:55,499 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:13:55] "GET /api/strategies/positions?id=2&_t=1766855635491 HTTP/1.1" 200 - +2025-12-28 01:14:00,810 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:14:00] "GET /api/strategies/positions?id=2&_t=1766855640495 HTTP/1.1" 200 - +2025-12-28 01:14:05,514 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:14:05] "GET /api/strategies/positions?id=2&_t=1766855645505 HTTP/1.1" 200 - +2025-12-28 01:14:10,813 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:14:10] "GET /api/strategies/positions?id=2&_t=1766855650493 HTTP/1.1" 200 - +2025-12-28 01:14:15,825 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:14:15] "GET /api/strategies/positions?id=2&_t=1766855655496 HTTP/1.1" 200 - +2025-12-28 01:14:16,184 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:14:16,185 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:14:16,185 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:14:16,186 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:14:16] "GET /api/strategies?_t=1766855656172 HTTP/1.1" 200 - +2025-12-28 01:14:16,191 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:14:16,192 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:14:16,192 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:14:16,193 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:14:16] "GET /api/strategies?_t=1766855656174 HTTP/1.1" 200 - +2025-12-28 01:23:05,200 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:23:05,200 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:23:05,201 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:23:05,201 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:23:05] "GET /api/strategies?_t=1766856185191 HTTP/1.1" 200 - +2025-12-28 01:23:05,206 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:23:05,206 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:23:05,206 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:23:05,207 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:23:05] "GET /api/strategies?_t=1766856185196 HTTP/1.1" 200 - +2025-12-28 01:23:12,404 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:23:12,404 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:23:12,404 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:23:12,405 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:23:12] "GET /api/strategies?_t=1766856192398 HTTP/1.1" 200 - +2025-12-28 01:23:12,409 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:23:12,409 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:23:12,409 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:23:12,410 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:23:12] "GET /api/strategies?_t=1766856192399 HTTP/1.1" 200 - +2025-12-28 01:23:26,714 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:23:26,714 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:23:26,715 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:23:26,715 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:23:26] "GET /api/strategies?_t=1766856206696 HTTP/1.1" 200 - +2025-12-28 01:23:28,258 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:23:28] "GET /api/strategies/equityCurve?id=2&_t=1766856208244 HTTP/1.1" 200 - +2025-12-28 01:23:28,264 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:23:28] "GET /api/strategies/equityCurve?id=2&_t=1766856208244 HTTP/1.1" 200 - +2025-12-28 01:23:28,564 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:23:28] "GET /api/strategies/positions?id=2&_t=1766856208250 HTTP/1.1" 200 - +2025-12-28 01:23:29,313 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:23:29] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 01:23:29,322 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:23:29] "GET /api/market/types?_t=1766856208975 HTTP/1.1" 200 - +2025-12-28 01:23:29,332 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:23:29] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 01:23:29,341 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:23:29] "GET /api/credentials/list?user_id=1&_t=1766856208975 HTTP/1.1" 200 - +2025-12-28 01:23:29,353 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:23:29] "GET /api/strategies/equityCurve?id=2&_t=1766856208997 HTTP/1.1" 200 - +2025-12-28 01:23:29,364 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:23:29] "GET /api/strategies/equityCurve?id=2&_t=1766856208997 HTTP/1.1" 200 - +2025-12-28 01:23:33,562 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:23:33] "GET /api/strategies/positions?id=2&_t=1766856213243 HTTP/1.1" 200 - +2025-12-28 01:23:38,251 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:23:38] "GET /api/strategies/positions?id=2&_t=1766856218243 HTTP/1.1" 200 - +2025-12-28 01:23:43,568 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:23:43] "GET /api/strategies/positions?id=2&_t=1766856223252 HTTP/1.1" 200 - +2025-12-28 01:23:48,252 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:23:48] "GET /api/strategies/positions?id=2&_t=1766856228241 HTTP/1.1" 200 - +2025-12-28 01:23:53,583 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:23:53] "GET /api/strategies/positions?id=2&_t=1766856233245 HTTP/1.1" 200 - +2025-12-28 01:23:58,263 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:23:58] "GET /api/strategies/positions?id=2&_t=1766856238256 HTTP/1.1" 200 - +2025-12-28 01:23:59,302 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:23:59] "GET /api/strategies/equityCurve?id=2&_t=1766856238982 HTTP/1.1" 200 - +2025-12-28 01:24:03,250 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:24:03] "GET /api/strategies/positions?id=2&_t=1766856243243 HTTP/1.1" 200 - +2025-12-28 01:24:08,570 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:24:08] "GET /api/strategies/positions?id=2&_t=1766856248249 HTTP/1.1" 200 - +2025-12-28 01:24:13,254 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:24:13] "GET /api/strategies/positions?id=2&_t=1766856253247 HTTP/1.1" 200 - +2025-12-28 01:24:18,570 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:24:18] "GET /api/strategies/positions?id=2&_t=1766856258247 HTTP/1.1" 200 - +2025-12-28 01:24:23,248 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:24:23] "GET /api/strategies/positions?id=2&_t=1766856263242 HTTP/1.1" 200 - +2025-12-28 01:24:28,572 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:24:28] "GET /api/strategies/positions?id=2&_t=1766856268255 HTTP/1.1" 200 - +2025-12-28 01:24:28,996 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:24:28] "GET /api/strategies/equityCurve?id=2&_t=1766856268987 HTTP/1.1" 200 - +2025-12-28 01:24:33,572 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:24:33] "GET /api/strategies/positions?id=2&_t=1766856273253 HTTP/1.1" 200 - +2025-12-28 01:24:38,254 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:24:38] "GET /api/strategies/positions?id=2&_t=1766856278247 HTTP/1.1" 200 - +2025-12-28 01:24:43,562 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:24:43] "GET /api/strategies/positions?id=2&_t=1766856283244 HTTP/1.1" 200 - +2025-12-28 01:24:48,255 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:24:48] "GET /api/strategies/positions?id=2&_t=1766856288247 HTTP/1.1" 200 - +2025-12-28 01:24:53,564 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:24:53] "GET /api/strategies/positions?id=2&_t=1766856293252 HTTP/1.1" 200 - +2025-12-28 01:24:58,253 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:24:58] "GET /api/strategies/positions?id=2&_t=1766856298246 HTTP/1.1" 200 - +2025-12-28 01:24:59,295 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:24:59] "GET /api/strategies/equityCurve?id=2&_t=1766856298980 HTTP/1.1" 200 - +2025-12-28 01:25:03,259 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:25:03] "GET /api/strategies/positions?id=2&_t=1766856303253 HTTP/1.1" 200 - +2025-12-28 01:25:08,565 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:25:08] "GET /api/strategies/positions?id=2&_t=1766856308249 HTTP/1.1" 200 - +2025-12-28 01:25:13,257 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:25:13] "GET /api/strategies/positions?id=2&_t=1766856313251 HTTP/1.1" 200 - +2025-12-28 01:25:18,568 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:25:18] "GET /api/strategies/positions?id=2&_t=1766856318248 HTTP/1.1" 200 - +2025-12-28 01:25:23,253 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:25:23] "GET /api/strategies/positions?id=2&_t=1766856323247 HTTP/1.1" 200 - +2025-12-28 01:25:28,570 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:25:28] "GET /api/strategies/positions?id=2&_t=1766856328253 HTTP/1.1" 200 - +2025-12-28 01:25:28,990 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:25:28] "GET /api/strategies/equityCurve?id=2&_t=1766856328982 HTTP/1.1" 200 - +2025-12-28 01:25:33,573 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:25:33] "GET /api/strategies/positions?id=2&_t=1766856333256 HTTP/1.1" 200 - +2025-12-28 01:25:38,253 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:25:38] "GET /api/strategies/positions?id=2&_t=1766856338246 HTTP/1.1" 200 - +2025-12-28 01:25:43,563 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:25:43] "GET /api/strategies/positions?id=2&_t=1766856343250 HTTP/1.1" 200 - +2025-12-28 01:25:48,248 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:25:48] "GET /api/strategies/positions?id=2&_t=1766856348242 HTTP/1.1" 200 - +2025-12-28 01:25:53,568 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:25:53] "GET /api/strategies/positions?id=2&_t=1766856353253 HTTP/1.1" 200 - +2025-12-28 01:25:58,254 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:25:58] "GET /api/strategies/positions?id=2&_t=1766856358245 HTTP/1.1" 200 - +2025-12-28 01:25:59,308 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:25:59] "GET /api/strategies/equityCurve?id=2&_t=1766856358986 HTTP/1.1" 200 - +2025-12-28 01:26:03,252 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:26:03] "GET /api/strategies/positions?id=2&_t=1766856363245 HTTP/1.1" 200 - +2025-12-28 01:26:08,573 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:26:08] "GET /api/strategies/positions?id=2&_t=1766856368252 HTTP/1.1" 200 - +2025-12-28 01:26:13,249 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:26:13] "GET /api/strategies/positions?id=2&_t=1766856373242 HTTP/1.1" 200 - +2025-12-28 01:26:18,572 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:26:18] "GET /api/strategies/positions?id=2&_t=1766856378247 HTTP/1.1" 200 - +2025-12-28 01:26:23,248 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:26:23] "GET /api/strategies/positions?id=2&_t=1766856383242 HTTP/1.1" 200 - +2025-12-28 01:26:28,564 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:26:28] "GET /api/strategies/positions?id=2&_t=1766856388245 HTTP/1.1" 200 - +2025-12-28 01:26:28,991 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:26:28] "GET /api/strategies/equityCurve?id=2&_t=1766856388984 HTTP/1.1" 200 - +2025-12-28 01:26:33,573 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:26:33] "GET /api/strategies/positions?id=2&_t=1766856393254 HTTP/1.1" 200 - +2025-12-28 01:26:38,250 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:26:38] "GET /api/strategies/positions?id=2&_t=1766856398242 HTTP/1.1" 200 - +2025-12-28 01:26:43,567 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:26:43] "GET /api/strategies/positions?id=2&_t=1766856403249 HTTP/1.1" 200 - +2025-12-28 01:26:48,259 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:26:48] "GET /api/strategies/positions?id=2&_t=1766856408252 HTTP/1.1" 200 - +2025-12-28 01:26:53,567 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:26:53] "GET /api/strategies/positions?id=2&_t=1766856413249 HTTP/1.1" 200 - +2025-12-28 01:26:58,256 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:26:58] "GET /api/strategies/positions?id=2&_t=1766856418249 HTTP/1.1" 200 - +2025-12-28 01:26:59,309 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:26:59] "GET /api/strategies/equityCurve?id=2&_t=1766856418987 HTTP/1.1" 200 - +2025-12-28 01:27:03,262 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:27:03] "GET /api/strategies/positions?id=2&_t=1766856423255 HTTP/1.1" 200 - +2025-12-28 01:27:08,564 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:27:08] "GET /api/strategies/positions?id=2&_t=1766856428245 HTTP/1.1" 200 - +2025-12-28 01:27:13,254 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:27:13] "GET /api/strategies/positions?id=2&_t=1766856433247 HTTP/1.1" 200 - +2025-12-28 01:27:18,585 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:27:18] "GET /api/strategies/positions?id=2&_t=1766856438243 HTTP/1.1" 200 - +2025-12-28 01:27:23,255 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:27:23] "GET /api/strategies/positions?id=2&_t=1766856443249 HTTP/1.1" 200 - +2025-12-28 01:27:28,566 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:27:28] "GET /api/strategies/positions?id=2&_t=1766856448244 HTTP/1.1" 200 - +2025-12-28 01:27:28,987 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:27:28] "GET /api/strategies/equityCurve?id=2&_t=1766856448980 HTTP/1.1" 200 - +2025-12-28 01:27:33,571 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:27:33] "GET /api/strategies/positions?id=2&_t=1766856453253 HTTP/1.1" 200 - +2025-12-28 01:27:38,252 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:27:38] "GET /api/strategies/positions?id=2&_t=1766856458246 HTTP/1.1" 200 - +2025-12-28 01:27:43,558 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:27:43] "GET /api/strategies/positions?id=2&_t=1766856463243 HTTP/1.1" 200 - +2025-12-28 01:27:48,262 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:27:48] "GET /api/strategies/positions?id=2&_t=1766856468254 HTTP/1.1" 200 - +2025-12-28 01:27:53,576 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:27:53] "GET /api/strategies/positions?id=2&_t=1766856473256 HTTP/1.1" 200 - +2025-12-28 01:27:58,255 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:27:58] "GET /api/strategies/positions?id=2&_t=1766856478248 HTTP/1.1" 200 - +2025-12-28 01:27:59,299 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:27:59] "GET /api/strategies/equityCurve?id=2&_t=1766856478982 HTTP/1.1" 200 - +2025-12-28 01:28:03,252 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:28:03] "GET /api/strategies/positions?id=2&_t=1766856483245 HTTP/1.1" 200 - +2025-12-28 01:28:08,563 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:28:08] "GET /api/strategies/positions?id=2&_t=1766856488242 HTTP/1.1" 200 - +2025-12-28 01:28:13,249 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:28:13] "GET /api/strategies/positions?id=2&_t=1766856493242 HTTP/1.1" 200 - +2025-12-28 01:28:18,561 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:28:18] "GET /api/strategies/positions?id=2&_t=1766856498244 HTTP/1.1" 200 - +2025-12-28 01:28:23,248 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:28:23] "GET /api/strategies/positions?id=2&_t=1766856503242 HTTP/1.1" 200 - +2025-12-28 01:28:28,571 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:28:28] "GET /api/strategies/positions?id=2&_t=1766856508249 HTTP/1.1" 200 - +2025-12-28 01:28:28,998 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:28:28] "GET /api/strategies/equityCurve?id=2&_t=1766856508988 HTTP/1.1" 200 - +2025-12-28 01:28:33,564 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:28:33] "GET /api/strategies/positions?id=2&_t=1766856513242 HTTP/1.1" 200 - +2025-12-28 01:28:38,263 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:28:38] "GET /api/strategies/positions?id=2&_t=1766856518256 HTTP/1.1" 200 - +2025-12-28 01:28:43,561 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:28:43] "GET /api/strategies/positions?id=2&_t=1766856523242 HTTP/1.1" 200 - +2025-12-28 01:28:48,249 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:28:48] "GET /api/strategies/positions?id=2&_t=1766856528241 HTTP/1.1" 200 - +2025-12-28 01:28:53,577 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:28:53] "GET /api/strategies/positions?id=2&_t=1766856533256 HTTP/1.1" 200 - +2025-12-28 01:28:58,263 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:28:58] "GET /api/strategies/positions?id=2&_t=1766856538256 HTTP/1.1" 200 - +2025-12-28 01:28:59,303 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:28:59] "GET /api/strategies/equityCurve?id=2&_t=1766856538983 HTTP/1.1" 200 - +2025-12-28 01:29:03,250 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:29:03] "GET /api/strategies/positions?id=2&_t=1766856543243 HTTP/1.1" 200 - +2025-12-28 01:29:08,566 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:29:08] "GET /api/strategies/positions?id=2&_t=1766856548244 HTTP/1.1" 200 - +2025-12-28 01:29:13,264 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:29:13] "GET /api/strategies/positions?id=2&_t=1766856553256 HTTP/1.1" 200 - +2025-12-28 01:29:18,571 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:29:18] "GET /api/strategies/positions?id=2&_t=1766856558250 HTTP/1.1" 200 - +2025-12-28 01:29:23,254 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:29:23] "GET /api/strategies/positions?id=2&_t=1766856563248 HTTP/1.1" 200 - +2025-12-28 01:29:28,566 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:29:28] "GET /api/strategies/positions?id=2&_t=1766856568248 HTTP/1.1" 200 - +2025-12-28 01:29:28,997 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:29:28] "GET /api/strategies/equityCurve?id=2&_t=1766856568990 HTTP/1.1" 200 - +2025-12-28 01:29:33,571 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:29:33] "GET /api/strategies/positions?id=2&_t=1766856573247 HTTP/1.1" 200 - +2025-12-28 01:29:38,252 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:29:38] "GET /api/strategies/positions?id=2&_t=1766856578246 HTTP/1.1" 200 - +2025-12-28 01:29:43,568 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:29:43] "GET /api/strategies/positions?id=2&_t=1766856583241 HTTP/1.1" 200 - +2025-12-28 01:29:48,262 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:29:48] "GET /api/strategies/positions?id=2&_t=1766856588255 HTTP/1.1" 200 - +2025-12-28 01:29:53,567 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:29:53] "GET /api/strategies/positions?id=2&_t=1766856593250 HTTP/1.1" 200 - +2025-12-28 01:29:58,262 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:29:58] "GET /api/strategies/positions?id=2&_t=1766856598254 HTTP/1.1" 200 - +2025-12-28 01:29:59,306 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:29:59] "GET /api/strategies/equityCurve?id=2&_t=1766856598991 HTTP/1.1" 200 - +2025-12-28 01:30:03,264 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:30:03] "GET /api/strategies/positions?id=2&_t=1766856603256 HTTP/1.1" 200 - +2025-12-28 01:30:08,578 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:30:08] "GET /api/strategies/positions?id=2&_t=1766856608257 HTTP/1.1" 200 - +2025-12-28 01:30:15,334 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:30:15] "GET /api/strategies/positions?id=2&_t=1766856613243 HTTP/1.1" 200 - +2025-12-28 01:30:15,711 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:30:15,711 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:30:15,712 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:30:15,712 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:30:15] "GET /api/strategies?_t=1766856615699 HTTP/1.1" 200 - +2025-12-28 01:30:15,716 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:30:15,716 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:30:15,717 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:30:15,717 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:30:15] "GET /api/strategies?_t=1766856615706 HTTP/1.1" 200 - +2025-12-28 01:30:36,847 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:30:36,847 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:30:36,847 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:30:36,848 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:30:36] "GET /api/strategies?_t=1766856636837 HTTP/1.1" 200 - +2025-12-28 01:30:36,852 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:30:36,853 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:30:36,853 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:30:36,853 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:30:36] "GET /api/strategies?_t=1766856636843 HTTP/1.1" 200 - +2025-12-28 01:31:16,195 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:31:16,195 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:31:16,195 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:31:16,196 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:31:16] "GET /api/strategies?_t=1766856676187 HTTP/1.1" 200 - +2025-12-28 01:31:16,509 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:31:16,510 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:31:16,510 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:31:16,510 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:31:16] "GET /api/strategies?_t=1766856676503 HTTP/1.1" 200 - +2025-12-28 01:31:26,864 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:31:26,865 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:31:26,865 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:31:26,865 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:31:26] "GET /api/strategies?_t=1766856686851 HTTP/1.1" 200 - +2025-12-28 01:31:28,399 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:31:28] "GET /api/strategies/equityCurve?id=2&_t=1766856688386 HTTP/1.1" 200 - +2025-12-28 01:31:28,409 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:31:28] "GET /api/strategies/equityCurve?id=2&_t=1766856688386 HTTP/1.1" 200 - +2025-12-28 01:31:28,706 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:31:28] "GET /api/strategies/positions?id=2&_t=1766856688391 HTTP/1.1" 200 - +2025-12-28 01:31:29,693 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:31:29] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 01:31:29,701 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:31:29] "GET /api/market/types?_t=1766856689374 HTTP/1.1" 200 - +2025-12-28 01:31:29,711 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:31:29] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 01:31:29,719 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:31:29] "GET /api/credentials/list?user_id=1&_t=1766856689374 HTTP/1.1" 200 - +2025-12-28 01:31:29,733 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:31:29] "GET /api/strategies/equityCurve?id=2&_t=1766856689394 HTTP/1.1" 200 - +2025-12-28 01:31:29,744 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:31:29] "GET /api/strategies/equityCurve?id=2&_t=1766856689394 HTTP/1.1" 200 - +2025-12-28 01:31:30,330 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:31:30] "GET /api/credentials/get?id=2&user_id=1&_t=1766856690021 HTTP/1.1" 200 - +2025-12-28 01:31:33,397 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:31:33] "GET /api/strategies/positions?id=2&_t=1766856693390 HTTP/1.1" 200 - +2025-12-28 01:31:38,707 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:31:38] "GET /api/strategies/positions?id=2&_t=1766856698386 HTTP/1.1" 200 - +2025-12-28 01:31:43,401 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:31:43] "GET /api/strategies/positions?id=2&_t=1766856703395 HTTP/1.1" 200 - +2025-12-28 01:31:48,702 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:31:48] "GET /api/strategies/positions?id=2&_t=1766856708386 HTTP/1.1" 200 - +2025-12-28 01:31:53,399 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:31:53] "GET /api/strategies/positions?id=2&_t=1766856713384 HTTP/1.1" 200 - +2025-12-28 01:31:58,697 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:31:58] "GET /api/strategies/positions?id=2&_t=1766856718385 HTTP/1.1" 200 - +2025-12-28 01:31:59,385 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:31:59] "GET /api/strategies/equityCurve?id=2&_t=1766856719378 HTTP/1.1" 200 - +2025-12-28 01:32:00,847 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:00] "GET /api/strategies/equityCurve?id=2&_t=1766856720524 HTTP/1.1" 200 - +2025-12-28 01:32:00,852 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:00] "GET /api/strategies/equityCurve?id=2&_t=1766856720524 HTTP/1.1" 200 - +2025-12-28 01:32:01,696 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:01] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 01:32:02,013 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:02] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 01:32:02,015 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:02] "GET /api/market/types?_t=1766856721684 HTTP/1.1" 200 - +2025-12-28 01:32:02,022 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:02] "GET /api/credentials/list?user_id=1&_t=1766856721684 HTTP/1.1" 200 - +2025-12-28 01:32:02,039 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:02] "GET /api/strategies/equityCurve?id=2&_t=1766856721721 HTTP/1.1" 200 - +2025-12-28 01:32:02,049 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:02] "GET /api/strategies/equityCurve?id=2&_t=1766856721721 HTTP/1.1" 200 - +2025-12-28 01:32:02,523 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:02] "GET /api/credentials/get?id=2&user_id=1&_t=1766856722192 HTTP/1.1" 200 - +2025-12-28 01:32:03,407 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:03] "GET /api/strategies/positions?id=2&_t=1766856723397 HTTP/1.1" 200 - +2025-12-28 01:32:08,713 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:08] "GET /api/strategies/positions?id=2&_t=1766856728394 HTTP/1.1" 200 - +2025-12-28 01:32:11,019 - app.routes.strategy - INFO - ๆญฃๅœจๆต‹่ฏ•่ฟžๆŽฅ: exchange_id=okx +2025-12-28 01:32:11,020 - app.routes.strategy - INFO - API Key: 4cd9c... (len=36) +2025-12-28 01:32:11,020 - app.routes.strategy - INFO - Secret Key: 2B295... (len=32) +2025-12-28 01:32:12,946 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:12] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-28 01:32:13,719 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:13] "GET /api/strategies/positions?id=2&_t=1766856733399 HTTP/1.1" 200 - +2025-12-28 01:32:14,048 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:14] "PUT /api/strategies/update?id=2 HTTP/1.1" 200 - +2025-12-28 01:32:14,431 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:32:14,431 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:32:14,432 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:32:14,432 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:14] "GET /api/strategies?_t=1766856734110 HTTP/1.1" 200 - +2025-12-28 01:32:16,225 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:16] "GET /api/strategies/equityCurve?id=2&_t=1766856736213 HTTP/1.1" 200 - +2025-12-28 01:32:16,525 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:16] "GET /api/strategies/equityCurve?id=2&_t=1766856736213 HTTP/1.1" 200 - +2025-12-28 01:32:17,393 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:17] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 01:32:17,397 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:17] "GET /api/market/types?_t=1766856737072 HTTP/1.1" 200 - +2025-12-28 01:32:17,402 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:17] "GET /api/credentials/list?user_id=1&_t=1766856737072 HTTP/1.1" 200 - +2025-12-28 01:32:17,467 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:17] "GET /api/credentials/get?id=2&user_id=1&_t=1766856737153 HTTP/1.1" 200 - +2025-12-28 01:32:17,515 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:17] "GET /api/strategies/equityCurve?id=2&_t=1766856737188 HTTP/1.1" 200 - +2025-12-28 01:32:17,522 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:17] "GET /api/strategies/equityCurve?id=2&_t=1766856737188 HTTP/1.1" 200 - +2025-12-28 01:32:18,701 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:18] "GET /api/strategies/positions?id=2&_t=1766856738386 HTTP/1.1" 200 - +2025-12-28 01:32:23,395 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:23] "GET /api/strategies/positions?id=2&_t=1766856743387 HTTP/1.1" 200 - +2025-12-28 01:32:28,716 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:28] "GET /api/strategies/positions?id=2&_t=1766856748398 HTTP/1.1" 200 - +2025-12-28 01:32:31,432 - app.routes.strategy - INFO - ๆญฃๅœจๆต‹่ฏ•่ฟžๆŽฅ: exchange_id=okx +2025-12-28 01:32:31,432 - app.routes.strategy - INFO - API Key: 4cd9c... (len=36) +2025-12-28 01:32:31,432 - app.routes.strategy - INFO - Secret Key: 2B295... (len=32) +2025-12-28 01:32:33,127 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:33] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-28 01:32:33,719 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:33] "GET /api/strategies/positions?id=2&_t=1766856753398 HTTP/1.1" 200 - +2025-12-28 01:32:34,712 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:34] "PUT /api/strategies/update?id=2 HTTP/1.1" 200 - +2025-12-28 01:32:35,081 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:32:35,081 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:32:35,081 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:32:35,081 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:35] "GET /api/strategies?_t=1766856754758 HTTP/1.1" 200 - +2025-12-28 01:32:36,924 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:36] "GET /api/strategies/equityCurve?id=2&_t=1766856756907 HTTP/1.1" 200 - +2025-12-28 01:32:37,222 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:37] "GET /api/strategies/equityCurve?id=2&_t=1766856756907 HTTP/1.1" 200 - +2025-12-28 01:32:37,964 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:37] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 01:32:37,969 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:37] "GET /api/market/types?_t=1766856757630 HTTP/1.1" 200 - +2025-12-28 01:32:37,978 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:37] "GET /api/credentials/list?user_id=1&_t=1766856757630 HTTP/1.1" 200 - +2025-12-28 01:32:38,043 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:38] "GET /api/credentials/get?id=2&user_id=1&_t=1766856757711 HTTP/1.1" 200 - +2025-12-28 01:32:38,077 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:38] "GET /api/strategies/equityCurve?id=2&_t=1766856757746 HTTP/1.1" 200 - +2025-12-28 01:32:38,087 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:38] "GET /api/strategies/equityCurve?id=2&_t=1766856757746 HTTP/1.1" 200 - +2025-12-28 01:32:38,708 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:38] "GET /api/strategies/positions?id=2&_t=1766856758385 HTTP/1.1" 200 - +2025-12-28 01:32:43,392 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:43] "GET /api/strategies/positions?id=2&_t=1766856763385 HTTP/1.1" 200 - +2025-12-28 01:32:46,097 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:32:46,098 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:32:46,098 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:32:46,099 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:46] "GET /api/strategies?_t=1766856766085 HTTP/1.1" 200 - +2025-12-28 01:32:47,646 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:47] "GET /api/strategies/equityCurve?id=2&_t=1766856767630 HTTP/1.1" 200 - +2025-12-28 01:32:47,651 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:47] "GET /api/strategies/equityCurve?id=2&_t=1766856767630 HTTP/1.1" 200 - +2025-12-28 01:32:47,946 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:47] "GET /api/strategies/positions?id=2&_t=1766856767635 HTTP/1.1" 200 - +2025-12-28 01:32:48,922 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:48] "GET /api/market/types?_t=1766856768601 HTTP/1.1" 200 - +2025-12-28 01:32:48,927 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:48] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 01:32:48,938 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:48] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 01:32:48,948 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:48] "GET /api/credentials/list?user_id=1&_t=1766856768601 HTTP/1.1" 200 - +2025-12-28 01:32:48,961 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:48] "GET /api/strategies/equityCurve?id=2&_t=1766856768621 HTTP/1.1" 200 - +2025-12-28 01:32:48,971 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:48] "GET /api/strategies/equityCurve?id=2&_t=1766856768621 HTTP/1.1" 200 - +2025-12-28 01:32:49,542 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:49] "GET /api/credentials/get?id=2&user_id=1&_t=1766856769224 HTTP/1.1" 200 - +2025-12-28 01:32:52,637 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:52] "GET /api/strategies/positions?id=2&_t=1766856772628 HTTP/1.1" 200 - +2025-12-28 01:32:57,961 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:32:57] "GET /api/strategies/positions?id=2&_t=1766856777639 HTTP/1.1" 200 - +2025-12-28 01:33:02,635 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:33:02] "GET /api/strategies/positions?id=2&_t=1766856782628 HTTP/1.1" 200 - +2025-12-28 01:33:07,957 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:33:07] "GET /api/strategies/positions?id=2&_t=1766856787637 HTTP/1.1" 200 - +2025-12-28 01:33:12,649 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:33:12] "GET /api/strategies/positions?id=2&_t=1766856792641 HTTP/1.1" 200 - +2025-12-28 01:33:17,956 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:33:17] "GET /api/strategies/positions?id=2&_t=1766856797638 HTTP/1.1" 200 - +2025-12-28 01:33:18,619 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:33:18] "GET /api/strategies/equityCurve?id=2&_t=1766856798611 HTTP/1.1" 200 - +2025-12-28 01:33:22,952 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:33:22] "GET /api/strategies/positions?id=2&_t=1766856802632 HTTP/1.1" 200 - +2025-12-28 01:33:27,645 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:33:27] "GET /api/strategies/positions?id=2&_t=1766856807638 HTTP/1.1" 200 - +2025-12-28 01:33:32,943 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:33:32] "GET /api/strategies/positions?id=2&_t=1766856812629 HTTP/1.1" 200 - +2025-12-28 01:33:37,640 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:33:37] "GET /api/strategies/positions?id=2&_t=1766856817633 HTTP/1.1" 200 - +2025-12-28 01:33:42,961 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:33:42] "GET /api/strategies/positions?id=2&_t=1766856822641 HTTP/1.1" 200 - +2025-12-28 01:33:47,647 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:33:47] "GET /api/strategies/positions?id=2&_t=1766856827640 HTTP/1.1" 200 - +2025-12-28 01:33:48,928 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:33:48] "GET /api/strategies/equityCurve?id=2&_t=1766856828608 HTTP/1.1" 200 - +2025-12-28 01:33:52,638 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:33:52] "GET /api/strategies/positions?id=2&_t=1766856832631 HTTP/1.1" 200 - +2025-12-28 01:33:57,956 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:33:57] "GET /api/strategies/positions?id=2&_t=1766856837635 HTTP/1.1" 200 - +2025-12-28 01:34:02,648 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:34:02] "GET /api/strategies/positions?id=2&_t=1766856842641 HTTP/1.1" 200 - +2025-12-28 01:34:07,956 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:34:07] "GET /api/strategies/positions?id=2&_t=1766856847637 HTTP/1.1" 200 - +2025-12-28 01:34:12,645 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:34:12] "GET /api/strategies/positions?id=2&_t=1766856852637 HTTP/1.1" 200 - +2025-12-28 01:34:17,951 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:34:17] "GET /api/strategies/positions?id=2&_t=1766856857631 HTTP/1.1" 200 - +2025-12-28 01:34:18,626 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:34:18] "GET /api/strategies/equityCurve?id=2&_t=1766856858617 HTTP/1.1" 200 - +2025-12-28 01:34:22,958 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:34:22] "GET /api/strategies/positions?id=2&_t=1766856862643 HTTP/1.1" 200 - +2025-12-28 01:34:27,634 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:34:27] "GET /api/strategies/positions?id=2&_t=1766856867627 HTTP/1.1" 200 - +2025-12-28 01:34:32,956 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:34:32] "GET /api/strategies/positions?id=2&_t=1766856872638 HTTP/1.1" 200 - +2025-12-28 01:34:37,642 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:34:37] "GET /api/strategies/positions?id=2&_t=1766856877635 HTTP/1.1" 200 - +2025-12-28 01:34:42,946 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:34:42] "GET /api/strategies/positions?id=2&_t=1766856882632 HTTP/1.1" 200 - +2025-12-28 01:34:47,640 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:34:47] "GET /api/strategies/positions?id=2&_t=1766856887632 HTTP/1.1" 200 - +2025-12-28 01:34:48,934 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:34:48] "GET /api/strategies/equityCurve?id=2&_t=1766856888617 HTTP/1.1" 200 - +2025-12-28 01:34:52,638 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:34:52] "GET /api/strategies/positions?id=2&_t=1766856892630 HTTP/1.1" 200 - +2025-12-28 01:34:57,950 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:34:57] "GET /api/strategies/positions?id=2&_t=1766856897628 HTTP/1.1" 200 - +2025-12-28 01:35:02,636 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:35:02] "GET /api/strategies/positions?id=2&_t=1766856902629 HTTP/1.1" 200 - +2025-12-28 01:35:07,952 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:35:07] "GET /api/strategies/positions?id=2&_t=1766856907634 HTTP/1.1" 200 - +2025-12-28 01:35:12,637 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:35:12] "GET /api/strategies/positions?id=2&_t=1766856912630 HTTP/1.1" 200 - +2025-12-28 01:35:17,951 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:35:17] "GET /api/strategies/positions?id=2&_t=1766856917629 HTTP/1.1" 200 - +2025-12-28 01:35:18,630 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:35:18] "GET /api/strategies/equityCurve?id=2&_t=1766856918620 HTTP/1.1" 200 - +2025-12-28 01:35:22,953 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:35:22] "GET /api/strategies/positions?id=2&_t=1766856922634 HTTP/1.1" 200 - +2025-12-28 01:35:27,637 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:35:27] "GET /api/strategies/positions?id=2&_t=1766856927630 HTTP/1.1" 200 - +2025-12-28 01:35:32,946 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:35:32] "GET /api/strategies/positions?id=2&_t=1766856932629 HTTP/1.1" 200 - +2025-12-28 01:35:37,642 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:35:37] "GET /api/strategies/positions?id=2&_t=1766856937634 HTTP/1.1" 200 - +2025-12-28 01:35:42,948 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:35:42] "GET /api/strategies/positions?id=2&_t=1766856942631 HTTP/1.1" 200 - +2025-12-28 01:35:47,650 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:35:47] "GET /api/strategies/positions?id=2&_t=1766856947643 HTTP/1.1" 200 - +2025-12-28 01:35:48,929 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:35:48] "GET /api/strategies/equityCurve?id=2&_t=1766856948610 HTTP/1.1" 200 - +2025-12-28 01:35:52,643 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:35:52] "GET /api/strategies/positions?id=2&_t=1766856952636 HTTP/1.1" 200 - +2025-12-28 01:35:57,950 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:35:57] "GET /api/strategies/positions?id=2&_t=1766856957636 HTTP/1.1" 200 - +2025-12-28 01:36:02,642 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:36:02] "GET /api/strategies/positions?id=2&_t=1766856962634 HTTP/1.1" 200 - +2025-12-28 01:36:07,956 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:36:07] "GET /api/strategies/positions?id=2&_t=1766856967636 HTTP/1.1" 200 - +2025-12-28 01:36:12,645 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:36:12] "GET /api/strategies/positions?id=2&_t=1766856972639 HTTP/1.1" 200 - +2025-12-28 01:36:17,959 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:36:17] "GET /api/strategies/positions?id=2&_t=1766856977638 HTTP/1.1" 200 - +2025-12-28 01:36:18,621 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:36:18] "GET /api/strategies/equityCurve?id=2&_t=1766856978611 HTTP/1.1" 200 - +2025-12-28 01:36:22,951 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:36:22] "GET /api/strategies/positions?id=2&_t=1766856982635 HTTP/1.1" 200 - +2025-12-28 01:36:27,639 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:36:27] "GET /api/strategies/positions?id=2&_t=1766856987632 HTTP/1.1" 200 - +2025-12-28 01:36:31,307 - app.routes.strategy - INFO - ๆญฃๅœจๆต‹่ฏ•่ฟžๆŽฅ: exchange_id=okx +2025-12-28 01:36:31,307 - app.routes.strategy - INFO - API Key: 4cd9c... (len=36) +2025-12-28 01:36:31,307 - app.routes.strategy - INFO - Secret Key: 2B295... (len=32) +2025-12-28 01:36:32,920 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:36:32] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-28 01:36:32,924 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:36:32] "GET /api/strategies/positions?id=2&_t=1766856992633 HTTP/1.1" 200 - +2025-12-28 01:36:34,683 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:36:34] "PUT /api/strategies/update?id=2 HTTP/1.1" 200 - +2025-12-28 01:36:37,740 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:36:37,741 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:36:37,741 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:36:37,741 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:36:37] "GET /api/strategies?_t=1766856994776 HTTP/1.1" 200 - +2025-12-28 01:36:37,750 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:36:37] "GET /api/strategies/positions?id=2&_t=1766856997632 HTTP/1.1" 200 - +2025-12-28 01:36:38,098 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:36:38,099 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:36:38,099 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:36:38,100 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:36:38] "GET /api/strategies?_t=1766856998087 HTTP/1.1" 200 - +2025-12-28 01:36:38,117 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:36:38,117 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:36:38,117 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:36:38,118 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:36:38] "GET /api/strategies?_t=1766856998105 HTTP/1.1" 200 - +2025-12-28 01:36:43,358 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:36:43,358 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:36:43,358 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:36:43,359 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:36:43] "GET /api/strategies?_t=1766857003306 HTTP/1.1" 200 - +2025-12-28 01:36:43,369 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:36:43,370 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:36:43,370 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:36:43,371 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:36:43] "GET /api/strategies?_t=1766857003319 HTTP/1.1" 200 - +2025-12-28 01:37:05,730 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:37:05,730 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:37:05,730 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:37:05,731 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:37:05] "GET /api/strategies?_t=1766857025722 HTTP/1.1" 200 - +2025-12-28 01:37:06,043 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:37:06,044 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:37:06,044 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:37:06,044 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:37:06] "GET /api/strategies?_t=1766857026036 HTTP/1.1" 200 - +2025-12-28 01:38:02,265 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:38:02] "GET /api/strategies/equityCurve?id=2&_t=1766857082239 HTTP/1.1" 200 - +2025-12-28 01:38:02,565 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:38:02] "GET /api/strategies/equityCurve?id=2&_t=1766857082239 HTTP/1.1" 200 - +2025-12-28 01:38:02,578 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:38:02] "GET /api/strategies/positions?id=2&_t=1766857082249 HTTP/1.1" 200 - +2025-12-28 01:38:03,450 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:38:03] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 01:38:03,459 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:38:03] "GET /api/market/types?_t=1766857083126 HTTP/1.1" 200 - +2025-12-28 01:38:03,467 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:38:03] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 01:38:03,475 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:38:03] "GET /api/credentials/list?user_id=1&_t=1766857083126 HTTP/1.1" 200 - +2025-12-28 01:38:03,487 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:38:03] "GET /api/strategies/equityCurve?id=2&_t=1766857083148 HTTP/1.1" 200 - +2025-12-28 01:38:03,494 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:38:03] "GET /api/strategies/equityCurve?id=2&_t=1766857083148 HTTP/1.1" 200 - +2025-12-28 01:38:04,141 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:38:04] "GET /api/credentials/get?id=2&user_id=1&_t=1766857083820 HTTP/1.1" 200 - +2025-12-28 01:38:07,250 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:38:07] "GET /api/strategies/positions?id=2&_t=1766857087241 HTTP/1.1" 200 - +2025-12-28 01:38:12,564 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:38:12] "GET /api/strategies/positions?id=2&_t=1766857092245 HTTP/1.1" 200 - +2025-12-28 01:38:14,665 - app.routes.strategy - INFO - ๆญฃๅœจๆต‹่ฏ•่ฟžๆŽฅ: exchange_id=okx +2025-12-28 01:38:14,665 - app.routes.strategy - INFO - API Key: 4cd9c... (len=36) +2025-12-28 01:38:14,665 - app.routes.strategy - INFO - Secret Key: 2B295... (len=32) +2025-12-28 01:38:16,739 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:38:16] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-28 01:38:17,553 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:38:17] "GET /api/strategies/positions?id=2&_t=1766857097238 HTTP/1.1" 200 - +2025-12-28 01:38:18,591 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:38:18] "PUT /api/strategies/update?id=2 HTTP/1.1" 200 - +2025-12-28 01:38:18,967 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:38:18,968 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:38:18,968 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:38:18,968 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:38:18] "GET /api/strategies?_t=1766857098649 HTTP/1.1" 200 - +2025-12-28 01:38:22,256 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:38:22] "GET /api/strategies/positions?id=2&_t=1766857102250 HTTP/1.1" 200 - +2025-12-28 01:38:27,551 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:38:27] "GET /api/strategies/positions?id=2&_t=1766857107235 HTTP/1.1" 200 - +2025-12-28 01:38:32,253 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:38:32] "GET /api/strategies/positions?id=2&_t=1766857112247 HTTP/1.1" 200 - +2025-12-28 01:38:33,464 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:38:33] "GET /api/strategies/equityCurve?id=2&_t=1766857113144 HTTP/1.1" 200 - +2025-12-28 01:38:37,242 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:38:37] "GET /api/strategies/positions?id=2&_t=1766857117235 HTTP/1.1" 200 - +2025-12-28 01:38:42,550 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:38:42] "GET /api/strategies/positions?id=2&_t=1766857122236 HTTP/1.1" 200 - +2025-12-28 01:38:47,243 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:38:47] "GET /api/strategies/positions?id=2&_t=1766857127236 HTTP/1.1" 200 - +2025-12-28 01:38:52,546 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:38:52] "GET /api/strategies/positions?id=2&_t=1766857132236 HTTP/1.1" 200 - +2025-12-28 01:38:57,255 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:38:57] "GET /api/strategies/positions?id=2&_t=1766857137248 HTTP/1.1" 200 - +2025-12-28 01:39:02,563 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:39:02] "GET /api/strategies/positions?id=2&_t=1766857142246 HTTP/1.1" 200 - +2025-12-28 01:39:03,148 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:39:03] "GET /api/strategies/equityCurve?id=2&_t=1766857143140 HTTP/1.1" 200 - +2025-12-28 01:39:07,551 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:39:07] "GET /api/strategies/positions?id=2&_t=1766857147237 HTTP/1.1" 200 - +2025-12-28 01:39:12,253 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:39:12] "GET /api/strategies/positions?id=2&_t=1766857152247 HTTP/1.1" 200 - +2025-12-28 01:39:17,565 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:39:17] "GET /api/strategies/positions?id=2&_t=1766857157244 HTTP/1.1" 200 - +2025-12-28 01:39:22,250 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:39:22] "GET /api/strategies/positions?id=2&_t=1766857162243 HTTP/1.1" 200 - +2025-12-28 01:39:27,565 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:39:27] "GET /api/strategies/positions?id=2&_t=1766857167245 HTTP/1.1" 200 - +2025-12-28 01:39:32,253 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:39:32] "GET /api/strategies/positions?id=2&_t=1766857172246 HTTP/1.1" 200 - +2025-12-28 01:39:33,458 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:39:33] "GET /api/strategies/equityCurve?id=2&_t=1766857173139 HTTP/1.1" 200 - +2025-12-28 01:39:37,251 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:39:37] "GET /api/strategies/positions?id=2&_t=1766857177244 HTTP/1.1" 200 - +2025-12-28 01:39:42,552 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:39:42] "GET /api/strategies/positions?id=2&_t=1766857182236 HTTP/1.1" 200 - +2025-12-28 01:39:47,243 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:39:47] "GET /api/strategies/positions?id=2&_t=1766857187235 HTTP/1.1" 200 - +2025-12-28 01:39:52,545 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:39:52] "GET /api/strategies/positions?id=2&_t=1766857192235 HTTP/1.1" 200 - +2025-12-28 01:39:57,242 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:39:57] "GET /api/strategies/positions?id=2&_t=1766857197236 HTTP/1.1" 200 - +2025-12-28 01:40:02,556 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:40:02] "GET /api/strategies/positions?id=2&_t=1766857202236 HTTP/1.1" 200 - +2025-12-28 01:40:03,141 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:40:03] "GET /api/strategies/equityCurve?id=2&_t=1766857203134 HTTP/1.1" 200 - +2025-12-28 01:40:07,555 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:40:07] "GET /api/strategies/positions?id=2&_t=1766857207236 HTTP/1.1" 200 - +2025-12-28 01:40:12,254 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:40:12] "GET /api/strategies/positions?id=2&_t=1766857212247 HTTP/1.1" 200 - +2025-12-28 01:40:17,561 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:40:17] "GET /api/strategies/positions?id=2&_t=1766857217245 HTTP/1.1" 200 - +2025-12-28 01:40:22,256 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:40:22] "GET /api/strategies/positions?id=2&_t=1766857222250 HTTP/1.1" 200 - +2025-12-28 01:40:27,556 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:40:27] "GET /api/strategies/positions?id=2&_t=1766857227239 HTTP/1.1" 200 - +2025-12-28 01:40:32,257 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:40:32] "GET /api/strategies/positions?id=2&_t=1766857232249 HTTP/1.1" 200 - +2025-12-28 01:40:33,444 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:40:33] "GET /api/strategies/equityCurve?id=2&_t=1766857233132 HTTP/1.1" 200 - +2025-12-28 01:40:37,246 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:40:37] "GET /api/strategies/positions?id=2&_t=1766857237239 HTTP/1.1" 200 - +2025-12-28 01:40:42,553 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:40:42] "GET /api/strategies/positions?id=2&_t=1766857242238 HTTP/1.1" 200 - +2025-12-28 01:40:47,250 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:40:47] "GET /api/strategies/positions?id=2&_t=1766857247243 HTTP/1.1" 200 - +2025-12-28 01:40:52,560 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:40:52] "GET /api/strategies/positions?id=2&_t=1766857252241 HTTP/1.1" 200 - +2025-12-28 01:40:57,246 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:40:57] "GET /api/strategies/positions?id=2&_t=1766857257239 HTTP/1.1" 200 - +2025-12-28 01:41:02,556 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:41:02] "GET /api/strategies/positions?id=2&_t=1766857262235 HTTP/1.1" 200 - +2025-12-28 01:41:03,139 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:41:03] "GET /api/strategies/equityCurve?id=2&_t=1766857263131 HTTP/1.1" 200 - +2025-12-28 01:41:07,549 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:41:07] "GET /api/strategies/positions?id=2&_t=1766857267236 HTTP/1.1" 200 - +2025-12-28 01:41:12,243 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:41:12] "GET /api/strategies/positions?id=2&_t=1766857272237 HTTP/1.1" 200 - +2025-12-28 01:41:17,545 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:41:17] "GET /api/strategies/positions?id=2&_t=1766857277235 HTTP/1.1" 200 - +2025-12-28 01:41:22,244 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:41:22] "GET /api/strategies/positions?id=2&_t=1766857282237 HTTP/1.1" 200 - +2025-12-28 01:41:27,545 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:41:27] "GET /api/strategies/positions?id=2&_t=1766857287236 HTTP/1.1" 200 - +2025-12-28 01:41:32,243 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:41:32] "GET /api/strategies/positions?id=2&_t=1766857292236 HTTP/1.1" 200 - +2025-12-28 01:41:33,454 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:41:33] "GET /api/strategies/equityCurve?id=2&_t=1766857293132 HTTP/1.1" 200 - +2025-12-28 01:41:37,246 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:41:37] "GET /api/strategies/positions?id=2&_t=1766857297240 HTTP/1.1" 200 - +2025-12-28 01:41:42,551 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:41:42] "GET /api/strategies/positions?id=2&_t=1766857302236 HTTP/1.1" 200 - +2025-12-28 01:41:47,254 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:41:47] "GET /api/strategies/positions?id=2&_t=1766857307247 HTTP/1.1" 200 - +2025-12-28 01:41:52,558 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:41:52] "GET /api/strategies/positions?id=2&_t=1766857312246 HTTP/1.1" 200 - +2025-12-28 01:41:57,261 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:41:57] "GET /api/strategies/positions?id=2&_t=1766857317250 HTTP/1.1" 200 - +2025-12-28 01:42:02,555 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:42:02] "GET /api/strategies/positions?id=2&_t=1766857322244 HTTP/1.1" 200 - +2025-12-28 01:42:03,139 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:42:03] "GET /api/strategies/equityCurve?id=2&_t=1766857323131 HTTP/1.1" 200 - +2025-12-28 01:42:07,557 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:42:07] "GET /api/strategies/positions?id=2&_t=1766857327239 HTTP/1.1" 200 - +2025-12-28 01:42:12,254 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:42:12] "GET /api/strategies/positions?id=2&_t=1766857332246 HTTP/1.1" 200 - +2025-12-28 01:42:17,566 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:42:17] "GET /api/strategies/positions?id=2&_t=1766857337246 HTTP/1.1" 200 - +2025-12-28 01:42:22,251 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:42:22] "GET /api/strategies/positions?id=2&_t=1766857342244 HTTP/1.1" 200 - +2025-12-28 01:42:27,555 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:42:27] "GET /api/strategies/positions?id=2&_t=1766857347236 HTTP/1.1" 200 - +2025-12-28 01:42:30,852 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:42:30,853 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:42:30,853 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:42:30,854 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:42:30] "GET /api/strategies?_t=1766857350843 HTTP/1.1" 200 - +2025-12-28 01:42:31,127 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:42:31,128 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:42:31,128 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:42:31,129 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:42:31] "GET /api/strategies?_t=1766857351117 HTTP/1.1" 200 - +2025-12-28 01:43:11,429 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:43:11,429 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:43:11,429 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:43:11,430 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:43:11] "GET /api/strategies?_t=1766857391420 HTTP/1.1" 200 - +2025-12-28 01:43:11,433 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:43:11,433 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:43:11,433 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:43:11,434 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:43:11] "GET /api/strategies?_t=1766857391425 HTTP/1.1" 200 - +2025-12-28 01:43:18,527 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:43:18] "GET /api/strategies/equityCurve?id=2&_t=1766857398511 HTTP/1.1" 200 - +2025-12-28 01:43:18,845 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:43:18] "GET /api/strategies/equityCurve?id=2&_t=1766857398511 HTTP/1.1" 200 - +2025-12-28 01:43:18,855 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:43:18] "GET /api/strategies/positions?id=2&_t=1766857398517 HTTP/1.1" 200 - +2025-12-28 01:43:19,796 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:43:19] "GET /api/market/types?_t=1766857399459 HTTP/1.1" 200 - +2025-12-28 01:43:19,810 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:43:19] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 01:43:19,821 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:43:19] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 01:43:19,832 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:43:19] "GET /api/credentials/list?user_id=1&_t=1766857399459 HTTP/1.1" 200 - +2025-12-28 01:43:19,846 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:43:19] "GET /api/strategies/equityCurve?id=2&_t=1766857399484 HTTP/1.1" 200 - +2025-12-28 01:43:19,859 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:43:19] "GET /api/strategies/equityCurve?id=2&_t=1766857399484 HTTP/1.1" 200 - +2025-12-28 01:43:20,425 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:43:20] "GET /api/credentials/get?id=2&user_id=1&_t=1766857400106 HTTP/1.1" 200 - +2025-12-28 01:43:23,517 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:43:23] "GET /api/strategies/positions?id=2&_t=1766857403510 HTTP/1.1" 200 - +2025-12-28 01:43:28,819 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:43:28] "GET /api/strategies/positions?id=2&_t=1766857408506 HTTP/1.1" 200 - +2025-12-28 01:43:33,091 - app.routes.strategy - INFO - ๆญฃๅœจๆต‹่ฏ•่ฟžๆŽฅ: exchange_id=okx +2025-12-28 01:43:33,091 - app.routes.strategy - INFO - API Key: 4cd9c... (len=36) +2025-12-28 01:43:33,091 - app.routes.strategy - INFO - Secret Key: 2B295... (len=32) +2025-12-28 01:43:35,042 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:43:35] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-28 01:43:35,050 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:43:35] "GET /api/strategies/positions?id=2&_t=1766857413509 HTTP/1.1" 200 - +2025-12-28 01:43:36,985 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:43:36] "PUT /api/strategies/update?id=2 HTTP/1.1" 200 - +2025-12-28 01:43:37,248 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:43:37,248 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:43:37,248 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:43:37,249 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:43:37] "GET /api/strategies?_t=1766857417046 HTTP/1.1" 200 - +2025-12-28 01:43:38,519 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:43:38] "GET /api/strategies/positions?id=2&_t=1766857418512 HTTP/1.1" 200 - +2025-12-28 01:43:43,839 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:43:43] "GET /api/strategies/positions?id=2&_t=1766857423521 HTTP/1.1" 200 - +2025-12-28 01:43:48,518 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:43:48] "GET /api/strategies/positions?id=2&_t=1766857428509 HTTP/1.1" 200 - +2025-12-28 01:43:49,705 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:43:49] "GET /api/strategies/equityCurve?id=2&_t=1766857429382 HTTP/1.1" 200 - +2025-12-28 01:43:49,711 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:43:49] "GET /api/strategies/equityCurve?id=2&_t=1766857429382 HTTP/1.1" 200 - +2025-12-28 01:43:50,136 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:43:50] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 01:43:50,443 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:43:50] "GET /api/market/types?_t=1766857430130 HTTP/1.1" 200 - +2025-12-28 01:43:50,450 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:43:50] "GET /api/credentials/list?user_id=1&_t=1766857430130 HTTP/1.1" 200 - +2025-12-28 01:43:50,521 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:43:50] "GET /api/credentials/get?id=2&user_id=1&_t=1766857430211 HTTP/1.1" 200 - +2025-12-28 01:43:50,573 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:43:50] "GET /api/strategies/equityCurve?id=2&_t=1766857430244 HTTP/1.1" 200 - +2025-12-28 01:43:50,580 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:43:50] "GET /api/strategies/equityCurve?id=2&_t=1766857430244 HTTP/1.1" 200 - +2025-12-28 01:43:53,831 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:43:53] "GET /api/strategies/positions?id=2&_t=1766857433511 HTTP/1.1" 200 - +2025-12-28 01:43:58,524 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:43:58] "GET /api/strategies/positions?id=2&_t=1766857438515 HTTP/1.1" 200 - +2025-12-28 01:44:04,295 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:44:04,296 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:44:04,297 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:44:04,300 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:44:04] "GET /api/strategies?_t=1766857444280 HTTP/1.1" 200 - +2025-12-28 01:44:05,456 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:44:05] "GET /api/strategies/equityCurve?id=2&_t=1766857445442 HTTP/1.1" 200 - +2025-12-28 01:44:05,463 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:44:05] "GET /api/strategies/equityCurve?id=2&_t=1766857445442 HTTP/1.1" 200 - +2025-12-28 01:44:05,819 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:44:05] "GET /api/strategies/positions?id=2&_t=1766857445446 HTTP/1.1" 200 - +2025-12-28 01:44:06,542 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:44:06] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 01:44:06,547 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:44:06] "GET /api/market/types?_t=1766857446188 HTTP/1.1" 200 - +2025-12-28 01:44:06,554 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:44:06] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 01:44:06,564 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:44:06] "GET /api/credentials/list?user_id=1&_t=1766857446188 HTTP/1.1" 200 - +2025-12-28 01:44:06,573 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:44:06] "GET /api/strategies/equityCurve?id=2&_t=1766857446211 HTTP/1.1" 200 - +2025-12-28 01:44:06,581 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:44:06] "GET /api/strategies/equityCurve?id=2&_t=1766857446211 HTTP/1.1" 200 - +2025-12-28 01:44:07,185 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:44:07] "GET /api/credentials/get?id=2&user_id=1&_t=1766857446868 HTTP/1.1" 200 - +2025-12-28 01:44:10,453 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:44:10] "GET /api/strategies/positions?id=2&_t=1766857450445 HTTP/1.1" 200 - +2025-12-28 01:44:15,757 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:44:15] "GET /api/strategies/positions?id=2&_t=1766857455440 HTTP/1.1" 200 - +2025-12-28 01:44:20,462 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:44:20] "GET /api/strategies/positions?id=2&_t=1766857460455 HTTP/1.1" 200 - +2025-12-28 01:44:25,767 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:44:25] "GET /api/strategies/positions?id=2&_t=1766857465452 HTTP/1.1" 200 - +2025-12-28 01:44:30,455 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:44:30] "GET /api/strategies/positions?id=2&_t=1766857470449 HTTP/1.1" 200 - +2025-12-28 01:44:35,767 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:44:35] "GET /api/strategies/positions?id=2&_t=1766857475447 HTTP/1.1" 200 - +2025-12-28 01:44:36,210 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:44:36] "GET /api/strategies/equityCurve?id=2&_t=1766857476202 HTTP/1.1" 200 - +2025-12-28 01:44:40,773 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:44:40] "GET /api/strategies/positions?id=2&_t=1766857480455 HTTP/1.1" 200 - +2025-12-28 01:44:45,454 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:44:45] "GET /api/strategies/positions?id=2&_t=1766857485447 HTTP/1.1" 200 - +2025-12-28 01:44:50,768 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:44:50] "GET /api/strategies/positions?id=2&_t=1766857490452 HTTP/1.1" 200 - +2025-12-28 01:44:55,462 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:44:55] "GET /api/strategies/positions?id=2&_t=1766857495454 HTTP/1.1" 200 - +2025-12-28 01:45:00,761 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:45:00] "GET /api/strategies/positions?id=2&_t=1766857500445 HTTP/1.1" 200 - +2025-12-28 01:45:05,449 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:45:05] "GET /api/strategies/positions?id=2&_t=1766857505442 HTTP/1.1" 200 - +2025-12-28 01:45:06,516 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:45:06] "GET /api/strategies/equityCurve?id=2&_t=1766857506194 HTTP/1.1" 200 - +2025-12-28 01:45:10,450 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:45:10] "GET /api/strategies/positions?id=2&_t=1766857510443 HTTP/1.1" 200 - +2025-12-28 01:45:15,766 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:45:15] "GET /api/strategies/positions?id=2&_t=1766857515447 HTTP/1.1" 200 - +2025-12-28 01:45:20,459 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:45:20] "GET /api/strategies/positions?id=2&_t=1766857520451 HTTP/1.1" 200 - +2025-12-28 01:45:25,768 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:45:25] "GET /api/strategies/positions?id=2&_t=1766857525448 HTTP/1.1" 200 - +2025-12-28 01:45:30,450 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:45:30] "GET /api/strategies/positions?id=2&_t=1766857530443 HTTP/1.1" 200 - +2025-12-28 01:45:36,965 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:45:36] "GET /api/strategies/equityCurve?id=2&_t=1766857536193 HTTP/1.1" 200 - +2025-12-28 01:45:36,969 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:45:36] "GET /api/strategies/positions?id=2&_t=1766857535446 HTTP/1.1" 200 - +2025-12-28 01:45:37,314 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:45:37,314 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:45:37,315 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:45:37,315 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:45:37] "GET /api/strategies?_t=1766857537307 HTTP/1.1" 200 - +2025-12-28 01:45:37,333 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:45:37,333 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:45:37,333 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:45:37,334 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:45:37] "GET /api/strategies?_t=1766857537322 HTTP/1.1" 200 - +2025-12-28 01:45:46,639 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:45:46,639 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:45:46,639 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:45:46,639 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:45:46] "GET /api/strategies?_t=1766857546633 HTTP/1.1" 200 - +2025-12-28 01:45:46,646 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:45:46,647 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:45:46,647 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:45:46,647 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:45:46] "GET /api/strategies?_t=1766857546637 HTTP/1.1" 200 - +2025-12-28 01:47:50,194 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:47:50,195 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:47:50,195 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:47:50,196 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:47:50] "GET /api/strategies?_t=1766857670183 HTTP/1.1" 200 - +2025-12-28 01:47:50,201 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:47:50,201 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:47:50,201 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:47:50,202 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:47:50] "GET /api/strategies?_t=1766857670188 HTTP/1.1" 200 - +2025-12-28 01:48:00,937 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:48:00] "GET /api/strategies/equityCurve?id=2&_t=1766857680920 HTTP/1.1" 200 - +2025-12-28 01:48:00,943 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:48:00] "GET /api/strategies/equityCurve?id=2&_t=1766857680920 HTTP/1.1" 200 - +2025-12-28 01:48:01,245 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:48:01] "GET /api/strategies/positions?id=2&_t=1766857680927 HTTP/1.1" 200 - +2025-12-28 01:48:02,142 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:48:02] "GET /api/market/types?_t=1766857681821 HTTP/1.1" 200 - +2025-12-28 01:48:02,149 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:48:02] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 01:48:02,157 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:48:02] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 01:48:02,166 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:48:02] "GET /api/credentials/list?user_id=1&_t=1766857681821 HTTP/1.1" 200 - +2025-12-28 01:48:02,175 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:48:02] "GET /api/strategies/equityCurve?id=2&_t=1766857681840 HTTP/1.1" 200 - +2025-12-28 01:48:02,182 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:48:02] "GET /api/strategies/equityCurve?id=2&_t=1766857681840 HTTP/1.1" 200 - +2025-12-28 01:48:02,721 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:48:02] "GET /api/credentials/get?id=2&user_id=1&_t=1766857682400 HTTP/1.1" 200 - +2025-12-28 01:48:05,928 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:48:05] "GET /api/strategies/positions?id=2&_t=1766857685920 HTTP/1.1" 200 - +2025-12-28 01:48:11,240 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:48:11] "GET /api/strategies/positions?id=2&_t=1766857690920 HTTP/1.1" 200 - +2025-12-28 01:48:12,494 - app.routes.strategy - INFO - ๆญฃๅœจๆต‹่ฏ•่ฟžๆŽฅ: exchange_id=okx +2025-12-28 01:48:12,495 - app.routes.strategy - INFO - API Key: 4cd9c... (len=36) +2025-12-28 01:48:12,495 - app.routes.strategy - INFO - Secret Key: 2B295... (len=32) +2025-12-28 01:48:14,260 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:48:14] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-28 01:48:16,285 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:48:16] "PUT /api/strategies/update?id=2 HTTP/1.1" 200 - +2025-12-28 01:48:16,291 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:48:16] "GET /api/strategies/positions?id=2&_t=1766857695966 HTTP/1.1" 200 - +2025-12-28 01:48:16,535 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:48:16,536 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:48:16,537 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:48:16,538 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:48:16] "GET /api/strategies?_t=1766857696343 HTTP/1.1" 200 - +2025-12-28 01:48:20,930 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:48:20] "GET /api/strategies/positions?id=2&_t=1766857700919 HTTP/1.1" 200 - +2025-12-28 01:48:26,241 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:48:26] "GET /api/strategies/positions?id=2&_t=1766857705929 HTTP/1.1" 200 - +2025-12-28 01:48:30,930 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:48:30] "GET /api/strategies/positions?id=2&_t=1766857710923 HTTP/1.1" 200 - +2025-12-28 01:48:32,151 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:48:32] "GET /api/strategies/equityCurve?id=2&_t=1766857711833 HTTP/1.1" 200 - +2025-12-28 01:48:35,928 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:48:35] "GET /api/strategies/positions?id=2&_t=1766857715920 HTTP/1.1" 200 - +2025-12-28 01:48:41,248 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:48:41] "GET /api/strategies/positions?id=2&_t=1766857720930 HTTP/1.1" 200 - +2025-12-28 01:48:45,926 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:48:45] "GET /api/strategies/positions?id=2&_t=1766857725918 HTTP/1.1" 200 - +2025-12-28 01:48:51,245 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:48:51] "GET /api/strategies/positions?id=2&_t=1766857730926 HTTP/1.1" 200 - +2025-12-28 01:48:55,924 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:48:55] "GET /api/strategies/positions?id=2&_t=1766857735917 HTTP/1.1" 200 - +2025-12-28 01:49:01,238 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:49:01] "GET /api/strategies/positions?id=2&_t=1766857740917 HTTP/1.1" 200 - +2025-12-28 01:49:01,831 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:49:01] "GET /api/strategies/equityCurve?id=2&_t=1766857741824 HTTP/1.1" 200 - +2025-12-28 01:49:06,249 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:49:06] "GET /api/strategies/positions?id=2&_t=1766857745932 HTTP/1.1" 200 - +2025-12-28 01:49:08,597 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:49:08] "GET /api/strategies/equityCurve?id=2&_t=1766857748587 HTTP/1.1" 200 - +2025-12-28 01:49:08,898 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:49:08] "GET /api/strategies/equityCurve?id=2&_t=1766857748587 HTTP/1.1" 200 - +2025-12-28 01:49:09,650 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:49:09] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 01:49:09,654 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:49:09] "GET /api/market/types?_t=1766857749326 HTTP/1.1" 200 - +2025-12-28 01:49:09,663 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:49:09] "GET /api/credentials/list?user_id=1&_t=1766857749326 HTTP/1.1" 200 - +2025-12-28 01:49:09,748 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:49:09] "GET /api/credentials/get?id=2&user_id=1&_t=1766857749427 HTTP/1.1" 200 - +2025-12-28 01:49:09,781 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:49:09] "GET /api/strategies/equityCurve?id=2&_t=1766857749468 HTTP/1.1" 200 - +2025-12-28 01:49:09,789 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:49:09] "GET /api/strategies/equityCurve?id=2&_t=1766857749468 HTTP/1.1" 200 - +2025-12-28 01:49:11,229 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:49:11] "GET /api/strategies/positions?id=2&_t=1766857750916 HTTP/1.1" 200 - +2025-12-28 01:49:15,931 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:49:15] "GET /api/strategies/positions?id=2&_t=1766857755924 HTTP/1.1" 200 - +2025-12-28 01:49:21,245 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:49:21] "GET /api/strategies/positions?id=2&_t=1766857760928 HTTP/1.1" 200 - +2025-12-28 01:49:25,928 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:49:25] "GET /api/strategies/positions?id=2&_t=1766857765922 HTTP/1.1" 200 - +2025-12-28 01:49:31,247 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:49:31] "GET /api/strategies/positions?id=2&_t=1766857770927 HTTP/1.1" 200 - +2025-12-28 01:49:35,937 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:49:35] "GET /api/strategies/positions?id=2&_t=1766857775928 HTTP/1.1" 200 - +2025-12-28 01:49:39,767 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:49:39] "GET /api/strategies/equityCurve?id=2&_t=1766857779444 HTTP/1.1" 200 - +2025-12-28 01:49:40,924 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:49:40] "GET /api/strategies/positions?id=2&_t=1766857780917 HTTP/1.1" 200 - +2025-12-28 01:49:46,235 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:49:46] "GET /api/strategies/positions?id=2&_t=1766857785918 HTTP/1.1" 200 - +2025-12-28 01:49:50,934 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:49:50] "GET /api/strategies/positions?id=2&_t=1766857790926 HTTP/1.1" 200 - +2025-12-28 01:49:56,244 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:49:56] "GET /api/strategies/positions?id=2&_t=1766857795926 HTTP/1.1" 200 - +2025-12-28 01:49:57,485 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:49:57,485 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:49:57,486 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:49:57,486 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:49:57] "GET /api/strategies?_t=1 HTTP/1.1" 200 - +2025-12-28 01:50:00,925 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:50:00] "GET /api/strategies/positions?id=2&_t=1766857800917 HTTP/1.1" 200 - +2025-12-28 01:50:06,239 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:50:06] "GET /api/strategies/positions?id=2&_t=1766857805919 HTTP/1.1" 200 - +2025-12-28 01:50:09,437 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:50:09] "GET /api/strategies/equityCurve?id=2&_t=1766857809430 HTTP/1.1" 200 - +2025-12-28 01:50:11,245 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:50:11] "GET /api/strategies/positions?id=2&_t=1766857810930 HTTP/1.1" 200 - +2025-12-28 01:50:15,926 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:50:15] "GET /api/strategies/positions?id=2&_t=1766857815918 HTTP/1.1" 200 - +2025-12-28 01:50:19,948 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:50:19] "GET /api/strategies/equityCurve?id=2&_t=1766857819624 HTTP/1.1" 200 - +2025-12-28 01:50:19,959 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:50:19] "GET /api/strategies/equityCurve?id=2&_t=1766857819624 HTTP/1.1" 200 - +2025-12-28 01:50:20,931 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:50:20] "GET /api/strategies/positions?id=2&_t=1766857820923 HTTP/1.1" 200 - +2025-12-28 01:50:23,400 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:50:23] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 01:50:23,409 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:50:23] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 01:50:23,413 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:50:23] "GET /api/market/types?_t=1766857823082 HTTP/1.1" 200 - +2025-12-28 01:50:23,424 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:50:23] "GET /api/credentials/list?user_id=1&_t=1766857823082 HTTP/1.1" 200 - +2025-12-28 01:50:23,438 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:50:23] "GET /api/strategies/equityCurve?id=2&_t=1766857823113 HTTP/1.1" 200 - +2025-12-28 01:50:23,448 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:50:23] "GET /api/strategies/equityCurve?id=2&_t=1766857823113 HTTP/1.1" 200 - +2025-12-28 01:50:24,049 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:50:24] "GET /api/credentials/get?id=2&user_id=1&_t=1766857823734 HTTP/1.1" 200 - +2025-12-28 01:50:25,934 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:50:25] "GET /api/strategies/positions?id=2&_t=1766857825927 HTTP/1.1" 200 - +2025-12-28 01:50:31,242 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:50:31] "GET /api/strategies/positions?id=2&_t=1766857830921 HTTP/1.1" 200 - +2025-12-28 01:50:35,938 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:50:35] "GET /api/strategies/positions?id=2&_t=1766857835930 HTTP/1.1" 200 - +2025-12-28 01:50:41,249 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:50:41] "GET /api/strategies/positions?id=2&_t=1766857840932 HTTP/1.1" 200 - +2025-12-28 01:50:45,933 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:50:45] "GET /api/strategies/positions?id=2&_t=1766857845925 HTTP/1.1" 200 - +2025-12-28 01:50:51,252 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:50:51] "GET /api/strategies/positions?id=2&_t=1766857850930 HTTP/1.1" 200 - +2025-12-28 01:50:53,102 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:50:53] "GET /api/strategies/equityCurve?id=2&_t=1766857853094 HTTP/1.1" 200 - +2025-12-28 01:50:56,238 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:50:56] "GET /api/strategies/positions?id=2&_t=1766857855922 HTTP/1.1" 200 - +2025-12-28 01:51:00,496 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:51:00,497 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:51:00,497 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:51:00,498 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:51:00] "GET /api/strategies?_t=1766857860477 HTTP/1.1" 200 - +2025-12-28 01:51:16,610 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:51:16] "GET /api/market/types?_t=1766857876265 HTTP/1.1" 200 - +2025-12-28 01:51:16,619 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:51:16] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 01:51:16,644 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:51:16] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 01:51:16,672 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:51:16] "GET /api/credentials/list?user_id=1&_t=1766857876265 HTTP/1.1" 200 - +2025-12-28 01:52:17,865 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:52:17] "GET /api/strategies/equityCurve?id=2&_t=1766857937532 HTTP/1.1" 200 - +2025-12-28 01:52:17,868 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:52:17] "GET /api/strategies/equityCurve?id=2&_t=1766857937532 HTTP/1.1" 200 - +2025-12-28 01:52:17,871 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:52:17] "GET /api/strategies/positions?id=2&_t=1766857937537 HTTP/1.1" 200 - +2025-12-28 01:52:18,427 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:52:18] "GET /api/market/types?_t=1766857938421 HTTP/1.1" 200 - +2025-12-28 01:52:18,744 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:52:18] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 01:52:18,753 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:52:18] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 01:52:18,757 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:52:18] "GET /api/credentials/list?user_id=1&_t=1766857938421 HTTP/1.1" 200 - +2025-12-28 01:52:18,765 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:52:18] "GET /api/strategies/equityCurve?id=2&_t=1766857938441 HTTP/1.1" 200 - +2025-12-28 01:52:18,777 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:52:18] "GET /api/strategies/equityCurve?id=2&_t=1766857938441 HTTP/1.1" 200 - +2025-12-28 01:52:19,367 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:52:19] "GET /api/credentials/get?id=2&user_id=1&_t=1766857939058 HTTP/1.1" 200 - +2025-12-28 01:52:22,539 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:52:22] "GET /api/strategies/positions?id=2&_t=1766857942528 HTTP/1.1" 200 - +2025-12-28 01:52:27,849 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:52:27] "GET /api/strategies/positions?id=2&_t=1766857947528 HTTP/1.1" 200 - +2025-12-28 01:52:32,524 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:52:32] "GET /api/strategies/positions?id=2&_t=1766857952517 HTTP/1.1" 200 - +2025-12-28 01:52:37,843 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:52:37] "GET /api/strategies/positions?id=2&_t=1766857957526 HTTP/1.1" 200 - +2025-12-28 01:52:42,526 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:52:42] "GET /api/strategies/positions?id=2&_t=1766857962516 HTTP/1.1" 200 - +2025-12-28 01:52:47,845 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:52:47] "GET /api/strategies/positions?id=2&_t=1766857967525 HTTP/1.1" 200 - +2025-12-28 01:52:48,441 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:52:48] "GET /api/strategies/equityCurve?id=2&_t=1766857968433 HTTP/1.1" 200 - +2025-12-28 01:52:52,828 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:52:52] "GET /api/strategies/positions?id=2&_t=1766857972516 HTTP/1.1" 200 - +2025-12-28 01:52:57,537 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:52:57] "GET /api/strategies/positions?id=2&_t=1766857977530 HTTP/1.1" 200 - +2025-12-28 01:53:02,839 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:53:02] "GET /api/strategies/positions?id=2&_t=1766857982517 HTTP/1.1" 200 - +2025-12-28 01:53:07,525 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:53:07] "GET /api/strategies/positions?id=2&_t=1766857987517 HTTP/1.1" 200 - +2025-12-28 01:53:12,845 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:53:12] "GET /api/strategies/positions?id=2&_t=1766857992523 HTTP/1.1" 200 - +2025-12-28 01:53:17,527 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:53:17] "GET /api/strategies/positions?id=2&_t=1766857997520 HTTP/1.1" 200 - +2025-12-28 01:53:18,751 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:53:18] "GET /api/strategies/equityCurve?id=2&_t=1766857998434 HTTP/1.1" 200 - +2025-12-28 01:53:22,537 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:53:22] "GET /api/strategies/positions?id=2&_t=1766858002530 HTTP/1.1" 200 - +2025-12-28 01:53:27,827 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:53:27] "GET /api/strategies/positions?id=2&_t=1766858007517 HTTP/1.1" 200 - +2025-12-28 01:53:32,533 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:53:32] "GET /api/strategies/positions?id=2&_t=1766858012525 HTTP/1.1" 200 - +2025-12-28 01:53:37,840 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:53:37] "GET /api/strategies/positions?id=2&_t=1766858017520 HTTP/1.1" 200 - +2025-12-28 01:53:44,049 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:53:44] "GET /api/strategies/positions?id=2&_t=1766858022530 HTTP/1.1" 200 - +2025-12-28 01:53:44,390 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:53:44,391 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:53:44,391 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:53:44,392 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:53:44] "GET /api/strategies?_t=1766858024384 HTTP/1.1" 200 - +2025-12-28 01:53:44,415 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:53:44,415 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:53:44,416 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:53:44,416 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:53:44] "GET /api/strategies?_t=1766858024405 HTTP/1.1" 200 - +2025-12-28 01:55:24,788 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:55:24,789 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:55:24,789 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:55:24,789 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:55:24] "GET /api/strategies?_t=1766858124782 HTTP/1.1" 200 - +2025-12-28 01:55:24,805 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:55:24,805 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:55:24,805 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:55:24,805 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:55:24] "GET /api/strategies?_t=1766858124795 HTTP/1.1" 200 - +2025-12-28 01:56:09,546 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:56:09,546 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:56:09,546 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:56:09,546 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:56:09] "GET /api/strategies?_t=1766858169534 HTTP/1.1" 200 - +2025-12-28 01:56:11,327 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:56:11] "GET /api/strategies/equityCurve?id=2&_t=1766858171314 HTTP/1.1" 200 - +2025-12-28 01:56:11,332 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:56:11] "GET /api/strategies/equityCurve?id=2&_t=1766858171314 HTTP/1.1" 200 - +2025-12-28 01:56:11,638 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:56:11] "GET /api/strategies/positions?id=2&_t=1766858171319 HTTP/1.1" 200 - +2025-12-28 01:56:12,386 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:56:12] "GET /api/market/types?_t=1766858172064 HTTP/1.1" 200 - +2025-12-28 01:56:12,396 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:56:12] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 01:56:12,408 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:56:12] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 01:56:12,418 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:56:12] "GET /api/credentials/list?user_id=1&_t=1766858172064 HTTP/1.1" 200 - +2025-12-28 01:56:12,428 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:56:12] "GET /api/strategies/equityCurve?id=2&_t=1766858172086 HTTP/1.1" 200 - +2025-12-28 01:56:12,441 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:56:12] "GET /api/strategies/equityCurve?id=2&_t=1766858172086 HTTP/1.1" 200 - +2025-12-28 01:56:12,939 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:56:12] "GET /api/credentials/get?id=2&user_id=1&_t=1766858172625 HTTP/1.1" 200 - +2025-12-28 01:56:16,322 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:56:16] "GET /api/strategies/positions?id=2&_t=1766858176313 HTTP/1.1" 200 - +2025-12-28 01:56:21,641 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:56:21] "GET /api/strategies/positions?id=2&_t=1766858181325 HTTP/1.1" 200 - +2025-12-28 01:56:26,331 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:56:26] "GET /api/strategies/positions?id=2&_t=1766858186324 HTTP/1.1" 200 - +2025-12-28 01:56:31,625 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:56:31] "GET /api/strategies/positions?id=2&_t=1766858191311 HTTP/1.1" 200 - +2025-12-28 01:56:36,326 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:56:36] "GET /api/strategies/positions?id=2&_t=1766858196314 HTTP/1.1" 200 - +2025-12-28 01:56:41,621 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:56:41] "GET /api/strategies/positions?id=2&_t=1766858201311 HTTP/1.1" 200 - +2025-12-28 01:56:42,103 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:56:42] "GET /api/strategies/equityCurve?id=2&_t=1766858202092 HTTP/1.1" 200 - +2025-12-28 01:56:44,802 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:56:44] "GET /api/strategies/equityCurve?id=2&_t=1766858204789 HTTP/1.1" 200 - +2025-12-28 01:56:44,808 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:56:44] "GET /api/strategies/equityCurve?id=2&_t=1766858204789 HTTP/1.1" 200 - +2025-12-28 01:56:45,960 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:56:45] "GET /api/market/types?_t=1766858205599 HTTP/1.1" 200 - +2025-12-28 01:56:45,963 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:56:45] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 01:56:45,969 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:56:45] "GET /api/credentials/list?user_id=1&_t=1766858205599 HTTP/1.1" 200 - +2025-12-28 01:56:45,974 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:56:45] "GET /api/strategies/equityCurve?id=2&_t=1766858205635 HTTP/1.1" 200 - +2025-12-28 01:56:45,983 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:56:45] "GET /api/strategies/equityCurve?id=2&_t=1766858205635 HTTP/1.1" 200 - +2025-12-28 01:56:45,993 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:56:45] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 01:56:46,625 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:56:46] "GET /api/credentials/get?id=2&user_id=1&_t=1766858206309 HTTP/1.1" 200 - +2025-12-28 01:56:46,628 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:56:46] "GET /api/strategies/positions?id=2&_t=1766858206314 HTTP/1.1" 200 - +2025-12-28 01:56:51,326 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:56:51] "GET /api/strategies/positions?id=2&_t=1766858211316 HTTP/1.1" 200 - +2025-12-28 01:56:56,644 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:56:56] "GET /api/strategies/positions?id=2&_t=1766858216317 HTTP/1.1" 200 - +2025-12-28 01:57:01,318 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:57:01] "GET /api/strategies/positions?id=2&_t=1766858221311 HTTP/1.1" 200 - +2025-12-28 01:57:06,661 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:57:06] "GET /api/strategies/positions?id=2&_t=1766858226325 HTTP/1.1" 200 - +2025-12-28 01:57:11,327 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:57:11] "GET /api/strategies/positions?id=2&_t=1766858231320 HTTP/1.1" 200 - +2025-12-28 01:57:15,932 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:57:15] "GET /api/strategies/equityCurve?id=2&_t=1766858235612 HTTP/1.1" 200 - +2025-12-28 01:57:16,332 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:57:16] "GET /api/strategies/positions?id=2&_t=1766858236324 HTTP/1.1" 200 - +2025-12-28 01:57:21,639 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:57:21] "GET /api/strategies/positions?id=2&_t=1766858241321 HTTP/1.1" 200 - +2025-12-28 01:57:26,320 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:57:26] "GET /api/strategies/positions?id=2&_t=1766858246313 HTTP/1.1" 200 - +2025-12-28 01:57:31,636 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:57:31] "GET /api/strategies/positions?id=2&_t=1766858251317 HTTP/1.1" 200 - +2025-12-28 01:57:36,333 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:57:36] "GET /api/strategies/positions?id=2&_t=1766858256326 HTTP/1.1" 200 - +2025-12-28 01:57:41,644 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:57:41] "GET /api/strategies/positions?id=2&_t=1766858261326 HTTP/1.1" 200 - +2025-12-28 01:57:45,610 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:57:45] "GET /api/strategies/equityCurve?id=2&_t=1766858265602 HTTP/1.1" 200 - +2025-12-28 01:57:46,640 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:57:46] "GET /api/strategies/positions?id=2&_t=1766858266325 HTTP/1.1" 200 - +2025-12-28 01:57:51,320 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:57:51] "GET /api/strategies/positions?id=2&_t=1766858271312 HTTP/1.1" 200 - +2025-12-28 01:57:56,644 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:57:56] "GET /api/strategies/positions?id=2&_t=1766858276324 HTTP/1.1" 200 - +2025-12-28 01:58:01,332 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:58:01] "GET /api/strategies/positions?id=2&_t=1766858281325 HTTP/1.1" 200 - +2025-12-28 01:58:06,646 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:58:06] "GET /api/strategies/positions?id=2&_t=1766858286325 HTTP/1.1" 200 - +2025-12-28 01:58:11,324 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:58:11] "GET /api/strategies/positions?id=2&_t=1766858291317 HTTP/1.1" 200 - +2025-12-28 01:58:15,921 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:58:15] "GET /api/strategies/equityCurve?id=2&_t=1766858295603 HTTP/1.1" 200 - +2025-12-28 01:58:16,319 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:58:16] "GET /api/strategies/positions?id=2&_t=1766858296311 HTTP/1.1" 200 - +2025-12-28 01:58:21,635 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:58:21] "GET /api/strategies/positions?id=2&_t=1766858301318 HTTP/1.1" 200 - +2025-12-28 01:58:26,324 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:58:26] "GET /api/strategies/positions?id=2&_t=1766858306317 HTTP/1.1" 200 - +2025-12-28 01:58:31,630 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:58:31] "GET /api/strategies/positions?id=2&_t=1766858311314 HTTP/1.1" 200 - +2025-12-28 01:58:36,332 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:58:36] "GET /api/strategies/positions?id=2&_t=1766858316325 HTTP/1.1" 200 - +2025-12-28 01:58:41,628 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:58:41] "GET /api/strategies/positions?id=2&_t=1766858321311 HTTP/1.1" 200 - +2025-12-28 01:58:44,465 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:58:44] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 01:58:44,473 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:58:44] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 01:58:44,772 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:58:44] "GET /api/market/types?_t=1766858324453 HTTP/1.1" 200 - +2025-12-28 01:58:44,777 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-28 01:58:45,802 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:58:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 01:58:59,101 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:58:59] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 01:58:59,120 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:58:59] "GET /api/market/types?_t=1766858338769 HTTP/1.1" 200 - +2025-12-28 01:58:59,141 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:58:59] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 01:58:59,348 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-28 01:58:59,354 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:58:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 01:58:59,988 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 01:58:59,989 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 01:58:59,989 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 01:58:59,990 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:58:59] "GET /api/strategies?_t=1766858339970 HTTP/1.1" 200 - +2025-12-28 01:59:01,516 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:59:01] "GET /api/strategies/equityCurve?id=2&_t=1766858341197 HTTP/1.1" 200 - +2025-12-28 01:59:01,524 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:59:01] "GET /api/strategies/equityCurve?id=2&_t=1766858341197 HTTP/1.1" 200 - +2025-12-28 01:59:01,532 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:59:01] "GET /api/strategies/positions?id=2&_t=1766858341202 HTTP/1.1" 200 - +2025-12-28 01:59:06,203 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:59:06] "GET /api/strategies/positions?id=2&_t=1766858346195 HTTP/1.1" 200 - +2025-12-28 01:59:11,525 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:59:11] "GET /api/strategies/positions?id=2&_t=1766858351209 HTTP/1.1" 200 - +2025-12-28 01:59:16,212 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:59:16] "GET /api/strategies/positions?id=2&_t=1766858356204 HTTP/1.1" 200 - +2025-12-28 01:59:21,524 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:59:21] "GET /api/strategies/positions?id=2&_t=1766858361205 HTTP/1.1" 200 - +2025-12-28 01:59:26,214 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:59:26] "GET /api/strategies/positions?id=2&_t=1766858366206 HTTP/1.1" 200 - +2025-12-28 01:59:31,518 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:59:31] "GET /api/strategies/equityCurve?id=2&_t=1766858371196 HTTP/1.1" 200 - +2025-12-28 01:59:31,520 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:59:31] "GET /api/strategies/positions?id=2&_t=1766858371196 HTTP/1.1" 200 - +2025-12-28 01:59:36,210 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:59:36] "GET /api/strategies/positions?id=2&_t=1766858376204 HTTP/1.1" 200 - +2025-12-28 01:59:41,525 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:59:41] "GET /api/strategies/positions?id=2&_t=1766858381204 HTTP/1.1" 200 - +2025-12-28 01:59:46,204 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:59:46] "GET /api/strategies/positions?id=2&_t=1766858386197 HTTP/1.1" 200 - +2025-12-28 01:59:51,515 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:59:51] "GET /api/strategies/positions?id=2&_t=1766858391199 HTTP/1.1" 200 - +2025-12-28 01:59:56,215 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 01:59:56] "GET /api/strategies/positions?id=2&_t=1766858396207 HTTP/1.1" 200 - +2025-12-28 02:00:01,509 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:00:01] "GET /api/strategies/equityCurve?id=2&_t=1766858401196 HTTP/1.1" 200 - +2025-12-28 02:00:01,512 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:00:01] "GET /api/strategies/positions?id=2&_t=1766858401197 HTTP/1.1" 200 - +2025-12-28 02:00:06,210 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:00:06] "GET /api/strategies/positions?id=2&_t=1766858406203 HTTP/1.1" 200 - +2025-12-28 02:00:11,508 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:00:11] "GET /api/strategies/positions?id=2&_t=1766858411197 HTTP/1.1" 200 - +2025-12-28 02:00:16,202 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:00:16] "GET /api/strategies/positions?id=2&_t=1766858416196 HTTP/1.1" 200 - +2025-12-28 02:00:21,528 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:00:21] "GET /api/strategies/positions?id=2&_t=1766858421210 HTTP/1.1" 200 - +2025-12-28 02:00:26,217 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:00:26] "GET /api/strategies/positions?id=2&_t=1766858426210 HTTP/1.1" 200 - +2025-12-28 02:00:31,511 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:00:31] "GET /api/strategies/equityCurve?id=2&_t=1766858431192 HTTP/1.1" 200 - +2025-12-28 02:00:31,515 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:00:31] "GET /api/strategies/positions?id=2&_t=1766858431208 HTTP/1.1" 200 - +2025-12-28 02:00:36,212 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:00:36] "GET /api/strategies/positions?id=2&_t=1766858436203 HTTP/1.1" 200 - +2025-12-28 02:00:41,516 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:00:41] "GET /api/strategies/positions?id=2&_t=1766858441197 HTTP/1.1" 200 - +2025-12-28 02:00:46,216 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:00:46] "GET /api/strategies/positions?id=2&_t=1766858446209 HTTP/1.1" 200 - +2025-12-28 02:00:51,513 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:00:51] "GET /api/strategies/positions?id=2&_t=1766858451197 HTTP/1.1" 200 - +2025-12-28 02:00:56,211 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:00:56] "GET /api/strategies/positions?id=2&_t=1766858456204 HTTP/1.1" 200 - +2025-12-28 02:01:01,516 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:01:01] "GET /api/strategies/equityCurve?id=2&_t=1766858461196 HTTP/1.1" 200 - +2025-12-28 02:01:01,518 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:01:01] "GET /api/strategies/positions?id=2&_t=1766858461197 HTTP/1.1" 200 - +2025-12-28 02:01:06,216 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:01:06] "GET /api/strategies/positions?id=2&_t=1766858466209 HTTP/1.1" 200 - +2025-12-28 02:01:11,528 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:01:11] "GET /api/strategies/positions?id=2&_t=1766858471210 HTTP/1.1" 200 - +2025-12-28 02:01:16,211 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:01:16] "GET /api/strategies/positions?id=2&_t=1766858476201 HTTP/1.1" 200 - +2025-12-28 02:01:21,522 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:01:21] "GET /api/strategies/positions?id=2&_t=1766858481203 HTTP/1.1" 200 - +2025-12-28 02:01:26,209 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:01:26] "GET /api/strategies/positions?id=2&_t=1766858486201 HTTP/1.1" 200 - +2025-12-28 02:01:31,520 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:01:31] "GET /api/strategies/equityCurve?id=2&_t=1766858491201 HTTP/1.1" 200 - +2025-12-28 02:01:31,523 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:01:31] "GET /api/strategies/positions?id=2&_t=1766858491202 HTTP/1.1" 200 - +2025-12-28 02:01:36,210 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:01:36] "GET /api/strategies/positions?id=2&_t=1766858496201 HTTP/1.1" 200 - +2025-12-28 02:01:41,523 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:01:41] "GET /api/strategies/positions?id=2&_t=1766858501205 HTTP/1.1" 200 - +2025-12-28 02:01:46,202 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:01:46] "GET /api/strategies/positions?id=2&_t=1766858506196 HTTP/1.1" 200 - +2025-12-28 02:01:51,520 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:01:51] "GET /api/strategies/positions?id=2&_t=1766858511201 HTTP/1.1" 200 - +2025-12-28 02:01:56,213 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:01:56] "GET /api/strategies/positions?id=2&_t=1766858516206 HTTP/1.1" 200 - +2025-12-28 02:02:01,514 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:02:01] "GET /api/strategies/equityCurve?id=2&_t=1766858521199 HTTP/1.1" 200 - +2025-12-28 02:02:01,517 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:02:01] "GET /api/strategies/positions?id=2&_t=1766858521200 HTTP/1.1" 200 - +2025-12-28 02:02:06,215 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:02:06] "GET /api/strategies/positions?id=2&_t=1766858526209 HTTP/1.1" 200 - +2025-12-28 02:02:11,517 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:02:11] "GET /api/strategies/positions?id=2&_t=1766858531200 HTTP/1.1" 200 - +2025-12-28 02:02:16,205 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:02:16] "GET /api/strategies/positions?id=2&_t=1766858536198 HTTP/1.1" 200 - +2025-12-28 02:02:21,516 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:02:21] "GET /api/strategies/positions?id=2&_t=1766858541199 HTTP/1.1" 200 - +2025-12-28 02:02:26,208 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:02:26] "GET /api/strategies/positions?id=2&_t=1766858546200 HTTP/1.1" 200 - +2025-12-28 02:02:31,515 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:02:31] "GET /api/strategies/equityCurve?id=2&_t=1766858551200 HTTP/1.1" 200 - +2025-12-28 02:02:31,518 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:02:31] "GET /api/strategies/positions?id=2&_t=1766858551201 HTTP/1.1" 200 - +2025-12-28 02:02:36,209 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:02:36] "GET /api/strategies/positions?id=2&_t=1766858556202 HTTP/1.1" 200 - +2025-12-28 02:02:41,531 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:02:41] "GET /api/strategies/positions?id=2&_t=1766858561211 HTTP/1.1" 200 - +2025-12-28 02:02:46,211 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:02:46] "GET /api/strategies/positions?id=2&_t=1766858566203 HTTP/1.1" 200 - +2025-12-28 02:02:51,520 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:02:51] "GET /api/strategies/positions?id=2&_t=1766858571204 HTTP/1.1" 200 - +2025-12-28 02:02:56,205 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:02:56] "GET /api/strategies/positions?id=2&_t=1766858576198 HTTP/1.1" 200 - +2025-12-28 02:03:01,518 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:03:01] "GET /api/strategies/equityCurve?id=2&_t=1766858581201 HTTP/1.1" 200 - +2025-12-28 02:03:01,521 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:03:01] "GET /api/strategies/positions?id=2&_t=1766858581202 HTTP/1.1" 200 - +2025-12-28 02:03:06,215 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:03:06] "GET /api/strategies/positions?id=2&_t=1766858586207 HTTP/1.1" 200 - +2025-12-28 02:03:11,515 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:03:11] "GET /api/strategies/positions?id=2&_t=1766858591197 HTTP/1.1" 200 - +2025-12-28 02:03:16,207 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:03:16] "GET /api/strategies/positions?id=2&_t=1766858596200 HTTP/1.1" 200 - +2025-12-28 02:03:21,518 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:03:21] "GET /api/strategies/positions?id=2&_t=1766858601201 HTTP/1.1" 200 - +2025-12-28 02:03:26,208 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:03:26] "GET /api/strategies/positions?id=2&_t=1766858606200 HTTP/1.1" 200 - +2025-12-28 02:03:31,513 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:03:31] "GET /api/strategies/equityCurve?id=2&_t=1766858611193 HTTP/1.1" 200 - +2025-12-28 02:03:31,518 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:03:31] "GET /api/strategies/positions?id=2&_t=1766858611209 HTTP/1.1" 200 - +2025-12-28 02:03:36,217 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:03:36] "GET /api/strategies/positions?id=2&_t=1766858616210 HTTP/1.1" 200 - +2025-12-28 02:03:41,522 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:03:41] "GET /api/strategies/positions?id=2&_t=1766858621209 HTTP/1.1" 200 - +2025-12-28 02:03:46,213 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:03:46] "GET /api/strategies/positions?id=2&_t=1766858626204 HTTP/1.1" 200 - +2025-12-28 02:03:51,513 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:03:51] "GET /api/strategies/positions?id=2&_t=1766858631196 HTTP/1.1" 200 - +2025-12-28 02:03:56,209 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:03:56] "GET /api/strategies/positions?id=2&_t=1766858636203 HTTP/1.1" 200 - +2025-12-28 02:04:01,524 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:04:01] "GET /api/strategies/equityCurve?id=2&_t=1766858641205 HTTP/1.1" 200 - +2025-12-28 02:04:01,527 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:04:01] "GET /api/strategies/positions?id=2&_t=1766858641206 HTTP/1.1" 200 - +2025-12-28 02:04:06,215 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:04:06] "GET /api/strategies/positions?id=2&_t=1766858646208 HTTP/1.1" 200 - +2025-12-28 02:04:11,522 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:04:11] "GET /api/strategies/positions?id=2&_t=1766858651202 HTTP/1.1" 200 - +2025-12-28 02:04:16,205 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:04:16] "GET /api/strategies/positions?id=2&_t=1766858656199 HTTP/1.1" 200 - +2025-12-28 02:04:21,519 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:04:21] "GET /api/strategies/positions?id=2&_t=1766858661199 HTTP/1.1" 200 - +2025-12-28 02:04:26,208 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:04:26] "GET /api/strategies/positions?id=2&_t=1766858666200 HTTP/1.1" 200 - +2025-12-28 02:04:31,523 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:04:31] "GET /api/strategies/equityCurve?id=2&_t=1766858671203 HTTP/1.1" 200 - +2025-12-28 02:04:31,526 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:04:31] "GET /api/strategies/positions?id=2&_t=1766858671203 HTTP/1.1" 200 - +2025-12-28 02:04:36,206 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:04:36] "GET /api/strategies/positions?id=2&_t=1766858676198 HTTP/1.1" 200 - +2025-12-28 02:04:41,526 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:04:41] "GET /api/strategies/positions?id=2&_t=1766858681205 HTTP/1.1" 200 - +2025-12-28 02:04:46,205 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:04:46] "GET /api/strategies/positions?id=2&_t=1766858686198 HTTP/1.1" 200 - +2025-12-28 02:04:51,512 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:04:51] "GET /api/strategies/positions?id=2&_t=1766858691195 HTTP/1.1" 200 - +2025-12-28 02:04:55,000 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 02:04:55,000 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 02:04:55,000 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 02:04:55,000 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:04:55] "GET /api/strategies?_t=1766858694987 HTTP/1.1" 200 - +2025-12-28 02:07:03,134 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 02:07:03,135 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 02:07:03,138 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 02:07:03,141 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:07:03] "GET /api/strategies?_t=1766858823118 HTTP/1.1" 200 - +2025-12-28 02:08:25,032 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 02:08:25,032 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 02:08:25,032 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 02:08:25,033 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:08:25] "GET /api/strategies?_t=1766858905018 HTTP/1.1" 200 - +2025-12-28 02:10:39,017 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 02:10:39,018 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 02:10:39,018 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 02:10:39,019 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:10:39] "GET /api/strategies?_t=1766859039009 HTTP/1.1" 200 - +2025-12-28 02:12:49,110 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 02:12:49,113 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 02:12:49,121 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 02:12:49,126 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:12:49] "GET /api/strategies?_t=1766859169097 HTTP/1.1" 200 - +2025-12-28 02:12:50,706 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:12:50] "GET /api/market/types?_t=1766859170696 HTTP/1.1" 200 - +2025-12-28 02:12:51,018 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:12:51] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 02:12:51,027 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:12:51] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 02:12:51,057 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-28 02:12:51,592 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:12:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 02:12:54,245 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:12:54] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 02:12:54,251 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:12:54] "GET /api/market/config?_t=1766859174224 HTTP/1.1" 200 - +2025-12-28 02:12:54,559 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 02:12:54,559 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 02:12:54,560 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 02:12:54,560 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 02:12:54,560 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 02:12:55,512 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 000858 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (180776็ง’) +2025-12-28 02:12:55,555 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 300475 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (180776็ง’) +2025-12-28 02:12:55,560 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 600519 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (180776็ง’) +2025-12-28 02:12:56,835 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 00700 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (353577็ง’) +2025-12-28 02:12:56,837 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:12:56] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-28 02:12:56,840 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:12:56] "GET /api/market/types?_t=1766859174294 HTTP/1.1" 200 - +2025-12-28 02:13:00,395 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:13:00] "GET /api/market/types?_t=1766859180386 HTTP/1.1" 200 - +2025-12-28 02:13:00,400 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:13:00] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 02:13:00,709 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:13:00] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 02:13:00,736 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-28 02:13:00,740 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:13:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 02:13:02,177 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 02:13:02,177 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 02:13:02,178 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 02:13:02,178 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:13:02] "GET /api/strategies?_t=1766859181856 HTTP/1.1" 200 - +2025-12-28 02:13:04,695 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 02:13:04,695 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 02:13:04,696 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 02:13:04,696 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:13:04] "GET /api/strategies?_t=1766859184676 HTTP/1.1" 200 - +2025-12-28 02:13:06,170 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:13:06] "GET /api/strategies/equityCurve?id=2&_t=1766859185835 HTTP/1.1" 200 - +2025-12-28 02:13:06,175 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:13:06] "GET /api/strategies/equityCurve?id=2&_t=1766859185835 HTTP/1.1" 200 - +2025-12-28 02:13:06,178 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:13:06] "GET /api/strategies/positions?id=2&_t=1766859185838 HTTP/1.1" 200 - +2025-12-28 02:13:07,556 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:13:07] "GET /api/strategies/trades?id=2&_t=1766859187546 HTTP/1.1" 200 - +2025-12-28 02:13:09,930 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:13:09] "GET /api/market/types?_t=1766859189610 HTTP/1.1" 200 - +2025-12-28 02:13:09,937 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:13:09] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 02:13:09,945 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:13:09] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 02:13:10,191 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-28 02:13:10,193 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:13:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 02:13:10,839 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 02:13:10,839 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 02:13:10,839 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 02:13:10,840 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:13:10] "GET /api/strategies?_t=1766859190823 HTTP/1.1" 200 - +2025-12-28 02:13:12,356 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:13:12] "GET /api/strategies/equityCurve?id=2&_t=1766859192027 HTTP/1.1" 200 - +2025-12-28 02:13:12,508 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:13:12] "GET /api/strategies/equityCurve?id=2&_t=1766859192027 HTTP/1.1" 200 - +2025-12-28 02:13:12,511 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:13:12] "GET /api/strategies/positions?id=2&_t=1766859192028 HTTP/1.1" 200 - +2025-12-28 02:13:13,004 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:13:13] "GET /api/strategies/equityCurve?id=2&_t=1766859192993 HTTP/1.1" 200 - +2025-12-28 02:13:13,316 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:13:13] "GET /api/strategies/equityCurve?id=2&_t=1766859192993 HTTP/1.1" 200 - +2025-12-28 02:13:14,414 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:13:14] "GET /api/market/types?_t=1766859194093 HTTP/1.1" 200 - +2025-12-28 02:13:14,420 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:13:14] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 02:13:14,427 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:13:14] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 02:13:14,430 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:13:14] "GET /api/credentials/list?user_id=1&_t=1766859194093 HTTP/1.1" 200 - +2025-12-28 02:13:14,439 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:13:14] "GET /api/strategies/equityCurve?id=2&_t=1766859194112 HTTP/1.1" 200 - +2025-12-28 02:13:14,444 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:13:14] "GET /api/strategies/equityCurve?id=2&_t=1766859194112 HTTP/1.1" 200 - +2025-12-28 02:13:14,924 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:13:14] "GET /api/credentials/get?id=2&user_id=1&_t=1766859194603 HTTP/1.1" 200 - +2025-12-28 02:13:17,040 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:13:17] "GET /api/strategies/positions?id=2&_t=1766859197032 HTTP/1.1" 200 - +2025-12-28 02:13:22,344 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:13:22] "GET /api/strategies/positions?id=2&_t=1766859202033 HTTP/1.1" 200 - +2025-12-28 02:13:27,040 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:13:27] "GET /api/strategies/positions?id=2&_t=1766859207033 HTTP/1.1" 200 - +2025-12-28 02:13:32,351 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:13:32] "GET /api/strategies/positions?id=2&_t=1766859212034 HTTP/1.1" 200 - +2025-12-28 02:13:37,032 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:13:37] "GET /api/strategies/positions?id=2&_t=1766859217025 HTTP/1.1" 200 - +2025-12-28 02:13:42,337 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:13:42] "GET /api/strategies/positions?id=2&_t=1766859222025 HTTP/1.1" 200 - +2025-12-28 02:13:44,106 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:13:44] "GET /api/strategies/equityCurve?id=2&_t=1766859224099 HTTP/1.1" 200 - +2025-12-28 02:13:44,981 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 02:13:44,982 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 02:13:44,982 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 02:13:44,984 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:13:44] "GET /api/strategies/equityCurve?id=1&_t=1766859224655 HTTP/1.1" 200 - +2025-12-28 02:13:44,987 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 02:13:44,988 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 02:13:44,988 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 02:13:44,989 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:13:44] "GET /api/strategies/equityCurve?id=1&_t=1766859224655 HTTP/1.1" 200 - +2025-12-28 02:13:44,992 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:13:44] "GET /api/strategies/positions?id=1&_t=1766859224659 HTTP/1.1" 200 - +2025-12-28 02:13:45,857 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:13:45] "GET /api/strategies/equityCurve?id=2&_t=1766859225843 HTTP/1.1" 200 - +2025-12-28 02:13:46,165 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:13:46] "GET /api/strategies/equityCurve?id=2&_t=1766859225843 HTTP/1.1" 200 - +2025-12-28 02:13:46,169 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:13:46] "GET /api/strategies/positions?id=2&_t=1766859225847 HTTP/1.1" 200 - +2025-12-28 02:14:32,309 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 02:14:32,310 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 02:14:32,310 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 02:14:32,311 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:14:32] "GET /api/strategies?_t=1766859271993 HTTP/1.1" 200 - +2025-12-28 02:14:33,900 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:14:33] "GET /api/market/types?_t=1766859273892 HTTP/1.1" 200 - +2025-12-28 02:14:34,215 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:14:34] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 02:14:34,223 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:14:34] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 02:14:34,541 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-28 02:14:34,542 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:14:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 02:14:35,405 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:14:35] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 02:14:35,707 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:14:35] "GET /api/market/config?_t=1766859275382 HTTP/1.1" 200 - +2025-12-28 02:14:35,765 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:14:35] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-28 02:14:36,036 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:14:36] "GET /api/market/types?_t=1766859275716 HTTP/1.1" 200 - +2025-12-28 02:17:13,818 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:17:13] "GET /api/market/config?_t=1766859433483 HTTP/1.1" 200 - +2025-12-28 02:17:13,822 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:17:13] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 02:17:14,081 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:17:14] "GET /api/market/types?_t=1766859433826 HTTP/1.1" 200 - +2025-12-28 02:17:14,142 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:17:14] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-28 02:17:14,696 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:17:14] "GET /api/market/types?_t=1766859434684 HTTP/1.1" 200 - +2025-12-28 02:17:15,021 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:17:15] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 02:17:15,028 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:17:15] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 02:17:15,347 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-28 02:17:15,349 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:17:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 02:17:15,874 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 02:17:15,874 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 02:17:15,874 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 02:17:15,875 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:17:15] "GET /api/strategies?_t=1766859435862 HTTP/1.1" 200 - +2025-12-28 02:17:18,924 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:17:18] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 02:17:18,928 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:17:18] "GET /api/market/config?_t=1766859438589 HTTP/1.1" 200 - +2025-12-28 02:17:19,183 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:17:19] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-28 02:17:19,261 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:17:19] "GET /api/market/types?_t=1766859438943 HTTP/1.1" 200 - +2025-12-28 02:17:19,776 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:17:19] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 02:17:20,155 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:17:20] "GET /api/market/types?_t=1766859439761 HTTP/1.1" 200 - +2025-12-28 02:17:20,168 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:17:20] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 02:17:20,171 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-28 02:17:20,172 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:17:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 02:17:21,221 - app.utils.encryption - ERROR - ๅŽป้™ค PKCS7 ๅกซๅ……ๅคฑ่ดฅ: Invalid padding bytes. +2025-12-28 02:17:21,226 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎ้•ฟๅบฆ: 112 ๅญ—่Š‚ +2025-12-28 02:17:21,227 - app.utils.encryption - ERROR - ๅกซๅ……ๆ•ฐๆฎๆœ€ๅŽๅญ—่Š‚: 211 +2025-12-28 02:17:21,233 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:17:21] "GET /api/strategies?_t=1766859440896 HTTP/1.1" 200 - +2025-12-28 02:17:22,214 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:17:22] "GET /api/strategies/equityCurve?id=2&_t=1766859442202 HTTP/1.1" 200 - +2025-12-28 02:17:22,521 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:17:22] "GET /api/strategies/equityCurve?id=2&_t=1766859442202 HTTP/1.1" 200 - +2025-12-28 02:17:22,524 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:17:22] "GET /api/strategies/positions?id=2&_t=1766859442204 HTTP/1.1" 200 - +2025-12-28 02:17:27,533 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:17:27] "GET /api/strategies/positions?id=2&_t=1766859447215 HTTP/1.1" 200 - +2025-12-28 02:17:32,221 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:17:32] "GET /api/strategies/positions?id=2&_t=1766859452214 HTTP/1.1" 200 - +2025-12-28 02:17:37,527 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:17:37] "GET /api/strategies/positions?id=2&_t=1766859457215 HTTP/1.1" 200 - +2025-12-28 02:17:42,207 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:17:42] "GET /api/strategies/positions?id=2&_t=1766859462201 HTTP/1.1" 200 - +2025-12-28 02:17:47,531 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:17:47] "GET /api/strategies/positions?id=2&_t=1766859467214 HTTP/1.1" 200 - +2025-12-28 02:17:52,198 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:17:52] "GET /api/strategies/equityCurve?id=2&_t=1766859472191 HTTP/1.1" 200 - +2025-12-28 02:17:52,517 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:17:52] "GET /api/strategies/positions?id=2&_t=1766859472199 HTTP/1.1" 200 - +2025-12-28 02:17:53,407 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:17:53] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 02:17:53,720 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:17:53] "GET /api/market/types?_t=1766859473399 HTTP/1.1" 200 - +2025-12-28 02:17:53,724 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:17:53] "GET /api/credentials/list?user_id=1&_t=1766859473399 HTTP/1.1" 200 - +2025-12-28 02:17:53,728 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:17:53] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 02:17:57,519 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:17:57] "GET /api/strategies/positions?id=2&_t=1766859477200 HTTP/1.1" 200 - +2025-12-28 02:18:01,050 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:18:01] "GET /api/strategies/equityCurve?id=2&_t=1766859481041 HTTP/1.1" 200 - +2025-12-28 02:18:01,358 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:18:01] "GET /api/strategies/equityCurve?id=2&_t=1766859481041 HTTP/1.1" 200 - +2025-12-28 02:18:02,019 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:18:02] "GET /api/market/types?_t=1766859481707 HTTP/1.1" 200 - +2025-12-28 02:18:02,023 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:18:02] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 02:18:02,033 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:18:02] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 02:18:02,038 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:18:02] "GET /api/credentials/list?user_id=1&_t=1766859481707 HTTP/1.1" 200 - +2025-12-28 02:18:02,043 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:18:02] "GET /api/strategies/equityCurve?id=2&_t=1766859481723 HTTP/1.1" 200 - +2025-12-28 02:18:02,050 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:18:02] "GET /api/strategies/equityCurve?id=2&_t=1766859481723 HTTP/1.1" 200 - +2025-12-28 02:18:02,533 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:18:02] "GET /api/credentials/get?id=2&user_id=1&_t=1766859482211 HTTP/1.1" 200 - +2025-12-28 02:18:02,536 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:18:02] "GET /api/strategies/positions?id=2&_t=1766859482216 HTTP/1.1" 200 - +2025-12-28 02:18:07,220 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:18:07] "GET /api/strategies/positions?id=2&_t=1766859487214 HTTP/1.1" 200 - +2025-12-28 02:18:12,516 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:18:12] "GET /api/strategies/positions?id=2&_t=1766859492202 HTTP/1.1" 200 - +2025-12-28 02:18:12,821 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:18:12] "GET /api/strategies/trades?id=2&_t=1766859492814 HTTP/1.1" 200 - +2025-12-28 02:18:17,524 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:18:17] "GET /api/strategies/positions?id=2&_t=1766859497208 HTTP/1.1" 200 - +2025-12-28 02:18:22,215 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:18:22] "GET /api/strategies/positions?id=2&_t=1766859502209 HTTP/1.1" 200 - +2025-12-28 02:18:27,530 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:18:27] "GET /api/strategies/positions?id=2&_t=1766859507212 HTTP/1.1" 200 - +2025-12-28 02:18:31,732 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:18:31] "GET /api/strategies/equityCurve?id=2&_t=1766859511724 HTTP/1.1" 200 - +2025-12-28 02:18:32,528 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:18:32] "GET /api/strategies/positions?id=2&_t=1766859512207 HTTP/1.1" 200 - +2025-12-28 02:18:37,218 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:18:37] "GET /api/strategies/positions?id=2&_t=1766859517211 HTTP/1.1" 200 - +2025-12-28 02:18:42,527 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:18:42] "GET /api/strategies/positions?id=2&_t=1766859522207 HTTP/1.1" 200 - +2025-12-28 02:18:47,206 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:18:47] "GET /api/strategies/positions?id=2&_t=1766859527200 HTTP/1.1" 200 - +2025-12-28 02:18:52,530 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:18:52] "GET /api/strategies/positions?id=2&_t=1766859532205 HTTP/1.1" 200 - +2025-12-28 02:18:57,218 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:18:57] "GET /api/strategies/positions?id=2&_t=1766859537211 HTTP/1.1" 200 - +2025-12-28 02:19:02,034 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:19:02] "GET /api/strategies/equityCurve?id=2&_t=1766859541715 HTTP/1.1" 200 - +2025-12-28 02:19:02,299 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:19:02] "GET /api/strategies/positions?id=2&_t=1766859542200 HTTP/1.1" 200 - +2025-12-28 02:19:07,210 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:19:07] "GET /api/strategies/positions?id=2&_t=1766859547204 HTTP/1.1" 200 - +2025-12-28 02:19:12,513 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:19:12] "GET /api/strategies/positions?id=2&_t=1766859552199 HTTP/1.1" 200 - +2025-12-28 02:19:17,211 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:19:17] "GET /api/strategies/positions?id=2&_t=1766859557205 HTTP/1.1" 200 - +2025-12-28 02:19:22,521 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:19:22] "GET /api/strategies/positions?id=2&_t=1766859562202 HTTP/1.1" 200 - +2025-12-28 02:19:27,206 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:19:27] "GET /api/strategies/positions?id=2&_t=1766859567200 HTTP/1.1" 200 - +2025-12-28 02:19:32,031 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:19:32] "GET /api/strategies/equityCurve?id=2&_t=1766859571712 HTTP/1.1" 200 - +2025-12-28 02:19:32,296 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:19:32] "GET /api/strategies/positions?id=2&_t=1766859572212 HTTP/1.1" 200 - +2025-12-28 02:19:37,208 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:19:37] "GET /api/strategies/positions?id=2&_t=1766859577201 HTTP/1.1" 200 - +2025-12-28 02:19:42,519 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:19:42] "GET /api/strategies/positions?id=2&_t=1766859582200 HTTP/1.1" 200 - +2025-12-28 02:19:47,220 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:19:47] "GET /api/strategies/positions?id=2&_t=1766859587214 HTTP/1.1" 200 - +2025-12-28 02:19:52,522 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:19:52] "GET /api/strategies/positions?id=2&_t=1766859592206 HTTP/1.1" 200 - +2025-12-28 02:19:57,216 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:19:57] "GET /api/strategies/positions?id=2&_t=1766859597210 HTTP/1.1" 200 - +2025-12-28 02:20:02,034 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:20:02] "GET /api/strategies/equityCurve?id=2&_t=1766859601714 HTTP/1.1" 200 - +2025-12-28 02:20:02,300 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:20:02] "GET /api/strategies/positions?id=2&_t=1766859602202 HTTP/1.1" 200 - +2025-12-28 02:20:07,216 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:20:07] "GET /api/strategies/positions?id=2&_t=1766859607210 HTTP/1.1" 200 - +2025-12-28 02:20:12,524 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:20:12] "GET /api/strategies/positions?id=2&_t=1766859612206 HTTP/1.1" 200 - +2025-12-28 02:20:17,214 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:20:17] "GET /api/strategies/positions?id=2&_t=1766859617208 HTTP/1.1" 200 - +2025-12-28 02:20:22,530 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:20:22] "GET /api/strategies/positions?id=2&_t=1766859622213 HTTP/1.1" 200 - +2025-12-28 02:20:27,206 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:20:27] "GET /api/strategies/positions?id=2&_t=1766859627199 HTTP/1.1" 200 - +2025-12-28 02:20:32,038 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:20:32] "GET /api/strategies/equityCurve?id=2&_t=1766859631719 HTTP/1.1" 200 - +2025-12-28 02:20:32,306 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:20:32] "GET /api/strategies/positions?id=2&_t=1766859632206 HTTP/1.1" 200 - +2025-12-28 02:20:37,215 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:20:37] "GET /api/strategies/positions?id=2&_t=1766859637208 HTTP/1.1" 200 - +2025-12-28 02:20:42,521 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:20:42] "GET /api/strategies/positions?id=2&_t=1766859642201 HTTP/1.1" 200 - +2025-12-28 02:20:47,206 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:20:47] "GET /api/strategies/positions?id=2&_t=1766859647200 HTTP/1.1" 200 - +2025-12-28 02:20:52,519 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:20:52] "GET /api/strategies/positions?id=2&_t=1766859652202 HTTP/1.1" 200 - +2025-12-28 02:20:57,213 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:20:57] "GET /api/strategies/positions?id=2&_t=1766859657207 HTTP/1.1" 200 - +2025-12-28 02:21:02,037 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:21:02] "GET /api/strategies/equityCurve?id=2&_t=1766859661721 HTTP/1.1" 200 - +2025-12-28 02:21:02,303 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:21:02] "GET /api/strategies/positions?id=2&_t=1766859662204 HTTP/1.1" 200 - +2025-12-28 02:21:07,217 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:21:07] "GET /api/strategies/positions?id=2&_t=1766859667211 HTTP/1.1" 200 - +2025-12-28 02:21:12,525 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:21:12] "GET /api/strategies/positions?id=2&_t=1766859672208 HTTP/1.1" 200 - +2025-12-28 02:21:17,210 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:21:17] "GET /api/strategies/positions?id=2&_t=1766859677204 HTTP/1.1" 200 - +2025-12-28 02:21:22,526 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:21:22] "GET /api/strategies/positions?id=2&_t=1766859682207 HTTP/1.1" 200 - +2025-12-28 02:21:27,207 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:21:27] "GET /api/strategies/positions?id=2&_t=1766859687201 HTTP/1.1" 200 - +2025-12-28 02:21:32,042 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:21:32] "GET /api/strategies/equityCurve?id=2&_t=1766859691721 HTTP/1.1" 200 - +2025-12-28 02:21:32,292 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:21:32] "GET /api/strategies/positions?id=2&_t=1766859692209 HTTP/1.1" 200 - +2025-12-28 02:21:37,217 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:21:37] "GET /api/strategies/positions?id=2&_t=1766859697211 HTTP/1.1" 200 - +2025-12-28 02:21:42,529 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:21:42] "GET /api/strategies/positions?id=2&_t=1766859702212 HTTP/1.1" 200 - +2025-12-28 02:21:47,208 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:21:47] "GET /api/strategies/positions?id=2&_t=1766859707202 HTTP/1.1" 200 - +2025-12-28 02:21:52,533 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:21:52] "GET /api/strategies/positions?id=2&_t=1766859712214 HTTP/1.1" 200 - +2025-12-28 02:21:57,218 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:21:57] "GET /api/strategies/positions?id=2&_t=1766859717212 HTTP/1.1" 200 - +2025-12-28 02:22:02,038 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:22:02] "GET /api/strategies/equityCurve?id=2&_t=1766859721722 HTTP/1.1" 200 - +2025-12-28 02:22:02,298 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:22:02] "GET /api/strategies/positions?id=2&_t=1766859722201 HTTP/1.1" 200 - +2025-12-28 02:22:07,206 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:22:07] "GET /api/strategies/positions?id=2&_t=1766859727200 HTTP/1.1" 200 - +2025-12-28 02:22:12,529 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:22:12] "GET /api/strategies/positions?id=2&_t=1766859732208 HTTP/1.1" 200 - +2025-12-28 02:22:17,216 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:22:17] "GET /api/strategies/positions?id=2&_t=1766859737210 HTTP/1.1" 200 - +2025-12-28 02:22:22,516 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:22:22] "GET /api/strategies/positions?id=2&_t=1766859742199 HTTP/1.1" 200 - +2025-12-28 02:22:27,213 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:22:27] "GET /api/strategies/positions?id=2&_t=1766859747207 HTTP/1.1" 200 - +2025-12-28 02:22:32,037 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:22:32] "GET /api/strategies/equityCurve?id=2&_t=1766859751720 HTTP/1.1" 200 - +2025-12-28 02:22:32,304 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:22:32] "GET /api/strategies/positions?id=2&_t=1766859752205 HTTP/1.1" 200 - +2025-12-28 02:22:37,212 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:22:37] "GET /api/strategies/positions?id=2&_t=1766859757206 HTTP/1.1" 200 - +2025-12-28 02:22:42,526 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:22:42] "GET /api/strategies/positions?id=2&_t=1766859762210 HTTP/1.1" 200 - +2025-12-28 02:22:47,222 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:22:47] "GET /api/strategies/positions?id=2&_t=1766859767215 HTTP/1.1" 200 - +2025-12-28 02:22:52,529 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:22:52] "GET /api/strategies/positions?id=2&_t=1766859772214 HTTP/1.1" 200 - +2025-12-28 02:22:57,215 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:22:57] "GET /api/strategies/positions?id=2&_t=1766859777209 HTTP/1.1" 200 - +2025-12-28 02:23:02,030 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:23:02] "GET /api/strategies/equityCurve?id=2&_t=1766859781713 HTTP/1.1" 200 - +2025-12-28 02:23:02,295 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:23:02] "GET /api/strategies/positions?id=2&_t=1766859782213 HTTP/1.1" 200 - +2025-12-28 02:23:07,212 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:23:07] "GET /api/strategies/positions?id=2&_t=1766859787206 HTTP/1.1" 200 - +2025-12-28 02:23:12,528 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:23:12] "GET /api/strategies/positions?id=2&_t=1766859792207 HTTP/1.1" 200 - +2025-12-28 02:23:17,212 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:23:17] "GET /api/strategies/positions?id=2&_t=1766859797203 HTTP/1.1" 200 - +2025-12-28 02:23:22,519 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:23:22] "GET /api/strategies/positions?id=2&_t=1766859802207 HTTP/1.1" 200 - +2025-12-28 02:23:27,210 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:23:27] "GET /api/strategies/positions?id=2&_t=1766859807204 HTTP/1.1" 200 - +2025-12-28 02:23:32,029 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:23:32] "GET /api/strategies/equityCurve?id=2&_t=1766859811716 HTTP/1.1" 200 - +2025-12-28 02:23:32,298 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:23:32] "GET /api/strategies/positions?id=2&_t=1766859812213 HTTP/1.1" 200 - +2025-12-28 02:23:37,208 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:23:37] "GET /api/strategies/positions?id=2&_t=1766859817202 HTTP/1.1" 200 - +2025-12-28 02:23:42,532 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:23:42] "GET /api/strategies/positions?id=2&_t=1766859822215 HTTP/1.1" 200 - +2025-12-28 02:23:47,208 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:23:47] "GET /api/strategies/positions?id=2&_t=1766859827201 HTTP/1.1" 200 - +2025-12-28 02:23:52,531 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:23:52] "GET /api/strategies/positions?id=2&_t=1766859832214 HTTP/1.1" 200 - +2025-12-28 02:23:57,206 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:23:57] "GET /api/strategies/positions?id=2&_t=1766859837199 HTTP/1.1" 200 - +2025-12-28 02:24:02,041 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:24:02] "GET /api/strategies/equityCurve?id=2&_t=1766859841723 HTTP/1.1" 200 - +2025-12-28 02:24:02,307 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:24:02] "GET /api/strategies/positions?id=2&_t=1766859842211 HTTP/1.1" 200 - +2025-12-28 02:24:07,215 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:24:07] "GET /api/strategies/positions?id=2&_t=1766859847208 HTTP/1.1" 200 - +2025-12-28 02:24:12,517 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:24:12] "GET /api/strategies/positions?id=2&_t=1766859852201 HTTP/1.1" 200 - +2025-12-28 02:24:17,211 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:24:17] "GET /api/strategies/positions?id=2&_t=1766859857205 HTTP/1.1" 200 - +2025-12-28 02:24:22,528 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:24:22] "GET /api/strategies/positions?id=2&_t=1766859862215 HTTP/1.1" 200 - +2025-12-28 02:24:27,208 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:24:27] "GET /api/strategies/positions?id=2&_t=1766859867201 HTTP/1.1" 200 - +2025-12-28 02:24:32,044 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:24:32] "GET /api/strategies/equityCurve?id=2&_t=1766859871725 HTTP/1.1" 200 - +2025-12-28 02:24:32,306 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:24:32] "GET /api/strategies/positions?id=2&_t=1766859872206 HTTP/1.1" 200 - +2025-12-28 02:24:37,208 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:24:37] "GET /api/strategies/positions?id=2&_t=1766859877202 HTTP/1.1" 200 - +2025-12-28 02:24:42,524 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:24:42] "GET /api/strategies/positions?id=2&_t=1766859882205 HTTP/1.1" 200 - +2025-12-28 02:24:47,211 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:24:47] "GET /api/strategies/positions?id=2&_t=1766859887205 HTTP/1.1" 200 - +2025-12-28 02:24:52,526 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:24:52] "GET /api/strategies/positions?id=2&_t=1766859892208 HTTP/1.1" 200 - +2025-12-28 02:24:57,220 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:24:57] "GET /api/strategies/positions?id=2&_t=1766859897214 HTTP/1.1" 200 - +2025-12-28 02:25:02,034 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:25:02] "GET /api/strategies/equityCurve?id=2&_t=1766859901718 HTTP/1.1" 200 - +2025-12-28 02:25:02,301 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:25:02] "GET /api/strategies/positions?id=2&_t=1766859902202 HTTP/1.1" 200 - +2025-12-28 02:25:07,221 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:25:07] "GET /api/strategies/positions?id=2&_t=1766859907214 HTTP/1.1" 200 - +2025-12-28 02:25:12,516 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:25:12] "GET /api/strategies/positions?id=2&_t=1766859912201 HTTP/1.1" 200 - +2025-12-28 02:25:17,214 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:25:17] "GET /api/strategies/positions?id=2&_t=1766859917207 HTTP/1.1" 200 - +2025-12-28 02:25:22,530 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:25:22] "GET /api/strategies/positions?id=2&_t=1766859922211 HTTP/1.1" 200 - +2025-12-28 02:25:27,218 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:25:27] "GET /api/strategies/positions?id=2&_t=1766859927212 HTTP/1.1" 200 - +2025-12-28 02:25:32,038 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:25:32] "GET /api/strategies/equityCurve?id=2&_t=1766859931722 HTTP/1.1" 200 - +2025-12-28 02:25:32,301 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:25:32] "GET /api/strategies/positions?id=2&_t=1766859932202 HTTP/1.1" 200 - +2025-12-28 02:25:37,207 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:25:37] "GET /api/strategies/positions?id=2&_t=1766859937201 HTTP/1.1" 200 - +2025-12-28 02:25:42,519 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:25:42] "GET /api/strategies/positions?id=2&_t=1766859942202 HTTP/1.1" 200 - +2025-12-28 02:25:47,208 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:25:47] "GET /api/strategies/positions?id=2&_t=1766859947202 HTTP/1.1" 200 - +2025-12-28 02:25:52,532 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:25:52] "GET /api/strategies/positions?id=2&_t=1766859952215 HTTP/1.1" 200 - +2025-12-28 02:25:57,214 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:25:57] "GET /api/strategies/positions?id=2&_t=1766859957207 HTTP/1.1" 200 - +2025-12-28 02:26:02,039 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:26:02] "GET /api/strategies/equityCurve?id=2&_t=1766859961724 HTTP/1.1" 200 - +2025-12-28 02:26:02,305 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:26:02] "GET /api/strategies/positions?id=2&_t=1766859962207 HTTP/1.1" 200 - +2025-12-28 02:26:07,220 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:26:07] "GET /api/strategies/positions?id=2&_t=1766859967214 HTTP/1.1" 200 - +2025-12-28 02:26:12,530 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:26:12] "GET /api/strategies/positions?id=2&_t=1766859972213 HTTP/1.1" 200 - +2025-12-28 02:26:15,280 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-28 02:26:17,214 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:26:17] "GET /api/strategies/positions?id=2&_t=1766859977208 HTTP/1.1" 200 - +2025-12-28 02:26:22,527 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:26:22] "GET /api/strategies/positions?id=2&_t=1766859982207 HTTP/1.1" 200 - +2025-12-28 02:26:27,221 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:26:27] "GET /api/strategies/positions?id=2&_t=1766859987214 HTTP/1.1" 200 - +2025-12-28 02:26:32,030 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:26:32] "GET /api/strategies/equityCurve?id=2&_t=1766859991709 HTTP/1.1" 200 - +2025-12-28 02:26:32,283 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:26:32] "GET /api/strategies/positions?id=2&_t=1766859992199 HTTP/1.1" 200 - +2025-12-28 02:26:37,219 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:26:37] "GET /api/strategies/positions?id=2&_t=1766859997213 HTTP/1.1" 200 - +2025-12-28 02:26:42,521 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:26:42] "GET /api/strategies/positions?id=2&_t=1766860002204 HTTP/1.1" 200 - +2025-12-28 02:26:47,220 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:26:47] "GET /api/strategies/positions?id=2&_t=1766860007214 HTTP/1.1" 200 - +2025-12-28 02:26:52,528 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:26:52] "GET /api/strategies/positions?id=2&_t=1766860012208 HTTP/1.1" 200 - +2025-12-28 02:26:57,215 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:26:57] "GET /api/strategies/positions?id=2&_t=1766860017208 HTTP/1.1" 200 - +2025-12-28 02:27:02,037 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:27:02] "GET /api/strategies/equityCurve?id=2&_t=1766860021716 HTTP/1.1" 200 - +2025-12-28 02:27:02,287 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:27:02] "GET /api/strategies/positions?id=2&_t=1766860022204 HTTP/1.1" 200 - +2025-12-28 02:27:07,211 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:27:07] "GET /api/strategies/positions?id=2&_t=1766860027204 HTTP/1.1" 200 - +2025-12-28 02:27:12,517 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:27:12] "GET /api/strategies/positions?id=2&_t=1766860032200 HTTP/1.1" 200 - +2025-12-28 02:27:17,220 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:27:17] "GET /api/strategies/positions?id=2&_t=1766860037214 HTTP/1.1" 200 - +2025-12-28 02:27:22,538 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:27:22] "GET /api/strategies/positions?id=2&_t=1766860042214 HTTP/1.1" 200 - +2025-12-28 02:27:27,216 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:27:27] "GET /api/strategies/positions?id=2&_t=1766860047209 HTTP/1.1" 200 - +2025-12-28 02:27:32,043 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:27:32] "GET /api/strategies/equityCurve?id=2&_t=1766860051709 HTTP/1.1" 200 - +2025-12-28 02:27:32,524 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:27:32] "GET /api/strategies/positions?id=2&_t=1766860052510 HTTP/1.1" 200 - +2025-12-28 02:27:37,821 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:27:37] "GET /api/strategies/positions?id=2&_t=1766860057506 HTTP/1.1" 200 - +2025-12-28 02:27:42,512 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:27:42] "GET /api/strategies/positions?id=2&_t=1766860062505 HTTP/1.1" 200 - +2025-12-28 02:27:47,821 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:27:47] "GET /api/strategies/positions?id=2&_t=1766860067507 HTTP/1.1" 200 - +2025-12-28 02:27:52,522 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:27:52] "GET /api/strategies/positions?id=2&_t=1766860072513 HTTP/1.1" 200 - +2025-12-28 02:27:57,828 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:27:57] "GET /api/strategies/positions?id=2&_t=1766860077511 HTTP/1.1" 200 - +2025-12-28 02:28:02,578 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:28:02] "GET /api/strategies/equityCurve?id=2&_t=1766860082510 HTTP/1.1" 200 - +2025-12-28 02:28:02,885 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:28:02] "GET /api/strategies/positions?id=2&_t=1766860082511 HTTP/1.1" 200 - +2025-12-28 02:28:07,831 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:28:07] "GET /api/strategies/positions?id=2&_t=1766860087513 HTTP/1.1" 200 - +2025-12-28 02:28:12,521 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:28:12] "GET /api/strategies/positions?id=2&_t=1766860092513 HTTP/1.1" 200 - +2025-12-28 02:28:17,816 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:28:17] "GET /api/strategies/positions?id=2&_t=1766860097503 HTTP/1.1" 200 - +2025-12-28 02:28:22,512 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:28:22] "GET /api/strategies/positions?id=2&_t=1766860102504 HTTP/1.1" 200 - +2025-12-28 02:28:27,826 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:28:27] "GET /api/strategies/positions?id=2&_t=1766860107509 HTTP/1.1" 200 - +2025-12-28 02:28:37,513 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:28:37] "GET /api/strategies/equityCurve?id=2&_t=1766860117504 HTTP/1.1" 200 - +2025-12-28 02:28:37,822 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:28:37] "GET /api/strategies/positions?id=2&_t=1766860117505 HTTP/1.1" 200 - +2025-12-28 02:29:37,833 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:29:37] "GET /api/strategies/positions?id=2&_t=1766860177510 HTTP/1.1" 200 - +2025-12-28 02:29:37,837 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:29:37] "GET /api/strategies/equityCurve?id=2&_t=1766860177511 HTTP/1.1" 200 - +2025-12-28 02:30:37,518 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:30:37] "GET /api/strategies/positions?id=2&_t=1766860237507 HTTP/1.1" 200 - +2025-12-28 02:30:37,829 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:30:37] "GET /api/strategies/equityCurve?id=2&_t=1766860237508 HTTP/1.1" 200 - +2025-12-28 02:31:37,828 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:31:37] "GET /api/strategies/positions?id=2&_t=1766860297512 HTTP/1.1" 200 - +2025-12-28 02:31:37,833 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:31:37] "GET /api/strategies/equityCurve?id=2&_t=1766860297513 HTTP/1.1" 200 - +2025-12-28 02:32:37,521 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:32:37] "GET /api/strategies/positions?id=2&_t=1766860357511 HTTP/1.1" 200 - +2025-12-28 02:32:37,828 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:32:37] "GET /api/strategies/equityCurve?id=2&_t=1766860357512 HTTP/1.1" 200 - +2025-12-28 02:33:37,822 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:33:37] "GET /api/strategies/positions?id=2&_t=1766860417505 HTTP/1.1" 200 - +2025-12-28 02:33:37,826 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:33:37] "GET /api/strategies/equityCurve?id=2&_t=1766860417507 HTTP/1.1" 200 - +2025-12-28 02:34:37,520 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:34:37] "GET /api/strategies/positions?id=2&_t=1766860477511 HTTP/1.1" 200 - +2025-12-28 02:34:37,828 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:34:37] "GET /api/strategies/equityCurve?id=2&_t=1766860477511 HTTP/1.1" 200 - +2025-12-28 02:35:37,820 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:35:37] "GET /api/strategies/positions?id=2&_t=1766860537501 HTTP/1.1" 200 - +2025-12-28 02:35:37,827 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:35:37] "GET /api/strategies/equityCurve?id=2&_t=1766860537502 HTTP/1.1" 200 - +2025-12-28 02:36:37,509 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:36:37] "GET /api/strategies/positions?id=2&_t=1766860597500 HTTP/1.1" 200 - +2025-12-28 02:36:37,820 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:36:37] "GET /api/strategies/equityCurve?id=2&_t=1766860597501 HTTP/1.1" 200 - +2025-12-28 02:37:37,832 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:37:37] "GET /api/strategies/positions?id=2&_t=1766860657505 HTTP/1.1" 200 - +2025-12-28 02:37:37,836 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:37:37] "GET /api/strategies/equityCurve?id=2&_t=1766860657506 HTTP/1.1" 200 - +2025-12-28 02:38:37,523 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:38:37] "GET /api/strategies/positions?id=2&_t=1766860717514 HTTP/1.1" 200 - +2025-12-28 02:38:37,830 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:38:37] "GET /api/strategies/equityCurve?id=2&_t=1766860717514 HTTP/1.1" 200 - +2025-12-28 02:39:37,830 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:39:37] "GET /api/strategies/positions?id=2&_t=1766860777509 HTTP/1.1" 200 - +2025-12-28 02:39:37,833 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:39:37] "GET /api/strategies/equityCurve?id=2&_t=1766860777510 HTTP/1.1" 200 - +2025-12-28 02:40:37,522 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:40:37] "GET /api/strategies/positions?id=2&_t=1766860837513 HTTP/1.1" 200 - +2025-12-28 02:40:37,830 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:40:37] "GET /api/strategies/equityCurve?id=2&_t=1766860837513 HTTP/1.1" 200 - +2025-12-28 02:41:37,833 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:41:37] "GET /api/strategies/positions?id=2&_t=1766860897511 HTTP/1.1" 200 - +2025-12-28 02:41:37,837 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:41:37] "GET /api/strategies/equityCurve?id=2&_t=1766860897511 HTTP/1.1" 200 - +2025-12-28 02:42:37,517 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:42:37] "GET /api/strategies/positions?id=2&_t=1766860957508 HTTP/1.1" 200 - +2025-12-28 02:42:37,826 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:42:37] "GET /api/strategies/equityCurve?id=2&_t=1766860957509 HTTP/1.1" 200 - +2025-12-28 02:43:37,825 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:43:37] "GET /api/strategies/positions?id=2&_t=1766861017505 HTTP/1.1" 200 - +2025-12-28 02:43:37,828 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:43:37] "GET /api/strategies/equityCurve?id=2&_t=1766861017506 HTTP/1.1" 200 - +2025-12-28 02:44:37,518 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:44:37] "GET /api/strategies/positions?id=2&_t=1766861077507 HTTP/1.1" 200 - +2025-12-28 02:44:37,824 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:44:37] "GET /api/strategies/equityCurve?id=2&_t=1766861077508 HTTP/1.1" 200 - +2025-12-28 02:45:37,822 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:45:37] "GET /api/strategies/positions?id=2&_t=1766861137502 HTTP/1.1" 200 - +2025-12-28 02:45:37,826 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:45:37] "GET /api/strategies/equityCurve?id=2&_t=1766861137503 HTTP/1.1" 200 - +2025-12-28 02:46:37,521 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:46:37] "GET /api/strategies/positions?id=2&_t=1766861197500 HTTP/1.1" 200 - +2025-12-28 02:46:37,836 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:46:37] "GET /api/strategies/equityCurve?id=2&_t=1766861197501 HTTP/1.1" 200 - +2025-12-28 02:47:37,838 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:47:37] "GET /api/strategies/positions?id=2&_t=1766861257509 HTTP/1.1" 200 - +2025-12-28 02:47:37,842 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:47:37] "GET /api/strategies/equityCurve?id=2&_t=1766861257510 HTTP/1.1" 200 - +2025-12-28 02:48:37,520 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:48:37] "GET /api/strategies/positions?id=2&_t=1766861317512 HTTP/1.1" 200 - +2025-12-28 02:48:37,830 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:48:37] "GET /api/strategies/equityCurve?id=2&_t=1766861317512 HTTP/1.1" 200 - +2025-12-28 02:49:37,829 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:49:37] "GET /api/strategies/positions?id=2&_t=1766861377511 HTTP/1.1" 200 - +2025-12-28 02:49:37,833 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:49:37] "GET /api/strategies/equityCurve?id=2&_t=1766861377512 HTTP/1.1" 200 - +2025-12-28 02:50:37,515 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:50:37] "GET /api/strategies/positions?id=2&_t=1766861437507 HTTP/1.1" 200 - +2025-12-28 02:50:37,822 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:50:37] "GET /api/strategies/equityCurve?id=2&_t=1766861437508 HTTP/1.1" 200 - +2025-12-28 02:51:37,833 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:51:37] "GET /api/strategies/positions?id=2&_t=1766861497513 HTTP/1.1" 200 - +2025-12-28 02:51:37,837 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:51:37] "GET /api/strategies/equityCurve?id=2&_t=1766861497513 HTTP/1.1" 200 - +2025-12-28 02:52:37,511 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:52:37] "GET /api/strategies/positions?id=2&_t=1766861557502 HTTP/1.1" 200 - +2025-12-28 02:52:37,820 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:52:37] "GET /api/strategies/equityCurve?id=2&_t=1766861557502 HTTP/1.1" 200 - +2025-12-28 02:53:37,829 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:53:37] "GET /api/strategies/positions?id=2&_t=1766861617513 HTTP/1.1" 200 - +2025-12-28 02:53:37,832 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:53:37] "GET /api/strategies/equityCurve?id=2&_t=1766861617514 HTTP/1.1" 200 - +2025-12-28 02:54:37,508 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:54:37] "GET /api/strategies/positions?id=2&_t=1766861677498 HTTP/1.1" 200 - +2025-12-28 02:54:37,813 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:54:37] "GET /api/strategies/equityCurve?id=2&_t=1766861677499 HTTP/1.1" 200 - +2025-12-28 02:55:37,821 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:55:37] "GET /api/strategies/positions?id=2&_t=1766861737503 HTTP/1.1" 200 - +2025-12-28 02:55:37,825 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:55:37] "GET /api/strategies/equityCurve?id=2&_t=1766861737504 HTTP/1.1" 200 - +2025-12-28 02:56:37,518 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:56:37] "GET /api/strategies/positions?id=2&_t=1766861797502 HTTP/1.1" 200 - +2025-12-28 02:56:37,821 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:56:37] "GET /api/strategies/equityCurve?id=2&_t=1766861797502 HTTP/1.1" 200 - +2025-12-28 02:57:37,828 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:57:37] "GET /api/strategies/positions?id=2&_t=1766861857510 HTTP/1.1" 200 - +2025-12-28 02:57:37,832 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:57:37] "GET /api/strategies/equityCurve?id=2&_t=1766861857511 HTTP/1.1" 200 - +2025-12-28 02:58:37,518 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:58:37] "GET /api/strategies/positions?id=2&_t=1766861917511 HTTP/1.1" 200 - +2025-12-28 02:58:37,833 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:58:37] "GET /api/strategies/equityCurve?id=2&_t=1766861917512 HTTP/1.1" 200 - +2025-12-28 02:59:37,831 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:59:37] "GET /api/strategies/positions?id=2&_t=1766861977513 HTTP/1.1" 200 - +2025-12-28 02:59:37,834 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 02:59:37] "GET /api/strategies/equityCurve?id=2&_t=1766861977513 HTTP/1.1" 200 - +2025-12-28 03:00:37,517 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:00:37] "GET /api/strategies/positions?id=2&_t=1766862037510 HTTP/1.1" 200 - +2025-12-28 03:00:37,828 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:00:37] "GET /api/strategies/equityCurve?id=2&_t=1766862037511 HTTP/1.1" 200 - +2025-12-28 03:01:37,829 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:01:37] "GET /api/strategies/positions?id=2&_t=1766862097511 HTTP/1.1" 200 - +2025-12-28 03:01:37,833 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:01:37] "GET /api/strategies/equityCurve?id=2&_t=1766862097512 HTTP/1.1" 200 - +2025-12-28 03:02:37,519 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:02:37] "GET /api/strategies/positions?id=2&_t=1766862157512 HTTP/1.1" 200 - +2025-12-28 03:02:37,828 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:02:37] "GET /api/strategies/equityCurve?id=2&_t=1766862157512 HTTP/1.1" 200 - +2025-12-28 03:03:37,827 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:03:37] "GET /api/strategies/positions?id=2&_t=1766862217509 HTTP/1.1" 200 - +2025-12-28 03:03:37,832 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:03:37] "GET /api/strategies/equityCurve?id=2&_t=1766862217509 HTTP/1.1" 200 - +2025-12-28 03:04:37,514 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:04:37] "GET /api/strategies/positions?id=2&_t=1766862277506 HTTP/1.1" 200 - +2025-12-28 03:04:37,825 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:04:37] "GET /api/strategies/equityCurve?id=2&_t=1766862277507 HTTP/1.1" 200 - +2025-12-28 03:05:37,826 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:05:37] "GET /api/strategies/positions?id=2&_t=1766862337512 HTTP/1.1" 200 - +2025-12-28 03:05:37,831 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:05:37] "GET /api/strategies/equityCurve?id=2&_t=1766862337512 HTTP/1.1" 200 - +2025-12-28 03:06:37,505 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:06:37] "GET /api/strategies/positions?id=2&_t=1766862397499 HTTP/1.1" 200 - +2025-12-28 03:06:37,818 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:06:37] "GET /api/strategies/equityCurve?id=2&_t=1766862397499 HTTP/1.1" 200 - +2025-12-28 03:06:43,709 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:06:43] "GET /api/strategies/positions?id=2&_t=1766862403383 HTTP/1.1" 200 - +2025-12-28 03:06:47,504 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:06:47] "GET /api/strategies/positions?id=2&_t=1766862407498 HTTP/1.1" 200 - +2025-12-28 03:06:52,830 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:06:52] "GET /api/strategies/positions?id=2&_t=1766862412509 HTTP/1.1" 200 - +2025-12-28 03:06:57,516 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:06:57] "GET /api/strategies/positions?id=2&_t=1766862417507 HTTP/1.1" 200 - +2025-12-28 03:07:02,826 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:07:02] "GET /api/strategies/equityCurve?id=2&_t=1766862422507 HTTP/1.1" 200 - +2025-12-28 03:07:02,829 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:07:02] "GET /api/strategies/positions?id=2&_t=1766862422508 HTTP/1.1" 200 - +2025-12-28 03:07:07,518 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:07:07] "GET /api/strategies/positions?id=2&_t=1766862427509 HTTP/1.1" 200 - +2025-12-28 03:07:12,825 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:07:12] "GET /api/strategies/positions?id=2&_t=1766862432505 HTTP/1.1" 200 - +2025-12-28 03:07:17,510 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:07:17] "GET /api/strategies/positions?id=2&_t=1766862437503 HTTP/1.1" 200 - +2025-12-28 03:07:22,831 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:07:22] "GET /api/strategies/positions?id=2&_t=1766862442513 HTTP/1.1" 200 - +2025-12-28 03:07:27,516 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:07:27] "GET /api/strategies/positions?id=2&_t=1766862447508 HTTP/1.1" 200 - +2025-12-28 03:07:32,821 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:07:32] "GET /api/strategies/equityCurve?id=2&_t=1766862452504 HTTP/1.1" 200 - +2025-12-28 03:07:32,824 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:07:32] "GET /api/strategies/positions?id=2&_t=1766862452504 HTTP/1.1" 200 - +2025-12-28 03:07:37,514 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:07:37] "GET /api/strategies/positions?id=2&_t=1766862457506 HTTP/1.1" 200 - +2025-12-28 03:07:42,832 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:07:42] "GET /api/strategies/positions?id=2&_t=1766862462512 HTTP/1.1" 200 - +2025-12-28 03:08:37,523 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:08:37] "GET /api/strategies/positions?id=2&_t=1766862517512 HTTP/1.1" 200 - +2025-12-28 03:08:37,839 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:08:37] "GET /api/strategies/equityCurve?id=2&_t=1766862517513 HTTP/1.1" 200 - +2025-12-28 03:09:37,836 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:09:37] "GET /api/strategies/positions?id=2&_t=1766862577514 HTTP/1.1" 200 - +2025-12-28 03:09:37,839 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:09:37] "GET /api/strategies/equityCurve?id=2&_t=1766862577515 HTTP/1.1" 200 - +2025-12-28 03:10:37,511 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:10:37] "GET /api/strategies/positions?id=2&_t=1766862637502 HTTP/1.1" 200 - +2025-12-28 03:10:37,825 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:10:37] "GET /api/strategies/equityCurve?id=2&_t=1766862637502 HTTP/1.1" 200 - +2025-12-28 03:11:37,820 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:11:37] "GET /api/strategies/positions?id=2&_t=1766862697503 HTTP/1.1" 200 - +2025-12-28 03:11:37,825 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:11:37] "GET /api/strategies/equityCurve?id=2&_t=1766862697504 HTTP/1.1" 200 - +2025-12-28 03:12:37,521 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:12:37] "GET /api/strategies/positions?id=2&_t=1766862757512 HTTP/1.1" 200 - +2025-12-28 03:12:37,831 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:12:37] "GET /api/strategies/equityCurve?id=2&_t=1766862757513 HTTP/1.1" 200 - +2025-12-28 03:13:37,815 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:13:37] "GET /api/strategies/positions?id=2&_t=1766862817500 HTTP/1.1" 200 - +2025-12-28 03:13:37,819 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:13:37] "GET /api/strategies/equityCurve?id=2&_t=1766862817500 HTTP/1.1" 200 - +2025-12-28 03:14:37,517 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:14:37] "GET /api/strategies/positions?id=2&_t=1766862877506 HTTP/1.1" 200 - +2025-12-28 03:14:37,825 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:14:37] "GET /api/strategies/equityCurve?id=2&_t=1766862877507 HTTP/1.1" 200 - +2025-12-28 03:15:37,828 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:15:37] "GET /api/strategies/positions?id=2&_t=1766862937505 HTTP/1.1" 200 - +2025-12-28 03:15:37,832 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:15:37] "GET /api/strategies/equityCurve?id=2&_t=1766862937506 HTTP/1.1" 200 - +2025-12-28 03:16:37,512 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:16:37] "GET /api/strategies/positions?id=2&_t=1766862997506 HTTP/1.1" 200 - +2025-12-28 03:16:37,822 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:16:37] "GET /api/strategies/equityCurve?id=2&_t=1766862997506 HTTP/1.1" 200 - +2025-12-28 03:17:37,828 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:17:37] "GET /api/strategies/positions?id=2&_t=1766863057507 HTTP/1.1" 200 - +2025-12-28 03:17:37,831 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:17:37] "GET /api/strategies/equityCurve?id=2&_t=1766863057507 HTTP/1.1" 200 - +2025-12-28 03:18:37,521 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:18:37] "GET /api/strategies/positions?id=2&_t=1766863117513 HTTP/1.1" 200 - +2025-12-28 03:18:37,831 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:18:37] "GET /api/strategies/equityCurve?id=2&_t=1766863117514 HTTP/1.1" 200 - +2025-12-28 03:19:37,813 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:19:37] "GET /api/strategies/positions?id=2&_t=1766863177502 HTTP/1.1" 200 - +2025-12-28 03:19:37,817 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:19:37] "GET /api/strategies/equityCurve?id=2&_t=1766863177503 HTTP/1.1" 200 - +2025-12-28 03:20:37,513 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:20:37] "GET /api/strategies/positions?id=2&_t=1766863237505 HTTP/1.1" 200 - +2025-12-28 03:20:37,825 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:20:37] "GET /api/strategies/equityCurve?id=2&_t=1766863237505 HTTP/1.1" 200 - +2025-12-28 03:21:37,821 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:21:37] "GET /api/strategies/positions?id=2&_t=1766863297505 HTTP/1.1" 200 - +2025-12-28 03:21:37,824 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:21:37] "GET /api/strategies/equityCurve?id=2&_t=1766863297505 HTTP/1.1" 200 - +2025-12-28 03:22:37,506 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:22:37] "GET /api/strategies/positions?id=2&_t=1766863357499 HTTP/1.1" 200 - +2025-12-28 03:22:37,814 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:22:37] "GET /api/strategies/equityCurve?id=2&_t=1766863357499 HTTP/1.1" 200 - +2025-12-28 03:23:37,813 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:23:37] "GET /api/strategies/positions?id=2&_t=1766863417498 HTTP/1.1" 200 - +2025-12-28 03:23:37,817 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:23:37] "GET /api/strategies/equityCurve?id=2&_t=1766863417499 HTTP/1.1" 200 - +2025-12-28 03:24:37,518 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:24:37] "GET /api/strategies/positions?id=2&_t=1766863477509 HTTP/1.1" 200 - +2025-12-28 03:24:37,831 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:24:37] "GET /api/strategies/equityCurve?id=2&_t=1766863477509 HTTP/1.1" 200 - +2025-12-28 03:25:37,820 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:25:37] "GET /api/strategies/positions?id=2&_t=1766863537504 HTTP/1.1" 200 - +2025-12-28 03:25:37,824 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:25:37] "GET /api/strategies/equityCurve?id=2&_t=1766863537504 HTTP/1.1" 200 - +2025-12-28 03:26:37,513 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:26:37] "GET /api/strategies/positions?id=2&_t=1766863597504 HTTP/1.1" 200 - +2025-12-28 03:26:37,821 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:26:37] "GET /api/strategies/equityCurve?id=2&_t=1766863597505 HTTP/1.1" 200 - +2025-12-28 03:31:03,240 - app - INFO - Pending order worker is disabled (paper mode). Set ENABLE_PENDING_ORDER_WORKER=true to enable. +2025-12-28 03:31:03,241 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-28 03:31:03,254 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-28 03:31:03,254 - werkzeug - INFO - Press CTRL+C to quit +2025-12-28 03:31:07,519 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-28 03:31:07,522 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:31:07] "GET /api/strategies/positions?id=2&_t=1766863867125 HTTP/1.1" 200 - +2025-12-28 03:31:07,528 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:31:07] "GET /api/strategies/equityCurve?id=2&_t=1766863867127 HTTP/1.1" 200 - +2025-12-28 03:31:49,097 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:31:49] "GET /api/market/config?_t=1766863909076 HTTP/1.1" 200 - +2025-12-28 03:31:49,410 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:31:49] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 03:31:49,517 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:31:49] "GET /api/market/types?_t=1766863909194 HTTP/1.1" 200 - +2025-12-28 03:31:49,939 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 03:31:49,939 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 03:31:49,939 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 03:31:49,939 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 03:31:49,939 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 03:31:51,642 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 600519 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (185512็ง’) +2025-12-28 03:31:51,673 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 300475 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (185512็ง’) +2025-12-28 03:31:51,706 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-28 03:31:51,706 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-28 03:31:51,936 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-28 03:31:51,936 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-28 03:31:51,936 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BNB/USDT +2025-12-28 03:31:51,936 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-28 03:31:52,860 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 00700 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (358313็ง’) +2025-12-28 03:31:55,359 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 000858 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (185515็ง’) +2025-12-28 03:31:55,360 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:31:55] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-28 03:31:55,364 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:31:55] "GET /api/market/types?_t=1766863910055 HTTP/1.1" 200 - +2025-12-28 03:31:55,372 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:31:55] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 03:31:55,381 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:31:55] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 03:31:55,713 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-28 03:31:55,943 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-28 03:31:56,174 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-28 03:31:56,175 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BNB/USDT +2025-12-28 03:31:56,175 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:31:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 03:31:58,027 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-28 03:31:58,258 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-28 03:31:58,490 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-28 03:31:58,490 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BNB/USDT +2025-12-28 03:31:58,491 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:31:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 03:32:00,482 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: AShare:600519, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-28 03:32:02,459 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 600519 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (185522็ง’) +2025-12-28 03:32:02,461 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:32:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 03:32:03,998 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:32:03] "GET /api/strategies?_t=1766863923986 HTTP/1.1" 200 - +2025-12-28 03:32:05,459 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:32:05] "GET /api/strategies/equityCurve?id=2&_t=1766863925031 HTTP/1.1" 200 - +2025-12-28 03:32:05,463 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:32:05] "GET /api/strategies/equityCurve?id=2&_t=1766863925031 HTTP/1.1" 200 - +2025-12-28 03:32:05,467 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:32:05] "GET /api/strategies/positions?id=2&_t=1766863925034 HTTP/1.1" 200 - +2025-12-28 03:32:06,446 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:32:06] "GET /api/strategies/equityCurve?id=2&_t=1766863926432 HTTP/1.1" 200 - +2025-12-28 03:32:06,744 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:32:06] "GET /api/strategies/equityCurve?id=2&_t=1766863926432 HTTP/1.1" 200 - +2025-12-28 03:32:08,416 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:32:08] "GET /api/market/types?_t=1766863928094 HTTP/1.1" 200 - +2025-12-28 03:32:08,423 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:32:08] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 03:32:08,428 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:32:08] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 03:32:08,432 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:32:08] "GET /api/credentials/list?user_id=1&_t=1766863928094 HTTP/1.1" 200 - +2025-12-28 03:32:08,439 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:32:08] "GET /api/strategies/equityCurve?id=2&_t=1766863928110 HTTP/1.1" 200 - +2025-12-28 03:32:08,448 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:32:08] "GET /api/strategies/equityCurve?id=2&_t=1766863928110 HTTP/1.1" 200 - +2025-12-28 03:32:08,922 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:32:08] "GET /api/credentials/get?id=2&user_id=1&_t=1766863928611 HTTP/1.1" 200 - +2025-12-28 03:32:10,038 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:32:10] "GET /api/strategies/positions?id=2&_t=1766863930030 HTTP/1.1" 200 - +2025-12-28 03:32:15,344 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:32:15] "GET /api/strategies/positions?id=2&_t=1766863935033 HTTP/1.1" 200 - +2025-12-28 03:32:20,044 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:32:20] "GET /api/strategies/positions?id=2&_t=1766863940038 HTTP/1.1" 200 - +2025-12-28 03:32:25,361 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:32:25] "GET /api/strategies/positions?id=2&_t=1766863945033 HTTP/1.1" 200 - +2025-12-28 03:32:30,047 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:32:30] "GET /api/strategies/positions?id=2&_t=1766863950039 HTTP/1.1" 200 - +2025-12-28 03:32:35,352 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:32:35] "GET /api/strategies/positions?id=2&_t=1766863955037 HTTP/1.1" 200 - +2025-12-28 03:32:38,108 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:32:38] "GET /api/strategies/equityCurve?id=2&_t=1766863958100 HTTP/1.1" 200 - +2025-12-28 03:32:40,343 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:32:40] "GET /api/strategies/positions?id=2&_t=1766863960033 HTTP/1.1" 200 - +2025-12-28 03:32:45,036 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:32:45] "GET /api/strategies/positions?id=2&_t=1766863965029 HTTP/1.1" 200 - +2025-12-28 03:32:50,346 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:32:50] "GET /api/strategies/positions?id=2&_t=1766863970028 HTTP/1.1" 200 - +2025-12-28 03:32:50,612 - app.routes.strategy - INFO - ๆญฃๅœจๆต‹่ฏ•่ฟžๆŽฅ: exchange_id=okx +2025-12-28 03:32:50,612 - app.routes.strategy - INFO - API Key: 4cd9c... (len=36) +2025-12-28 03:32:50,612 - app.routes.strategy - INFO - Secret Key: 2B295... (len=32) +2025-12-28 03:32:54,742 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:32:54] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-28 03:32:55,039 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:32:55] "GET /api/strategies/positions?id=2&_t=1766863975031 HTTP/1.1" 200 - +2025-12-28 03:33:00,346 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:33:00] "GET /api/strategies/positions?id=2&_t=1766863980028 HTTP/1.1" 200 - +2025-12-28 03:33:05,046 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:33:05] "GET /api/strategies/positions?id=2&_t=1766863985040 HTTP/1.1" 200 - +2025-12-28 03:33:05,520 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:33:05] "PUT /api/strategies/update?id=2 HTTP/1.1" 200 - +2025-12-28 03:33:05,778 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:33:05] "GET /api/strategies?_t=1766863985559 HTTP/1.1" 200 - +2025-12-28 03:33:08,111 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:33:08] "GET /api/strategies/equityCurve?id=2&_t=1766863988102 HTTP/1.1" 200 - +2025-12-28 03:33:08,505 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๅผ€ๅง‹่ฟ่กŒๅพช็Žฏ +2025-12-28 03:33:08,505 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๅฏๅŠจๆˆๅŠŸ +2025-12-28 03:33:08,506 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:33:08] "POST /api/strategies/start?id=2 HTTP/1.1" 200 - +2025-12-28 03:33:08,506 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๅˆ็บฆไบคๆ˜“๏ผŒๅธ‚ๅœบ็ฑปๅž‹็ปŸไธ€ไธบ: swap +2025-12-28 03:33:08,738 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv ๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}, ๅฐ่ฏ•ๅค‡็”จๆ–นๆณ• +2025-12-28 03:33:08,739 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:33:08] "GET /api/strategies?_t=1766863988557 HTTP/1.1" 200 - +2025-12-28 03:33:08,970 - app.data_sources.crypto - ERROR - CCXT ๅค‡็”จๆ–นๆณ•ไนŸๅคฑ่ดฅ: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-28 03:33:08,971 - app.data_sources.crypto - WARNING - CCXT ๆœช่ฟ”ๅ›žK็บฟๆ•ฐๆฎ: BTC/USDT +2025-12-28 03:33:08,971 - app.services.trading_executor - ERROR - ็ญ–็•ฅ 2 ่Žทๅ–K็บฟๆ•ฐๆฎๅคฑ่ดฅ +2025-12-28 03:33:08,971 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ่ฟ่กŒๅพช็Žฏ็ป“ๆŸ +2025-12-28 03:33:10,040 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:33:10] "GET /api/strategies/positions?id=2&_t=1766863990034 HTTP/1.1" 200 - +2025-12-28 03:33:15,360 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:33:15] "GET /api/strategies/positions?id=2&_t=1766863995040 HTTP/1.1" 200 - +2025-12-28 03:33:20,047 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:33:20] "GET /api/strategies/positions?id=2&_t=1766864000040 HTTP/1.1" 200 - +2025-12-28 03:33:25,358 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:33:25] "GET /api/strategies/positions?id=2&_t=1766864005042 HTTP/1.1" 200 - +2025-12-28 03:33:30,044 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:33:30] "GET /api/strategies/positions?id=2&_t=1766864010038 HTTP/1.1" 200 - +2025-12-28 03:33:35,346 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:33:35] "GET /api/strategies/positions?id=2&_t=1766864015028 HTTP/1.1" 200 - +2025-12-28 03:33:38,111 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:33:38] "GET /api/strategies/equityCurve?id=2&_t=1766864018102 HTTP/1.1" 200 - +2025-12-28 03:33:40,342 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:33:40] "GET /api/strategies/positions?id=2&_t=1766864020028 HTTP/1.1" 200 - +2025-12-28 03:33:45,035 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:33:45] "GET /api/strategies/positions?id=2&_t=1766864025029 HTTP/1.1" 200 - +2025-12-28 03:33:50,345 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:33:50] "GET /api/strategies/positions?id=2&_t=1766864030028 HTTP/1.1" 200 - +2025-12-28 03:33:55,060 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:33:55] "GET /api/strategies/positions?id=2&_t=1766864035050 HTTP/1.1" 200 - +2025-12-28 03:34:00,358 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:34:00] "GET /api/strategies/positions?id=2&_t=1766864040040 HTTP/1.1" 200 - +2025-12-28 03:34:05,047 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:34:05] "GET /api/strategies/positions?id=2&_t=1766864045040 HTTP/1.1" 200 - +2025-12-28 03:34:08,430 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:34:08] "GET /api/strategies/equityCurve?id=2&_t=1766864048109 HTTP/1.1" 200 - +2025-12-28 03:34:10,034 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:34:10] "GET /api/strategies/positions?id=2&_t=1766864050028 HTTP/1.1" 200 - +2025-12-28 03:34:15,344 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:34:15] "GET /api/strategies/positions?id=2&_t=1766864055028 HTTP/1.1" 200 - +2025-12-28 03:34:20,046 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:34:20] "GET /api/strategies/positions?id=2&_t=1766864060038 HTTP/1.1" 200 - +2025-12-28 03:34:25,359 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:34:25] "GET /api/strategies/positions?id=2&_t=1766864065040 HTTP/1.1" 200 - +2025-12-28 03:34:30,035 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:34:30] "GET /api/strategies/positions?id=2&_t=1766864070029 HTTP/1.1" 200 - +2025-12-28 03:34:35,358 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:34:35] "GET /api/strategies/positions?id=2&_t=1766864075040 HTTP/1.1" 200 - +2025-12-28 03:34:38,104 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:34:38] "GET /api/strategies/equityCurve?id=2&_t=1766864078097 HTTP/1.1" 200 - +2025-12-28 03:34:40,356 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:34:40] "GET /api/strategies/positions?id=2&_t=1766864080040 HTTP/1.1" 200 - +2025-12-28 03:34:45,048 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:34:45] "GET /api/strategies/positions?id=2&_t=1766864085041 HTTP/1.1" 200 - +2025-12-28 03:34:50,346 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:34:50] "GET /api/strategies/positions?id=2&_t=1766864090028 HTTP/1.1" 200 - +2025-12-28 03:34:55,041 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:34:55] "GET /api/strategies/positions?id=2&_t=1766864095034 HTTP/1.1" 200 - +2025-12-28 03:35:00,359 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:35:00] "GET /api/strategies/positions?id=2&_t=1766864100039 HTTP/1.1" 200 - +2025-12-28 03:35:05,036 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:35:05] "GET /api/strategies/positions?id=2&_t=1766864105029 HTTP/1.1" 200 - +2025-12-28 03:35:08,405 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:35:08] "GET /api/strategies/equityCurve?id=2&_t=1766864108096 HTTP/1.1" 200 - +2025-12-28 03:35:10,044 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:35:10] "GET /api/strategies/positions?id=2&_t=1766864110037 HTTP/1.1" 200 - +2025-12-28 03:35:15,350 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:35:15] "GET /api/strategies/positions?id=2&_t=1766864115029 HTTP/1.1" 200 - +2025-12-28 03:35:20,049 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:35:20] "GET /api/strategies/positions?id=2&_t=1766864120043 HTTP/1.1" 200 - +2025-12-28 03:35:25,346 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:35:25] "GET /api/strategies/positions?id=2&_t=1766864125029 HTTP/1.1" 200 - +2025-12-28 03:35:30,034 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:35:30] "GET /api/strategies/positions?id=2&_t=1766864130028 HTTP/1.1" 200 - +2025-12-28 03:35:35,348 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:35:35] "GET /api/strategies/positions?id=2&_t=1766864135029 HTTP/1.1" 200 - +2025-12-28 03:35:38,103 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:35:38] "GET /api/strategies/equityCurve?id=2&_t=1766864138096 HTTP/1.1" 200 - +2025-12-28 03:35:40,347 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:35:40] "GET /api/strategies/positions?id=2&_t=1766864140029 HTTP/1.1" 200 - +2025-12-28 03:35:45,036 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:35:45] "GET /api/strategies/positions?id=2&_t=1766864145028 HTTP/1.1" 200 - +2025-12-28 03:35:50,350 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:35:50] "GET /api/strategies/positions?id=2&_t=1766864150035 HTTP/1.1" 200 - +2025-12-28 03:35:55,048 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:35:55] "GET /api/strategies/positions?id=2&_t=1766864155042 HTTP/1.1" 200 - +2025-12-28 03:36:00,342 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:36:00] "GET /api/strategies/positions?id=2&_t=1766864160029 HTTP/1.1" 200 - +2025-12-28 03:36:05,048 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:36:05] "GET /api/strategies/positions?id=2&_t=1766864165041 HTTP/1.1" 200 - +2025-12-28 03:36:08,103 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:36:08] "GET /api/strategies/equityCurve?id=2&_t=1766864168096 HTTP/1.1" 200 - +2025-12-28 03:36:10,347 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:36:10] "GET /api/strategies/positions?id=2&_t=1766864170032 HTTP/1.1" 200 - +2025-12-28 03:36:15,037 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:36:15] "GET /api/strategies/positions?id=2&_t=1766864175031 HTTP/1.1" 200 - +2025-12-28 03:36:20,348 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:36:20] "GET /api/strategies/positions?id=2&_t=1766864180029 HTTP/1.1" 200 - +2025-12-28 03:36:25,050 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:36:25] "GET /api/strategies/positions?id=2&_t=1766864185044 HTTP/1.1" 200 - +2025-12-28 03:36:30,349 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:36:30] "GET /api/strategies/positions?id=2&_t=1766864190036 HTTP/1.1" 200 - +2025-12-28 03:36:35,049 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:36:35] "GET /api/strategies/positions?id=2&_t=1766864195043 HTTP/1.1" 200 - +2025-12-28 03:36:38,109 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:36:38] "GET /api/strategies/equityCurve?id=2&_t=1766864198102 HTTP/1.1" 200 - +2025-12-28 03:36:40,357 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:36:40] "GET /api/strategies/positions?id=2&_t=1766864200028 HTTP/1.1" 200 - +2025-12-28 03:36:45,047 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:36:45] "GET /api/strategies/positions?id=2&_t=1766864205038 HTTP/1.1" 200 - +2025-12-28 03:36:50,349 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:36:50] "GET /api/strategies/positions?id=2&_t=1766864210028 HTTP/1.1" 200 - +2025-12-28 03:36:54,760 - app - INFO - Pending order worker is disabled (paper mode). Set ENABLE_PENDING_ORDER_WORKER=true to enable. +2025-12-28 03:36:54,760 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-28 03:36:54,774 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-28 03:36:54,774 - werkzeug - INFO - Press CTRL+C to quit +2025-12-28 03:36:55,044 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-28 03:36:55,046 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:36:55] "GET /api/strategies/positions?id=2&_t=1766864215035 HTTP/1.1" 200 - +2025-12-28 03:36:58,382 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:36:58] "GET /api/dashboard/summary?_t=1766864218054 HTTP/1.1" 200 - +2025-12-28 03:36:58,387 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:36:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766864218054 HTTP/1.1" 200 - +2025-12-28 03:37:18,038 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:37:18] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 03:37:18,345 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:37:18] "GET /api/market/config?_t=1766864238017 HTTP/1.1" 200 - +2025-12-28 03:37:18,544 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 03:37:18,544 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 03:37:18,544 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 03:37:18,544 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 03:37:18,544 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 03:37:19,645 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 000858 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (185840็ง’) +2025-12-28 03:37:19,647 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 600519 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (185840็ง’) +2025-12-28 03:37:19,703 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 300475 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (185840็ง’) +2025-12-28 03:37:19,776 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 00700 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (358640็ง’) +2025-12-28 03:37:23,170 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:37:23] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-28 03:37:23,172 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:37:23] "GET /api/market/types?_t=1766864238357 HTTP/1.1" 200 - +2025-12-28 03:37:23,175 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:37:23] "GET /api/strategies?_t=1766864240070 HTTP/1.1" 200 - +2025-12-28 03:37:24,529 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:37:24] "GET /api/strategies/equityCurve?id=2&_t=1766864244204 HTTP/1.1" 200 - +2025-12-28 03:37:24,534 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:37:24] "GET /api/strategies/equityCurve?id=2&_t=1766864244204 HTTP/1.1" 200 - +2025-12-28 03:37:24,538 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:37:24] "GET /api/strategies/positions?id=2&_t=1766864244206 HTTP/1.1" 200 - +2025-12-28 03:37:25,352 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:37:25] "GET /api/strategies/equityCurve?id=1&_t=1766864245340 HTTP/1.1" 200 - +2025-12-28 03:37:25,672 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:37:25] "GET /api/strategies/equityCurve?id=1&_t=1766864245340 HTTP/1.1" 200 - +2025-12-28 03:37:25,679 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:37:25] "GET /api/strategies/positions?id=1&_t=1766864245342 HTTP/1.1" 200 - +2025-12-28 03:37:26,583 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:37:26] "GET /api/strategies/equityCurve?id=1&_t=1766864246258 HTTP/1.1" 200 - +2025-12-28 03:37:26,590 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:37:26] "GET /api/strategies/equityCurve?id=1&_t=1766864246258 HTTP/1.1" 200 - +2025-12-28 03:37:27,403 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:37:27] "GET /api/market/types?_t=1766864247397 HTTP/1.1" 200 - +2025-12-28 03:37:27,722 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:37:27] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 03:37:27,726 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:37:27] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 03:37:27,730 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:37:27] "GET /api/credentials/list?user_id=1&_t=1766864247397 HTTP/1.1" 200 - +2025-12-28 03:37:27,736 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:37:27] "GET /api/strategies/equityCurve?id=1&_t=1766864247416 HTTP/1.1" 200 - +2025-12-28 03:37:27,741 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:37:27] "GET /api/strategies/equityCurve?id=1&_t=1766864247416 HTTP/1.1" 200 - +2025-12-28 03:37:30,668 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:37:30] "GET /api/strategies/positions?id=1&_t=1766864250350 HTTP/1.1" 200 - +2025-12-28 03:37:35,350 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:37:35] "GET /api/strategies/positions?id=1&_t=1766864255344 HTTP/1.1" 200 - +2025-12-28 03:37:40,650 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:37:40] "GET /api/strategies/positions?id=1&_t=1766864260343 HTTP/1.1" 200 - +2025-12-28 03:37:45,351 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:37:45] "GET /api/strategies/positions?id=1&_t=1766864265343 HTTP/1.1" 200 - +2025-12-28 03:37:48,194 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:37:48] "GET /api/credentials/get?id=2&user_id=1&_t=1766864267884 HTTP/1.1" 200 - +2025-12-28 03:37:50,128 - app.routes.strategy - INFO - ๆญฃๅœจๆต‹่ฏ•่ฟžๆŽฅ: exchange_id=okx +2025-12-28 03:37:50,128 - app.routes.strategy - INFO - API Key: 4cd9c... (len=36) +2025-12-28 03:37:50,128 - app.routes.strategy - INFO - Secret Key: 2B295... (len=32) +2025-12-28 03:37:51,939 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:37:51] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-28 03:37:51,943 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:37:51] "GET /api/strategies/positions?id=1&_t=1766864270346 HTTP/1.1" 200 - +2025-12-28 03:37:54,168 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:37:54] "PUT /api/strategies/update?id=1 HTTP/1.1" 200 - +2025-12-28 03:37:54,426 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:37:54] "GET /api/strategies?_t=1766864274203 HTTP/1.1" 200 - +2025-12-28 03:37:55,347 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:37:55] "GET /api/strategies/positions?id=1&_t=1766864275341 HTTP/1.1" 200 - +2025-12-28 03:37:56,732 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๅผ€ๅง‹่ฟ่กŒๅพช็Žฏ +2025-12-28 03:37:56,732 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๅฏๅŠจๆˆๅŠŸ +2025-12-28 03:37:56,732 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:37:56] "POST /api/strategies/start?id=1 HTTP/1.1" 200 - +2025-12-28 03:37:56,733 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๅˆ็บฆไบคๆ˜“๏ผŒๅธ‚ๅœบ็ฑปๅž‹็ปŸไธ€ไธบ: swap +2025-12-28 03:37:56,866 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 03:37:56,884 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๅˆๅง‹ๅŒ–ๅฎŒๆˆ๏ผŒๅพ…่งฆๅ‘ไฟกๅทๆ•ฐ: 0 +2025-12-28 03:37:56,885 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:37:56,885 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:37:56,886 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:37:56,984 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:37:56] "GET /api/strategies?_t=1766864276768 HTTP/1.1" 200 - +2025-12-28 03:37:57,419 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:37:57] "GET /api/strategies/equityCurve?id=1&_t=1766864277410 HTTP/1.1" 200 - +2025-12-28 03:37:57,887 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:37:57,887 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:37:57,887 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:37:58,889 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:37:58,889 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:37:58,889 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:37:59,676 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:37:59] "GET /api/strategies/equityCurve?id=2&_t=1766864279354 HTTP/1.1" 200 - +2025-12-28 03:37:59,679 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:37:59] "GET /api/strategies/equityCurve?id=2&_t=1766864279354 HTTP/1.1" 200 - +2025-12-28 03:37:59,683 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:37:59] "GET /api/strategies/positions?id=2&_t=1766864279359 HTTP/1.1" 200 - +2025-12-28 03:37:59,891 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:37:59,892 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:37:59,892 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:00,893 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:00,893 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:00,893 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:01,020 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:38:01] "GET /api/strategies/equityCurve?id=1&_t=1766864281008 HTTP/1.1" 200 - +2025-12-28 03:38:01,321 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:38:01] "GET /api/strategies/equityCurve?id=1&_t=1766864281008 HTTP/1.1" 200 - +2025-12-28 03:38:01,324 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:38:01] "GET /api/strategies/positions?id=1&_t=1766864281012 HTTP/1.1" 200 - +2025-12-28 03:38:01,895 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:01,895 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:01,895 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:02,898 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:02,898 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:02,898 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:03,850 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:38:03] "GET /api/dashboard/summary?_t=1766864283526 HTTP/1.1" 200 - +2025-12-28 03:38:03,855 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:38:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766864283526 HTTP/1.1" 200 - +2025-12-28 03:38:03,900 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:03,901 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:03,901 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:04,904 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:04,904 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:04,904 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:05,906 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:05,906 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:05,906 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:06,908 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:06,908 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:06,909 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:07,910 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:07,910 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:07,910 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:08,116 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:38:08] "GET /api/strategies?_t=1766864288104 HTTP/1.1" 200 - +2025-12-28 03:38:08,912 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:08,913 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:08,913 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:09,542 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:38:09] "GET /api/strategies/equityCurve?id=1&_t=1766864289106 HTTP/1.1" 200 - +2025-12-28 03:38:09,545 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:38:09] "GET /api/strategies/equityCurve?id=1&_t=1766864289106 HTTP/1.1" 200 - +2025-12-28 03:38:09,549 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:38:09] "GET /api/strategies/positions?id=1&_t=1766864289109 HTTP/1.1" 200 - +2025-12-28 03:38:09,824 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:38:09] "GET /api/strategies/equityCurve?id=2&_t=1766864289816 HTTP/1.1" 200 - +2025-12-28 03:38:09,915 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:09,915 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:09,916 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:10,140 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:38:10] "GET /api/strategies/equityCurve?id=2&_t=1766864289816 HTTP/1.1" 200 - +2025-12-28 03:38:10,143 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:38:10] "GET /api/strategies/positions?id=2&_t=1766864289817 HTTP/1.1" 200 - +2025-12-28 03:38:10,917 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:10,918 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:10,918 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:11,285 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:38:11] "GET /api/dashboard/summary?_t=1766864290957 HTTP/1.1" 200 - +2025-12-28 03:38:11,291 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:38:11] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766864290957 HTTP/1.1" 200 - +2025-12-28 03:38:11,919 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:11,919 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:11,920 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:12,921 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:12,921 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:12,921 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:13,923 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:13,923 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:13,923 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:14,925 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:14,925 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:14,925 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:15,926 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:15,927 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:15,927 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:16,928 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:16,929 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:16,929 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:17,930 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:17,930 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:17,931 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:18,888 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:38:18] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 03:38:18,934 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:18,934 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:18,934 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:19,205 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:38:19] "GET /api/market/types?_t=1766864298878 HTTP/1.1" 200 - +2025-12-28 03:38:19,210 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:38:19] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 03:38:19,215 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-28 03:38:19,378 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:38:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 03:38:19,937 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:19,937 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:19,938 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:20,348 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:38:20] "GET /api/strategies?_t=1766864299963 HTTP/1.1" 200 - +2025-12-28 03:38:20,939 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:20,939 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:20,939 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:21,284 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:38:21] "GET /api/market/types?_t=1766864301277 HTTP/1.1" 200 - +2025-12-28 03:38:21,614 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:38:21] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 03:38:21,794 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:38:21] "GET /api/credentials/list?user_id=1&_t=1766864301277 HTTP/1.1" 200 - +2025-12-28 03:38:21,828 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:38:21] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 03:38:21,941 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:21,941 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:21,941 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:22,943 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:22,943 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:22,943 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:23,946 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:23,946 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:23,947 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:24,949 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:24,949 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:24,949 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:25,952 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:25,952 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:25,953 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:26,954 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:26,954 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:26,954 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:27,956 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:27,956 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:27,956 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:28,958 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:28,958 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:28,958 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:29,960 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:29,960 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:29,960 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:30,963 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:30,964 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:30,964 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:31,966 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:31,966 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:31,966 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:32,968 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:32,968 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:32,968 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:33,969 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:33,969 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:33,970 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:34,971 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:34,971 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:34,972 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:35,973 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:35,974 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:35,974 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:36,975 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:36,975 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:36,976 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:37,977 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:37,977 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:37,978 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:38,979 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:38,980 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:38,980 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:39,981 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:39,981 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:39,982 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:40,983 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:40,983 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:40,983 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:41,986 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:41,987 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:41,987 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:42,988 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:42,988 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:42,988 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:43,990 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:43,991 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:43,991 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:44,992 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:44,993 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:44,993 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:45,994 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:45,995 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:45,995 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:46,997 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:46,997 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:46,998 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:47,999 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:48,000 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:48,000 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:49,002 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:49,002 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:49,002 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:50,004 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:50,004 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:50,005 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:51,006 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:51,006 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:51,006 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:52,008 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:52,008 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:52,008 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:53,009 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:53,010 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:53,010 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:54,011 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:54,011 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:54,012 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:55,013 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:55,014 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:55,014 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:56,015 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:56,015 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:56,015 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:57,017 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:57,017 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:57,017 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:58,019 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:58,019 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:58,019 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:38:59,021 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:59,021 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:38:59,021 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:00,023 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:00,023 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:00,024 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:01,025 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:01,025 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:01,025 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:02,027 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:02,027 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:02,028 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:03,029 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:03,029 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:03,030 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:04,031 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:04,032 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:04,032 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:05,033 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:05,034 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:05,034 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:06,036 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:06,036 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:06,037 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:07,038 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:07,038 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:07,039 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:08,040 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:08,040 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:08,040 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:09,042 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:09,043 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:09,043 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:10,044 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:10,045 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:10,045 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:11,046 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:11,046 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:11,046 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:12,048 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:12,048 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:12,048 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:13,049 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:13,050 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:13,050 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:14,051 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:14,051 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:14,052 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:15,053 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:15,053 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:15,053 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:16,055 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:16,055 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:16,055 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:17,057 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:17,057 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:17,057 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:18,059 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:18,060 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:18,060 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:19,061 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:19,061 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:19,062 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:20,063 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:20,064 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:20,064 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:21,066 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:21,066 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:21,066 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:22,068 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:22,068 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:22,068 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:23,070 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:23,070 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:23,071 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:24,073 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:24,073 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:24,073 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:25,074 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:25,074 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:25,075 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:26,076 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:26,076 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:26,077 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:27,078 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:27,078 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:27,078 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:28,080 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:28,080 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:28,080 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:29,082 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:29,082 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:29,082 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:30,084 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:30,084 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:30,084 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:31,086 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:31,086 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:31,086 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:32,088 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:32,088 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:32,088 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:33,090 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:33,090 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:33,090 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:34,092 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:34,092 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:34,092 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:35,094 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:35,094 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:35,094 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:36,095 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:36,096 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:36,096 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:37,097 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:37,098 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:37,098 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:38,099 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:38,100 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:38,100 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:39,102 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:39,102 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:39,102 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:40,103 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:40,104 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:40,104 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:41,105 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:41,106 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:41,106 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:42,107 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:42,107 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:42,108 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:43,109 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:43,109 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:43,109 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:44,111 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:44,111 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:44,111 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:45,113 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:45,113 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:45,113 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:46,115 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:46,115 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:46,115 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:47,117 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:47,117 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:47,118 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:48,119 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:48,119 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:48,119 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:49,121 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:49,121 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:49,121 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:50,123 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:50,123 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:50,123 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:51,124 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:51,125 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:51,125 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:52,127 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:52,127 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:52,127 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:53,128 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:53,129 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:53,129 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:54,130 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:54,130 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:54,131 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:55,132 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:55,133 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:55,133 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:56,135 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:56,135 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:56,135 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:57,136 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:57,137 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:57,137 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:58,138 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:58,138 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:58,139 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:39:59,140 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:59,140 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:39:59,141 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:00,142 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:00,142 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:00,143 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:01,144 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:01,144 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:01,144 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:02,146 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:02,146 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:02,146 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:03,148 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:03,148 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:03,148 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:04,150 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:04,150 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:04,150 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:05,151 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:05,152 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:05,152 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:06,153 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:06,154 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:06,154 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:07,155 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:07,156 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:07,156 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:08,157 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:08,157 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:08,157 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:09,159 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:09,159 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:09,159 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:10,161 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:10,161 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:10,161 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:11,162 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:11,163 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:11,163 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:12,164 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:12,165 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:12,165 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:13,167 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:13,168 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:13,168 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:14,169 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:14,169 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:14,169 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:15,171 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:15,171 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:15,171 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:16,173 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:16,173 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:16,173 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:17,175 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:17,175 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:17,175 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:18,176 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:18,177 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:18,177 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:19,178 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:19,178 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:19,178 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:20,180 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:20,180 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:20,180 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:21,181 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:21,182 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:21,182 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:22,184 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:22,184 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:22,184 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:23,185 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:23,185 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:23,186 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:24,187 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:24,187 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:24,187 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:25,189 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:25,189 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:25,189 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:26,191 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:26,192 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:26,192 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:27,193 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:27,193 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:27,194 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:28,195 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:28,195 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:28,195 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:29,197 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:29,197 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:29,197 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:30,199 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:30,199 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:30,199 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:31,201 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:31,201 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:31,202 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:32,203 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:32,204 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:32,204 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:33,205 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:33,206 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:33,206 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:34,207 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:34,207 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:34,208 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:35,209 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:35,210 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:35,210 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:36,211 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:36,211 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:36,212 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:37,213 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:37,213 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:37,213 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:38,215 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:38,215 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:38,215 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:39,217 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:39,218 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:39,218 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:40,219 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:40,219 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:40,219 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:41,221 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:41,221 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:41,221 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:42,222 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:42,223 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:42,223 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:43,224 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:43,224 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:43,225 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:44,226 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:44,226 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:44,226 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:45,228 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:45,228 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:45,228 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:46,229 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:46,230 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:46,230 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:47,231 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:47,231 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:47,231 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:48,233 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:48,233 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:48,234 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:49,236 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:49,236 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:49,236 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:50,238 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:50,238 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:50,238 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:51,240 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:51,240 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:51,240 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:52,242 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:52,242 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:52,242 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:53,243 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:53,244 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:53,244 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:54,246 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:54,246 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:54,246 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:55,247 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:55,248 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:55,248 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:56,249 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:56,250 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:56,250 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:57,251 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:57,251 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:57,252 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:58,253 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:58,254 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:58,254 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:40:59,255 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:59,255 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:40:59,256 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:00,257 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:00,257 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:00,257 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:01,259 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:01,259 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:01,259 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:02,261 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:02,261 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:02,261 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:03,263 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:03,263 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:03,263 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:04,265 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:04,265 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:04,265 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:05,266 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:05,267 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:05,267 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:06,269 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:06,269 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:06,269 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:07,271 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:07,271 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:07,271 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:08,273 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:08,273 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:08,273 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:09,274 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:09,275 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:09,275 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:10,276 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:10,276 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:10,276 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:11,280 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:11,280 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:11,281 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:12,282 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:12,282 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:12,283 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:13,284 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:13,285 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:13,285 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:14,287 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:14,287 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:14,287 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:15,289 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:15,289 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:15,289 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:16,290 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:16,291 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:16,291 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:17,292 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:17,293 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:17,293 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:18,294 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:18,295 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:18,295 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:19,297 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:19,297 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:19,297 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:20,298 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:20,299 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:20,299 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:21,300 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:21,300 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:21,301 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:22,302 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:22,302 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:22,302 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:23,304 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:23,304 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:23,304 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:24,306 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:24,306 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:24,306 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:25,307 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:25,308 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:25,308 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:26,310 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:26,310 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:26,310 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:27,312 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:27,312 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:27,312 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:28,314 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:28,314 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:28,314 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:29,316 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:29,316 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:29,316 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:30,317 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:30,318 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:30,318 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:31,320 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:31,320 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:31,320 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:32,322 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:32,322 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:32,322 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:33,323 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:33,324 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:33,324 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:34,326 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:34,326 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:34,326 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:35,327 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:35,328 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:35,328 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:36,329 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:36,330 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:36,330 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:37,331 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:37,332 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:37,332 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:38,333 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:38,333 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:38,333 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:39,335 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:39,335 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:39,336 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:40,337 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:40,337 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:40,338 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:41,339 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:41,339 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:41,339 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:42,341 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:42,341 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:42,341 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:43,343 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:43,343 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:43,343 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:44,345 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:44,345 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:44,345 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:45,347 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:45,347 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:45,347 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:46,348 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:46,349 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:46,349 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:47,350 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:47,350 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:47,350 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:48,352 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:48,353 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:48,353 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:49,354 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:49,355 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:49,355 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:50,357 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:50,357 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:50,357 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:51,359 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:51,359 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:51,359 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:52,360 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:52,361 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:52,361 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:53,362 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:53,363 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:53,363 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:54,364 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:54,365 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:54,365 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:55,366 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:55,367 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:55,367 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:56,368 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:56,368 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:56,368 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:57,370 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:57,370 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:57,371 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:58,372 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:58,372 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:58,373 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:41:59,374 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:59,374 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:41:59,374 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:00,376 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:00,376 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:00,376 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:01,378 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:01,378 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:01,378 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:02,380 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:02,380 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:02,381 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:03,382 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:03,382 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:03,382 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:04,384 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:04,384 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:04,384 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:05,386 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:05,386 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:05,386 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:06,388 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:06,388 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:06,388 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:07,390 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:07,390 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:07,390 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:08,391 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:08,391 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:08,392 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:09,393 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:09,393 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:09,393 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:10,395 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:10,395 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:10,396 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:11,397 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:11,397 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:11,398 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:12,399 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:12,400 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:12,400 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:13,401 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:13,402 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:13,402 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:14,403 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:14,404 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:14,404 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:15,405 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:15,405 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:15,406 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:16,407 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:16,407 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:16,408 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:17,409 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:17,409 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:17,409 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:18,411 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:18,412 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:18,412 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:19,413 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:19,413 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:19,413 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:20,415 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:20,415 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:20,415 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:21,417 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:21,417 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:21,417 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:22,418 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:22,419 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:22,419 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:23,420 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:23,421 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:23,421 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:24,423 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:24,423 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:24,423 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:25,425 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:25,425 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:25,426 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:26,427 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:26,428 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:26,428 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:27,430 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:27,430 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:27,430 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:28,431 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:28,431 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:28,432 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:29,433 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:29,433 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:29,433 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:30,435 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:30,435 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:30,435 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:31,437 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:31,437 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:31,437 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:32,438 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:32,439 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:32,439 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:33,441 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:33,441 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:33,441 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:34,443 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:34,443 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:34,443 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:35,445 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:35,445 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:35,445 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:36,447 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:36,447 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:36,447 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:37,448 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:37,449 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:37,449 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:38,450 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:38,450 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:38,451 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:39,452 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:39,452 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:39,453 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:40,455 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:40,455 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:40,456 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:41,457 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:41,457 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:41,457 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:42,459 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:42,459 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:42,459 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:43,461 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:43,461 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:43,461 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:44,462 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:44,463 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:44,463 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:45,464 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:45,464 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:45,464 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:46,467 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:46,467 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:46,468 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:47,469 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:47,470 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:47,470 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:48,472 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:48,472 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:48,472 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:49,474 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:49,474 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:49,474 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:50,364 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:42:50] "GET /api/strategies?_t=1766864570352 HTTP/1.1" 200 - +2025-12-28 03:42:50,453 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:42:50] "GET /api/strategies?_t=1766864570446 HTTP/1.1" 200 - +2025-12-28 03:42:50,476 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:50,476 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:50,477 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:51,478 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:51,478 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:51,478 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:52,480 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:52,480 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:52,480 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:53,482 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:53,482 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:53,482 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:54,483 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:54,484 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:54,484 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:55,485 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:55,485 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:55,486 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:56,487 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:56,487 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:56,488 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:57,489 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:57,490 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:57,490 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:58,491 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:58,492 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:58,492 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:42:59,494 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:59,494 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:42:59,494 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:00,495 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:00,496 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:00,496 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:01,498 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:01,498 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:01,498 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:02,499 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:02,499 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:02,499 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:03,501 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:03,501 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:03,501 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:04,503 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:04,503 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:04,503 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:05,505 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:05,505 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:05,505 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:06,507 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:06,508 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:06,508 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:07,509 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:07,510 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:07,510 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:08,511 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:08,511 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:08,511 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:09,513 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:09,513 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:09,513 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:10,516 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:10,516 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:10,516 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:11,518 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:11,518 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:11,519 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:12,520 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:12,520 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:12,520 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:13,522 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:13,522 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:13,522 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:14,524 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:14,524 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:14,524 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:15,526 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:15,526 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:15,526 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:16,527 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:16,528 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:16,528 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:17,529 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:17,530 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:17,530 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:18,531 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:18,532 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:18,532 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:19,534 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:19,534 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:19,534 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:20,535 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:20,535 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:20,536 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:21,537 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:21,537 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:21,537 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:22,539 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:22,539 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:22,539 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:23,541 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:23,542 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:23,542 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:24,543 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:24,544 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:24,544 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:25,545 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:25,546 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:25,546 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:26,547 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:26,547 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:26,548 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:27,549 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:27,550 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:27,550 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:28,551 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:28,552 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:28,552 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:29,553 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:29,554 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:29,554 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:30,555 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:30,555 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:30,555 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:31,558 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:31,559 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:31,559 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:32,561 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:32,561 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:32,561 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:33,563 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:33,563 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:33,563 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:34,564 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:34,565 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:34,565 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:35,567 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:35,567 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:35,567 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:36,568 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:36,569 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:36,569 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:37,571 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:37,571 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:37,571 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:38,572 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:38,573 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:38,573 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:39,575 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:39,576 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:39,576 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:40,577 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:40,577 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:40,577 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:41,579 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:41,579 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:41,579 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:42,581 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:42,581 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:42,581 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:43,582 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:43,583 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:43,583 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:44,584 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:44,585 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:44,585 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:45,586 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:45,586 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:45,587 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:46,588 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:46,588 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:46,588 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:47,590 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:47,590 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:47,590 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:48,591 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:48,592 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:48,592 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:49,593 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:49,594 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:49,594 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:50,595 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:50,595 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:50,596 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:51,597 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:51,597 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:51,597 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:52,599 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:52,599 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:52,599 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:53,601 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:53,601 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:53,601 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:54,602 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:54,603 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:54,603 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:55,604 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:55,604 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:55,605 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:56,606 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:56,606 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:56,606 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:57,608 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:57,608 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:57,608 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:58,610 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:58,610 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:58,610 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:43:59,612 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:59,612 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:43:59,612 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:00,614 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:00,614 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:00,614 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:01,616 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:01,616 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:01,616 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:02,617 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:02,618 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:02,618 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:03,620 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:03,620 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:03,620 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:04,621 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:04,622 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:04,622 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:05,623 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:05,624 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:05,624 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:06,625 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:06,626 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:06,626 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:07,627 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:07,628 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:07,628 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:08,630 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:08,630 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:08,630 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:09,631 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:09,632 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:09,632 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:10,634 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:10,634 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:10,634 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:11,637 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:11,638 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:11,638 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:12,640 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:12,640 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:12,640 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:13,642 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:13,642 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:13,643 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:14,644 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:14,644 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:14,645 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:15,646 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:15,646 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:15,646 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:16,648 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:16,648 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:16,648 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:17,650 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:17,650 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:17,650 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:18,653 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:18,653 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:18,653 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:19,655 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:19,655 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:19,655 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:20,657 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:20,657 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:20,657 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:21,659 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:21,659 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:21,659 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:22,660 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:22,661 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:22,661 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:23,662 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:23,663 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:23,663 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:24,664 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:24,665 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:24,665 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:25,666 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:25,667 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:25,667 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:26,668 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:26,669 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:26,669 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:27,670 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:27,671 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:27,671 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:28,672 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:28,673 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:28,673 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:29,674 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:29,675 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:29,675 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:30,676 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:30,676 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:30,677 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:31,678 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:31,679 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:31,679 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:32,680 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:32,680 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:32,680 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:33,682 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:33,682 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:33,682 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:34,684 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:34,684 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:34,684 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:35,686 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:35,686 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:35,687 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:36,688 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:36,688 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:36,688 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:37,690 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:37,690 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:37,690 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:38,692 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:38,693 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:38,693 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:39,694 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:39,695 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:39,695 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:40,696 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:40,696 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:40,696 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:41,698 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:41,699 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:41,699 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:42,700 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:42,701 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:42,701 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:43,702 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:43,702 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:43,703 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:44,704 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:44,704 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:44,704 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:45,706 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:45,706 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:45,706 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:46,708 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:46,708 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:46,708 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:47,710 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:47,710 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:47,711 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:48,713 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:48,713 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:48,714 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:49,715 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:49,716 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:49,716 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:50,717 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:50,717 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:50,717 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:51,719 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:51,719 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:51,719 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:52,721 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:52,721 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:52,721 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:53,722 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:53,723 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:53,723 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:54,724 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:54,725 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:54,725 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:55,727 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:55,727 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:55,727 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:56,730 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:56,730 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:56,730 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:57,732 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:57,732 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:57,732 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:58,735 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:58,736 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:58,736 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:44:59,738 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:59,738 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:44:59,738 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:00,740 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:00,740 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:00,740 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:01,742 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:01,742 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:01,742 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:02,744 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:02,744 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:02,744 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:03,746 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:03,746 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:03,746 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:04,748 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:04,748 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:04,748 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:05,750 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:05,750 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:05,750 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:06,751 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:06,752 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:06,752 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:07,753 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:07,754 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:07,754 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:08,755 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:08,756 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:08,756 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:09,757 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:09,758 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:09,758 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:10,760 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:10,761 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:10,761 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:11,762 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:11,763 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:11,763 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:12,765 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:12,765 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:12,765 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:13,767 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:13,767 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:13,767 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:14,769 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:14,769 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:14,770 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:15,771 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:15,772 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:15,772 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:16,773 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:16,773 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:16,773 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:17,775 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:17,775 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:17,775 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:18,777 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:18,777 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:18,777 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:19,779 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:19,779 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:19,779 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:20,781 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:20,781 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:20,781 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:21,782 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:21,782 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:21,783 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:22,784 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:22,784 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:22,784 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:23,786 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:23,786 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:23,787 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:24,788 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:24,788 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:24,788 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:25,790 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:25,790 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:25,790 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:26,794 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:26,794 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:26,795 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:27,796 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:27,797 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:27,797 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:28,798 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:28,798 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:28,799 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:29,800 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:29,800 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:29,800 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:30,802 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:30,802 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:30,802 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:31,804 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:31,804 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:31,804 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:32,806 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:32,806 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:32,806 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:33,808 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:33,808 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:33,808 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:34,810 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:34,810 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:34,810 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:35,812 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:35,812 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:35,812 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:36,814 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:36,814 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:36,814 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:37,815 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:37,816 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:37,816 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:38,818 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:38,818 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:38,818 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:39,820 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:39,820 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:39,820 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:40,821 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:40,821 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:40,822 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:41,823 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:41,823 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:41,823 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:42,825 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:42,825 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:42,825 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:43,827 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:43,827 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:43,827 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:44,829 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:44,829 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:44,829 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:45,831 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:45,831 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:45,831 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:46,832 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:46,833 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:46,833 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:47,834 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:47,834 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:47,834 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:48,836 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:48,837 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:48,837 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:49,838 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:49,838 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:49,838 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:50,841 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:50,842 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:50,842 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:51,843 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:51,844 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:51,844 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:52,845 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:52,846 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:52,846 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:53,848 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:53,848 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:53,849 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:54,850 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:54,850 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:54,851 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:55,085 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:45:55] "GET /api/strategies?_t=1766864755077 HTTP/1.1" 200 - +2025-12-28 03:45:55,127 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:45:55] "GET /api/strategies?_t=1766864755121 HTTP/1.1" 200 - +2025-12-28 03:45:55,348 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:45:55] "GET /api/strategies?_t=1766864755337 HTTP/1.1" 200 - +2025-12-28 03:45:55,380 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:45:55] "GET /api/strategies?_t=1766864755372 HTTP/1.1" 200 - +2025-12-28 03:45:55,408 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:45:55] "GET /api/strategies?_t=1766864755400 HTTP/1.1" 200 - +2025-12-28 03:45:55,455 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:45:55] "GET /api/strategies?_t=1766864755448 HTTP/1.1" 200 - +2025-12-28 03:45:55,478 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:45:55] "GET /api/strategies?_t=1766864755470 HTTP/1.1" 200 - +2025-12-28 03:45:55,535 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:45:55] "GET /api/strategies?_t=1766864755530 HTTP/1.1" 200 - +2025-12-28 03:45:55,655 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:45:55] "GET /api/strategies?_t=1766864755648 HTTP/1.1" 200 - +2025-12-28 03:45:55,675 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:45:55] "GET /api/strategies?_t=1766864755669 HTTP/1.1" 200 - +2025-12-28 03:45:55,687 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:45:55] "GET /api/strategies?_t=1766864755680 HTTP/1.1" 200 - +2025-12-28 03:45:55,717 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:45:55] "GET /api/strategies?_t=1766864755711 HTTP/1.1" 200 - +2025-12-28 03:45:55,745 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:45:55] "GET /api/strategies?_t=1766864755739 HTTP/1.1" 200 - +2025-12-28 03:45:55,776 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:45:55] "GET /api/strategies?_t=1766864755769 HTTP/1.1" 200 - +2025-12-28 03:45:55,813 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:45:55] "GET /api/strategies?_t=1766864755807 HTTP/1.1" 200 - +2025-12-28 03:45:55,854 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:55,855 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:55,855 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:55,919 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:45:55] "GET /api/strategies?_t=1766864755913 HTTP/1.1" 200 - +2025-12-28 03:45:56,856 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:56,856 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:56,857 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:57,594 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:45:57] "GET /api/strategies/equityCurve?id=2&_t=1766864757564 HTTP/1.1" 200 - +2025-12-28 03:45:57,606 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:45:57] "GET /api/strategies/equityCurve?id=2&_t=1766864757564 HTTP/1.1" 200 - +2025-12-28 03:45:57,615 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:45:57] "GET /api/strategies/positions?id=2&_t=1766864757569 HTTP/1.1" 200 - +2025-12-28 03:45:57,860 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:57,860 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:57,860 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:58,862 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:58,862 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:58,862 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:45:59,464 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ๆœชๅœจ่ฟ่กŒ +2025-12-28 03:45:59,472 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:45:59] "POST /api/strategies/stop?id=2 HTTP/1.1" 200 - +2025-12-28 03:45:59,477 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:45:59] "GET /api/strategies/equityCurve?id=2&_t=1766864759461 HTTP/1.1" 200 - +2025-12-28 03:45:59,775 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:45:59] "GET /api/strategies/equityCurve?id=2&_t=1766864759461 HTTP/1.1" 200 - +2025-12-28 03:45:59,854 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:45:59] "GET /api/strategies?_t=1766864759529 HTTP/1.1" 200 - +2025-12-28 03:45:59,865 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:59,865 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:45:59,865 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:00,867 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:00,867 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:00,867 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:01,193 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:46:01] "GET /api/strategies/equityCurve?id=2&_t=1766864760881 HTTP/1.1" 200 - +2025-12-28 03:46:01,199 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:46:01] "GET /api/strategies/equityCurve?id=2&_t=1766864760881 HTTP/1.1" 200 - +2025-12-28 03:46:01,667 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:46:01] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 03:46:01,869 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:01,869 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:01,870 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:01,974 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:46:01] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 03:46:01,979 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:46:01] "GET /api/credentials/list?user_id=1&_t=1766864761660 HTTP/1.1" 200 - +2025-12-28 03:46:01,990 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:46:01] "GET /api/strategies/equityCurve?id=2&_t=1766864761676 HTTP/1.1" 200 - +2025-12-28 03:46:01,994 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:46:01] "GET /api/strategies/equityCurve?id=2&_t=1766864761676 HTTP/1.1" 200 - +2025-12-28 03:46:02,456 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:46:02] "GET /api/credentials/get?id=2&user_id=1&_t=1766864762136 HTTP/1.1" 200 - +2025-12-28 03:46:02,708 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:46:02] "GET /api/strategies/positions?id=2&_t=1766864762563 HTTP/1.1" 200 - +2025-12-28 03:46:02,871 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:02,872 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:02,872 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:03,874 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:03,874 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:03,874 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:04,875 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:04,876 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:04,876 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:05,877 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:05,877 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:05,878 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:06,879 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:06,879 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:06,880 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:07,581 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:46:07] "GET /api/strategies/positions?id=2&_t=1766864767573 HTTP/1.1" 200 - +2025-12-28 03:46:07,882 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:07,882 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:07,883 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:08,884 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:08,884 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:08,885 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:09,886 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:09,886 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:09,886 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:10,888 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:10,888 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:10,888 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:11,890 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:11,890 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:11,890 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:12,892 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:12,892 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:46:12] "GET /api/strategies/positions?id=2&_t=1766864772568 HTTP/1.1" 200 - +2025-12-28 03:46:12,893 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:12,893 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:13,894 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:13,895 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:13,895 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:14,897 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:14,897 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:14,898 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:15,899 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:15,899 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:15,899 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:16,901 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:16,901 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:16,901 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:17,573 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:46:17] "GET /api/strategies/positions?id=2&_t=1766864777563 HTTP/1.1" 200 - +2025-12-28 03:46:17,904 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:17,904 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:17,904 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:18,272 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๅผ€ๅง‹่ฟ่กŒๅพช็Žฏ +2025-12-28 03:46:18,272 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๅฏๅŠจๆˆๅŠŸ +2025-12-28 03:46:18,272 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:46:18] "POST /api/strategies/start?id=2 HTTP/1.1" 200 - +2025-12-28 03:46:18,273 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๅˆ็บฆไบคๆ˜“๏ผŒๅธ‚ๅœบ็ฑปๅž‹็ปŸไธ€ไธบ: swap +2025-12-28 03:46:18,531 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:46:18] "GET /api/strategies?_t=1766864778309 HTTP/1.1" 200 - +2025-12-28 03:46:18,841 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 03:46:18,860 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๅˆๅง‹ๅŒ–ๅฎŒๆˆ๏ผŒๅพ…่งฆๅ‘ไฟกๅทๆ•ฐ: 0 +2025-12-28 03:46:18,861 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:18,861 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:18,862 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:18,906 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:18,906 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:18,906 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:19,863 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:19,864 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:19,864 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:19,907 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:19,908 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:19,908 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:20,230 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:46:20] "GET /api/dashboard/summary?_t=1766864780218 HTTP/1.1" 200 - +2025-12-28 03:46:20,532 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:46:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766864780218 HTTP/1.1" 200 - +2025-12-28 03:46:20,866 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:20,867 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:20,867 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:20,909 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:20,910 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:20,910 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:21,869 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:21,869 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:21,869 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:21,911 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:21,911 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:21,911 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:22,870 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:22,871 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:22,871 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:22,913 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:22,914 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:22,914 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:22,921 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:46:22] "GET /api/dashboard/summary?_t=1766864782596 HTTP/1.1" 200 - +2025-12-28 03:46:22,925 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:46:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766864782596 HTTP/1.1" 200 - +2025-12-28 03:46:23,873 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:23,873 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:23,873 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:23,917 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:23,917 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:23,917 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:24,875 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:24,875 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:24,875 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:24,919 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:24,919 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:24,919 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:25,877 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:25,877 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:25,877 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:25,920 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:25,921 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:25,921 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:26,879 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:26,879 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:26,879 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:26,923 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:26,924 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:26,924 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:27,881 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:27,881 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:27,882 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:27,925 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:27,925 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:27,926 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:28,883 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:28,883 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:28,884 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:28,927 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:28,927 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:28,927 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:29,885 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:29,885 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:29,886 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:29,929 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:29,929 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:29,930 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:30,887 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:30,887 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:30,888 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:30,931 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:30,932 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:30,932 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:31,889 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:31,889 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:31,890 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:31,933 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:31,933 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:31,934 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:32,891 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:32,891 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:32,891 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:32,935 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:32,935 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:32,935 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:33,893 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:33,893 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:33,893 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:33,937 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:33,937 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:33,937 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:34,895 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:34,896 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:34,896 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:34,939 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:34,939 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:34,939 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:35,897 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:35,897 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:35,898 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:35,941 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:35,941 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:35,941 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:36,899 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:36,900 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:36,900 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:36,943 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:36,943 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:36,943 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:37,901 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:37,901 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:37,902 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:37,945 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:37,945 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:37,945 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:38,903 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:38,903 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:38,904 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:38,947 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:38,947 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:38,947 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:39,905 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:39,905 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:39,905 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:39,949 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:39,949 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:39,949 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:40,907 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:40,907 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:40,907 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:40,950 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:40,951 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:40,951 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:41,909 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:41,909 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:41,909 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:41,952 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:41,952 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:41,953 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:42,910 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:42,910 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:42,911 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:42,954 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:42,954 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:42,954 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:43,913 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:43,914 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:43,914 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:43,957 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:43,958 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:43,958 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:44,916 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:44,916 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:44,916 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:44,960 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:44,960 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:44,960 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:45,917 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:45,918 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:45,918 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:45,962 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:45,962 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:45,962 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:46,919 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:46,919 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:46,919 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:46,965 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:46,965 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:46,965 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:47,921 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:47,921 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:47,921 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:47,967 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:47,968 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:47,969 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:48,923 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:48,923 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:48,923 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:48,970 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:48,970 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:48,971 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:49,925 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:49,925 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:49,926 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:49,972 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:49,972 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:49,972 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:50,927 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:50,928 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:50,928 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:50,974 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:50,974 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:50,974 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:51,930 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:51,930 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:51,930 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:51,976 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:51,976 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:51,976 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:52,932 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:52,932 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:52,932 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:52,978 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:52,978 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:52,978 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:53,934 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:53,934 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:53,934 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:53,980 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:53,980 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:53,980 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:54,935 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:54,936 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:54,936 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:54,981 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:54,982 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:54,982 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:55,937 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:55,938 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:55,938 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:55,983 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:55,984 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:55,984 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:56,939 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:56,940 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:56,940 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:56,985 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:56,986 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:56,986 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:57,941 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:57,941 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:57,942 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:57,987 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:57,987 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:57,987 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:58,943 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:58,944 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:58,944 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:58,989 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:58,989 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:58,989 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:59,945 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:59,946 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:59,946 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:46:59,991 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:59,991 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:46:59,991 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:00,948 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:00,948 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:00,948 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:00,993 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:00,993 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:00,993 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:01,950 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:01,950 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:01,950 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:01,994 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:01,995 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:01,995 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:02,952 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:02,952 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:02,952 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:02,996 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:02,996 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:02,997 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:03,953 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:03,954 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:03,954 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:03,998 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:03,998 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:03,999 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:04,956 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:04,956 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:04,956 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:05,000 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:05,001 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:05,001 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:05,957 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:05,958 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:05,958 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:06,002 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:06,003 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:06,003 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:06,960 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:06,960 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:06,960 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:07,004 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:07,004 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:07,005 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:07,961 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:07,962 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:07,962 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:08,006 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:08,006 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:08,006 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:08,964 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:08,964 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:08,964 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:09,008 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:09,008 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:09,008 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:09,966 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:09,966 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:09,966 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:10,010 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:10,011 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:10,011 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:10,968 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:10,968 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:10,968 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:11,012 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:11,013 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:11,013 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:11,970 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:11,970 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:11,970 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:12,015 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:12,015 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:12,015 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:12,972 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:12,972 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:12,972 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:13,016 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:13,017 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:13,017 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:13,974 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:13,974 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:13,974 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:14,018 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:14,019 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:14,019 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:14,976 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:14,976 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:14,976 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:15,020 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:15,021 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:15,021 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:15,979 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:15,979 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:15,979 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:16,024 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:16,024 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:16,024 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:16,981 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:16,982 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:16,982 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:17,026 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:17,026 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:17,026 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:17,984 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:17,984 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:17,984 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:18,028 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:18,028 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:18,028 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:19,030 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:19,030 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:19,030 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:19,119 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:19,119 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:20,032 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:20,032 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:20,032 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:20,120 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:20,121 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:21,034 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:21,034 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:21,034 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:21,122 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:21,123 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:22,036 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:22,036 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:22,036 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:22,124 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:22,125 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:23,037 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:23,038 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:23,038 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:23,126 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:23,127 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:24,039 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:24,040 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:24,040 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:24,128 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:24,128 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:25,041 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:25,041 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:25,041 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:25,130 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:25,130 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:26,043 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:26,043 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:26,043 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:26,132 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:26,133 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:27,046 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:27,046 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:27,046 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:27,135 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:27,135 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:28,048 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:28,048 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:28,049 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:28,137 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:28,137 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:29,050 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:29,051 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:29,051 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:29,139 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:29,139 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:29,139 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:30,052 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:30,052 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:30,052 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:30,141 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:30,141 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:30,141 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:31,053 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:31,054 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:31,054 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:31,142 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:31,143 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:31,143 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:32,056 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:32,057 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:32,057 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:32,144 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:32,144 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:32,144 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:33,058 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:33,058 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:33,058 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:33,146 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:33,146 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:33,147 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:34,060 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:34,060 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:34,060 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:34,148 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:34,149 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:34,149 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:35,062 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:35,062 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:35,063 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:35,150 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:35,151 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:35,151 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:36,064 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:36,065 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:36,065 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:36,152 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:36,152 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:36,153 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:37,066 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:37,067 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:37,067 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:37,154 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:37,154 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:37,154 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:38,068 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:38,069 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:38,069 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:38,156 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:38,156 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:38,156 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:39,070 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:39,070 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:39,071 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:39,158 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:39,158 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:39,158 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:40,072 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:40,072 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:40,072 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:40,159 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:40,160 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:40,160 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:41,074 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:41,074 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:41,074 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:41,161 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:41,161 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:41,162 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:42,075 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:42,076 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:42,076 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:42,163 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:42,163 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:42,163 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:43,077 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:43,078 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:43,078 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:43,165 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:43,165 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:43,165 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:44,079 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:44,079 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:44,079 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:44,167 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:44,168 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:44,168 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:45,081 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:45,082 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:45,082 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:45,169 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:45,170 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:45,170 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:46,083 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:46,083 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:46,084 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:46,171 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:46,171 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:46,171 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:47,085 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:47,085 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:47,085 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:47,173 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:47,173 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:47,173 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:48,087 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:48,087 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:48,087 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:48,176 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:48,176 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:48,176 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:49,089 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:49,089 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:49,089 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:49,177 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:49,178 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:49,178 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:50,091 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:50,091 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:50,091 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:50,179 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:50,180 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:50,180 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:51,092 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:51,093 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:51,093 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:51,181 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:51,182 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:51,182 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:52,094 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:52,095 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:52,095 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:52,184 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:52,184 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:52,184 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:53,096 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:53,096 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:53,096 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:53,186 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:53,186 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:53,186 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:54,098 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:54,098 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:54,098 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:54,188 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:54,188 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:54,188 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:55,100 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:55,100 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:55,101 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:55,190 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:55,190 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:55,190 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:56,102 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:56,102 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:56,102 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:56,191 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:56,192 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:56,192 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:57,104 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:57,104 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:57,104 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:57,193 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:57,194 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:57,194 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:58,106 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:58,106 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:58,107 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:58,196 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:58,197 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:58,197 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:59,108 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:59,108 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:59,108 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:47:59,199 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:59,200 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:47:59,200 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:00,110 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:00,110 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:00,110 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:00,201 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:00,202 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:00,202 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:01,112 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:01,112 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:01,112 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:01,203 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:01,203 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:01,204 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:02,113 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:02,114 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:02,114 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:02,205 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:02,206 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:02,206 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:03,116 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:03,117 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:03,117 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:03,207 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:03,207 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:03,208 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:04,119 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:04,119 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:04,119 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:04,209 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:04,209 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:04,210 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:05,120 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:05,121 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:05,121 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:05,211 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:05,211 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:05,211 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:06,122 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:06,122 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:06,123 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:06,213 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:06,213 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:06,214 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:07,124 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:07,124 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:07,124 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:07,215 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:07,215 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:07,216 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:08,126 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:08,126 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:08,126 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:08,218 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:08,218 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:08,219 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:09,128 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:09,128 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:09,128 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:09,220 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:09,220 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:09,220 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:10,129 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:10,130 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:10,130 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:10,222 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:10,222 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:10,222 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:11,132 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:11,132 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:11,132 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:11,224 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:11,224 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:11,224 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:12,133 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:12,134 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:12,134 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:12,225 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:12,226 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:12,226 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:13,136 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:13,136 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:13,136 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:13,227 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:13,227 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:13,227 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:14,137 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:14,137 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:14,138 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:14,229 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:14,229 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:14,229 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:15,139 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:15,140 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:15,140 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:15,231 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:15,231 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:15,231 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:16,141 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:16,142 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:16,142 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:16,232 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:16,233 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:16,233 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:17,143 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:17,143 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:17,143 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:17,235 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:17,235 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:17,235 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:18,145 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:18,145 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:18,145 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:18,237 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:18,237 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:18,237 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:19,147 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:19,147 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:19,147 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:19,366 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:19,366 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:20,148 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:20,148 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:20,149 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:20,369 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:20,369 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:21,151 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:21,151 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:21,151 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:21,371 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:21,371 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:22,153 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:22,153 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:22,153 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:22,373 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:22,374 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:23,155 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:23,155 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:23,155 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:23,375 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:23,376 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:24,157 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:24,157 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:24,157 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:24,377 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:24,377 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:25,159 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:25,159 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:25,159 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:25,379 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:25,379 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:26,161 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:26,161 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:26,161 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:26,381 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:26,381 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:27,163 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:27,163 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:27,163 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:27,383 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:27,384 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:28,164 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:28,165 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:28,165 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:28,386 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:28,386 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:29,167 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:29,168 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:29,168 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:29,388 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:29,388 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:29,388 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:30,169 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:30,170 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:30,170 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:30,389 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:30,390 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:30,390 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:31,172 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:31,172 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:31,172 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:31,391 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:31,391 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:31,391 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:32,174 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:32,174 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:32,174 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:32,393 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:32,393 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:32,393 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:33,176 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:33,176 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:33,176 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:33,395 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:33,395 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:33,395 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:34,177 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:34,177 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:34,177 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:34,396 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:34,397 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:34,397 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:35,179 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:35,179 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:35,179 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:35,398 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:35,399 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:35,399 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:36,181 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:36,181 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:36,181 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:36,400 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:36,400 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:36,400 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:37,183 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:37,183 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:37,184 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:37,402 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:37,402 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:37,402 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:38,185 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:38,185 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:38,186 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:38,404 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:38,405 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:38,405 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:39,187 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:39,187 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:39,188 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:39,407 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:39,407 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:39,407 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:40,189 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:40,189 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:40,189 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:40,409 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:40,409 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:40,409 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:41,191 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:41,191 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:41,191 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:41,411 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:41,411 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:41,411 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:42,193 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:42,193 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:42,193 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:42,413 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:42,414 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:42,414 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:43,194 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:43,195 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:43,195 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:43,415 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:43,415 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:43,415 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:44,196 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:44,196 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:44,197 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:44,417 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:44,417 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:44,417 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:45,198 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:45,199 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:45,199 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:45,419 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:45,419 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:45,420 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:46,200 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:46,201 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:46,201 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:46,421 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:46,421 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:46,421 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:47,203 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:47,203 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:47,203 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:47,423 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:47,423 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:47,423 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:48,204 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:48,205 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:48,205 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:48,425 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:48,425 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:48,425 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:49,206 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:49,207 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:49,207 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:49,427 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:49,427 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:49,427 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:50,208 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:50,209 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:50,209 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:50,429 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:50,429 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:50,429 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:51,211 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:51,211 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:51,211 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:51,431 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:51,431 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:51,431 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:52,213 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:52,213 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:52,213 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:52,432 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:52,433 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:52,433 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:53,215 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:53,215 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:53,215 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:53,434 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:53,435 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:53,435 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:54,217 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:54,217 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:54,217 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:54,437 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:54,437 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:54,437 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:55,219 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:55,219 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:55,219 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:55,438 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:55,439 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:55,439 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:56,221 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:56,221 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:56,221 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:56,447 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:56,447 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:56,447 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:57,222 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:57,223 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:57,223 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:57,449 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:57,449 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:57,449 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:58,224 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:58,224 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:58,225 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:58,450 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:58,451 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:58,451 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:59,226 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:59,227 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:59,227 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:48:59,453 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:59,453 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:48:59,453 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:00,228 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:00,228 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:00,228 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:00,455 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:00,455 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:00,455 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:01,229 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:01,230 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:01,230 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:01,457 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:01,457 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:01,457 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:02,231 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:02,231 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:02,232 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:02,459 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:02,459 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:02,459 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:03,233 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:03,233 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:03,234 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:03,461 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:03,461 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:03,461 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:04,235 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:04,235 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:04,236 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:04,463 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:04,463 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:04,463 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:05,238 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:05,238 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:05,238 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:05,465 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:05,465 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:05,465 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:06,240 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:06,240 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:06,240 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:06,467 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:06,467 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:06,467 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:07,242 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:07,242 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:07,242 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:07,468 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:07,469 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:07,469 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:08,244 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:08,244 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:08,244 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:08,471 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:08,471 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:08,471 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:09,246 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:09,246 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:09,246 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:09,472 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:09,473 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:09,473 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:10,248 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:10,248 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:10,248 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:10,475 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:10,475 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:10,475 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:11,249 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:11,250 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:11,250 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:11,476 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:11,477 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:11,477 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:12,251 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:12,252 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:12,252 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:12,478 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:12,478 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:12,478 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:13,253 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:13,253 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:13,254 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:13,480 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:13,480 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:13,480 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:14,255 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:14,255 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:14,255 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:14,481 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:14,481 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:14,482 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:15,257 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:15,257 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:15,257 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:15,483 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:15,483 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:15,483 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:16,259 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:16,259 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:16,259 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:16,485 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:16,486 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:16,486 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:17,260 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:17,261 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:17,261 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:17,487 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:17,488 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:17,488 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:18,262 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:18,263 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:18,263 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:18,489 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:18,490 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:18,490 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:19,265 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:19,265 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:19,265 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:19,668 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:19,668 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:20,266 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:20,267 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:20,267 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:20,670 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:20,670 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:21,268 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:21,269 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:21,269 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:21,672 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:21,672 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:22,271 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:22,271 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:22,271 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:22,673 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:22,674 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:23,272 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:23,273 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:23,273 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:23,675 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:23,675 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:24,274 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:24,274 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:24,274 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:24,677 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:24,677 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:25,277 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:25,277 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:25,278 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:25,679 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:25,679 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:26,280 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:26,280 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:26,280 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:26,681 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:26,681 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:27,282 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:27,282 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:27,282 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:27,682 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:27,683 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:28,283 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:28,283 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:28,284 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:28,684 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:28,685 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:29,286 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:29,286 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:29,286 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:29,687 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:29,687 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:29,687 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:30,288 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:30,288 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:30,288 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:30,688 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:30,689 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:30,689 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:31,290 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:31,290 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:31,290 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:31,691 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:31,691 - app.services.trading_executor - WARNING - ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ: type object 'DataSourceFactory' has no attribute 'get_data_source' +2025-12-28 03:49:31,691 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ่Žทๅ–ไปทๆ ผๅคฑ่ดฅ +2025-12-28 03:49:35,421 - app - INFO - Pending order worker is disabled (paper mode). Set ENABLE_PENDING_ORDER_WORKER=true to enable. +2025-12-28 03:49:35,421 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-28 03:49:35,443 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-28 03:49:35,443 - werkzeug - INFO - Press CTRL+C to quit +2025-12-28 03:49:43,243 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-28 03:49:43,247 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:49:43] "GET /api/strategies?_t=1766864982921 HTTP/1.1" 200 - +2025-12-28 03:49:45,905 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:49:45] "GET /api/strategies/equityCurve?id=2&_t=1766864985894 HTTP/1.1" 200 - +2025-12-28 03:49:46,216 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:49:46] "GET /api/strategies/equityCurve?id=2&_t=1766864985894 HTTP/1.1" 200 - +2025-12-28 03:49:46,219 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:49:46] "GET /api/strategies/positions?id=2&_t=1766864985895 HTTP/1.1" 200 - +2025-12-28 03:49:48,535 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:49:48] "GET /api/strategies/equityCurve?id=1&_t=1766864988218 HTTP/1.1" 200 - +2025-12-28 03:49:48,541 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:49:48] "GET /api/strategies/equityCurve?id=1&_t=1766864988218 HTTP/1.1" 200 - +2025-12-28 03:49:48,545 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:49:48] "GET /api/strategies/positions?id=1&_t=1766864988219 HTTP/1.1" 200 - +2025-12-28 03:49:50,491 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:49:50] "GET /api/strategies/equityCurve?id=2&_t=1766864990479 HTTP/1.1" 200 - +2025-12-28 03:49:50,796 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:49:50] "GET /api/strategies/equityCurve?id=2&_t=1766864990479 HTTP/1.1" 200 - +2025-12-28 03:49:50,799 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:49:50] "GET /api/strategies/positions?id=2&_t=1766864990480 HTTP/1.1" 200 - +2025-12-28 03:49:55,804 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:49:55] "GET /api/strategies/positions?id=2&_t=1766864995484 HTTP/1.1" 200 - +2025-12-28 03:49:57,949 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:49:57] "GET /api/dashboard/summary?_t=1766864997936 HTTP/1.1" 200 - +2025-12-28 03:49:58,263 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:49:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766864997936 HTTP/1.1" 200 - +2025-12-28 03:50:08,432 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:50:08] "GET /api/strategies?_t=1766865008117 HTTP/1.1" 200 - +2025-12-28 03:50:20,314 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:50:20] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 03:50:20,622 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:50:20] "GET /api/market/config?_t=1766865020295 HTTP/1.1" 200 - +2025-12-28 03:50:20,837 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 03:50:20,837 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 03:50:20,837 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 03:50:20,837 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 03:50:20,837 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 03:50:21,822 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 600519 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (186622็ง’) +2025-12-28 03:50:21,823 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 300475 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (186622็ง’) +2025-12-28 03:50:21,874 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 000858 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (186622็ง’) +2025-12-28 03:50:21,936 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 00700 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (359422็ง’) +2025-12-28 03:50:24,824 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:50:24] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-28 03:50:24,827 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:50:24] "GET /api/market/types?_t=1766865020630 HTTP/1.1" 200 - +2025-12-28 03:50:24,831 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:50:24] "GET /api/dashboard/summary?_t=1766865021912 HTTP/1.1" 200 - +2025-12-28 03:50:24,834 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:50:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766865021912 HTTP/1.1" 200 - +2025-12-28 03:50:38,470 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:50:38] "GET /api/market/types?_t=1766865038145 HTTP/1.1" 200 - +2025-12-28 03:50:38,475 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:50:38] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 03:50:38,482 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:50:38] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 03:50:38,727 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-28 03:50:38,839 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:50:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 03:50:39,648 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:50:39] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 03:50:39,954 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:50:39] "GET /api/market/config?_t=1766865039626 HTTP/1.1" 200 - +2025-12-28 03:50:40,004 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:50:40] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-28 03:50:40,278 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:50:40] "GET /api/market/types?_t=1766865039960 HTTP/1.1" 200 - +2025-12-28 03:50:40,833 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:50:40] "GET /api/strategies?_t=1766865040503 HTTP/1.1" 200 - +2025-12-28 03:50:41,702 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:50:41] "GET /api/strategies/equityCurve?id=2&_t=1766865041685 HTTP/1.1" 200 - +2025-12-28 03:50:42,014 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:50:42] "GET /api/strategies/equityCurve?id=2&_t=1766865041685 HTTP/1.1" 200 - +2025-12-28 03:50:42,019 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:50:42] "GET /api/strategies/positions?id=2&_t=1766865041687 HTTP/1.1" 200 - +2025-12-28 03:50:43,914 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:50:43] "GET /api/strategies/trades?id=2&_t=1766865043595 HTTP/1.1" 200 - +2025-12-28 03:50:45,965 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:50:45] "GET /api/strategies/equityCurve?id=1&_t=1766865045955 HTTP/1.1" 200 - +2025-12-28 03:50:46,273 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:50:46] "GET /api/strategies/equityCurve?id=1&_t=1766865045955 HTTP/1.1" 200 - +2025-12-28 03:50:46,277 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:50:46] "GET /api/strategies/positions?id=1&_t=1766865045956 HTTP/1.1" 200 - +2025-12-28 03:50:46,280 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:50:46] "GET /api/strategies/trades?id=1&_t=1766865045956 HTTP/1.1" 200 - +2025-12-28 03:50:51,276 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:50:51] "GET /api/strategies/positions?id=1&_t=1766865050956 HTTP/1.1" 200 - +2025-12-28 03:50:55,975 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:50:55] "GET /api/strategies/positions?id=1&_t=1766865055967 HTTP/1.1" 200 - +2025-12-28 03:51:01,274 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:51:01] "GET /api/strategies/positions?id=1&_t=1766865060956 HTTP/1.1" 200 - +2025-12-28 03:51:05,962 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:51:05] "GET /api/strategies/positions?id=1&_t=1766865065955 HTTP/1.1" 200 - +2025-12-28 03:51:11,268 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:51:11] "GET /api/strategies/positions?id=1&_t=1766865070956 HTTP/1.1" 200 - +2025-12-28 03:51:15,959 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:51:15] "GET /api/strategies/equityCurve?id=1&_t=1766865075952 HTTP/1.1" 200 - +2025-12-28 03:51:16,273 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:51:16] "GET /api/strategies/positions?id=1&_t=1766865075956 HTTP/1.1" 200 - +2025-12-28 03:51:21,276 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:51:21] "GET /api/strategies/positions?id=1&_t=1766865080956 HTTP/1.1" 200 - +2025-12-28 03:51:23,808 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:51:23] "GET /api/strategies/equityCurve?id=2&_t=1766865083799 HTTP/1.1" 200 - +2025-12-28 03:51:24,119 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:51:24] "GET /api/strategies/equityCurve?id=2&_t=1766865083799 HTTP/1.1" 200 - +2025-12-28 03:51:24,122 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:51:24] "GET /api/strategies/positions?id=2&_t=1766865083800 HTTP/1.1" 200 - +2025-12-28 03:51:24,125 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:51:24] "GET /api/strategies/trades?id=2&_t=1766865083800 HTTP/1.1" 200 - +2025-12-28 03:51:25,971 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ๆœชๅœจ่ฟ่กŒ +2025-12-28 03:51:25,979 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:51:25] "POST /api/strategies/stop?id=2 HTTP/1.1" 200 - +2025-12-28 03:51:26,233 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:51:26] "GET /api/strategies?_t=1766865085988 HTTP/1.1" 200 - +2025-12-28 03:51:28,478 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๅผ€ๅง‹่ฟ่กŒๅพช็Žฏ +2025-12-28 03:51:28,478 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๅฏๅŠจๆˆๅŠŸ +2025-12-28 03:51:28,478 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:51:28] "POST /api/strategies/start?id=2 HTTP/1.1" 200 - +2025-12-28 03:51:28,479 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๅˆ็บฆไบคๆ˜“๏ผŒๅธ‚ๅœบ็ฑปๅž‹็ปŸไธ€ไธบ: swap +2025-12-28 03:51:28,591 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 03:51:28,610 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๅˆๅง‹ๅŒ–ๅฎŒๆˆ๏ผŒๅพ…่งฆๅ‘ไฟกๅทๆ•ฐ: 0 +2025-12-28 03:51:28,805 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:51:28] "GET /api/strategies?_t=1766865088489 HTTP/1.1" 200 - +2025-12-28 03:51:29,072 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:51:29] "GET /api/strategies/positions?id=2&_t=1766865088800 HTTP/1.1" 200 - +2025-12-28 03:51:33,818 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:51:33] "GET /api/strategies/positions?id=2&_t=1766865093812 HTTP/1.1" 200 - +2025-12-28 03:51:39,121 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:51:39] "GET /api/strategies/positions?id=2&_t=1766865098803 HTTP/1.1" 200 - +2025-12-28 03:51:43,819 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:51:43] "GET /api/strategies/positions?id=2&_t=1766865103812 HTTP/1.1" 200 - +2025-12-28 03:51:49,130 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:51:49] "GET /api/strategies/positions?id=2&_t=1766865108810 HTTP/1.1" 200 - +2025-12-28 03:51:53,808 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:51:53] "GET /api/strategies/equityCurve?id=2&_t=1766865113800 HTTP/1.1" 200 - +2025-12-28 03:51:54,119 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:51:54] "GET /api/strategies/positions?id=2&_t=1766865113801 HTTP/1.1" 200 - +2025-12-28 03:51:58,224 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:51:58] "GET /api/strategies/equityCurve?id=1&_t=1766865117896 HTTP/1.1" 200 - +2025-12-28 03:51:58,228 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:51:58] "GET /api/strategies/equityCurve?id=1&_t=1766865117896 HTTP/1.1" 200 - +2025-12-28 03:51:58,232 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:51:58] "GET /api/strategies/positions?id=1&_t=1766865117897 HTTP/1.1" 200 - +2025-12-28 03:51:58,236 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:51:58] "GET /api/strategies/trades?id=1&_t=1766865117897 HTTP/1.1" 200 - +2025-12-28 03:51:59,800 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:51:59] "GET /api/strategies/equityCurve?id=2&_t=1766865119792 HTTP/1.1" 200 - +2025-12-28 03:52:00,107 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:52:00] "GET /api/strategies/equityCurve?id=2&_t=1766865119792 HTTP/1.1" 200 - +2025-12-28 03:52:00,110 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:52:00] "GET /api/strategies/positions?id=2&_t=1766865119793 HTTP/1.1" 200 - +2025-12-28 03:52:00,113 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:52:00] "GET /api/strategies/trades?id=2&_t=1766865119793 HTTP/1.1" 200 - +2025-12-28 03:52:02,253 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:52:02] "GET /api/strategies/equityCurve?id=1&_t=1766865121939 HTTP/1.1" 200 - +2025-12-28 03:52:02,256 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:52:02] "GET /api/strategies/equityCurve?id=1&_t=1766865121939 HTTP/1.1" 200 - +2025-12-28 03:52:02,259 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:52:02] "GET /api/strategies/positions?id=1&_t=1766865121940 HTTP/1.1" 200 - +2025-12-28 03:52:02,263 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:52:02] "GET /api/strategies/trades?id=1&_t=1766865121940 HTTP/1.1" 200 - +2025-12-28 03:52:04,930 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:52:04] "GET /api/dashboard/summary?_t=1766865124921 HTTP/1.1" 200 - +2025-12-28 03:52:05,234 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:52:05] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766865124921 HTTP/1.1" 200 - +2025-12-28 03:52:11,826 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:52:11] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 03:52:11,834 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:52:11] "GET /api/market/config?_t=1766865131485 HTTP/1.1" 200 - +2025-12-28 03:52:12,068 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:52:12] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-28 03:52:12,144 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:52:12] "GET /api/market/types?_t=1766865131841 HTTP/1.1" 200 - +2025-12-28 03:52:41,480 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:52:41] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-28 03:53:11,790 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:53:11] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-28 03:53:17,087 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:53:17] "GET /api/market/types?_t=1766865197078 HTTP/1.1" 200 - +2025-12-28 03:53:17,405 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:53:17] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 03:53:17,409 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:53:17] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 03:53:17,733 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-28 03:53:17,735 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:53:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 03:53:18,597 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:53:18] "GET /api/strategies?_t=1766865198586 HTTP/1.1" 200 - +2025-12-28 03:53:20,166 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:53:20] "GET /api/strategies/equityCurve?id=2&_t=1766865199849 HTTP/1.1" 200 - +2025-12-28 03:53:20,172 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:53:20] "GET /api/strategies/equityCurve?id=2&_t=1766865199849 HTTP/1.1" 200 - +2025-12-28 03:53:20,178 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:53:20] "GET /api/strategies/positions?id=2&_t=1766865199851 HTTP/1.1" 200 - +2025-12-28 03:53:21,718 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:53:21] "GET /api/strategies/trades?id=2&_t=1766865201708 HTTP/1.1" 200 - +2025-12-28 03:53:23,456 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:53:23] "GET /api/strategies/equityCurve?id=1&_t=1766865203143 HTTP/1.1" 200 - +2025-12-28 03:53:23,461 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:53:23] "GET /api/strategies/equityCurve?id=1&_t=1766865203143 HTTP/1.1" 200 - +2025-12-28 03:53:23,467 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:53:23] "GET /api/strategies/positions?id=1&_t=1766865203144 HTTP/1.1" 200 - +2025-12-28 03:53:23,472 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:53:23] "GET /api/strategies/trades?id=1&_t=1766865203144 HTTP/1.1" 200 - +2025-12-28 03:53:26,740 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:53:26] "GET /api/dashboard/summary?_t=1766865206711 HTTP/1.1" 200 - +2025-12-28 03:53:27,047 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:53:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766865206711 HTTP/1.1" 200 - +2025-12-28 03:53:33,942 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:53:33] "GET /api/market/types?_t=1766865213628 HTTP/1.1" 200 - +2025-12-28 03:53:33,946 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:53:33] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 03:53:33,957 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:53:33] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 03:53:34,205 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-28 03:53:34,207 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:53:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 03:53:34,286 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:53:34] "GET /api/strategies?_t=1766865214239 HTTP/1.1" 200 - +2025-12-28 03:53:37,991 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:53:37] "GET /api/dashboard/summary?_t=1766865217981 HTTP/1.1" 200 - +2025-12-28 03:53:38,299 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:53:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766865217981 HTTP/1.1" 200 - +2025-12-28 03:53:39,946 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:53:39] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 03:53:39,951 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:53:39] "GET /api/market/config?_t=1766865219554 HTTP/1.1" 200 - +2025-12-28 03:53:40,140 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:53:40] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-28 03:53:40,277 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:53:40] "GET /api/market/types?_t=1766865219961 HTTP/1.1" 200 - +2025-12-28 03:54:09,552 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:54:09] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-28 03:54:39,857 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 03:54:39] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-28 15:54:07,643 - app - INFO - Pending order worker is disabled (paper mode). Set ENABLE_PENDING_ORDER_WORKER=true to enable. +2025-12-28 15:54:07,644 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-28 15:54:07,670 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-28 15:54:07,671 - werkzeug - INFO - Press CTRL+C to quit +2025-12-28 15:54:12,903 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 15:54:12,903 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 15:54:12,903 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 15:54:12,903 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 15:54:12,904 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 15:54:14,082 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 00700 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (402854็ง’) +2025-12-28 15:54:14,083 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 000858 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (230054็ง’) +2025-12-28 15:54:14,168 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 300475 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (230054็ง’) +2025-12-28 15:54:14,369 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 600519 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (230054็ง’) +2025-12-28 15:54:14,760 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: AAPL ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (183255็ง’) +2025-12-28 15:54:19,232 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 15:54:19] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-28 15:54:24,764 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-28 15:54:24,765 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 15:54:24] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 15:54:25,061 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 15:54:25] "GET /api/market/types?_t=1766908464749 HTTP/1.1" 200 - +2025-12-28 15:54:25,065 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 15:54:25] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 15:54:25,094 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-28 15:54:25,553 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 15:54:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 15:54:27,314 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 15:54:27] "GET /api/market/config?_t=1766908466991 HTTP/1.1" 200 - +2025-12-28 15:54:27,319 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 15:54:27] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 15:54:27,559 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 15:54:27] "GET /api/market/types?_t=1766908467322 HTTP/1.1" 200 - +2025-12-28 15:54:27,636 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 15:54:27] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-28 15:54:29,963 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 15:54:29] "GET /api/strategies?_t=1766908469949 HTTP/1.1" 200 - +2025-12-28 15:54:31,389 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 15:54:31] "GET /api/strategies/equityCurve?id=2&_t=1766908470945 HTTP/1.1" 200 - +2025-12-28 15:54:31,394 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 15:54:31] "GET /api/strategies/equityCurve?id=2&_t=1766908470945 HTTP/1.1" 200 - +2025-12-28 15:54:31,398 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 15:54:31] "GET /api/strategies/positions?id=2&_t=1766908470947 HTTP/1.1" 200 - +2025-12-28 15:54:32,360 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 15:54:32] "GET /api/strategies/trades?id=2&_t=1766908472353 HTTP/1.1" 200 - +2025-12-28 15:54:34,002 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 15:54:34] "GET /api/strategies/equityCurve?id=1&_t=1766908473679 HTTP/1.1" 200 - +2025-12-28 15:54:34,006 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 15:54:34] "GET /api/strategies/equityCurve?id=1&_t=1766908473679 HTTP/1.1" 200 - +2025-12-28 15:54:34,009 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 15:54:34] "GET /api/strategies/positions?id=1&_t=1766908473680 HTTP/1.1" 200 - +2025-12-28 15:54:34,012 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 15:54:34] "GET /api/strategies/trades?id=1&_t=1766908473680 HTTP/1.1" 200 - +2025-12-28 15:54:37,573 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 15:54:37] "GET /api/dashboard/summary?_t=1766908477560 HTTP/1.1" 200 - +2025-12-28 15:54:37,884 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 15:54:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766908477560 HTTP/1.1" 200 - +2025-12-28 15:55:23,655 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 15:55:23] "GET /api/dashboard/summary?_t=1766908523646 HTTP/1.1" 200 - +2025-12-28 15:55:23,658 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 15:55:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766908523646 HTTP/1.1" 200 - +2025-12-28 16:37:47,367 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:37:47] "GET /api/dashboard/summary?_t=1766911067049 HTTP/1.1" 200 - +2025-12-28 16:37:47,371 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:37:47] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766911067049 HTTP/1.1" 200 - +2025-12-28 16:42:05,748 - app - INFO - Pending order worker is disabled (paper mode). Set ENABLE_PENDING_ORDER_WORKER=true to enable. +2025-12-28 16:42:05,748 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-28 16:42:05,760 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-28 16:42:05,760 - werkzeug - INFO - Press CTRL+C to quit +2025-12-28 16:42:09,164 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-28 16:42:09,169 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:42:09] "GET /api/dashboard/summary?_t=1766911329148 HTTP/1.1" 200 - +2025-12-28 16:42:09,176 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:42:09] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766911329148 HTTP/1.1" 200 - +2025-12-28 16:42:13,587 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:42:13] "GET /api/strategies?_t=1766911333574 HTTP/1.1" 200 - +2025-12-28 16:42:14,791 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:42:14] "GET /api/strategies/equityCurve?id=2&_t=1766911334775 HTTP/1.1" 200 - +2025-12-28 16:42:15,106 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:42:15] "GET /api/strategies/equityCurve?id=2&_t=1766911334775 HTTP/1.1" 200 - +2025-12-28 16:42:15,108 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:42:15] "GET /api/strategies/positions?id=2&_t=1766911334779 HTTP/1.1" 200 - +2025-12-28 16:42:19,126 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:42:19] "GET /api/strategies/equityCurve?id=1&_t=1766911338804 HTTP/1.1" 200 - +2025-12-28 16:42:19,129 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:42:19] "GET /api/strategies/equityCurve?id=1&_t=1766911338804 HTTP/1.1" 200 - +2025-12-28 16:42:19,132 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:42:19] "GET /api/strategies/positions?id=1&_t=1766911338805 HTTP/1.1" 200 - +2025-12-28 16:42:21,071 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:42:21] "GET /api/strategies/trades?id=1&_t=1766911341063 HTTP/1.1" 200 - +2025-12-28 16:42:23,142 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:42:23] "GET /api/strategies/equityCurve?id=2&_t=1766911342813 HTTP/1.1" 200 - +2025-12-28 16:42:23,146 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:42:23] "GET /api/strategies/equityCurve?id=2&_t=1766911342813 HTTP/1.1" 200 - +2025-12-28 16:42:23,150 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:42:23] "GET /api/strategies/positions?id=2&_t=1766911342814 HTTP/1.1" 200 - +2025-12-28 16:42:23,154 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:42:23] "GET /api/strategies/trades?id=2&_t=1766911342814 HTTP/1.1" 200 - +2025-12-28 16:42:27,830 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:42:27] "GET /api/strategies/positions?id=2&_t=1766911347823 HTTP/1.1" 200 - +2025-12-28 16:42:33,134 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:42:33] "GET /api/strategies/positions?id=2&_t=1766911352816 HTTP/1.1" 200 - +2025-12-28 16:42:34,981 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:42:34] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 16:42:35,289 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:42:35] "GET /api/market/config?_t=1766911354963 HTTP/1.1" 200 - +2025-12-28 16:42:35,495 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 16:42:35,495 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 16:42:35,495 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 16:42:35,495 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 16:42:35,495 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 16:42:36,998 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 00700 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (405757็ง’) +2025-12-28 16:42:37,031 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 000858 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (232957็ง’) +2025-12-28 16:42:37,035 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 300475 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (232957็ง’) +2025-12-28 16:42:37,036 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 600519 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (232957็ง’) +2025-12-28 16:42:37,461 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: AAPL ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (186157็ง’) +2025-12-28 16:42:44,616 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:42:44] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-28 16:42:44,619 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:42:44] "GET /api/market/types?_t=1766911355300 HTTP/1.1" 200 - +2025-12-28 16:42:44,622 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:42:44] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 16:42:44,625 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:42:44] "GET /api/market/types?_t=1766911355977 HTTP/1.1" 200 - +2025-12-28 16:42:44,629 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:42:44] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 16:42:44,634 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:42:44] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 16:42:44,922 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:42:44] "GET /api/market/types?_t=1766911362063 HTTP/1.1" 200 - +2025-12-28 16:42:44,928 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:42:44] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 16:42:44,931 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:42:44] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 16:42:44,939 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:42:44] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 16:42:44,942 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:42:44] "GET /api/market/types?_t=1766911364016 HTTP/1.1" 200 - +2025-12-28 16:42:44,984 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:42:44] "GET /api/market/types?_t=1766911364671 HTTP/1.1" 200 - +2025-12-28 16:42:45,233 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:42:45] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 16:42:45,239 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:42:45] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 16:42:45,557 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-28 16:42:46,184 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:42:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 16:42:48,113 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:42:48] "GET /api/strategies?_t=1766911368104 HTTP/1.1" 200 - +2025-12-28 16:42:49,646 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:42:49] "GET /api/market/types?_t=1766911369330 HTTP/1.1" 200 - +2025-12-28 16:42:49,650 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:42:49] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 16:42:49,659 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:42:49] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 16:42:49,909 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-28 16:42:49,910 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:42:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 16:52:50,251 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-28 16:52:51,697 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 16:52:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 17:02:50,254 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-28 17:02:51,318 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:02:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 17:07:27,600 - app - INFO - Pending order worker is disabled (paper mode). Set ENABLE_PENDING_ORDER_WORKER=true to enable. +2025-12-28 17:07:27,601 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-28 17:07:27,614 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-28 17:07:27,614 - werkzeug - INFO - Press CTRL+C to quit +2025-12-28 17:07:36,750 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-28 17:07:36,755 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:07:36] "GET /api/dashboard/summary?_t=1766912856435 HTTP/1.1" 200 - +2025-12-28 17:07:36,760 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:07:36] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766912856435 HTTP/1.1" 200 - +2025-12-28 17:08:05,714 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:05] "GET /api/strategies?_t=1766912885698 HTTP/1.1" 200 - +2025-12-28 17:08:08,832 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:08] "GET /api/strategies?_t=1766912888522 HTTP/1.1" 200 - +2025-12-28 17:08:09,998 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:09] "GET /api/strategies/equityCurve?id=8&_t=1766912889986 HTTP/1.1" 200 - +2025-12-28 17:08:10,301 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:10] "GET /api/strategies/equityCurve?id=8&_t=1766912889986 HTTP/1.1" 200 - +2025-12-28 17:08:10,305 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:10] "GET /api/strategies/positions?id=8&_t=1766912889990 HTTP/1.1" 200 - +2025-12-28 17:08:11,204 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:11] "GET /api/strategies/equityCurve?id=8&_t=1766912890883 HTTP/1.1" 200 - +2025-12-28 17:08:11,208 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:11] "GET /api/strategies/equityCurve?id=8&_t=1766912890883 HTTP/1.1" 200 - +2025-12-28 17:08:11,674 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:11] "DELETE /api/strategies/delete?id=8 HTTP/1.1" 200 - +2025-12-28 17:08:12,012 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:12] "GET /api/strategies?_t=1766912891687 HTTP/1.1" 200 - +2025-12-28 17:08:13,006 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:13] "GET /api/strategies/equityCurve?id=7&_t=1766912892992 HTTP/1.1" 200 - +2025-12-28 17:08:13,319 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:13] "GET /api/strategies/equityCurve?id=7&_t=1766912892992 HTTP/1.1" 200 - +2025-12-28 17:08:13,322 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:13] "GET /api/strategies/positions?id=7&_t=1766912892996 HTTP/1.1" 200 - +2025-12-28 17:08:14,128 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:14] "GET /api/strategies/equityCurve?id=7&_t=1766912893815 HTTP/1.1" 200 - +2025-12-28 17:08:14,132 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:14] "GET /api/strategies/equityCurve?id=7&_t=1766912893815 HTTP/1.1" 200 - +2025-12-28 17:08:14,490 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:14] "DELETE /api/strategies/delete?id=7 HTTP/1.1" 200 - +2025-12-28 17:08:14,826 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:14] "GET /api/strategies?_t=1766912894502 HTTP/1.1" 200 - +2025-12-28 17:08:15,640 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:15] "GET /api/strategies/equityCurve?id=6&_t=1766912895627 HTTP/1.1" 200 - +2025-12-28 17:08:15,942 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:15] "GET /api/strategies/equityCurve?id=6&_t=1766912895627 HTTP/1.1" 200 - +2025-12-28 17:08:15,946 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:15] "GET /api/strategies/positions?id=6&_t=1766912895630 HTTP/1.1" 200 - +2025-12-28 17:08:16,861 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:16] "GET /api/strategies/equityCurve?id=6&_t=1766912896552 HTTP/1.1" 200 - +2025-12-28 17:08:16,864 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:16] "GET /api/strategies/equityCurve?id=6&_t=1766912896552 HTTP/1.1" 200 - +2025-12-28 17:08:17,316 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:17] "DELETE /api/strategies/delete?id=6 HTTP/1.1" 200 - +2025-12-28 17:08:17,651 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:17] "GET /api/strategies?_t=1766912897329 HTTP/1.1" 200 - +2025-12-28 17:08:18,660 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:18] "GET /api/strategies/equityCurve?id=5&_t=1766912898647 HTTP/1.1" 200 - +2025-12-28 17:08:18,968 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:18] "GET /api/strategies/equityCurve?id=5&_t=1766912898647 HTTP/1.1" 200 - +2025-12-28 17:08:18,973 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:18] "GET /api/strategies/positions?id=5&_t=1766912898651 HTTP/1.1" 200 - +2025-12-28 17:08:19,726 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:19] "GET /api/strategies/equityCurve?id=5&_t=1766912899402 HTTP/1.1" 200 - +2025-12-28 17:08:19,730 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:19] "GET /api/strategies/equityCurve?id=5&_t=1766912899402 HTTP/1.1" 200 - +2025-12-28 17:08:20,241 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:20] "DELETE /api/strategies/delete?id=5 HTTP/1.1" 200 - +2025-12-28 17:08:20,577 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:20] "GET /api/strategies?_t=1766912900252 HTTP/1.1" 200 - +2025-12-28 17:08:21,213 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:21] "GET /api/strategies/equityCurve?id=4&_t=1766912901202 HTTP/1.1" 200 - +2025-12-28 17:08:21,530 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:21] "GET /api/strategies/equityCurve?id=4&_t=1766912901202 HTTP/1.1" 200 - +2025-12-28 17:08:21,532 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:21] "GET /api/strategies/positions?id=4&_t=1766912901206 HTTP/1.1" 200 - +2025-12-28 17:08:22,368 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:22] "GET /api/strategies/equityCurve?id=4&_t=1766912902054 HTTP/1.1" 200 - +2025-12-28 17:08:22,374 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:22] "GET /api/strategies/equityCurve?id=4&_t=1766912902054 HTTP/1.1" 200 - +2025-12-28 17:08:22,967 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:22] "DELETE /api/strategies/delete?id=4 HTTP/1.1" 200 - +2025-12-28 17:08:23,308 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:23] "GET /api/strategies?_t=1766912902981 HTTP/1.1" 200 - +2025-12-28 17:08:24,058 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:24] "GET /api/strategies/equityCurve?id=3&_t=1766912904045 HTTP/1.1" 200 - +2025-12-28 17:08:24,369 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:24] "GET /api/strategies/equityCurve?id=3&_t=1766912904045 HTTP/1.1" 200 - +2025-12-28 17:08:24,373 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:24] "GET /api/strategies/positions?id=3&_t=1766912904048 HTTP/1.1" 200 - +2025-12-28 17:08:25,099 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:25] "GET /api/strategies/equityCurve?id=3&_t=1766912904782 HTTP/1.1" 200 - +2025-12-28 17:08:25,103 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:25] "GET /api/strategies/equityCurve?id=3&_t=1766912904782 HTTP/1.1" 200 - +2025-12-28 17:08:25,596 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:25] "DELETE /api/strategies/delete?id=3 HTTP/1.1" 200 - +2025-12-28 17:08:25,924 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:25] "GET /api/strategies?_t=1766912905605 HTTP/1.1" 200 - +2025-12-28 17:08:26,732 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:26] "GET /api/market/types?_t=1766912906725 HTTP/1.1" 200 - +2025-12-28 17:08:27,044 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:27] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 17:08:27,050 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:27] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 17:08:27,375 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-28 17:08:35,149 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 17:08:35,154 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:35] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 17:08:35,158 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:35] "GET /api/market/config?_t=1766912910544 HTTP/1.1" 200 - +2025-12-28 17:08:35,165 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:35] "GET /api/dashboard/summary?_t=1766912914080 HTTP/1.1" 200 - +2025-12-28 17:08:35,171 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:35] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766912914080 HTTP/1.1" 200 - +2025-12-28 17:08:35,698 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 17:08:35,698 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 17:08:35,698 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 17:08:35,699 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 17:08:35,699 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 17:08:36,990 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 600519 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (234517็ง’) +2025-12-28 17:08:36,991 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 000858 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (234517็ง’) +2025-12-28 17:08:37,044 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 300475 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (234517็ง’) +2025-12-28 17:08:37,045 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 00700 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (407317็ง’) +2025-12-28 17:08:38,150 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: AAPL ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (187718็ง’) +2025-12-28 17:08:38,151 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:38] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-28 17:08:38,154 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:38] "GET /api/market/types?_t=1766912915161 HTTP/1.1" 200 - +2025-12-28 17:08:39,816 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:39] "GET /api/market/config?_t=1766912919491 HTTP/1.1" 200 - +2025-12-28 17:08:39,820 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:39] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 17:08:40,079 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:40] "GET /api/market/types?_t=1766912919823 HTTP/1.1" 200 - +2025-12-28 17:08:40,141 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:40] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-28 17:08:41,916 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:41] "GET /api/market/types?_t=1766912921909 HTTP/1.1" 200 - +2025-12-28 17:08:42,226 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:42] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 17:08:42,232 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:42] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 17:08:42,558 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-28 17:08:42,561 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 17:08:45,745 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:45] "GET /api/strategies?_t=1766912925733 HTTP/1.1" 200 - +2025-12-28 17:08:47,532 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:47] "GET /api/market/types?_t=1766912927192 HTTP/1.1" 200 - +2025-12-28 17:08:47,537 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:47] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 17:08:47,548 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:47] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 17:08:47,793 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-28 17:08:47,795 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 17:08:47,900 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:47] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 17:08:48,201 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:48] "GET /api/market/config?_t=1766912927893 HTTP/1.1" 200 - +2025-12-28 17:08:48,221 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:48] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-28 17:08:48,528 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:48] "GET /api/market/types?_t=1766912928213 HTTP/1.1" 200 - +2025-12-28 17:08:50,530 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:50] "GET /api/strategies?_t=1766912930208 HTTP/1.1" 200 - +2025-12-28 17:08:51,332 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:51] "GET /api/dashboard/summary?_t=1766912931321 HTTP/1.1" 200 - +2025-12-28 17:08:51,733 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:51] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766912931321 HTTP/1.1" 200 - +2025-12-28 17:08:59,179 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:59] "GET /api/market/types?_t=1766912938848 HTTP/1.1" 200 - +2025-12-28 17:08:59,184 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:59] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 17:08:59,192 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:59] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 17:08:59,419 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-28 17:08:59,421 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:08:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 17:09:00,067 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:09:00] "GET /api/strategies?_t=1766912940049 HTTP/1.1" 200 - +2025-12-28 17:09:02,081 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:09:02] "GET /api/strategies/equityCurve?id=2&_t=1766912941580 HTTP/1.1" 200 - +2025-12-28 17:09:02,085 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:09:02] "GET /api/strategies/equityCurve?id=2&_t=1766912941580 HTTP/1.1" 200 - +2025-12-28 17:09:02,092 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:09:02] "GET /api/strategies/positions?id=2&_t=1766912941582 HTTP/1.1" 200 - +2025-12-28 17:09:02,584 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:09:02] "GET /api/strategies/equityCurve?id=1&_t=1766912942573 HTTP/1.1" 200 - +2025-12-28 17:09:02,889 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:09:02] "GET /api/strategies/equityCurve?id=1&_t=1766912942574 HTTP/1.1" 200 - +2025-12-28 17:09:02,892 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:09:02] "GET /api/strategies/positions?id=1&_t=1766912942574 HTTP/1.1" 200 - +2025-12-28 17:09:04,482 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:09:04] "GET /api/market/types?_t=1766912944169 HTTP/1.1" 200 - +2025-12-28 17:09:04,488 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:09:04] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 17:09:04,498 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:09:04] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 17:09:04,730 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-28 17:09:04,734 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:09:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 17:09:05,671 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:09:05] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 17:09:05,976 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:09:05] "GET /api/market/config?_t=1766912945648 HTTP/1.1" 200 - +2025-12-28 17:09:06,023 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:09:06] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-28 17:09:06,305 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:09:06] "GET /api/market/types?_t=1766912945987 HTTP/1.1" 200 - +2025-12-28 17:09:07,860 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:09:07] "GET /api/dashboard/summary?_t=1766912947486 HTTP/1.1" 200 - +2025-12-28 17:09:07,866 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:09:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766912947486 HTTP/1.1" 200 - +2025-12-28 17:09:17,555 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:09:17] "GET /api/market/config?_t=1766912957535 HTTP/1.1" 200 - +2025-12-28 17:09:17,860 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:09:17] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 17:09:17,906 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:09:17] "GET /api/market/types?_t=1766912957597 HTTP/1.1" 200 - +2025-12-28 17:09:18,199 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:09:18] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-28 17:09:18,814 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:09:18] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 17:09:18,820 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:09:18] "GET /api/market/types?_t=1766912958492 HTTP/1.1" 200 - +2025-12-28 17:09:18,827 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:09:18] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 17:09:19,071 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-28 17:09:19,073 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:09:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 17:09:20,729 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:09:20] "GET /api/dashboard/summary?_t=1766912960717 HTTP/1.1" 200 - +2025-12-28 17:09:21,037 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:09:21] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766912960717 HTTP/1.1" 200 - +2025-12-28 17:13:14,718 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:14] "GET /api/dashboard/summary?_t=1766913194400 HTTP/1.1" 200 - +2025-12-28 17:13:14,723 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766913194400 HTTP/1.1" 200 - +2025-12-28 17:13:16,445 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:16] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 17:13:16,744 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:16] "GET /api/market/config?_t=1766913196419 HTTP/1.1" 200 - +2025-12-28 17:13:16,809 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:16] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-28 17:13:17,063 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:17] "GET /api/market/types?_t=1766913196751 HTTP/1.1" 200 - +2025-12-28 17:13:17,984 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:17] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 17:13:17,987 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:17] "GET /api/market/types?_t=1766913197528 HTTP/1.1" 200 - +2025-12-28 17:13:17,990 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:17] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 17:13:18,114 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-28 17:13:18,116 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 17:13:18,632 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:18] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 17:13:18,943 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:18] "GET /api/market/config?_t=1766913198611 HTTP/1.1" 200 - +2025-12-28 17:13:18,977 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:18] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-28 17:13:19,266 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:19] "GET /api/market/types?_t=1766913198951 HTTP/1.1" 200 - +2025-12-28 17:13:19,879 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:19] "POST /api/analysis/getHistoryList HTTP/1.1" 200 - +2025-12-28 17:13:23,750 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:23] "GET /api/market/types?_t=1766913203739 HTTP/1.1" 200 - +2025-12-28 17:13:24,061 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:24] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 17:13:24,069 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:24] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 17:13:24,384 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-28 17:13:24,387 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 17:13:24,903 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:24] "GET /api/strategies?_t=1766913204889 HTTP/1.1" 200 - +2025-12-28 17:13:26,253 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:26] "GET /api/strategies/equityCurve?id=2&_t=1766913205925 HTTP/1.1" 200 - +2025-12-28 17:13:26,258 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:26] "GET /api/strategies/equityCurve?id=2&_t=1766913205925 HTTP/1.1" 200 - +2025-12-28 17:13:26,263 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:26] "GET /api/strategies/positions?id=2&_t=1766913205928 HTTP/1.1" 200 - +2025-12-28 17:13:27,039 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:27] "GET /api/strategies/trades?id=2&_t=1766913207030 HTTP/1.1" 200 - +2025-12-28 17:13:28,878 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:28] "GET /api/strategies/equityCurve?id=1&_t=1766913208552 HTTP/1.1" 200 - +2025-12-28 17:13:28,883 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:28] "GET /api/strategies/equityCurve?id=1&_t=1766913208552 HTTP/1.1" 200 - +2025-12-28 17:13:28,887 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:28] "GET /api/strategies/positions?id=1&_t=1766913208553 HTTP/1.1" 200 - +2025-12-28 17:13:28,890 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:28] "GET /api/strategies/trades?id=1&_t=1766913208553 HTTP/1.1" 200 - +2025-12-28 17:13:31,657 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:31] "GET /api/strategies/equityCurve?id=2&_t=1766913211647 HTTP/1.1" 200 - +2025-12-28 17:13:31,970 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:31] "GET /api/strategies/equityCurve?id=2&_t=1766913211647 HTTP/1.1" 200 - +2025-12-28 17:13:31,973 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:31] "GET /api/strategies/positions?id=2&_t=1766913211648 HTTP/1.1" 200 - +2025-12-28 17:13:31,976 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:31] "GET /api/strategies/trades?id=2&_t=1766913211648 HTTP/1.1" 200 - +2025-12-28 17:13:32,972 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:32] "GET /api/market/types?_t=1766913212651 HTTP/1.1" 200 - +2025-12-28 17:13:32,977 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:32] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 17:13:32,985 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:32] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 17:13:33,226 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-28 17:13:33,227 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 17:13:34,142 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:34] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 17:13:34,445 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:34] "GET /api/market/config?_t=1766913214122 HTTP/1.1" 200 - +2025-12-28 17:13:34,487 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:34] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-28 17:13:34,782 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:34] "GET /api/market/types?_t=1766913214457 HTTP/1.1" 200 - +2025-12-28 17:13:35,659 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:35] "GET /api/dashboard/summary?_t=1766913215310 HTTP/1.1" 200 - +2025-12-28 17:13:35,666 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:35] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766913215310 HTTP/1.1" 200 - +2025-12-28 17:13:40,891 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:40] "GET /api/market/types?_t=1766913220884 HTTP/1.1" 200 - +2025-12-28 17:13:41,201 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:41] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 17:13:41,209 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:41] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 17:13:41,536 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-28 17:13:44,719 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 17:13:44,722 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:13:44] "GET /api/strategies?_t=1766913221765 HTTP/1.1" 200 - +2025-12-28 17:18:35,463 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-28 17:18:36,763 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:18:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 17:18:36,768 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:18:36] "GET /api/strategies/equityCurve?id=1&_t=1766913515492 HTTP/1.1" 200 - +2025-12-28 17:18:36,772 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:18:36] "GET /api/strategies/equityCurve?id=1&_t=1766913515492 HTTP/1.1" 200 - +2025-12-28 17:18:36,775 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:18:36] "GET /api/strategies/positions?id=1&_t=1766913515494 HTTP/1.1" 200 - +2025-12-28 17:18:36,780 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:18:36] "GET /api/strategies/equityCurve?id=2&_t=1766913516321 HTTP/1.1" 200 - +2025-12-28 17:18:36,785 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:18:36] "GET /api/strategies/equityCurve?id=2&_t=1766913516321 HTTP/1.1" 200 - +2025-12-28 17:18:37,070 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:18:37] "GET /api/strategies/positions?id=2&_t=1766913516321 HTTP/1.1" 200 - +2025-12-28 17:18:38,331 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:18:38] "GET /api/strategies/trades?id=2&_t=1766913518019 HTTP/1.1" 200 - +2025-12-28 17:18:39,939 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:18:39] "GET /api/strategies/equityCurve?id=1&_t=1766913519932 HTTP/1.1" 200 - +2025-12-28 17:18:40,250 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:18:40] "GET /api/strategies/equityCurve?id=1&_t=1766913519932 HTTP/1.1" 200 - +2025-12-28 17:18:40,252 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:18:40] "GET /api/strategies/positions?id=1&_t=1766913519932 HTTP/1.1" 200 - +2025-12-28 17:18:40,255 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:18:40] "GET /api/strategies/trades?id=1&_t=1766913519932 HTTP/1.1" 200 - +2025-12-28 17:18:41,619 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:18:41] "GET /api/market/types?_t=1766913521295 HTTP/1.1" 200 - +2025-12-28 17:18:41,622 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:18:41] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 17:18:41,629 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:18:41] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 17:18:41,864 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-28 17:18:41,866 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:18:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 17:18:42,796 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:18:42] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 17:18:43,103 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:18:43] "GET /api/market/config?_t=1766913522775 HTTP/1.1" 200 - +2025-12-28 17:18:43,184 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: AAPL ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (188323็ง’) +2025-12-28 17:18:44,571 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 000858 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (235125็ง’) +2025-12-28 17:18:44,814 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 600519 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (235125็ง’) +2025-12-28 17:18:45,085 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 300475 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (235125็ง’) +2025-12-28 17:18:46,792 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 00700 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (407927็ง’) +2025-12-28 17:18:46,792 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:18:46] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-28 17:18:46,795 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:18:46] "GET /api/market/types?_t=1766913523109 HTTP/1.1" 200 - +2025-12-28 17:19:05,272 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:05] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 17:19:05,277 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:05] "GET /api/market/types?_t=1766913544944 HTTP/1.1" 200 - +2025-12-28 17:19:05,285 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:05] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 17:19:05,514 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-28 17:19:05,933 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 17:19:09,770 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:09] "GET /api/strategies?_t=1766913549761 HTTP/1.1" 200 - +2025-12-28 17:19:11,237 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:11] "GET /api/strategies/equityCurve?id=2&_t=1766913550921 HTTP/1.1" 200 - +2025-12-28 17:19:11,240 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:11] "GET /api/strategies/equityCurve?id=2&_t=1766913550921 HTTP/1.1" 200 - +2025-12-28 17:19:11,243 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:11] "GET /api/strategies/positions?id=2&_t=1766913550923 HTTP/1.1" 200 - +2025-12-28 17:19:12,160 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:12] "GET /api/strategies/trades?id=2&_t=1766913552153 HTTP/1.1" 200 - +2025-12-28 17:19:13,986 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:13] "GET /api/strategies/equityCurve?id=1&_t=1766913553667 HTTP/1.1" 200 - +2025-12-28 17:19:13,990 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:13] "GET /api/strategies/equityCurve?id=1&_t=1766913553667 HTTP/1.1" 200 - +2025-12-28 17:19:13,992 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:13] "GET /api/strategies/positions?id=1&_t=1766913553667 HTTP/1.1" 200 - +2025-12-28 17:19:13,996 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:13] "GET /api/strategies/trades?id=1&_t=1766913553667 HTTP/1.1" 200 - +2025-12-28 17:19:15,896 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:15] "GET /api/strategies/equityCurve?id=2&_t=1766913555886 HTTP/1.1" 200 - +2025-12-28 17:19:16,209 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:16] "GET /api/strategies/equityCurve?id=2&_t=1766913555886 HTTP/1.1" 200 - +2025-12-28 17:19:16,212 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:16] "GET /api/strategies/positions?id=2&_t=1766913555887 HTTP/1.1" 200 - +2025-12-28 17:19:16,214 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:16] "GET /api/strategies/trades?id=2&_t=1766913555887 HTTP/1.1" 200 - +2025-12-28 17:19:19,537 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:19] "GET /api/strategies?_t=1766913559523 HTTP/1.1" 200 - +2025-12-28 17:19:20,503 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:20] "GET /api/strategies/equityCurve?id=2&_t=1766913560494 HTTP/1.1" 200 - +2025-12-28 17:19:20,817 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:20] "GET /api/strategies/equityCurve?id=2&_t=1766913560494 HTTP/1.1" 200 - +2025-12-28 17:19:20,821 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:20] "GET /api/strategies/positions?id=2&_t=1766913560495 HTTP/1.1" 200 - +2025-12-28 17:19:22,112 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:22] "GET /api/strategies/equityCurve?id=1&_t=1766913561801 HTTP/1.1" 200 - +2025-12-28 17:19:22,115 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:22] "GET /api/strategies/equityCurve?id=1&_t=1766913561801 HTTP/1.1" 200 - +2025-12-28 17:19:22,118 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:22] "GET /api/strategies/positions?id=1&_t=1766913561802 HTTP/1.1" 200 - +2025-12-28 17:19:22,745 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:22] "GET /api/strategies/trades?id=1&_t=1766913562737 HTTP/1.1" 200 - +2025-12-28 17:19:25,401 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:25] "GET /api/market/types?_t=1766913565078 HTTP/1.1" 200 - +2025-12-28 17:19:25,406 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:25] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 17:19:25,413 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:25] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 17:19:25,656 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-28 17:19:25,657 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 17:19:26,572 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:26] "GET /api/strategies?_t=1766913566563 HTTP/1.1" 200 - +2025-12-28 17:19:27,859 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:27] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 17:19:27,863 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:27] "GET /api/market/config?_t=1766913567530 HTTP/1.1" 200 - +2025-12-28 17:19:28,119 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:28] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-28 17:19:28,178 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:28] "GET /api/market/types?_t=1766913567874 HTTP/1.1" 200 - +2025-12-28 17:19:29,025 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:29] "GET /api/strategies?_t=1766913569014 HTTP/1.1" 200 - +2025-12-28 17:19:31,097 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:31] "GET /api/strategies/equityCurve?id=1&_t=1766913570779 HTTP/1.1" 200 - +2025-12-28 17:19:31,101 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:31] "GET /api/strategies/equityCurve?id=1&_t=1766913570779 HTTP/1.1" 200 - +2025-12-28 17:19:31,104 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:31] "GET /api/strategies/positions?id=1&_t=1766913570781 HTTP/1.1" 200 - +2025-12-28 17:19:32,628 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:32] "GET /api/dashboard/summary?_t=1766913572595 HTTP/1.1" 200 - +2025-12-28 17:19:32,941 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766913572595 HTTP/1.1" 200 - +2025-12-28 17:19:49,839 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:49] "GET /api/dashboard/summary?_t=1766913589527 HTTP/1.1" 200 - +2025-12-28 17:19:49,842 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:49] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766913589527 HTTP/1.1" 200 - +2025-12-28 17:19:57,520 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:57] "GET /api/strategies?_t=1766913597509 HTTP/1.1" 200 - +2025-12-28 17:19:58,944 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:58] "GET /api/strategies/equityCurve?id=2&_t=1766913598615 HTTP/1.1" 200 - +2025-12-28 17:19:58,947 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:58] "GET /api/strategies/equityCurve?id=2&_t=1766913598615 HTTP/1.1" 200 - +2025-12-28 17:19:58,950 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:19:58] "GET /api/strategies/positions?id=2&_t=1766913598618 HTTP/1.1" 200 - +2025-12-28 17:20:00,210 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:20:00] "GET /api/strategies/equityCurve?id=1&_t=1766913600200 HTTP/1.1" 200 - +2025-12-28 17:20:00,517 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:20:00] "GET /api/strategies/equityCurve?id=1&_t=1766913600200 HTTP/1.1" 200 - +2025-12-28 17:20:00,519 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:20:00] "GET /api/strategies/positions?id=1&_t=1766913600201 HTTP/1.1" 200 - +2025-12-28 17:20:02,302 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:20:02] "GET /api/strategies/equityCurve?id=1&_t=1766913601988 HTTP/1.1" 200 - +2025-12-28 17:20:02,305 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:20:02] "GET /api/strategies/equityCurve?id=1&_t=1766913601988 HTTP/1.1" 200 - +2025-12-28 17:20:03,316 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:20:03] "GET /api/strategies/equityCurve?id=1&_t=1766913603305 HTTP/1.1" 200 - +2025-12-28 17:20:03,620 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:20:03] "GET /api/strategies/equityCurve?id=1&_t=1766913603305 HTTP/1.1" 200 - +2025-12-28 17:20:04,937 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ๆœชๅœจ่ฟ่กŒ +2025-12-28 17:20:04,945 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:20:04] "POST /api/strategies/stop?id=1 HTTP/1.1" 200 - +2025-12-28 17:20:05,163 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:20:05] "GET /api/strategies?_t=1766913604955 HTTP/1.1" 200 - +2025-12-28 17:20:05,272 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:20:05] "GET /api/strategies/positions?id=1&_t=1766913605200 HTTP/1.1" 200 - +2025-12-28 17:20:05,783 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:20:05] "GET /api/strategies/equityCurve?id=1&_t=1766913605773 HTTP/1.1" 200 - +2025-12-28 17:20:06,090 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:20:06] "GET /api/strategies/equityCurve?id=1&_t=1766913605773 HTTP/1.1" 200 - +2025-12-28 17:20:06,710 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:20:06] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 17:20:06,717 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:20:06] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 17:20:06,721 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:20:06] "GET /api/credentials/list?user_id=1&_t=1766913606399 HTTP/1.1" 200 - +2025-12-28 17:20:06,727 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:20:06] "GET /api/strategies/equityCurve?id=1&_t=1766913606414 HTTP/1.1" 200 - +2025-12-28 17:20:06,733 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:20:06] "GET /api/strategies/equityCurve?id=1&_t=1766913606414 HTTP/1.1" 200 - +2025-12-28 17:20:06,974 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:20:06] "GET /api/credentials/get?id=2&user_id=1&_t=1766913606856 HTTP/1.1" 200 - +2025-12-28 17:20:10,207 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:20:10] "GET /api/strategies/positions?id=1&_t=1766913610201 HTTP/1.1" 200 - +2025-12-28 17:20:15,519 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:20:15] "GET /api/strategies/positions?id=1&_t=1766913615209 HTTP/1.1" 200 - +2025-12-28 17:20:20,213 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:20:20] "GET /api/strategies/positions?id=1&_t=1766913620205 HTTP/1.1" 200 - +2025-12-28 17:20:25,524 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:20:25] "GET /api/strategies/positions?id=1&_t=1766913625209 HTTP/1.1" 200 - +2025-12-28 17:20:30,216 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:20:30] "GET /api/strategies/positions?id=1&_t=1766913630208 HTTP/1.1" 200 - +2025-12-28 17:20:35,525 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:20:35] "GET /api/strategies/positions?id=1&_t=1766913635204 HTTP/1.1" 200 - +2025-12-28 17:20:36,413 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:20:36] "GET /api/strategies/equityCurve?id=1&_t=1766913636406 HTTP/1.1" 200 - +2025-12-28 17:20:40,513 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:20:40] "GET /api/strategies/positions?id=1&_t=1766913640200 HTTP/1.1" 200 - +2025-12-28 17:20:45,219 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:20:45] "GET /api/strategies/positions?id=1&_t=1766913645212 HTTP/1.1" 200 - +2025-12-28 17:20:47,282 - app.routes.strategy - INFO - ๆญฃๅœจๆต‹่ฏ•่ฟžๆŽฅ: exchange_id=okx +2025-12-28 17:20:47,283 - app.routes.strategy - INFO - API Key: 4cd9c... (len=36) +2025-12-28 17:20:47,283 - app.routes.strategy - INFO - Secret Key: 2B295... (len=32) +2025-12-28 17:20:54,689 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:20:54] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-28 17:20:54,692 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:20:54] "GET /api/strategies/positions?id=1&_t=1766913650204 HTTP/1.1" 200 - +2025-12-28 17:20:55,513 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:20:55] "GET /api/strategies/positions?id=1&_t=1766913655201 HTTP/1.1" 200 - +2025-12-28 17:20:56,532 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:20:56] "PUT /api/strategies/update?id=1 HTTP/1.1" 200 - +2025-12-28 17:20:56,888 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:20:56] "GET /api/strategies?_t=1766913656564 HTTP/1.1" 200 - +2025-12-28 17:20:58,289 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๅผ€ๅง‹่ฟ่กŒๅพช็Žฏ +2025-12-28 17:20:58,289 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๅฏๅŠจๆˆๅŠŸ +2025-12-28 17:20:58,289 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:20:58] "POST /api/strategies/start?id=1 HTTP/1.1" 200 - +2025-12-28 17:20:58,290 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๅˆ็บฆไบคๆ˜“๏ผŒๅธ‚ๅœบ็ฑปๅž‹็ปŸไธ€ไธบ: swap +2025-12-28 17:20:58,651 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:20:58] "GET /api/strategies?_t=1766913658322 HTTP/1.1" 200 - +2025-12-28 17:20:58,867 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 17:20:58,885 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๅˆๅง‹ๅŒ–ๅฎŒๆˆ๏ผŒๅพ…่งฆๅ‘ไฟกๅทๆ•ฐ: 0 +2025-12-28 17:21:00,214 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:21:00] "GET /api/strategies/positions?id=1&_t=1766913660205 HTTP/1.1" 200 - +2025-12-28 17:21:00,788 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:21:00] "GET /api/strategies/equityCurve?id=2&_t=1766913660462 HTTP/1.1" 200 - +2025-12-28 17:21:00,791 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:21:00] "GET /api/strategies/equityCurve?id=2&_t=1766913660462 HTTP/1.1" 200 - +2025-12-28 17:21:00,793 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:21:00] "GET /api/strategies/positions?id=2&_t=1766913660467 HTTP/1.1" 200 - +2025-12-28 17:21:03,640 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:21:03] "GET /api/strategies/equityCurve?id=1&_t=1766913663627 HTTP/1.1" 200 - +2025-12-28 17:21:03,948 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:21:03] "GET /api/strategies/equityCurve?id=1&_t=1766913663627 HTTP/1.1" 200 - +2025-12-28 17:21:03,951 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:21:03] "GET /api/strategies/positions?id=1&_t=1766913663632 HTTP/1.1" 200 - +2025-12-28 17:21:04,773 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:21:04] "GET /api/strategies/equityCurve?id=2&_t=1766913664456 HTTP/1.1" 200 - +2025-12-28 17:21:04,777 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:21:04] "GET /api/strategies/equityCurve?id=2&_t=1766913664456 HTTP/1.1" 200 - +2025-12-28 17:21:04,781 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:21:04] "GET /api/strategies/positions?id=2&_t=1766913664461 HTTP/1.1" 200 - +2025-12-28 17:21:05,307 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:21:05] "GET /api/dashboard/summary?_t=1766913665296 HTTP/1.1" 200 - +2025-12-28 17:21:05,607 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:21:05] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766913665296 HTTP/1.1" 200 - +2025-12-28 17:23:45,044 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-28 17:23:45,600 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:23:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 17:28:35,474 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-28 17:28:35,475 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:28:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 17:32:59,743 - app.services.trading_executor - INFO - [็›‘ๆŽงไธญ] ็ญ–็•ฅ 1 ๅฝ“ๅ‰ไปท: 2941.7, ๅพ…่งฆๅ‘ไฟกๅทๆ•ฐ: 1 +2025-12-28 17:32:59,745 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ่งฆๅ‘ไฟกๅท! ่ฏฆๆƒ…: [{'type': 'close_long', 'trigger_price': 2941.7, 'position_size': 0, 'timestamp': 1766914320}] +2025-12-28 17:33:09,003 - app.services.trading_executor - INFO - [็›‘ๆŽงไธญ] ็ญ–็•ฅ 1 ๅฝ“ๅ‰ไปท: 2941.7, ๅพ…่งฆๅ‘ไฟกๅทๆ•ฐ: 2 +2025-12-28 17:33:09,005 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ่งฆๅ‘ไฟกๅท! ่ฏฆๆƒ…: [{'type': 'close_long', 'trigger_price': 2941.7, 'position_size': 0, 'timestamp': 1766914320}, {'type': 'open_short', 'trigger_price': 2941.7, 'position_size': 0.08, 'timestamp': 1766914320}] +2025-12-28 17:33:09,031 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆ‰ง่กŒไฟกๅทๆˆๅŠŸ: open_short @ 2941.7 +2025-12-28 17:33:19,179 - app.services.trading_executor - INFO - [็›‘ๆŽงไธญ] ็ญ–็•ฅ 1 ๅฝ“ๅ‰ไปท: 2941.18, ๅพ…่งฆๅ‘ไฟกๅทๆ•ฐ: 2 +2025-12-28 17:33:19,189 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ่งฆๅ‘ไฟกๅท! ่ฏฆๆƒ…: [{'type': 'close_long', 'trigger_price': 2941.7, 'position_size': 0, 'timestamp': 1766914320}, {'type': 'open_short', 'trigger_price': 2941.7, 'position_size': 0.08, 'timestamp': 1766914320}] +2025-12-28 17:33:29,007 - app.services.trading_executor - INFO - [็›‘ๆŽงไธญ] ็ญ–็•ฅ 1 ๅฝ“ๅ‰ไปท: 2941.18, ๅพ…่งฆๅ‘ไฟกๅทๆ•ฐ: 2 +2025-12-28 17:33:29,015 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ่งฆๅ‘ไฟกๅท! ่ฏฆๆƒ…: [{'type': 'close_long', 'trigger_price': 2941.7, 'position_size': 0, 'timestamp': 1766914320}, {'type': 'open_short', 'trigger_price': 2941.7, 'position_size': 0.08, 'timestamp': 1766914320}] +2025-12-28 17:33:39,121 - app.services.trading_executor - INFO - [็›‘ๆŽงไธญ] ็ญ–็•ฅ 1 ๅฝ“ๅ‰ไปท: 2941.32, ๅพ…่งฆๅ‘ไฟกๅทๆ•ฐ: 2 +2025-12-28 17:33:39,130 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ่งฆๅ‘ไฟกๅท! ่ฏฆๆƒ…: [{'type': 'close_long', 'trigger_price': 2941.7, 'position_size': 0, 'timestamp': 1766914320}, {'type': 'open_short', 'trigger_price': 2941.7, 'position_size': 0.08, 'timestamp': 1766914320}] +2025-12-28 17:33:45,046 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-28 17:33:45,155 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:33:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 17:33:49,011 - app.services.trading_executor - INFO - [็›‘ๆŽงไธญ] ็ญ–็•ฅ 1 ๅฝ“ๅ‰ไปท: 2941.32, ๅพ…่งฆๅ‘ไฟกๅทๆ•ฐ: 2 +2025-12-28 17:33:49,021 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ่งฆๅ‘ไฟกๅท! ่ฏฆๆƒ…: [{'type': 'close_long', 'trigger_price': 2941.7, 'position_size': 0, 'timestamp': 1766914320}, {'type': 'open_short', 'trigger_price': 2941.7, 'position_size': 0.08, 'timestamp': 1766914320}] +2025-12-28 17:33:59,912 - app.services.trading_executor - INFO - [็›‘ๆŽงไธญ] ็ญ–็•ฅ 1 ๅฝ“ๅ‰ไปท: 2941.53, ๅพ…่งฆๅ‘ไฟกๅทๆ•ฐ: 2 +2025-12-28 17:33:59,920 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ่งฆๅ‘ไฟกๅท! ่ฏฆๆƒ…: [{'type': 'close_long', 'trigger_price': 2941.71, 'position_size': 0, 'timestamp': 1766914320}, {'type': 'open_short', 'trigger_price': 2941.71, 'position_size': 0.08, 'timestamp': 1766914320}] +2025-12-28 17:38:35,474 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-28 17:38:35,474 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:38:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 17:43:45,053 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-28 17:43:45,522 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:43:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 17:46:05,041 - app - INFO - Pending order worker is disabled (paper mode). Set ENABLE_PENDING_ORDER_WORKER=true to enable. +2025-12-28 17:46:05,041 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-28 17:46:05,054 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-28 17:46:05,054 - werkzeug - INFO - Press CTRL+C to quit +2025-12-28 17:46:07,726 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:46:07] "GET /api/market/types?_t=1766915167406 HTTP/1.1" 200 - +2025-12-28 17:46:07,732 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-28 17:46:07,735 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:46:07] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 17:46:07,742 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:46:07] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 17:46:07,990 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-28 17:46:15,650 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:46:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 17:46:18,015 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:46:18] "GET /api/strategies?_t=1766915178004 HTTP/1.1" 200 - +2025-12-28 17:46:19,784 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:46:19] "GET /api/strategies/equityCurve?id=2&_t=1766915179246 HTTP/1.1" 200 - +2025-12-28 17:46:19,789 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:46:19] "GET /api/strategies/equityCurve?id=2&_t=1766915179246 HTTP/1.1" 200 - +2025-12-28 17:46:19,793 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:46:19] "GET /api/strategies/positions?id=2&_t=1766915179250 HTTP/1.1" 200 - +2025-12-28 17:46:20,616 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:46:20] "GET /api/strategies/trades?id=2&_t=1766915180610 HTTP/1.1" 200 - +2025-12-28 17:46:22,177 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:46:22] "GET /api/strategies/equityCurve?id=1&_t=1766915181851 HTTP/1.1" 200 - +2025-12-28 17:46:22,181 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:46:22] "GET /api/strategies/equityCurve?id=1&_t=1766915181851 HTTP/1.1" 200 - +2025-12-28 17:46:22,183 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:46:22] "GET /api/strategies/positions?id=1&_t=1766915181852 HTTP/1.1" 200 - +2025-12-28 17:46:22,186 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:46:22] "GET /api/strategies/trades?id=1&_t=1766915181852 HTTP/1.1" 200 - +2025-12-28 17:46:25,277 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:46:25] "GET /api/market/types?_t=1766915185269 HTTP/1.1" 200 - +2025-12-28 17:46:25,597 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:46:25] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 17:46:25,604 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:46:25] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 17:46:25,933 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-28 17:46:25,935 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:46:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 17:46:26,784 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:46:26] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 17:46:27,097 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:46:27] "GET /api/market/config?_t=1766915186530 HTTP/1.1" 200 - +2025-12-28 17:46:27,297 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 17:46:27,297 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 17:46:27,297 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 17:46:27,298 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 17:46:27,298 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 17:46:28,241 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 600519 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (236788็ง’) +2025-12-28 17:46:28,467 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 300475 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (236788็ง’) +2025-12-28 17:46:29,060 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 000858 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (236789็ง’) +2025-12-28 17:46:29,457 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: AAPL ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (189989็ง’) +2025-12-28 17:46:30,524 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 00700 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (409591็ง’) +2025-12-28 17:46:30,525 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:46:30] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-28 17:46:30,528 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:46:30] "GET /api/market/types?_t=1766915187103 HTTP/1.1" 200 - +2025-12-28 17:46:30,534 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:46:30] "GET /api/dashboard/summary?_t=1766915188325 HTTP/1.1" 200 - +2025-12-28 17:46:30,542 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:46:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766915188325 HTTP/1.1" 200 - +2025-12-28 17:47:34,341 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:47:34] "GET /api/strategies?_t=1766915254026 HTTP/1.1" 200 - +2025-12-28 17:47:35,225 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:47:35] "GET /api/strategies/equityCurve?id=1&_t=1766915255206 HTTP/1.1" 200 - +2025-12-28 17:47:35,532 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:47:35] "GET /api/strategies/equityCurve?id=1&_t=1766915255206 HTTP/1.1" 200 - +2025-12-28 17:47:35,535 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:47:35] "GET /api/strategies/positions?id=1&_t=1766915255208 HTTP/1.1" 200 - +2025-12-28 17:47:37,857 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:47:37] "GET /api/strategies/trades?id=1&_t=1766915257541 HTTP/1.1" 200 - +2025-12-28 17:47:40,216 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:47:40] "GET /api/strategies/positions?id=1&_t=1766915260210 HTTP/1.1" 200 - +2025-12-28 17:47:42,645 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:47:42] "GET /api/strategies/equityCurve?id=2&_t=1766915262297 HTTP/1.1" 200 - +2025-12-28 17:47:42,649 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:47:42] "GET /api/strategies/equityCurve?id=2&_t=1766915262297 HTTP/1.1" 200 - +2025-12-28 17:47:42,652 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:47:42] "GET /api/strategies/positions?id=2&_t=1766915262298 HTTP/1.1" 200 - +2025-12-28 17:47:42,655 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:47:42] "GET /api/strategies/trades?id=2&_t=1766915262298 HTTP/1.1" 200 - +2025-12-28 17:47:47,134 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:47:47] "GET /api/strategies/equityCurve?id=1&_t=1766915267124 HTTP/1.1" 200 - +2025-12-28 17:47:47,443 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:47:47] "GET /api/strategies/equityCurve?id=1&_t=1766915267124 HTTP/1.1" 200 - +2025-12-28 17:47:47,446 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:47:47] "GET /api/strategies/positions?id=1&_t=1766915267125 HTTP/1.1" 200 - +2025-12-28 17:47:47,448 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:47:47] "GET /api/strategies/trades?id=1&_t=1766915267125 HTTP/1.1" 200 - +2025-12-28 17:47:52,444 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:47:52] "GET /api/strategies/positions?id=1&_t=1766915272125 HTTP/1.1" 200 - +2025-12-28 17:47:52,619 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:47:52] "GET /api/dashboard/summary?_t=1766915272304 HTTP/1.1" 200 - +2025-12-28 17:47:52,627 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:47:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766915272304 HTTP/1.1" 200 - +2025-12-28 17:48:35,174 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-28 17:48:35,436 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:48:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 17:53:10,175 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:53:10] "GET /api/dashboard/summary?_t=1766915589851 HTTP/1.1" 200 - +2025-12-28 17:53:10,180 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:53:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766915589851 HTTP/1.1" 200 - +2025-12-28 17:53:13,757 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:53:13] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 17:53:14,064 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:53:14] "GET /api/market/config?_t=1766915593738 HTTP/1.1" 200 - +2025-12-28 17:53:14,127 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: AAPL ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (190394็ง’) +2025-12-28 17:53:15,356 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 600519 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (237195็ง’) +2025-12-28 17:53:15,727 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 000858 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (237196็ง’) +2025-12-28 17:53:15,889 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 300475 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (237196็ง’) +2025-12-28 17:53:18,041 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 00700 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (409998็ง’) +2025-12-28 17:53:18,042 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:53:18] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-28 17:53:18,044 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:53:18] "GET /api/market/types?_t=1766915594072 HTTP/1.1" 200 - +2025-12-28 17:53:20,687 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:53:20] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 17:53:20,692 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:53:20] "GET /api/market/types?_t=1766915600367 HTTP/1.1" 200 - +2025-12-28 17:53:20,696 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:53:20] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 17:53:20,947 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-28 17:53:21,608 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:53:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 17:53:22,385 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:53:22] "GET /api/strategies?_t=1766915602373 HTTP/1.1" 200 - +2025-12-28 17:53:23,833 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:53:23] "GET /api/strategies/equityCurve?id=2&_t=1766915603449 HTTP/1.1" 200 - +2025-12-28 17:53:23,837 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:53:23] "GET /api/strategies/equityCurve?id=2&_t=1766915603449 HTTP/1.1" 200 - +2025-12-28 17:53:23,840 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:53:23] "GET /api/strategies/positions?id=2&_t=1766915603451 HTTP/1.1" 200 - +2025-12-28 17:53:24,791 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:53:24] "GET /api/strategies/trades?id=2&_t=1766915604784 HTTP/1.1" 200 - +2025-12-28 17:53:26,421 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:53:26] "GET /api/strategies/equityCurve?id=1&_t=1766915606095 HTTP/1.1" 200 - +2025-12-28 17:53:26,424 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:53:26] "GET /api/strategies/equityCurve?id=1&_t=1766915606095 HTTP/1.1" 200 - +2025-12-28 17:53:26,427 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:53:26] "GET /api/strategies/positions?id=1&_t=1766915606096 HTTP/1.1" 200 - +2025-12-28 17:53:26,431 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:53:26] "GET /api/strategies/trades?id=1&_t=1766915606096 HTTP/1.1" 200 - +2025-12-28 17:53:31,110 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:53:31] "GET /api/strategies/positions?id=1&_t=1766915611104 HTTP/1.1" 200 - +2025-12-28 17:53:36,420 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:53:36] "GET /api/strategies/positions?id=1&_t=1766915616103 HTTP/1.1" 200 - +2025-12-28 17:53:41,106 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:53:41] "GET /api/strategies/positions?id=1&_t=1766915621100 HTTP/1.1" 200 - +2025-12-28 17:53:45,051 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-28 17:53:45,164 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:53:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 17:53:46,105 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:53:46] "GET /api/strategies/positions?id=1&_t=1766915626099 HTTP/1.1" 200 - +2025-12-28 17:53:51,421 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:53:51] "GET /api/strategies/positions?id=1&_t=1766915631106 HTTP/1.1" 200 - +2025-12-28 17:53:56,107 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:53:56] "GET /api/strategies/equityCurve?id=1&_t=1766915636096 HTTP/1.1" 200 - +2025-12-28 17:53:56,410 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:53:56] "GET /api/strategies/positions?id=1&_t=1766915636097 HTTP/1.1" 200 - +2025-12-28 17:54:01,417 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:54:01] "GET /api/strategies/positions?id=1&_t=1766915641103 HTTP/1.1" 200 - +2025-12-28 17:54:06,115 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:54:06] "GET /api/strategies/positions?id=1&_t=1766915646110 HTTP/1.1" 200 - +2025-12-28 17:54:11,420 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:54:11] "GET /api/strategies/positions?id=1&_t=1766915651103 HTTP/1.1" 200 - +2025-12-28 17:54:14,391 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:54:14] "GET /api/market/types?_t=1766915654384 HTTP/1.1" 200 - +2025-12-28 17:54:14,697 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:54:14] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 17:54:14,706 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:54:14] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 17:54:15,020 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-28 17:54:15,022 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:54:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 17:54:16,301 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:54:16] "GET /api/dashboard/summary?_t=1766915656291 HTTP/1.1" 200 - +2025-12-28 17:54:16,616 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:54:16] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766915656291 HTTP/1.1" 200 - +2025-12-28 17:56:31,669 - app - INFO - Pending order worker is disabled (paper mode). Set ENABLE_PENDING_ORDER_WORKER=true to enable. +2025-12-28 17:56:31,670 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-28 17:56:31,683 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-28 17:56:31,683 - werkzeug - INFO - Press CTRL+C to quit +2025-12-28 17:56:33,695 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-28 17:56:33,697 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:56:33] "GET /api/strategies?_t=1766915793376 HTTP/1.1" 200 - +2025-12-28 17:56:34,338 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:56:34] "GET /api/strategies/equityCurve?id=1&_t=1766915794330 HTTP/1.1" 200 - +2025-12-28 17:56:34,783 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:56:34] "GET /api/strategies/equityCurve?id=1&_t=1766915794330 HTTP/1.1" 200 - +2025-12-28 17:56:34,786 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:56:34] "GET /api/strategies/positions?id=1&_t=1766915794331 HTTP/1.1" 200 - +2025-12-28 17:56:37,389 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:56:37] "GET /api/strategies/trades?id=1&_t=1766915797068 HTTP/1.1" 200 - +2025-12-28 17:56:39,348 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:56:39] "GET /api/strategies/positions?id=1&_t=1766915799342 HTTP/1.1" 200 - +2025-12-28 17:56:44,651 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:56:44] "GET /api/strategies/positions?id=1&_t=1766915804335 HTTP/1.1" 200 - +2025-12-28 17:56:49,340 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:56:49] "GET /api/strategies/positions?id=1&_t=1766915809333 HTTP/1.1" 200 - +2025-12-28 17:56:54,650 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:56:54] "GET /api/strategies/positions?id=1&_t=1766915814334 HTTP/1.1" 200 - +2025-12-28 17:56:59,345 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:56:59] "GET /api/strategies/positions?id=1&_t=1766915819337 HTTP/1.1" 200 - +2025-12-28 17:56:59,704 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:56:59] "GET /api/strategies/equityCurve?id=2&_t=1766915819384 HTTP/1.1" 200 - +2025-12-28 17:56:59,709 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:56:59] "GET /api/strategies/equityCurve?id=2&_t=1766915819384 HTTP/1.1" 200 - +2025-12-28 17:56:59,712 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:56:59] "GET /api/strategies/positions?id=2&_t=1766915819385 HTTP/1.1" 200 - +2025-12-28 17:56:59,715 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:56:59] "GET /api/strategies/trades?id=2&_t=1766915819385 HTTP/1.1" 200 - +2025-12-28 17:57:03,652 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:57:03] "GET /api/market/config?_t=1766915823634 HTTP/1.1" 200 - +2025-12-28 17:57:03,958 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:57:03] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 17:57:04,003 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:57:04] "GET /api/market/types?_t=1766915823690 HTTP/1.1" 200 - +2025-12-28 17:57:04,430 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 17:57:04,431 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 17:57:04,431 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 17:57:04,431 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 17:57:04,431 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 17:57:05,661 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 600519 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (237426็ง’) +2025-12-28 17:57:05,900 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 000858 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (237426็ง’) +2025-12-28 17:57:05,935 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: AAPL ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (190626็ง’) +2025-12-28 17:57:05,978 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 300475 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (237426็ง’) +2025-12-28 17:57:08,717 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 00700 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (410229็ง’) +2025-12-28 17:57:11,257 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:57:11] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-28 17:57:14,821 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:57:14] "GET /api/market/types?_t=1766915834504 HTTP/1.1" 200 - +2025-12-28 17:57:14,827 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:57:14] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 17:57:14,835 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:57:14] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 17:57:15,080 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-28 17:57:15,607 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:57:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 17:57:17,081 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:57:17] "GET /api/dashboard/summary?_t=1766915837068 HTTP/1.1" 200 - +2025-12-28 17:57:17,386 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:57:17] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766915837068 HTTP/1.1" 200 - +2025-12-28 17:58:35,475 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-28 17:58:35,594 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:58:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 17:58:35,598 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:58:35] "GET /api/strategies?_t=1766915915228 HTTP/1.1" 200 - +2025-12-28 17:58:36,502 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:58:36] "GET /api/strategies/equityCurve?id=1&_t=1766915916491 HTTP/1.1" 200 - +2025-12-28 17:58:36,815 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:58:36] "GET /api/strategies/equityCurve?id=1&_t=1766915916491 HTTP/1.1" 200 - +2025-12-28 17:58:36,818 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:58:36] "GET /api/strategies/positions?id=1&_t=1766915916493 HTTP/1.1" 200 - +2025-12-28 17:58:41,816 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:58:41] "GET /api/strategies/positions?id=1&_t=1766915921501 HTTP/1.1" 200 - +2025-12-28 17:58:46,497 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:58:46] "GET /api/strategies/positions?id=1&_t=1766915926491 HTTP/1.1" 200 - +2025-12-28 17:58:51,812 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:58:51] "GET /api/strategies/positions?id=1&_t=1766915931497 HTTP/1.1" 200 - +2025-12-28 17:58:56,502 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:58:56] "GET /api/strategies/positions?id=1&_t=1766915936495 HTTP/1.1" 200 - +2025-12-28 17:59:01,809 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:59:01] "GET /api/strategies/positions?id=1&_t=1766915941496 HTTP/1.1" 200 - +2025-12-28 17:59:06,500 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:59:06] "GET /api/strategies/equityCurve?id=1&_t=1766915946494 HTTP/1.1" 200 - +2025-12-28 17:59:06,808 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:59:06] "GET /api/strategies/positions?id=1&_t=1766915946494 HTTP/1.1" 200 - +2025-12-28 17:59:11,805 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:59:11] "GET /api/strategies/positions?id=1&_t=1766915951492 HTTP/1.1" 200 - +2025-12-28 17:59:16,498 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:59:16] "GET /api/strategies/positions?id=1&_t=1766915956492 HTTP/1.1" 200 - +2025-12-28 17:59:21,811 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:59:21] "GET /api/strategies/positions?id=1&_t=1766915961494 HTTP/1.1" 200 - +2025-12-28 17:59:26,506 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:59:26] "GET /api/strategies/positions?id=1&_t=1766915966500 HTTP/1.1" 200 - +2025-12-28 17:59:31,807 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:59:31] "GET /api/strategies/positions?id=1&_t=1766915971490 HTTP/1.1" 200 - +2025-12-28 17:59:36,492 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:59:36] "GET /api/strategies/equityCurve?id=1&_t=1766915976485 HTTP/1.1" 200 - +2025-12-28 17:59:36,814 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:59:36] "GET /api/strategies/positions?id=1&_t=1766915976495 HTTP/1.1" 200 - +2025-12-28 17:59:41,511 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:59:41] "GET /api/strategies/positions?id=1&_t=1766915981503 HTTP/1.1" 200 - +2025-12-28 17:59:46,820 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:59:46] "GET /api/strategies/positions?id=1&_t=1766915986505 HTTP/1.1" 200 - +2025-12-28 17:59:51,498 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:59:51] "GET /api/strategies/positions?id=1&_t=1766915991491 HTTP/1.1" 200 - +2025-12-28 17:59:56,814 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 17:59:56] "GET /api/strategies/positions?id=1&_t=1766915996499 HTTP/1.1" 200 - +2025-12-28 18:00:01,496 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:00:01] "GET /api/strategies/positions?id=1&_t=1766916001490 HTTP/1.1" 200 - +2025-12-28 18:00:06,810 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:00:06] "GET /api/strategies/equityCurve?id=1&_t=1766916006494 HTTP/1.1" 200 - +2025-12-28 18:00:06,813 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:00:06] "GET /api/strategies/positions?id=1&_t=1766916006494 HTTP/1.1" 200 - +2025-12-28 18:00:11,500 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:00:11] "GET /api/strategies/positions?id=1&_t=1766916011494 HTTP/1.1" 200 - +2025-12-28 18:00:16,813 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:00:16] "GET /api/strategies/positions?id=1&_t=1766916016496 HTTP/1.1" 200 - +2025-12-28 18:00:21,503 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:00:21] "GET /api/strategies/positions?id=1&_t=1766916021497 HTTP/1.1" 200 - +2025-12-28 18:00:26,815 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:00:26] "GET /api/strategies/positions?id=1&_t=1766916026499 HTTP/1.1" 200 - +2025-12-28 18:00:31,503 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:00:31] "GET /api/strategies/positions?id=1&_t=1766916031497 HTTP/1.1" 200 - +2025-12-28 18:00:36,816 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:00:36] "GET /api/strategies/equityCurve?id=1&_t=1766916036500 HTTP/1.1" 200 - +2025-12-28 18:00:36,819 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:00:36] "GET /api/strategies/positions?id=1&_t=1766916036500 HTTP/1.1" 200 - +2025-12-28 18:00:41,510 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:00:41] "GET /api/strategies/positions?id=1&_t=1766916041504 HTTP/1.1" 200 - +2025-12-28 18:00:46,813 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:00:46] "GET /api/strategies/positions?id=1&_t=1766916046501 HTTP/1.1" 200 - +2025-12-28 18:00:51,500 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:00:51] "GET /api/strategies/positions?id=1&_t=1766916051491 HTTP/1.1" 200 - +2025-12-28 18:00:56,808 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:00:56] "GET /api/strategies/positions?id=1&_t=1766916056494 HTTP/1.1" 200 - +2025-12-28 18:01:01,495 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:01:01] "GET /api/strategies/positions?id=1&_t=1766916061489 HTTP/1.1" 200 - +2025-12-28 18:01:02,521 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:01:02] "GET /api/dashboard/summary?_t=1766916062206 HTTP/1.1" 200 - +2025-12-28 18:01:02,525 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:01:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766916062206 HTTP/1.1" 200 - +2025-12-28 18:03:45,049 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-28 18:03:45,963 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:03:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 18:07:27,830 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:07:27] "GET /api/dashboard/summary?_t=1766916447821 HTTP/1.1" 200 - +2025-12-28 18:07:28,049 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:07:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766916447821 HTTP/1.1" 200 - +2025-12-28 18:08:35,474 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 5 +2025-12-28 18:08:35,475 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:08:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 18:08:51,889 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:08:51] "GET /api/dashboard/summary?_t=1766916531882 HTTP/1.1" 200 - +2025-12-28 18:08:52,162 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:08:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766916531882 HTTP/1.1" 200 - +2025-12-28 18:09:21,081 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-28 18:09:21,082 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-28 18:09:21,087 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-28 18:09:21,103 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-28 18:09:21,104 - werkzeug - INFO - Press CTRL+C to quit +2025-12-28 18:09:22,752 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=1, strategy_id=1, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX HTTP 401: {"msg":"Invalid Sign","code":"50113"} +2025-12-28 18:09:24,173 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=1, strategy_id=1, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX HTTP 401: {"msg":"Invalid Sign","code":"50113"} +2025-12-28 18:09:24,188 - app.services.freqtrade_webhook - WARNING - Signal webhook URL is empty; skip webhook send. +2025-12-28 18:09:24,201 - app.services.freqtrade_webhook - WARNING - Signal webhook URL is empty; skip webhook send. +2025-12-28 18:09:24,214 - app.services.freqtrade_webhook - WARNING - Signal webhook URL is empty; skip webhook send. +2025-12-28 18:09:24,228 - app.services.freqtrade_webhook - WARNING - Signal webhook URL is empty; skip webhook send. +2025-12-28 18:09:25,341 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=6, strategy_id=1, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX HTTP 401: {"msg":"Invalid Sign","code":"50113"} +2025-12-28 18:09:26,228 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=6, strategy_id=1, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX HTTP 401: {"msg":"Invalid Sign","code":"50113"} +2025-12-28 18:09:31,172 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:09:31] "GET /api/dashboard/summary?_t=1766916571154 HTTP/1.1" 200 - +2025-12-28 18:09:31,482 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:09:31] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766916571154 HTTP/1.1" 200 - +2025-12-28 18:09:58,500 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:09:58] "GET /api/dashboard/summary?_t=1766916598479 HTTP/1.1" 200 - +2025-12-28 18:09:58,507 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:09:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766916598480 HTTP/1.1" 200 - +2025-12-28 18:10:17,712 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:10:17] "GET /api/strategies?_t=1766916617701 HTTP/1.1" 200 - +2025-12-28 18:10:19,139 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:10:19] "GET /api/strategies/equityCurve?id=1&_t=1766916619129 HTTP/1.1" 200 - +2025-12-28 18:10:19,144 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:10:19] "GET /api/strategies/equityCurve?id=1&_t=1766916619129 HTTP/1.1" 200 - +2025-12-28 18:10:25,080 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:10:25] "GET /api/strategies/positions?id=1&_t=1766916619131 HTTP/1.1" 200 - +2025-12-28 18:10:25,087 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:10:25] "GET /api/strategies/trades?id=1&_t=1766916622873 HTTP/1.1" 200 - +2025-12-28 18:10:25,208 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:10:25] "GET /api/strategies/positions?id=1&_t=1766916624128 HTTP/1.1" 200 - +2025-12-28 18:10:25,212 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:10:25] "GET /api/strategies/equityCurve?id=2&_t=1766916624858 HTTP/1.1" 200 - +2025-12-28 18:10:25,217 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:10:25] "GET /api/strategies/equityCurve?id=2&_t=1766916624858 HTTP/1.1" 200 - +2025-12-28 18:10:25,223 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:10:25] "GET /api/strategies/positions?id=2&_t=1766916624858 HTTP/1.1" 200 - +2025-12-28 18:10:25,391 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:10:25] "GET /api/strategies/trades?id=2&_t=1766916624858 HTTP/1.1" 200 - +2025-12-28 18:10:28,121 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:10:28] "GET /api/strategies/equityCurve?id=1&_t=1766916627796 HTTP/1.1" 200 - +2025-12-28 18:10:28,125 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:10:28] "GET /api/strategies/equityCurve?id=1&_t=1766916627796 HTTP/1.1" 200 - +2025-12-28 18:10:28,334 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:10:28] "GET /api/strategies/positions?id=1&_t=1766916627797 HTTP/1.1" 200 - +2025-12-28 18:10:28,337 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:10:28] "GET /api/strategies/trades?id=1&_t=1766916627797 HTTP/1.1" 200 - +2025-12-28 18:10:33,530 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:10:33] "GET /api/strategies/positions?id=1&_t=1766916632800 HTTP/1.1" 200 - +2025-12-28 18:10:33,535 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:10:33] "GET /api/dashboard/summary?_t=1766916633040 HTTP/1.1" 200 - +2025-12-28 18:10:33,539 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:10:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766916633040 HTTP/1.1" 200 - +2025-12-28 18:12:12,180 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:12:12] "GET /api/dashboard/summary?_t=1766916732171 HTTP/1.1" 200 - +2025-12-28 18:12:12,388 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:12:12] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766916732171 HTTP/1.1" 200 - +2025-12-28 18:13:28,006 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:13:28] "GET /api/dashboard/summary?_t=1766916807996 HTTP/1.1" 200 - +2025-12-28 18:13:28,228 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:13:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766916807996 HTTP/1.1" 200 - +2025-12-28 18:13:37,411 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-28 18:13:37,411 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-28 18:13:37,416 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-28 18:13:37,423 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-28 18:13:37,424 - werkzeug - INFO - Press CTRL+C to quit +2025-12-28 18:13:40,123 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:13:40] "GET /api/dashboard/summary?_t=1766916820096 HTTP/1.1" 200 - +2025-12-28 18:13:40,136 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:13:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766916820096 HTTP/1.1" 200 - +2025-12-28 18:13:44,732 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:13:44] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 18:13:44,911 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:13:44] "GET /api/market/config?_t=1766916824713 HTTP/1.1" 200 - +2025-12-28 18:13:45,189 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 18:13:45,189 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 18:13:45,190 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 18:13:45,190 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 18:13:45,190 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 18:13:46,627 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 300475 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (238427็ง’) +2025-12-28 18:13:46,833 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 600519 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (238427็ง’) +2025-12-28 18:13:47,078 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 000858 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (238427็ง’) +2025-12-28 18:13:47,834 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: AAPL ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (191628็ง’) +2025-12-28 18:13:48,146 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 00700 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (411228็ง’) +2025-12-28 18:13:51,056 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:13:51] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-28 18:13:51,061 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:13:51] "GET /api/market/types?_t=1766916824921 HTTP/1.1" 200 - +2025-12-28 18:13:51,064 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:13:51] "GET /api/market/types?_t=1766916825600 HTTP/1.1" 200 - +2025-12-28 18:13:51,069 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:13:51] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 18:13:51,076 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:13:51] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 18:13:51,082 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:13:51] "GET /api/strategies?_t=1766916827570 HTTP/1.1" 200 - +2025-12-28 18:20:20,183 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-28 18:20:20,183 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-28 18:20:20,188 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-28 18:20:20,204 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-28 18:20:20,204 - werkzeug - INFO - Press CTRL+C to quit +2025-12-28 18:20:21,161 - app.services.pending_order_worker - INFO - position sync: removed 1 ghost positions for strategy_id=1 +2025-12-28 18:20:22,582 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:20:22] "GET /api/strategies/equityCurve?id=1&_t=1766917222254 HTTP/1.1" 200 - +2025-12-28 18:20:22,586 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:20:22] "GET /api/strategies/equityCurve?id=1&_t=1766917222254 HTTP/1.1" 200 - +2025-12-28 18:20:22,965 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:20:22] "GET /api/strategies/positions?id=1&_t=1766917222256 HTTP/1.1" 200 - +2025-12-28 18:20:24,850 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:20:24] "GET /api/strategies/trades?id=1&_t=1766917224844 HTTP/1.1" 200 - +2025-12-28 18:20:27,164 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:20:27] "GET /api/strategies/equityCurve?id=2&_t=1766917226839 HTTP/1.1" 200 - +2025-12-28 18:20:27,167 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:20:27] "GET /api/strategies/equityCurve?id=2&_t=1766917226839 HTTP/1.1" 200 - +2025-12-28 18:20:27,171 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:20:27] "GET /api/strategies/positions?id=2&_t=1766917226840 HTTP/1.1" 200 - +2025-12-28 18:20:27,175 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:20:27] "GET /api/strategies/trades?id=2&_t=1766917226840 HTTP/1.1" 200 - +2025-12-28 18:20:28,135 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:20:28] "GET /api/strategies/equityCurve?id=1&_t=1766917228125 HTTP/1.1" 200 - +2025-12-28 18:20:28,448 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:20:28] "GET /api/strategies/equityCurve?id=1&_t=1766917228125 HTTP/1.1" 200 - +2025-12-28 18:20:28,451 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:20:28] "GET /api/strategies/positions?id=1&_t=1766917228125 HTTP/1.1" 200 - +2025-12-28 18:20:28,453 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:20:28] "GET /api/strategies/trades?id=1&_t=1766917228125 HTTP/1.1" 200 - +2025-12-28 18:20:30,334 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:20:30] "GET /api/dashboard/summary?_t=1766917230013 HTTP/1.1" 200 - +2025-12-28 18:20:30,338 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:20:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766917230013 HTTP/1.1" 200 - +2025-12-28 18:20:45,854 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:20:45] "GET /api/strategies?_t=1766917245843 HTTP/1.1" 200 - +2025-12-28 18:20:47,601 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:20:47] "GET /api/strategies/equityCurve?id=2&_t=1766917247257 HTTP/1.1" 200 - +2025-12-28 18:20:47,604 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:20:47] "GET /api/strategies/equityCurve?id=2&_t=1766917247257 HTTP/1.1" 200 - +2025-12-28 18:20:47,608 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:20:47] "GET /api/strategies/positions?id=2&_t=1766917247259 HTTP/1.1" 200 - +2025-12-28 18:20:48,818 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:20:48] "GET /api/strategies/trades?id=2&_t=1766917248812 HTTP/1.1" 200 - +2025-12-28 18:20:50,131 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:20:50] "GET /api/strategies/equityCurve?id=1&_t=1766917249819 HTTP/1.1" 200 - +2025-12-28 18:20:50,134 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:20:50] "GET /api/strategies/equityCurve?id=1&_t=1766917249819 HTTP/1.1" 200 - +2025-12-28 18:20:50,137 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:20:50] "GET /api/strategies/positions?id=1&_t=1766917249820 HTTP/1.1" 200 - +2025-12-28 18:20:50,141 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:20:50] "GET /api/strategies/trades?id=1&_t=1766917249820 HTTP/1.1" 200 - +2025-12-28 18:20:52,605 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:20:52] "GET /api/strategies/equityCurve?id=2&_t=1766917252596 HTTP/1.1" 200 - +2025-12-28 18:20:52,913 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:20:52] "GET /api/strategies/equityCurve?id=2&_t=1766917252596 HTTP/1.1" 200 - +2025-12-28 18:20:52,916 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:20:52] "GET /api/strategies/positions?id=2&_t=1766917252596 HTTP/1.1" 200 - +2025-12-28 18:20:52,918 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:20:52] "GET /api/strategies/trades?id=2&_t=1766917252596 HTTP/1.1" 200 - +2025-12-28 18:20:53,436 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:20:53] "GET /api/strategies/equityCurve?id=1&_t=1766917253120 HTTP/1.1" 200 - +2025-12-28 18:20:53,442 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:20:53] "GET /api/strategies/equityCurve?id=1&_t=1766917253121 HTTP/1.1" 200 - +2025-12-28 18:20:53,446 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:20:53] "GET /api/strategies/positions?id=1&_t=1766917253122 HTTP/1.1" 200 - +2025-12-28 18:20:53,449 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:20:53] "GET /api/strategies/trades?id=1&_t=1766917253122 HTTP/1.1" 200 - +2025-12-28 18:20:54,858 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:20:54] "GET /api/market/config?_t=1766917254838 HTTP/1.1" 200 - +2025-12-28 18:20:55,168 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:20:55] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 18:20:55,211 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:20:55] "GET /api/market/types?_t=1766917254896 HTTP/1.1" 200 - +2025-12-28 18:20:55,600 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 18:20:55,600 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 18:20:55,600 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 18:20:55,600 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 18:20:55,600 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 18:20:56,515 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 300475 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (238857็ง’) +2025-12-28 18:20:56,662 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 000858 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (238857็ง’) +2025-12-28 18:20:56,899 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: AAPL ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (192057็ง’) +2025-12-28 18:20:56,910 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 600519 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (238857็ง’) +2025-12-28 18:20:56,942 - app.data_sources.base - WARNING - ่ญฆๅ‘Š: 00700 ๆ•ฐๆฎๅปถ่ฟŸ่พƒๅคง (411657็ง’) +2025-12-28 18:21:00,323 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:21:00] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-28 18:21:00,328 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:21:00] "GET /api/dashboard/summary?_t=1766917256390 HTTP/1.1" 200 - +2025-12-28 18:21:00,331 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:21:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766917256390 HTTP/1.1" 200 - +2025-12-28 18:29:59,256 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-28 18:29:59,256 - app - INFO - Startup strategy restore is disabled via DISABLE_RESTORE_RUNNING_STRATEGIES +2025-12-28 18:29:59,261 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-28 18:29:59,269 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-28 18:29:59,269 - werkzeug - INFO - Press CTRL+C to quit +2025-12-28 18:30:10,365 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:30:10] "GET /api/strategies?_t=1766917810035 HTTP/1.1" 200 - +2025-12-28 18:30:12,723 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:30:12] "GET /api/strategies/equityCurve?id=2&_t=1766917812715 HTTP/1.1" 200 - +2025-12-28 18:30:13,031 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:30:13] "GET /api/strategies/equityCurve?id=2&_t=1766917812715 HTTP/1.1" 200 - +2025-12-28 18:30:13,417 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:30:13] "GET /api/strategies/positions?id=2&_t=1766917812716 HTTP/1.1" 200 - +2025-12-28 18:30:15,160 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:30:15] "GET /api/strategies/equityCurve?id=1&_t=1766917814836 HTTP/1.1" 200 - +2025-12-28 18:30:15,163 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:30:15] "GET /api/strategies/equityCurve?id=1&_t=1766917814836 HTTP/1.1" 200 - +2025-12-28 18:30:15,166 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:30:15] "GET /api/strategies/positions?id=1&_t=1766917814837 HTTP/1.1" 200 - +2025-12-28 18:30:19,849 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:30:19] "GET /api/strategies/positions?id=1&_t=1766917819842 HTTP/1.1" 200 - +2025-12-28 18:30:20,502 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:30:20] "GET /api/strategies/trades?id=1&_t=1766917820188 HTTP/1.1" 200 - +2025-12-28 18:30:21,621 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:30:21] "GET /api/strategies/equityCurve?id=2&_t=1766917821613 HTTP/1.1" 200 - +2025-12-28 18:30:21,935 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:30:21] "GET /api/strategies/equityCurve?id=2&_t=1766917821613 HTTP/1.1" 200 - +2025-12-28 18:30:21,938 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:30:21] "GET /api/strategies/positions?id=2&_t=1766917821613 HTTP/1.1" 200 - +2025-12-28 18:30:21,941 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:30:21] "GET /api/strategies/trades?id=2&_t=1766917821613 HTTP/1.1" 200 - +2025-12-28 18:30:24,003 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:30:24] "GET /api/dashboard/summary?_t=1766917823681 HTTP/1.1" 200 - +2025-12-28 18:30:24,010 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:30:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766917823681 HTTP/1.1" 200 - +2025-12-28 18:30:52,274 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:30:52] "GET /api/market/types?_t=1766917852267 HTTP/1.1" 200 - +2025-12-28 18:30:52,587 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:30:52] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 18:30:52,591 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:30:52] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 18:30:52,913 - app.routes.kline - INFO - ่ฏทๆฑ‚K็บฟ: Crypto:BNB/USDT, ๅ‘จๆœŸ: 1D, ๆกๆ•ฐ: 500 +2025-12-28 18:30:58,656 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:30:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 18:30:58,660 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:30:58] "GET /api/strategies?_t=1766917853099 HTTP/1.1" 200 - +2025-12-28 18:31:00,833 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:31:00] "GET /api/strategies/equityCurve?id=1&_t=1766917860823 HTTP/1.1" 200 - +2025-12-28 18:31:01,144 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:31:01] "GET /api/strategies/equityCurve?id=1&_t=1766917860823 HTTP/1.1" 200 - +2025-12-28 18:31:01,148 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:31:01] "GET /api/strategies/positions?id=1&_t=1766917860824 HTTP/1.1" 200 - +2025-12-28 18:31:02,565 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 1 ๆœชๅœจ่ฟ่กŒ +2025-12-28 18:31:02,572 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:31:02] "POST /api/strategies/stop?id=1 HTTP/1.1" 200 - +2025-12-28 18:31:02,792 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:31:02] "GET /api/strategies?_t=1766917862583 HTTP/1.1" 200 - +2025-12-28 18:31:04,747 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๅผ€ๅง‹่ฟ่กŒๅพช็Žฏ +2025-12-28 18:31:04,747 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๅฏๅŠจๆˆๅŠŸ +2025-12-28 18:31:04,747 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:31:04] "POST /api/strategies/start?id=1 HTTP/1.1" 200 - +2025-12-28 18:31:04,748 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๅˆ็บฆไบคๆ˜“๏ผŒๅธ‚ๅœบ็ฑปๅž‹็ปŸไธ€ไธบ: swap +2025-12-28 18:31:05,125 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:31:05] "GET /api/strategies?_t=1766917864802 HTTP/1.1" 200 - +2025-12-28 18:31:05,300 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 18:31:05,318 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๅˆๅง‹ๅŒ–ๅฎŒๆˆ๏ผŒๅพ…่งฆๅ‘ไฟกๅทๆ•ฐ: 0 +2025-12-28 18:31:05,831 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:31:05] "GET /api/strategies/positions?id=1&_t=1766917865824 HTTP/1.1" 200 - +2025-12-28 18:31:11,140 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:31:11] "GET /api/strategies/positions?id=1&_t=1766917870822 HTTP/1.1" 200 - +2025-12-28 18:31:15,834 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:31:15] "GET /api/strategies/positions?id=1&_t=1766917875827 HTTP/1.1" 200 - +2025-12-28 18:31:21,140 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:31:21] "GET /api/strategies/positions?id=1&_t=1766917880827 HTTP/1.1" 200 - +2025-12-28 18:31:21,395 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:31:21] "GET /api/strategies/equityCurve?id=2&_t=1766917881164 HTTP/1.1" 200 - +2025-12-28 18:31:21,488 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:31:21] "GET /api/strategies/equityCurve?id=2&_t=1766917881164 HTTP/1.1" 200 - +2025-12-28 18:31:21,491 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:31:21] "GET /api/strategies/positions?id=2&_t=1766917881165 HTTP/1.1" 200 - +2025-12-28 18:31:24,475 - app.services.trading_executor - WARNING - ็ญ–็•ฅ 2 ๆœชๅœจ่ฟ่กŒ +2025-12-28 18:31:24,483 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:31:24] "POST /api/strategies/stop?id=2 HTTP/1.1" 200 - +2025-12-28 18:31:24,805 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:31:24] "GET /api/strategies?_t=1766917884493 HTTP/1.1" 200 - +2025-12-28 18:31:26,183 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:31:26] "GET /api/strategies/positions?id=2&_t=1766917886174 HTTP/1.1" 200 - +2025-12-28 18:31:28,068 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๅผ€ๅง‹่ฟ่กŒๅพช็Žฏ +2025-12-28 18:31:28,068 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๅฏๅŠจๆˆๅŠŸ +2025-12-28 18:31:28,069 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:31:28] "POST /api/strategies/start?id=2 HTTP/1.1" 200 - +2025-12-28 18:31:28,069 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๅˆ็บฆไบคๆ˜“๏ผŒๅธ‚ๅœบ็ฑปๅž‹็ปŸไธ€ไธบ: swap +2025-12-28 18:31:28,307 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:31:28] "GET /api/strategies?_t=1766917888078 HTTP/1.1" 200 - +2025-12-28 18:31:29,228 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 18:31:29,244 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๅˆๅง‹ๅŒ–ๅฎŒๆˆ๏ผŒๅพ…่งฆๅ‘ไฟกๅทๆ•ฐ: 0 +2025-12-28 18:31:31,183 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:31:31] "GET /api/strategies/positions?id=2&_t=1766917891177 HTTP/1.1" 200 - +2025-12-28 18:31:36,485 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:31:36] "GET /api/strategies/positions?id=2&_t=1766917896168 HTTP/1.1" 200 - +2025-12-28 18:31:41,176 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:31:41] "GET /api/strategies/positions?id=2&_t=1766917901170 HTTP/1.1" 200 - +2025-12-28 18:31:46,478 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:31:46] "GET /api/strategies/positions?id=2&_t=1766917906165 HTTP/1.1" 200 - +2025-12-28 18:31:51,183 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:31:51] "GET /api/strategies/equityCurve?id=2&_t=1766917911174 HTTP/1.1" 200 - +2025-12-28 18:31:51,500 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:31:51] "GET /api/strategies/positions?id=2&_t=1766917911174 HTTP/1.1" 200 - +2025-12-28 18:31:56,492 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:31:56] "GET /api/strategies/positions?id=2&_t=1766917916178 HTTP/1.1" 200 - +2025-12-28 18:32:01,172 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:32:01] "GET /api/strategies/positions?id=2&_t=1766917921166 HTTP/1.1" 200 - +2025-12-28 18:32:06,486 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:32:06] "GET /api/strategies/positions?id=2&_t=1766917926169 HTTP/1.1" 200 - +2025-12-28 18:32:11,185 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:32:11] "GET /api/strategies/positions?id=2&_t=1766917931179 HTTP/1.1" 200 - +2025-12-28 18:32:16,493 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:32:16] "GET /api/strategies/positions?id=2&_t=1766917936175 HTTP/1.1" 200 - +2025-12-28 18:32:21,176 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:32:21] "GET /api/strategies/equityCurve?id=2&_t=1766917941166 HTTP/1.1" 200 - +2025-12-28 18:32:21,483 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:32:21] "GET /api/strategies/positions?id=2&_t=1766917941167 HTTP/1.1" 200 - +2025-12-28 18:32:26,494 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:32:26] "GET /api/strategies/positions?id=2&_t=1766917946179 HTTP/1.1" 200 - +2025-12-28 18:32:31,182 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:32:31] "GET /api/strategies/positions?id=2&_t=1766917951176 HTTP/1.1" 200 - +2025-12-28 18:32:36,488 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:32:36] "GET /api/strategies/positions?id=2&_t=1766917956172 HTTP/1.1" 200 - +2025-12-28 18:32:41,186 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:32:41] "GET /api/strategies/positions?id=2&_t=1766917961180 HTTP/1.1" 200 - +2025-12-28 18:32:46,499 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:32:46] "GET /api/strategies/positions?id=2&_t=1766917966180 HTTP/1.1" 200 - +2025-12-28 18:32:49,462 - app.services.trading_executor - INFO - [็›‘ๆŽงไธญ] ็ญ–็•ฅ 2 ๅฝ“ๅ‰ไปท: 87892.68, ๅพ…่งฆๅ‘ไฟกๅทๆ•ฐ: 1 +2025-12-28 18:32:49,464 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ่งฆๅ‘ไฟกๅท! ่ฏฆๆƒ…: [{'type': 'close_long', 'trigger_price': 87892.68, 'position_size': 0, 'timestamp': 1766917920}] +2025-12-28 18:32:51,184 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:32:51] "GET /api/strategies/equityCurve?id=2&_t=1766917971175 HTTP/1.1" 200 - +2025-12-28 18:32:51,494 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:32:51] "GET /api/strategies/positions?id=2&_t=1766917971176 HTTP/1.1" 200 - +2025-12-28 18:32:56,483 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:32:56] "GET /api/strategies/positions?id=2&_t=1766917976168 HTTP/1.1" 200 - +2025-12-28 18:32:59,278 - app.services.trading_executor - INFO - [็›‘ๆŽงไธญ] ็ญ–็•ฅ 2 ๅฝ“ๅ‰ไปท: 87892.68, ๅพ…่งฆๅ‘ไฟกๅทๆ•ฐ: 1 +2025-12-28 18:32:59,280 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ่งฆๅ‘ไฟกๅท! ่ฏฆๆƒ…: [{'type': 'close_long', 'trigger_price': 87892.68, 'position_size': 0, 'timestamp': 1766917920}] +2025-12-28 18:33:01,186 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:33:01] "GET /api/strategies/positions?id=2&_t=1766917981180 HTTP/1.1" 200 - +2025-12-28 18:33:06,494 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:33:06] "GET /api/strategies/positions?id=2&_t=1766917986180 HTTP/1.1" 200 - +2025-12-28 18:33:11,180 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:33:11] "GET /api/strategies/positions?id=2&_t=1766917991174 HTTP/1.1" 200 - +2025-12-28 18:33:16,494 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:33:16] "GET /api/strategies/positions?id=2&_t=1766917996178 HTTP/1.1" 200 - +2025-12-28 18:33:21,179 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:33:21] "GET /api/strategies/equityCurve?id=2&_t=1766918001172 HTTP/1.1" 200 - +2025-12-28 18:33:21,488 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:33:21] "GET /api/strategies/positions?id=2&_t=1766918001173 HTTP/1.1" 200 - +2025-12-28 18:33:26,478 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:33:26] "GET /api/strategies/positions?id=2&_t=1766918006166 HTTP/1.1" 200 - +2025-12-28 18:33:31,176 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:33:31] "GET /api/strategies/positions?id=2&_t=1766918011170 HTTP/1.1" 200 - +2025-12-28 18:33:36,485 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:33:36] "GET /api/strategies/positions?id=2&_t=1766918016168 HTTP/1.1" 200 - +2025-12-28 18:33:41,174 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:33:41] "GET /api/strategies/positions?id=2&_t=1766918021166 HTTP/1.1" 200 - +2025-12-28 18:33:43,094 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:33:43] "GET /api/dashboard/summary?_t=1766918022785 HTTP/1.1" 200 - +2025-12-28 18:33:43,098 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:33:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766918022785 HTTP/1.1" 200 - +2025-12-28 18:33:45,981 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:33:45] "GET /api/dashboard/summary?_t=1766918025966 HTTP/1.1" 200 - +2025-12-28 18:33:46,277 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:33:46] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766918025966 HTTP/1.1" 200 - +2025-12-28 18:35:45,699 - app.services.trading_executor - INFO - [็›‘ๆŽงไธญ] ็ญ–็•ฅ 1 ๅฝ“ๅ‰ไปท: 2942.91, ๅพ…่งฆๅ‘ไฟกๅทๆ•ฐ: 1 +2025-12-28 18:35:45,701 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ่งฆๅ‘ไฟกๅท! ่ฏฆๆƒ…: [{'type': 'close_short', 'trigger_price': 2942.91, 'position_size': 0, 'timestamp': 1766918100}] +2025-12-28 18:35:55,382 - app.services.trading_executor - INFO - [็›‘ๆŽงไธญ] ็ญ–็•ฅ 1 ๅฝ“ๅ‰ไปท: 2942.91, ๅพ…่งฆๅ‘ไฟกๅทๆ•ฐ: 1 +2025-12-28 18:35:55,383 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ่งฆๅ‘ไฟกๅท! ่ฏฆๆƒ…: [{'type': 'close_short', 'trigger_price': 2942.91, 'position_size': 0, 'timestamp': 1766918100}] +2025-12-28 18:36:06,332 - app.services.trading_executor - INFO - [็›‘ๆŽงไธญ] ็ญ–็•ฅ 1 ๅฝ“ๅ‰ไปท: 2942.92, ๅพ…่งฆๅ‘ไฟกๅทๆ•ฐ: 2 +2025-12-28 18:36:06,334 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ่งฆๅ‘ไฟกๅท! ่ฏฆๆƒ…: [{'type': 'open_long', 'trigger_price': 2942.92, 'position_size': 0.08, 'timestamp': 1766918100}, {'type': 'close_short', 'trigger_price': 2942.92, 'position_size': 0, 'timestamp': 1766918100}] +2025-12-28 18:36:06,341 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆ‰ง่กŒไฟกๅทๆˆๅŠŸ: open_long @ 2942.92 +2025-12-28 18:36:07,562 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=7, strategy_id=1, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd_1_7_lmt', 'ordId': '', 'sCode': '51000', 'sMsg': 'Parameter clOrdId error', 'tag': '', 'ts': '1766918167125'}], 'inTime': '1766918167125288', 'msg': 'All operations failed', 'outTime': '1766918167125340'} +2025-12-28 18:36:08,259 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=7, strategy_id=1, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd_1_7_mkt', 'ordId': '', 'sCode': '51000', 'sMsg': 'Parameter clOrdId error', 'tag': '', 'ts': '1766918167820'}], 'inTime': '1766918167819991', 'msg': 'All operations failed', 'outTime': '1766918167820050'} +2025-12-28 18:36:15,386 - app.services.trading_executor - INFO - [็›‘ๆŽงไธญ] ็ญ–็•ฅ 1 ๅฝ“ๅ‰ไปท: 2942.92, ๅพ…่งฆๅ‘ไฟกๅทๆ•ฐ: 2 +2025-12-28 18:36:15,388 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ่งฆๅ‘ไฟกๅท! ่ฏฆๆƒ…: [{'type': 'open_long', 'trigger_price': 2942.92, 'position_size': 0.08, 'timestamp': 1766918100}, {'type': 'close_short', 'trigger_price': 2942.92, 'position_size': 0, 'timestamp': 1766918100}] +2025-12-28 18:36:25,574 - app.services.trading_executor - INFO - [็›‘ๆŽงไธญ] ็ญ–็•ฅ 1 ๅฝ“ๅ‰ไปท: 2943.0, ๅพ…่งฆๅ‘ไฟกๅทๆ•ฐ: 2 +2025-12-28 18:36:25,576 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ่งฆๅ‘ไฟกๅท! ่ฏฆๆƒ…: [{'type': 'open_long', 'trigger_price': 2942.92, 'position_size': 0.08, 'timestamp': 1766918100}, {'type': 'close_short', 'trigger_price': 2942.92, 'position_size': 0, 'timestamp': 1766918100}] +2025-12-28 18:36:35,389 - app.services.trading_executor - INFO - [็›‘ๆŽงไธญ] ็ญ–็•ฅ 1 ๅฝ“ๅ‰ไปท: 2943.0, ๅพ…่งฆๅ‘ไฟกๅทๆ•ฐ: 2 +2025-12-28 18:36:35,390 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ่งฆๅ‘ไฟกๅท! ่ฏฆๆƒ…: [{'type': 'open_long', 'trigger_price': 2942.92, 'position_size': 0.08, 'timestamp': 1766918100}, {'type': 'close_short', 'trigger_price': 2942.92, 'position_size': 0, 'timestamp': 1766918100}] +2025-12-28 18:36:45,544 - app.services.trading_executor - INFO - [็›‘ๆŽงไธญ] ็ญ–็•ฅ 1 ๅฝ“ๅ‰ไปท: 2943.39, ๅพ…่งฆๅ‘ไฟกๅทๆ•ฐ: 2 +2025-12-28 18:36:45,546 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ่งฆๅ‘ไฟกๅท! ่ฏฆๆƒ…: [{'type': 'open_long', 'trigger_price': 2942.92, 'position_size': 0.08, 'timestamp': 1766918100}, {'type': 'close_short', 'trigger_price': 2942.92, 'position_size': 0, 'timestamp': 1766918100}] +2025-12-28 18:36:55,391 - app.services.trading_executor - INFO - [็›‘ๆŽงไธญ] ็ญ–็•ฅ 1 ๅฝ“ๅ‰ไปท: 2943.39, ๅพ…่งฆๅ‘ไฟกๅทๆ•ฐ: 2 +2025-12-28 18:36:55,393 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ่งฆๅ‘ไฟกๅท! ่ฏฆๆƒ…: [{'type': 'open_long', 'trigger_price': 2942.92, 'position_size': 0.08, 'timestamp': 1766918100}, {'type': 'close_short', 'trigger_price': 2942.92, 'position_size': 0, 'timestamp': 1766918100}] +2025-12-28 18:37:08,768 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:37:08] "GET /api/dashboard/summary?_t=1766918228444 HTTP/1.1" 200 - +2025-12-28 18:37:08,771 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:37:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766918228444 HTTP/1.1" 200 - +2025-12-28 18:41:46,851 - app - ERROR - Failed to start pending order worker: unexpected indent (pending_order_worker.py, line 608) +2025-12-28 18:41:47,198 - app.utils.db - INFO - ๆ•ฐๆฎๅบ“่กจ็ป“ๆž„ๅˆๅง‹ๅŒ–ๅฎŒๆˆ (SQLite) +2025-12-28 18:41:47,200 - app.services.strategy - INFO - ๆŸฅ่ฏขๅˆฐ 2 ไธช่ฟ่กŒไธญ็š„็ญ–็•ฅ: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}] +2025-12-28 18:41:47,200 - app - INFO - Restoring 2 running strategies... +2025-12-28 18:41:47,200 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๅผ€ๅง‹่ฟ่กŒๅพช็Žฏ +2025-12-28 18:41:47,201 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๅฏๅŠจๆˆๅŠŸ +2025-12-28 18:41:47,201 - app - INFO - [OK] ๆŒ‡ๆ ‡็ญ–็•ฅ 1 restored +2025-12-28 18:41:47,201 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๅผ€ๅง‹่ฟ่กŒๅพช็Žฏ +2025-12-28 18:41:47,201 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๅฏๅŠจๆˆๅŠŸ +2025-12-28 18:41:47,201 - app - INFO - [OK] ๆŒ‡ๆ ‡็ญ–็•ฅ 2 restored +2025-12-28 18:41:47,201 - app - INFO - Strategy restore completed: 2/2 restored +2025-12-28 18:41:47,202 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๅˆ็บฆไบคๆ˜“๏ผŒๅธ‚ๅœบ็ฑปๅž‹็ปŸไธ€ไธบ: swap +2025-12-28 18:41:47,202 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๅˆ็บฆไบคๆ˜“๏ผŒๅธ‚ๅœบ็ฑปๅž‹็ปŸไธ€ไธบ: swap +2025-12-28 18:41:47,238 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-28 18:41:47,238 - werkzeug - INFO - Press CTRL+C to quit +2025-12-28 18:41:52,425 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 18:41:52,442 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๅˆๅง‹ๅŒ–ๅฎŒๆˆ๏ผŒๅพ…่งฆๅ‘ไฟกๅทๆ•ฐ: 0 +2025-12-28 18:41:52,474 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 18:41:52,490 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๅˆๅง‹ๅŒ–ๅฎŒๆˆ๏ผŒๅพ…่งฆๅ‘ไฟกๅทๆ•ฐ: 0 +2025-12-28 18:42:04,754 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:42:04] "GET /api/dashboard/summary?_t=1766918524425 HTTP/1.1" 200 - +2025-12-28 18:42:04,758 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 18:42:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766918524425 HTTP/1.1" 200 - +2025-12-28 19:16:13,221 - app - ERROR - Failed to start pending order worker: unexpected indent (pending_order_worker.py, line 608) +2025-12-28 19:16:13,619 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-28 19:16:13,621 - app.services.strategy - INFO - Found 2 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}] +2025-12-28 19:16:13,621 - app - INFO - Restoring 2 running strategies... +2025-12-28 19:16:13,621 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-28 19:16:13,621 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-28 19:16:13,622 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-28 19:16:13,622 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-28 19:16:13,622 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-28 19:16:13,622 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-28 19:16:13,622 - app - INFO - Strategy restore completed: 2/2 restored +2025-12-28 19:16:13,625 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-28 19:16:13,625 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-28 19:16:13,644 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-28 19:16:13,644 - werkzeug - INFO - Press CTRL+C to quit +2025-12-28 19:16:19,306 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 19:16:19,325 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2025-12-28 19:16:19,569 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 19:16:19,586 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2025-12-28 19:16:24,835 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 19:16:24] "GET /api/dashboard/summary?_t=1766920584521 HTTP/1.1" 200 - +2025-12-28 19:16:24,839 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 19:16:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766920584521 HTTP/1.1" 200 - +2025-12-28 19:16:26,827 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 19:16:26] "GET /api/market/config?_t=1766920586809 HTTP/1.1" 200 - +2025-12-28 19:16:27,139 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 19:16:27] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 19:16:27,158 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 19:16:27] "GET /api/market/types?_t=1766920586847 HTTP/1.1" 200 - +2025-12-28 19:16:27,826 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 19:16:27,827 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 19:16:27,827 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 19:16:27,827 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 19:16:27,827 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 19:16:28,848 - app.data_sources.base - WARNING - Warning: 000858 data is delayed (242189s) +2025-12-28 19:16:29,064 - app.data_sources.base - WARNING - Warning: 300475 data is delayed (242189s) +2025-12-28 19:16:29,066 - app.data_sources.base - WARNING - Warning: 600519 data is delayed (242189s) +2025-12-28 19:16:29,177 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (195389s) +2025-12-28 19:16:29,381 - app.data_sources.base - WARNING - Warning: 00700 data is delayed (414989s) +2025-12-28 19:16:29,382 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 19:16:29] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-28 19:16:29,386 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 19:16:29] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 19:16:29,394 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 19:16:29] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 19:16:29,397 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 19:16:29] "GET /api/market/types?_t=1766920587382 HTTP/1.1" 200 - +2025-12-28 19:16:29,401 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 19:16:29] "GET /api/strategies?_t=1766920588470 HTTP/1.1" 200 - +2025-12-28 19:18:20,110 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87900.0, pending_signals=1 +2025-12-28 19:18:20,112 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87900.0, 'position_size': 0, 'timestamp': 1766920680}] +2025-12-28 19:18:26,937 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 19:18:26] "GET /api/dashboard/summary?_t=1766920706606 HTTP/1.1" 200 - +2025-12-28 19:18:26,940 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 19:18:26] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766920706606 HTTP/1.1" 200 - +2025-12-28 19:18:29,365 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87900.0, pending_signals=1 +2025-12-28 19:18:29,367 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87900.0, 'position_size': 0, 'timestamp': 1766920680}] +2025-12-28 19:18:33,847 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 19:18:33] "GET /api/dashboard/summary?_t=1766920713831 HTTP/1.1" 200 - +2025-12-28 19:18:34,152 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 19:18:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766920713831 HTTP/1.1" 200 - +2025-12-28 19:18:39,923 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87900.01, pending_signals=1 +2025-12-28 19:18:39,925 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87900.01, 'position_size': 0, 'timestamp': 1766920680}] +2025-12-28 19:18:49,368 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87900.01, pending_signals=1 +2025-12-28 19:18:49,370 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87900.01, 'position_size': 0, 'timestamp': 1766920680}] +2025-12-28 19:18:59,637 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87900.01, pending_signals=1 +2025-12-28 19:18:59,639 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87900.01, 'position_size': 0, 'timestamp': 1766920680}] +2025-12-28 19:19:09,370 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87900.01, pending_signals=2 +2025-12-28 19:19:09,372 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87900.0, 'position_size': 0, 'timestamp': 1766920680}] +2025-12-28 19:19:20,134 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87900.0, pending_signals=2 +2025-12-28 19:19:20,157 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87900.01, 'position_size': 0, 'timestamp': 1766920680}, {'type': 'open_short', 'trigger_price': 87900.01, 'position_size': 0.08, 'timestamp': 1766920680}] +2025-12-28 19:19:20,170 - app.services.trading_executor - INFO - Strategy 2 signal executed: open_short @ 87900.01 +2025-12-28 19:19:29,373 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87900.0, pending_signals=2 +2025-12-28 19:19:29,376 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87900.01, 'position_size': 0, 'timestamp': 1766920680}, {'type': 'open_short', 'trigger_price': 87900.01, 'position_size': 0.08, 'timestamp': 1766920680}] +2025-12-28 19:19:40,134 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87900.0, pending_signals=2 +2025-12-28 19:19:40,137 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87900.01, 'position_size': 0, 'timestamp': 1766920680}, {'type': 'open_short', 'trigger_price': 87900.01, 'position_size': 0.08, 'timestamp': 1766920680}] +2025-12-28 19:19:49,376 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87900.0, pending_signals=2 +2025-12-28 19:19:49,378 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87900.01, 'position_size': 0, 'timestamp': 1766920680}, {'type': 'open_short', 'trigger_price': 87900.01, 'position_size': 0.08, 'timestamp': 1766920680}] +2025-12-28 19:20:00,609 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2944.7, pending_signals=1 +2025-12-28 19:20:00,611 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2944.7, 'position_size': 0, 'timestamp': 1766920800}] +2025-12-28 19:20:09,638 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2944.7, pending_signals=1 +2025-12-28 19:20:09,640 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2944.7, 'position_size': 0, 'timestamp': 1766920800}] +2025-12-28 19:20:20,174 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2945.25, pending_signals=2 +2025-12-28 19:20:20,176 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2944.7, 'position_size': 0, 'timestamp': 1766920740}] +2025-12-28 19:20:29,640 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2945.25, pending_signals=2 +2025-12-28 19:20:29,642 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2944.7, 'position_size': 0, 'timestamp': 1766920740}] +2025-12-28 19:20:40,368 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2944.92, pending_signals=2 +2025-12-28 19:20:40,370 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2944.7, 'position_size': 0, 'timestamp': 1766920740}] +2025-12-28 19:20:49,643 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2944.92, pending_signals=2 +2025-12-28 19:20:49,644 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2944.7, 'position_size': 0, 'timestamp': 1766920740}] +2025-12-28 19:20:58,991 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1D, limit=5 +2025-12-28 19:20:59,189 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 19:20:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 19:20:59,756 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2944.7, pending_signals=2 +2025-12-28 19:20:59,758 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2944.7, 'position_size': 0, 'timestamp': 1766920740}, {'type': 'open_short', 'trigger_price': 2944.7, 'position_size': 0.08, 'timestamp': 1766920740}] +2025-12-28 19:20:59,766 - app.services.trading_executor - INFO - Strategy 1 signal executed: open_short @ 2944.7 +2025-12-28 19:22:30,394 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 19:22:30] "GET /api/dashboard/summary?_t=1766920950077 HTTP/1.1" 200 - +2025-12-28 19:22:30,404 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 19:22:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766920950077 HTTP/1.1" 200 - +2025-12-28 19:22:48,695 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 19:22:48] "GET /api/dashboard/summary?_t=1766920968683 HTTP/1.1" 200 - +2025-12-28 19:22:48,997 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 19:22:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766920968683 HTTP/1.1" 200 - +2025-12-28 19:26:40,660 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 19:26:40] "GET /api/dashboard/summary?_t=1766921200334 HTTP/1.1" 200 - +2025-12-28 19:26:40,667 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 19:26:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766921200334 HTTP/1.1" 200 - +2025-12-28 19:30:58,987 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1D, limit=5 +2025-12-28 19:30:59,176 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 19:30:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 19:40:58,975 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1D, limit=5 +2025-12-28 19:40:59,249 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 19:40:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 19:46:00,334 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2941.88, pending_signals=1 +2025-12-28 19:46:00,337 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2941.88, 'position_size': 0, 'timestamp': 1766922360}] +2025-12-28 19:46:09,872 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2941.88, pending_signals=1 +2025-12-28 19:46:09,875 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2941.88, 'position_size': 0, 'timestamp': 1766922360}] +2025-12-28 19:46:20,982 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2941.88, pending_signals=2 +2025-12-28 19:46:20,984 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2941.89, 'position_size': 0, 'timestamp': 1766922300}] +2025-12-28 19:46:29,875 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2941.88, pending_signals=2 +2025-12-28 19:46:29,877 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2941.89, 'position_size': 0, 'timestamp': 1766922300}] +2025-12-28 19:46:39,992 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2940.71, pending_signals=2 +2025-12-28 19:46:39,994 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2941.89, 'position_size': 0, 'timestamp': 1766922300}] +2025-12-28 19:46:49,883 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2940.71, pending_signals=2 +2025-12-28 19:46:49,885 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2941.89, 'position_size': 0, 'timestamp': 1766922300}] +2025-12-28 19:48:20,675 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87853.36, pending_signals=1 +2025-12-28 19:48:20,677 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87853.36, 'position_size': 0, 'timestamp': 1766922480}] +2025-12-28 19:48:29,622 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87853.36, pending_signals=1 +2025-12-28 19:48:29,624 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87853.36, 'position_size': 0, 'timestamp': 1766922480}] +2025-12-28 19:48:39,977 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87871.02, pending_signals=1 +2025-12-28 19:48:39,979 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87871.02, 'position_size': 0, 'timestamp': 1766922480}] +2025-12-28 19:48:49,624 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87871.02, pending_signals=1 +2025-12-28 19:48:49,626 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87871.02, 'position_size': 0, 'timestamp': 1766922480}] +2025-12-28 19:48:59,733 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87873.06, pending_signals=1 +2025-12-28 19:48:59,735 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87873.06, 'position_size': 0, 'timestamp': 1766922480}] +2025-12-28 19:49:09,627 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87873.06, pending_signals=2 +2025-12-28 19:49:09,629 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 87853.36, 'position_size': 0.08, 'timestamp': 1766922480}, {'type': 'close_short', 'trigger_price': 87853.36, 'position_size': 0, 'timestamp': 1766922480}] +2025-12-28 19:49:09,638 - app.services.trading_executor - INFO - Strategy 2 signal executed: open_long @ 87853.36 +2025-12-28 19:49:20,586 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87873.06, pending_signals=2 +2025-12-28 19:49:20,588 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87873.07, 'position_size': 0, 'timestamp': 1766922480}] +2025-12-28 19:49:29,629 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87873.06, pending_signals=2 +2025-12-28 19:49:29,631 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87873.07, 'position_size': 0, 'timestamp': 1766922480}] +2025-12-28 19:49:39,739 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87871.02, pending_signals=2 +2025-12-28 19:49:39,741 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87873.07, 'position_size': 0, 'timestamp': 1766922480}] +2025-12-28 19:49:49,633 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87871.02, pending_signals=2 +2025-12-28 19:49:49,635 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87873.07, 'position_size': 0, 'timestamp': 1766922480}] +2025-12-28 19:49:59,745 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87871.03, pending_signals=2 +2025-12-28 19:49:59,747 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87873.07, 'position_size': 0, 'timestamp': 1766922480}] +2025-12-28 19:50:58,984 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1D, limit=5 +2025-12-28 19:50:59,178 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 19:50:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 19:52:29,623 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-28 19:52:29,645 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-28 19:52:30,102 - app.services.strategy - INFO - Found 2 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}] +2025-12-28 19:52:30,102 - app - INFO - Restoring 2 running strategies... +2025-12-28 19:52:30,103 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-28 19:52:30,103 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-28 19:52:30,103 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-28 19:52:30,103 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-28 19:52:30,103 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-28 19:52:30,103 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-28 19:52:30,103 - app - INFO - Strategy restore completed: 2/2 restored +2025-12-28 19:52:30,106 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-28 19:52:30,106 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-28 19:52:30,128 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-28 19:52:30,129 - werkzeug - INFO - Press CTRL+C to quit +2025-12-28 19:52:31,216 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=8, strategy_id=2, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd28lmt', 'ordId': '', 'sCode': '51121', 'sMsg': 'Order quantity must be a multiple of the lot size.', 'tag': '', 'ts': '1766922750470'}], 'inTime': '1766922750470875', 'msg': 'All operations failed', 'outTime': '1766922750470985'} +2025-12-28 19:52:31,731 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=8, strategy_id=2, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd28mkt', 'ordId': '', 'sCode': '51121', 'sMsg': 'Order quantity must be a multiple of the lot size.', 'tag': '', 'ts': '1766922751419'}], 'inTime': '1766922751419696', 'msg': 'All operations failed', 'outTime': '1766922751419788'} +2025-12-28 19:52:33,208 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=9, strategy_id=1, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd19lmt', 'ordId': '', 'sCode': '51121', 'sMsg': 'Order quantity must be a multiple of the lot size.', 'tag': '', 'ts': '1766922752642'}], 'inTime': '1766922752642342', 'msg': 'All operations failed', 'outTime': '1766922752642440'} +2025-12-28 19:52:34,248 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=9, strategy_id=1, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd19mkt', 'ordId': '', 'sCode': '51121', 'sMsg': 'Order quantity must be a multiple of the lot size.', 'tag': '', 'ts': '1766922753780'}], 'inTime': '1766922753780725', 'msg': 'All operations failed', 'outTime': '1766922753780814'} +2025-12-28 19:52:35,707 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=10, strategy_id=2, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd210lmt', 'ordId': '', 'sCode': '51121', 'sMsg': 'Order quantity must be a multiple of the lot size.', 'tag': '', 'ts': '1766922754927'}], 'inTime': '1766922754927051', 'msg': 'All operations failed', 'outTime': '1766922754927157'} +2025-12-28 19:52:37,096 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=10, strategy_id=2, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd210mkt', 'ordId': '', 'sCode': '51121', 'sMsg': 'Order quantity must be a multiple of the lot size.', 'tag': '', 'ts': '1766922756406'}], 'inTime': '1766922756406686', 'msg': 'All operations failed', 'outTime': '1766922756406777'} +2025-12-28 19:52:37,253 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 19:52:37,271 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=1 +2025-12-28 19:52:37,272 - app.services.trading_executor - INFO - Initial signals: [{'type': 'close_long', 'trigger_price': 87846.3, 'position_size': 0, 'timestamp': 1766922720}] +2025-12-28 19:52:37,537 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87846.29, pending_signals=1 +2025-12-28 19:52:37,540 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87846.29, 'position_size': 0, 'timestamp': 1766922720}] +2025-12-28 19:52:37,660 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 19:52:37,689 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2025-12-28 19:52:47,292 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87846.29, pending_signals=1 +2025-12-28 19:52:47,294 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87846.29, 'position_size': 0, 'timestamp': 1766922720}] +2025-12-28 19:52:57,402 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87846.29, pending_signals=1 +2025-12-28 19:52:57,404 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87846.29, 'position_size': 0, 'timestamp': 1766922720}] +2025-12-28 19:53:07,296 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87846.29, pending_signals=2 +2025-12-28 19:53:07,298 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87846.3, 'position_size': 0, 'timestamp': 1766922720}, {'type': 'open_short', 'trigger_price': 87846.3, 'position_size': 0.08, 'timestamp': 1766922720}] +2025-12-28 19:53:07,306 - app.services.trading_executor - INFO - Strategy 2 signal executed: open_short @ 87846.3 +2025-12-28 19:53:09,504 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=11, strategy_id=2, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd211lmt', 'ordId': '', 'sCode': '51121', 'sMsg': 'Order quantity must be a multiple of the lot size.', 'tag': '', 'ts': '1766922788926'}], 'inTime': '1766922788926468', 'msg': 'All operations failed', 'outTime': '1766922788926577'} +2025-12-28 19:53:10,789 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=11, strategy_id=2, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd211mkt', 'ordId': '', 'sCode': '51121', 'sMsg': 'Order quantity must be a multiple of the lot size.', 'tag': '', 'ts': '1766922789816'}], 'inTime': '1766922789816542', 'msg': 'All operations failed', 'outTime': '1766922789816619'} +2025-12-28 19:53:17,761 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87846.3, pending_signals=2 +2025-12-28 19:53:17,763 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87846.3, 'position_size': 0, 'timestamp': 1766922720}, {'type': 'open_short', 'trigger_price': 87846.3, 'position_size': 0.08, 'timestamp': 1766922720}] +2025-12-28 19:53:27,299 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87846.3, pending_signals=2 +2025-12-28 19:53:27,301 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87846.3, 'position_size': 0, 'timestamp': 1766922720}, {'type': 'open_short', 'trigger_price': 87846.3, 'position_size': 0.08, 'timestamp': 1766922720}] +2025-12-28 19:53:38,128 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87840.66, pending_signals=2 +2025-12-28 19:53:38,130 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87846.29, 'position_size': 0, 'timestamp': 1766922720}, {'type': 'open_short', 'trigger_price': 87846.29, 'position_size': 0.08, 'timestamp': 1766922720}] +2025-12-28 19:55:51,126 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-28 19:55:51,130 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-28 19:55:51,501 - app.services.strategy - INFO - Found 2 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}] +2025-12-28 19:55:51,502 - app - INFO - Restoring 2 running strategies... +2025-12-28 19:55:51,502 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-28 19:55:51,502 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-28 19:55:51,502 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-28 19:55:51,502 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-28 19:55:51,502 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-28 19:55:51,502 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-28 19:55:51,502 - app - INFO - Strategy restore completed: 2/2 restored +2025-12-28 19:55:51,503 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-28 19:55:51,505 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-28 19:55:51,532 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-28 19:55:51,532 - werkzeug - INFO - Press CTRL+C to quit +2025-12-28 19:55:58,957 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 19:55:58,975 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2025-12-28 19:55:59,326 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 19:55:59,342 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=1 +2025-12-28 19:55:59,342 - app.services.trading_executor - INFO - Initial signals: [{'type': 'close_short', 'trigger_price': 87868.09, 'position_size': 0, 'timestamp': 1766922900}] +2025-12-28 19:55:59,951 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87868.08, pending_signals=1 +2025-12-28 19:55:59,953 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87868.08, 'position_size': 0, 'timestamp': 1766922900}] +2025-12-28 19:56:09,362 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87868.08, pending_signals=2 +2025-12-28 19:56:09,365 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87868.09, 'position_size': 0, 'timestamp': 1766922900}] +2025-12-28 19:56:19,781 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87868.08, pending_signals=2 +2025-12-28 19:56:19,783 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87868.09, 'position_size': 0, 'timestamp': 1766922900}] +2025-12-28 19:56:29,365 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87868.08, pending_signals=2 +2025-12-28 19:56:29,367 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87868.09, 'position_size': 0, 'timestamp': 1766922900}] +2025-12-28 19:56:40,425 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87868.08, pending_signals=2 +2025-12-28 19:56:40,428 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87868.09, 'position_size': 0, 'timestamp': 1766922900}] +2025-12-28 19:56:48,195 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 19:56:48] "GET /api/dashboard/summary?_t=1766923008178 HTTP/1.1" 200 - +2025-12-28 19:56:48,201 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 19:56:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766923008178 HTTP/1.1" 200 - +2025-12-28 19:56:49,369 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87868.08, pending_signals=2 +2025-12-28 19:56:49,372 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87868.09, 'position_size': 0, 'timestamp': 1766922900}] +2025-12-28 19:57:00,442 - app.services.trading_executor - WARNING - Signal expired and removed: {'type': 'open_long', 'trigger_price': 87868.08, 'position_size': 0.08, 'timestamp': 1766922900} +2025-12-28 19:57:00,442 - app.services.trading_executor - WARNING - Signal expired and removed: {'type': 'close_short', 'trigger_price': 87868.08, 'position_size': 0, 'timestamp': 1766922900} +2025-12-28 19:57:18,373 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 19:57:18] "GET /api/dashboard/summary?_t=1766923038355 HTTP/1.1" 200 - +2025-12-28 19:57:18,381 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 19:57:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766923038355 HTTP/1.1" 200 - +2025-12-28 19:57:19,347 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2942.9, pending_signals=1 +2025-12-28 19:57:19,350 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2942.9, 'position_size': 0, 'timestamp': 1766923020}] +2025-12-28 19:57:29,006 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2942.9, pending_signals=1 +2025-12-28 19:57:29,008 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2942.9, 'position_size': 0, 'timestamp': 1766923020}] +2025-12-28 20:05:32,313 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:05:32] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 20:05:32,320 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:05:32] "GET /api/market/config?_t=1766923532298 HTTP/1.1" 200 - +2025-12-28 20:05:32,754 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 20:05:32,755 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 20:05:32,755 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 20:05:32,755 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 20:05:32,755 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 20:05:34,524 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (198335s) +2025-12-28 20:05:34,924 - app.data_sources.base - WARNING - Warning: 00700 data is delayed (417935s) +2025-12-28 20:05:34,984 - app.data_sources.base - WARNING - Warning: 000858 data is delayed (245135s) +2025-12-28 20:05:34,985 - app.data_sources.base - WARNING - Warning: 600519 data is delayed (245135s) +2025-12-28 20:05:34,986 - app.data_sources.base - WARNING - Warning: 300475 data is delayed (245135s) +2025-12-28 20:05:35,519 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:05:35] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-28 20:05:35,522 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:05:35] "GET /api/market/types?_t=1766923532356 HTTP/1.1" 200 - +2025-12-28 20:05:35,526 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:05:35] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 20:05:35,533 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:05:35] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 20:05:35,537 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:05:35] "GET /api/market/types?_t=1766923534349 HTTP/1.1" 200 - +2025-12-28 20:05:35,740 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1D, limit=500 +2025-12-28 20:05:37,549 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:05:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 20:05:39,354 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:05:39] "POST /api/indicator/backtest/history HTTP/1.1" 200 - +2025-12-28 20:05:45,343 - app.routes.backtest - ERROR - ai_analyze_backtest_runs failed: 403 Client Error: Forbidden for url: https://openrouter.ai/api/v1/chat/completions +2025-12-28 20:05:45,344 - app.routes.backtest - ERROR - Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\quantdinger\backend_api_python\app\routes\backtest.py", line 771, in ai_analyze_backtest_runs + resp.raise_for_status() + ~~~~~~~~~~~~~~~~~~~~~^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\site-packages\requests\models.py", line 1026, in raise_for_status + raise HTTPError(http_error_msg, response=self) +requests.exceptions.HTTPError: 403 Client Error: Forbidden for url: https://openrouter.ai/api/v1/chat/completions + +2025-12-28 20:05:45,346 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:05:45] "POST /api/indicator/backtest/aiAnalyze HTTP/1.1" 500 - +2025-12-28 20:05:54,029 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:05:54] "GET /api/market/config?_t=1766923553698 HTTP/1.1" 200 - +2025-12-28 20:05:54,035 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:05:54] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 20:05:54,276 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:05:54] "GET /api/market/types?_t=1766923554045 HTTP/1.1" 200 - +2025-12-28 20:05:54,359 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:05:54] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-28 20:05:54,376 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:05:54] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 20:05:54,662 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:05:54] "GET /api/market/types?_t=1766923554342 HTTP/1.1" 200 - +2025-12-28 20:05:54,667 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:05:54] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 20:05:54,671 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1D, limit=500 +2025-12-28 20:05:54,674 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:05:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 20:05:56,623 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:05:56] "POST /api/indicator/backtest/history HTTP/1.1" 200 - +2025-12-28 20:06:02,879 - app.routes.backtest - ERROR - ai_analyze_backtest_runs failed: 403 Client Error: Forbidden for url: https://openrouter.ai/api/v1/chat/completions +2025-12-28 20:06:02,880 - app.routes.backtest - ERROR - Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\quantdinger\backend_api_python\app\routes\backtest.py", line 771, in ai_analyze_backtest_runs + resp.raise_for_status() + ~~~~~~~~~~~~~~~~~~~~~^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\site-packages\requests\models.py", line 1026, in raise_for_status + raise HTTPError(http_error_msg, response=self) +requests.exceptions.HTTPError: 403 Client Error: Forbidden for url: https://openrouter.ai/api/v1/chat/completions + +2025-12-28 20:06:02,882 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:06:02] "POST /api/indicator/backtest/aiAnalyze HTTP/1.1" 500 - +2025-12-28 20:07:39,642 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2942.65, pending_signals=1 +2025-12-28 20:07:39,644 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2942.65, 'position_size': 0, 'timestamp': 1766923620}] +2025-12-28 20:07:49,095 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2942.65, pending_signals=1 +2025-12-28 20:07:49,097 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2942.65, 'position_size': 0, 'timestamp': 1766923620}] +2025-12-28 20:08:00,323 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2942.65, pending_signals=1 +2025-12-28 20:08:00,325 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2942.65, 'position_size': 0, 'timestamp': 1766923620}] +2025-12-28 20:08:09,097 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2942.65, pending_signals=2 +2025-12-28 20:08:09,099 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2942.65, 'position_size': 0, 'timestamp': 1766923620}, {'type': 'open_short', 'trigger_price': 2942.65, 'position_size': 0.08, 'timestamp': 1766923620}] +2025-12-28 20:08:09,108 - app.services.trading_executor - INFO - Strategy 1 signal executed: open_short @ 2942.65 +2025-12-28 20:08:11,654 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=12, strategy_id=1, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd112lmt', 'ordId': '', 'sCode': '51121', 'sMsg': 'Order quantity must be a multiple of the lot size.', 'tag': '', 'ts': '1766923690795'}], 'inTime': '1766923690795672', 'msg': 'All operations failed', 'outTime': '1766923690795806'} +2025-12-28 20:08:13,897 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=12, strategy_id=1, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd112mkt', 'ordId': '', 'sCode': '51121', 'sMsg': 'Order quantity must be a multiple of the lot size.', 'tag': '', 'ts': '1766923692281'}], 'inTime': '1766923692281849', 'msg': 'All operations failed', 'outTime': '1766923692281971'} +2025-12-28 20:08:19,526 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2942.65, pending_signals=2 +2025-12-28 20:08:19,528 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2942.65, 'position_size': 0, 'timestamp': 1766923620}, {'type': 'open_short', 'trigger_price': 2942.65, 'position_size': 0.08, 'timestamp': 1766923620}] +2025-12-28 20:08:29,100 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2942.65, pending_signals=2 +2025-12-28 20:08:29,102 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2942.65, 'position_size': 0, 'timestamp': 1766923620}, {'type': 'open_short', 'trigger_price': 2942.65, 'position_size': 0.08, 'timestamp': 1766923620}] +2025-12-28 20:08:39,274 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2942.66, pending_signals=2 +2025-12-28 20:08:39,276 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2942.65, 'position_size': 0, 'timestamp': 1766923620}] +2025-12-28 20:08:49,105 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2942.66, pending_signals=2 +2025-12-28 20:08:49,108 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2942.65, 'position_size': 0, 'timestamp': 1766923620}] +2025-12-28 20:08:59,814 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2942.26, pending_signals=2 +2025-12-28 20:08:59,816 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2942.65, 'position_size': 0, 'timestamp': 1766923620}, {'type': 'open_short', 'trigger_price': 2942.65, 'position_size': 0.08, 'timestamp': 1766923620}] +2025-12-28 20:09:19,606 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87848.89, pending_signals=1 +2025-12-28 20:09:19,608 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87848.89, 'position_size': 0, 'timestamp': 1766923740}] +2025-12-28 20:09:29,496 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87848.89, pending_signals=1 +2025-12-28 20:09:29,498 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87848.89, 'position_size': 0, 'timestamp': 1766923740}] +2025-12-28 20:09:39,608 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87840.42, pending_signals=1 +2025-12-28 20:09:39,611 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87840.42, 'position_size': 0, 'timestamp': 1766923740}] +2025-12-28 20:09:49,499 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87840.42, pending_signals=1 +2025-12-28 20:09:49,501 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87840.42, 'position_size': 0, 'timestamp': 1766923740}] +2025-12-28 20:10:00,896 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87840.01, pending_signals=1 +2025-12-28 20:10:00,898 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87840.01, 'position_size': 0, 'timestamp': 1766923740}] +2025-12-28 20:10:09,501 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87840.01, pending_signals=2 +2025-12-28 20:10:09,503 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87840.01, 'position_size': 0, 'timestamp': 1766923740}, {'type': 'open_short', 'trigger_price': 87840.01, 'position_size': 0.08, 'timestamp': 1766923740}] +2025-12-28 20:10:09,512 - app.services.trading_executor - INFO - Strategy 2 signal executed: open_short @ 87840.01 +2025-12-28 20:10:11,195 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=13, strategy_id=2, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd213lmt', 'ordId': '', 'sCode': '51121', 'sMsg': 'Order quantity must be a multiple of the lot size.', 'tag': '', 'ts': '1766923810674'}], 'inTime': '1766923810674727', 'msg': 'All operations failed', 'outTime': '1766923810674836'} +2025-12-28 20:10:15,104 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=13, strategy_id=2, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd213mkt', 'ordId': '', 'sCode': '51121', 'sMsg': 'Order quantity must be a multiple of the lot size.', 'tag': '', 'ts': '1766923812894'}], 'inTime': '1766923812894426', 'msg': 'All operations failed', 'outTime': '1766923812894508'} +2025-12-28 20:10:20,112 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87823.19, pending_signals=2 +2025-12-28 20:10:20,114 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87840.01, 'position_size': 0, 'timestamp': 1766923740}, {'type': 'open_short', 'trigger_price': 87840.01, 'position_size': 0.08, 'timestamp': 1766923740}] +2025-12-28 20:10:29,506 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87823.19, pending_signals=2 +2025-12-28 20:10:29,509 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87840.01, 'position_size': 0, 'timestamp': 1766923740}, {'type': 'open_short', 'trigger_price': 87840.01, 'position_size': 0.08, 'timestamp': 1766923740}] +2025-12-28 20:10:39,707 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87823.18, pending_signals=2 +2025-12-28 20:10:39,710 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87840.01, 'position_size': 0, 'timestamp': 1766923740}, {'type': 'open_short', 'trigger_price': 87840.01, 'position_size': 0.08, 'timestamp': 1766923740}] +2025-12-28 20:10:49,509 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87823.18, pending_signals=2 +2025-12-28 20:10:49,511 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87840.01, 'position_size': 0, 'timestamp': 1766923740}, {'type': 'open_short', 'trigger_price': 87840.01, 'position_size': 0.08, 'timestamp': 1766923740}] +2025-12-28 20:11:01,669 - app.services.trading_executor - WARNING - Signal expired and removed: {'type': 'close_long', 'trigger_price': 87840.0, 'position_size': 0, 'timestamp': 1766923740} +2025-12-28 20:11:01,670 - app.services.trading_executor - WARNING - Signal expired and removed: {'type': 'open_short', 'trigger_price': 87840.0, 'position_size': 0.08, 'timestamp': 1766923740} +2025-12-28 20:15:55,071 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1D, limit=5 +2025-12-28 20:15:55,179 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:15:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 20:21:59,636 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2941.95, pending_signals=1 +2025-12-28 20:21:59,638 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2941.95, 'position_size': 0, 'timestamp': 1766924460}] +2025-12-28 20:22:09,221 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2941.95, pending_signals=2 +2025-12-28 20:22:09,222 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 2941.95, 'position_size': 0.08, 'timestamp': 1766924460}, {'type': 'close_short', 'trigger_price': 2941.95, 'position_size': 0, 'timestamp': 1766924460}] +2025-12-28 20:22:09,230 - app.services.trading_executor - INFO - Strategy 1 signal executed: open_long @ 2941.95 +2025-12-28 20:22:11,813 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=14, strategy_id=1, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd114lmt', 'ordId': '', 'sCode': '51121', 'sMsg': 'Order quantity must be a multiple of the lot size.', 'tag': '', 'ts': '1766924531089'}], 'inTime': '1766924531089595', 'msg': 'All operations failed', 'outTime': '1766924531089696'} +2025-12-28 20:22:12,467 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=14, strategy_id=1, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd114mkt', 'ordId': '', 'sCode': '51121', 'sMsg': 'Order quantity must be a multiple of the lot size.', 'tag': '', 'ts': '1766924532203'}], 'inTime': '1766924532203142', 'msg': 'All operations failed', 'outTime': '1766924532203216'} +2025-12-28 20:22:19,630 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2941.95, pending_signals=2 +2025-12-28 20:22:19,633 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 2941.95, 'position_size': 0.08, 'timestamp': 1766924460}, {'type': 'close_short', 'trigger_price': 2941.95, 'position_size': 0, 'timestamp': 1766924460}] +2025-12-28 20:22:20,602 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87859.99, pending_signals=1 +2025-12-28 20:22:20,604 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87859.99, 'position_size': 0, 'timestamp': 1766924520}] +2025-12-28 20:22:29,224 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2941.95, pending_signals=2 +2025-12-28 20:22:29,226 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 2941.95, 'position_size': 0.08, 'timestamp': 1766924460}, {'type': 'close_short', 'trigger_price': 2941.95, 'position_size': 0, 'timestamp': 1766924460}] +2025-12-28 20:22:29,623 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87859.99, pending_signals=1 +2025-12-28 20:22:29,625 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87859.99, 'position_size': 0, 'timestamp': 1766924520}] +2025-12-28 20:22:39,337 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2941.95, pending_signals=2 +2025-12-28 20:22:39,339 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 2941.95, 'position_size': 0.08, 'timestamp': 1766924460}, {'type': 'close_short', 'trigger_price': 2941.95, 'position_size': 0, 'timestamp': 1766924460}] +2025-12-28 20:22:39,736 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87857.5, pending_signals=1 +2025-12-28 20:22:39,738 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87857.5, 'position_size': 0, 'timestamp': 1766924520}] +2025-12-28 20:22:49,227 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2941.95, pending_signals=2 +2025-12-28 20:22:49,229 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 2941.95, 'position_size': 0.08, 'timestamp': 1766924460}, {'type': 'close_short', 'trigger_price': 2941.95, 'position_size': 0, 'timestamp': 1766924460}] +2025-12-28 20:22:49,626 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87857.5, pending_signals=1 +2025-12-28 20:22:49,628 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87857.5, 'position_size': 0, 'timestamp': 1766924520}] +2025-12-28 20:23:00,091 - app.services.trading_executor - WARNING - Signal expired and removed: {'type': 'open_long', 'trigger_price': 2941.95, 'position_size': 0.08, 'timestamp': 1766924460} +2025-12-28 20:23:00,091 - app.services.trading_executor - WARNING - Signal expired and removed: {'type': 'close_short', 'trigger_price': 2941.95, 'position_size': 0, 'timestamp': 1766924460} +2025-12-28 20:23:00,146 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87857.5, pending_signals=1 +2025-12-28 20:23:00,148 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87857.5, 'position_size': 0, 'timestamp': 1766924520}] +2025-12-28 20:23:09,628 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87857.5, pending_signals=2 +2025-12-28 20:23:09,630 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 87857.5, 'position_size': 0.08, 'timestamp': 1766924520}, {'type': 'close_short', 'trigger_price': 87857.5, 'position_size': 0, 'timestamp': 1766924520}] +2025-12-28 20:23:09,638 - app.services.trading_executor - INFO - Strategy 2 signal executed: open_long @ 87857.5 +2025-12-28 20:23:11,595 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=15, strategy_id=2, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd215lmt', 'ordId': '', 'sCode': '51121', 'sMsg': 'Order quantity must be a multiple of the lot size.', 'tag': '', 'ts': '1766924591072'}], 'inTime': '1766924591072212', 'msg': 'All operations failed', 'outTime': '1766924591072323'} +2025-12-28 20:23:12,646 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=15, strategy_id=2, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd215mkt', 'ordId': '', 'sCode': '51121', 'sMsg': 'Order quantity must be a multiple of the lot size.', 'tag': '', 'ts': '1766924592233'}], 'inTime': '1766924592233183', 'msg': 'All operations failed', 'outTime': '1766924592233275'} +2025-12-28 20:23:20,228 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87853.11, pending_signals=2 +2025-12-28 20:23:20,230 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87857.5, 'position_size': 0, 'timestamp': 1766924520}] +2025-12-28 20:23:29,631 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87853.11, pending_signals=2 +2025-12-28 20:23:29,632 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87857.5, 'position_size': 0, 'timestamp': 1766924520}] +2025-12-28 20:23:40,353 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87853.1, pending_signals=2 +2025-12-28 20:23:40,355 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87857.5, 'position_size': 0, 'timestamp': 1766924520}] +2025-12-28 20:23:49,634 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87853.1, pending_signals=2 +2025-12-28 20:23:49,637 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87857.5, 'position_size': 0, 'timestamp': 1766924520}] +2025-12-28 20:24:00,776 - app.services.trading_executor - WARNING - Signal expired and removed: {'type': 'open_long', 'trigger_price': 87857.5, 'position_size': 0.08, 'timestamp': 1766924520} +2025-12-28 20:24:00,776 - app.services.trading_executor - WARNING - Signal expired and removed: {'type': 'close_short', 'trigger_price': 87857.5, 'position_size': 0, 'timestamp': 1766924520} +2025-12-28 20:25:55,066 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1D, limit=5 +2025-12-28 20:25:55,178 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:25:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 20:35:55,055 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1D, limit=5 +2025-12-28 20:35:55,892 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:35:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 20:38:31,033 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2942.37, pending_signals=1 +2025-12-28 20:38:31,054 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2942.37, 'position_size': 0, 'timestamp': 1766925480}] +2025-12-28 20:38:40,926 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2942.37, pending_signals=1 +2025-12-28 20:38:40,948 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2942.37, 'position_size': 0, 'timestamp': 1766925480}] +2025-12-28 20:38:51,126 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2941.07, pending_signals=1 +2025-12-28 20:38:51,128 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2941.07, 'position_size': 0, 'timestamp': 1766925480}] +2025-12-28 20:39:01,209 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2941.07, pending_signals=1 +2025-12-28 20:39:01,211 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2941.06, 'position_size': 0, 'timestamp': 1766925480}] +2025-12-28 20:39:11,390 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2940.02, pending_signals=2 +2025-12-28 20:39:11,392 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2941.06, 'position_size': 0, 'timestamp': 1766925480}, {'type': 'open_short', 'trigger_price': 2941.06, 'position_size': 0.08, 'timestamp': 1766925480}] +2025-12-28 20:39:11,400 - app.services.trading_executor - INFO - Strategy 1 signal executed: open_short @ 2941.06 +2025-12-28 20:39:14,363 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=16, strategy_id=1, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd116lmt', 'ordId': '', 'sCode': '51121', 'sMsg': 'Order quantity must be a multiple of the lot size.', 'tag': '', 'ts': '1766925552592'}], 'inTime': '1766925552592657', 'msg': 'All operations failed', 'outTime': '1766925552592763'} +2025-12-28 20:39:15,295 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=16, strategy_id=1, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd116mkt', 'ordId': '', 'sCode': '51121', 'sMsg': 'Order quantity must be a multiple of the lot size.', 'tag': '', 'ts': '1766925555060'}], 'inTime': '1766925555060888', 'msg': 'All operations failed', 'outTime': '1766925555060995'} +2025-12-28 20:39:20,932 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2940.02, pending_signals=2 +2025-12-28 20:39:20,950 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2941.06, 'position_size': 0, 'timestamp': 1766925480}, {'type': 'open_short', 'trigger_price': 2941.06, 'position_size': 0.08, 'timestamp': 1766925480}] +2025-12-28 20:39:31,041 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2938.53, pending_signals=2 +2025-12-28 20:39:31,043 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2941.06, 'position_size': 0, 'timestamp': 1766925480}, {'type': 'open_short', 'trigger_price': 2941.06, 'position_size': 0.08, 'timestamp': 1766925480}] +2025-12-28 20:39:31,666 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87851.3, pending_signals=1 +2025-12-28 20:39:31,667 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87851.3, 'position_size': 0, 'timestamp': 1766925540}] +2025-12-28 20:39:40,932 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2938.53, pending_signals=2 +2025-12-28 20:39:40,934 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2941.06, 'position_size': 0, 'timestamp': 1766925480}, {'type': 'open_short', 'trigger_price': 2941.06, 'position_size': 0.08, 'timestamp': 1766925480}] +2025-12-28 20:39:40,954 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87851.3, pending_signals=1 +2025-12-28 20:39:40,956 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87851.3, 'position_size': 0, 'timestamp': 1766925540}] +2025-12-28 20:39:51,318 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87835.48, pending_signals=1 +2025-12-28 20:39:51,320 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87835.48, 'position_size': 0, 'timestamp': 1766925540}] +2025-12-28 20:39:51,628 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2938.21, pending_signals=2 +2025-12-28 20:39:51,630 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2941.06, 'position_size': 0, 'timestamp': 1766925480}, {'type': 'open_short', 'trigger_price': 2941.06, 'position_size': 0.08, 'timestamp': 1766925480}] +2025-12-28 20:40:02,273 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87835.48, pending_signals=2 +2025-12-28 20:40:02,275 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87819.96, 'position_size': 0, 'timestamp': 1766925540}] +2025-12-28 20:40:11,157 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87819.95, pending_signals=2 +2025-12-28 20:40:11,159 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87819.96, 'position_size': 0, 'timestamp': 1766925540}, {'type': 'open_short', 'trigger_price': 87819.96, 'position_size': 0.08, 'timestamp': 1766925540}] +2025-12-28 20:40:11,167 - app.services.trading_executor - INFO - Strategy 2 signal executed: open_short @ 87819.96 +2025-12-28 20:40:12,078 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=17, strategy_id=2, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd217lmt', 'ordId': '', 'sCode': '51121', 'sMsg': 'Order quantity must be a multiple of the lot size.', 'tag': '', 'ts': '1766925611846'}], 'inTime': '1766925611846778', 'msg': 'All operations failed', 'outTime': '1766925611846890'} +2025-12-28 20:40:12,551 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=17, strategy_id=2, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd217mkt', 'ordId': '', 'sCode': '51121', 'sMsg': 'Order quantity must be a multiple of the lot size.', 'tag': '', 'ts': '1766925612321'}], 'inTime': '1766925612320966', 'msg': 'All operations failed', 'outTime': '1766925612321067'} +2025-12-28 20:40:20,979 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87819.95, pending_signals=2 +2025-12-28 20:40:20,981 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87819.96, 'position_size': 0, 'timestamp': 1766925540}, {'type': 'open_short', 'trigger_price': 87819.96, 'position_size': 0.08, 'timestamp': 1766925540}] +2025-12-28 20:40:31,067 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87819.95, pending_signals=2 +2025-12-28 20:40:31,069 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87819.96, 'position_size': 0, 'timestamp': 1766925540}, {'type': 'open_short', 'trigger_price': 87819.96, 'position_size': 0.08, 'timestamp': 1766925540}] +2025-12-28 20:40:40,961 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87819.95, pending_signals=2 +2025-12-28 20:40:40,963 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87819.96, 'position_size': 0, 'timestamp': 1766925540}, {'type': 'open_short', 'trigger_price': 87819.96, 'position_size': 0.08, 'timestamp': 1766925540}] +2025-12-28 20:40:52,135 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87824.99, pending_signals=2 +2025-12-28 20:40:52,138 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87819.96, 'position_size': 0, 'timestamp': 1766925540}] +2025-12-28 20:45:55,057 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1D, limit=5 +2025-12-28 20:45:55,500 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:45:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 20:47:31,194 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2941.21, pending_signals=1 +2025-12-28 20:47:31,195 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2941.21, 'position_size': 0, 'timestamp': 1766926020}] +2025-12-28 20:47:40,997 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2941.21, pending_signals=1 +2025-12-28 20:47:40,999 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2941.21, 'position_size': 0, 'timestamp': 1766926020}] +2025-12-28 20:47:51,912 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2941.2, pending_signals=1 +2025-12-28 20:47:51,914 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2941.2, 'position_size': 0, 'timestamp': 1766926020}] +2025-12-28 20:48:01,498 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2941.2, pending_signals=1 +2025-12-28 20:48:01,500 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2941.21, 'position_size': 0, 'timestamp': 1766926020}] +2025-12-28 20:48:11,236 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2941.21, pending_signals=2 +2025-12-28 20:48:11,238 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 2941.21, 'position_size': 0.08, 'timestamp': 1766926020}, {'type': 'close_short', 'trigger_price': 2941.21, 'position_size': 0, 'timestamp': 1766926020}] +2025-12-28 20:48:11,247 - app.services.trading_executor - INFO - Strategy 1 signal executed: open_long @ 2941.21 +2025-12-28 20:48:12,571 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=18, strategy_id=1, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd118lmt', 'ordId': '', 'sCode': '51121', 'sMsg': 'Order quantity must be a multiple of the lot size.', 'tag': '', 'ts': '1766926092353'}], 'inTime': '1766926092353577', 'msg': 'All operations failed', 'outTime': '1766926092353677'} +2025-12-28 20:48:14,014 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=18, strategy_id=1, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd118mkt', 'ordId': '', 'sCode': '51121', 'sMsg': 'Order quantity must be a multiple of the lot size.', 'tag': '', 'ts': '1766926093573'}], 'inTime': '1766926093573293', 'msg': 'All operations failed', 'outTime': '1766926093573381'} +2025-12-28 20:48:21,003 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2941.21, pending_signals=2 +2025-12-28 20:48:21,006 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 2941.21, 'position_size': 0.08, 'timestamp': 1766926020}, {'type': 'close_short', 'trigger_price': 2941.21, 'position_size': 0, 'timestamp': 1766926020}] +2025-12-28 20:48:31,369 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2941.2, pending_signals=2 +2025-12-28 20:48:31,371 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2941.21, 'position_size': 0, 'timestamp': 1766926020}] +2025-12-28 20:48:41,008 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2941.2, pending_signals=2 +2025-12-28 20:48:41,010 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2941.21, 'position_size': 0, 'timestamp': 1766926020}] +2025-12-28 20:48:51,119 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2941.2, pending_signals=2 +2025-12-28 20:48:51,121 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2941.21, 'position_size': 0, 'timestamp': 1766926020}] +2025-12-28 20:49:01,448 - app.services.trading_executor - WARNING - Signal expired and removed: {'type': 'open_long', 'trigger_price': 2941.21, 'position_size': 0.08, 'timestamp': 1766926020} +2025-12-28 20:49:01,448 - app.services.trading_executor - WARNING - Signal expired and removed: {'type': 'close_short', 'trigger_price': 2941.21, 'position_size': 0, 'timestamp': 1766926020} +2025-12-28 20:49:57,070 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:49:57] "POST /api/indicator/backtest/aiAnalyze HTTP/1.1" 200 - +2025-12-28 20:50:20,624 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-28 20:50:20,628 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-28 20:50:21,055 - app.services.strategy - INFO - Found 2 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}] +2025-12-28 20:50:21,055 - app - INFO - Restoring 2 running strategies... +2025-12-28 20:50:21,055 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-28 20:50:21,055 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-28 20:50:21,055 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-28 20:50:21,056 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-28 20:50:21,056 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-28 20:50:21,056 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-28 20:50:21,056 - app - INFO - Strategy restore completed: 2/2 restored +2025-12-28 20:50:21,056 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-28 20:50:21,059 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-28 20:50:21,093 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-28 20:50:21,094 - werkzeug - INFO - Press CTRL+C to quit +2025-12-28 20:50:25,848 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 20:50:25,866 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2025-12-28 20:50:26,315 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:50:26] "POST /api/indicator/backtest/history HTTP/1.1" 200 - +2025-12-28 20:50:26,474 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 20:50:26,493 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2025-12-28 20:50:27,351 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:50:27] "POST /api/indicator/backtest/history HTTP/1.1" 200 - +2025-12-28 20:50:28,016 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:50:28] "POST /api/indicator/backtest/history HTTP/1.1" 200 - +2025-12-28 20:50:33,689 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:50:33] "GET /api/dashboard/summary?_t=1766926233371 HTTP/1.1" 200 - +2025-12-28 20:50:33,694 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:50:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766926233371 HTTP/1.1" 200 - +2025-12-28 20:50:45,890 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:50:45] "GET /api/market/config?_t=1766926245872 HTTP/1.1" 200 - +2025-12-28 20:50:46,200 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:50:46] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 20:50:46,241 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:50:46] "GET /api/market/types?_t=1766926245922 HTTP/1.1" 200 - +2025-12-28 20:50:46,744 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 20:50:46,744 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 20:50:46,745 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 20:50:46,745 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 20:50:46,745 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 20:50:47,894 - app.data_sources.base - WARNING - Warning: 600519 data is delayed (247848s) +2025-12-28 20:50:47,944 - app.data_sources.base - WARNING - Warning: 300475 data is delayed (247848s) +2025-12-28 20:50:48,269 - app.data_sources.base - WARNING - Warning: 000858 data is delayed (247848s) +2025-12-28 20:50:48,555 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (201049s) +2025-12-28 20:50:48,960 - app.data_sources.base - WARNING - Warning: 00700 data is delayed (420649s) +2025-12-28 20:50:59,341 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:50:59] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-28 20:50:59,533 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:50:59] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 20:50:59,537 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:50:59] "GET /api/market/config?_t=1766926259220 HTTP/1.1" 200 - +2025-12-28 20:50:59,856 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:50:59] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-28 20:50:59,860 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:50:59] "GET /api/market/types?_t=1766926259553 HTTP/1.1" 200 - +2025-12-28 20:51:08,456 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:51:08] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 20:51:08,764 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:51:08] "GET /api/market/types?_t=1766926268441 HTTP/1.1" 200 - +2025-12-28 20:51:08,773 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:51:08] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 20:51:08,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1D, limit=500 +2025-12-28 20:51:10,547 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:51:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 20:51:17,569 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:51:17] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-28 20:51:18,423 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:51:18] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-28 20:51:22,798 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:51:22] "POST /api/market/watchlist/add HTTP/1.1" 200 - +2025-12-28 20:51:23,057 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:51:23] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 20:51:27,753 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-28 20:51:28,902 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:51:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 20:51:32,911 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=500 +2025-12-28 20:51:33,680 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:51:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 20:51:38,710 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-28 20:51:38,900 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:51:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 20:51:44,021 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-28 20:51:44,130 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:51:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 20:51:48,726 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-28 20:51:48,726 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:51:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 20:51:54,020 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-28 20:51:54,220 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:51:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 20:51:58,717 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-28 20:51:58,718 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:51:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 20:52:04,022 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-28 20:52:04,132 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:52:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 20:52:08,718 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-28 20:52:08,718 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:52:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 20:52:14,027 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-28 20:52:14,136 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:52:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 20:52:18,719 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-28 20:52:18,720 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:52:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 20:52:24,032 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-28 20:52:24,138 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:52:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 20:52:28,717 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-28 20:52:28,718 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:52:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 20:52:34,020 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-28 20:52:34,145 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:52:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 20:52:38,719 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-28 20:52:38,719 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:52:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 20:52:44,025 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-28 20:52:44,217 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:52:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 20:52:48,711 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-28 20:52:48,711 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:52:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 20:52:54,032 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-28 20:52:54,147 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:52:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 20:52:58,719 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-28 20:52:58,720 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:52:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 20:53:00,506 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:53:00] "GET /api/dashboard/summary?_t=1766926380187 HTTP/1.1" 200 - +2025-12-28 20:53:00,509 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:53:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766926380187 HTTP/1.1" 200 - +2025-12-28 20:53:21,754 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:53:21] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 20:53:22,058 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:53:22] "GET /api/market/config?_t=1766926401735 HTTP/1.1" 200 - +2025-12-28 20:53:22,353 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:53:22] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-28 20:53:22,390 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:53:22] "GET /api/market/types?_t=1766926402068 HTTP/1.1" 200 - +2025-12-28 20:53:22,927 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:53:22] "GET /api/market/types?_t=1766926402600 HTTP/1.1" 200 - +2025-12-28 20:53:22,931 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:53:22] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 20:53:22,939 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:53:22] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 20:53:23,189 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-28 20:53:23,191 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:53:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 20:54:26,778 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87838.78, pending_signals=1 +2025-12-28 20:54:26,779 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87838.78, 'position_size': 0, 'timestamp': 1766926440}] +2025-12-28 20:54:35,921 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87838.78, pending_signals=1 +2025-12-28 20:54:35,923 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87838.78, 'position_size': 0, 'timestamp': 1766926440}] +2025-12-28 20:54:46,405 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87838.78, pending_signals=1 +2025-12-28 20:54:46,407 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87838.78, 'position_size': 0, 'timestamp': 1766926440}] +2025-12-28 20:54:55,924 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87838.78, pending_signals=1 +2025-12-28 20:54:55,926 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87838.78, 'position_size': 0, 'timestamp': 1766926440}] +2025-12-28 20:55:06,213 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87838.78, pending_signals=2 +2025-12-28 20:55:06,214 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 87838.78, 'position_size': 0.08, 'timestamp': 1766926440}, {'type': 'close_short', 'trigger_price': 87838.78, 'position_size': 0, 'timestamp': 1766926440}] +2025-12-28 20:55:06,223 - app.services.trading_executor - INFO - Strategy 2 signal executed: open_long @ 87838.78 +2025-12-28 20:55:09,371 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=19, strategy_id=2, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd219lmt', 'ordId': '', 'sCode': '51000', 'sMsg': 'Parameter posSide error ', 'tag': '', 'ts': '1766926508722'}], 'inTime': '1766926508721976', 'msg': 'All operations failed', 'outTime': '1766926508723218'} +2025-12-28 20:55:10,150 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=19, strategy_id=2, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd219mkt', 'ordId': '', 'sCode': '51000', 'sMsg': 'Parameter posSide error ', 'tag': '', 'ts': '1766926509854'}], 'inTime': '1766926509853820', 'msg': 'All operations failed', 'outTime': '1766926509855043'} +2025-12-28 20:55:15,928 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87838.78, pending_signals=2 +2025-12-28 20:55:15,930 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 87838.78, 'position_size': 0.08, 'timestamp': 1766926440}, {'type': 'close_short', 'trigger_price': 87838.78, 'position_size': 0, 'timestamp': 1766926440}] +2025-12-28 20:55:18,696 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:55:18] "POST /api/indicator/backtest/history HTTP/1.1" 200 - +2025-12-28 20:55:27,679 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87838.78, pending_signals=2 +2025-12-28 20:55:27,681 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 87838.78, 'position_size': 0.08, 'timestamp': 1766926440}, {'type': 'close_short', 'trigger_price': 87838.78, 'position_size': 0, 'timestamp': 1766926440}] +2025-12-28 20:55:35,930 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87838.78, pending_signals=2 +2025-12-28 20:55:35,932 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 87838.78, 'position_size': 0.08, 'timestamp': 1766926440}, {'type': 'close_short', 'trigger_price': 87838.78, 'position_size': 0, 'timestamp': 1766926440}] +2025-12-28 20:55:46,043 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87838.79, pending_signals=2 +2025-12-28 20:55:46,045 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 87838.78, 'position_size': 0.08, 'timestamp': 1766926440}, {'type': 'close_short', 'trigger_price': 87838.78, 'position_size': 0, 'timestamp': 1766926440}] +2025-12-28 20:55:54,857 - app.utils.safe_exec - WARNING - Windows does not support signal-based timeouts; execution time limits may not work +2025-12-28 20:55:54,887 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:55:54] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-28 20:55:55,933 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87838.79, pending_signals=2 +2025-12-28 20:55:55,935 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 87838.78, 'position_size': 0.08, 'timestamp': 1766926440}, {'type': 'close_short', 'trigger_price': 87838.78, 'position_size': 0, 'timestamp': 1766926440}] +2025-12-28 20:56:06,677 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2940.32, pending_signals=1 +2025-12-28 20:56:06,679 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2940.32, 'position_size': 0, 'timestamp': 1766926560}] +2025-12-28 20:56:16,570 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2940.32, pending_signals=1 +2025-12-28 20:56:16,573 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2940.32, 'position_size': 0, 'timestamp': 1766926560}] +2025-12-28 20:56:22,368 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-28 20:56:23,792 - app.data_sources.base - WARNING - Warning: ETH/USDT data is delayed (43246584s) +2025-12-28 20:56:23,794 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:56:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 20:56:27,391 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2939.65, pending_signals=2 +2025-12-28 20:56:27,393 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2940.23, 'position_size': 0, 'timestamp': 1766926500}, {'type': 'open_short', 'trigger_price': 2940.23, 'position_size': 0.08, 'timestamp': 1766926500}] +2025-12-28 20:56:27,401 - app.services.trading_executor - INFO - Strategy 1 signal executed: open_short @ 2940.23 +2025-12-28 20:56:30,567 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=20, strategy_id=1, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd120lmt', 'ordId': '', 'sCode': '51000', 'sMsg': 'Parameter posSide error ', 'tag': '', 'ts': '1766926590268'}], 'inTime': '1766926590267291', 'msg': 'All operations failed', 'outTime': '1766926590268614'} +2025-12-28 20:56:31,283 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=20, strategy_id=1, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd120mkt', 'ordId': '', 'sCode': '51000', 'sMsg': 'Parameter posSide error ', 'tag': '', 'ts': '1766926590988'}], 'inTime': '1766926590988611', 'msg': 'All operations failed', 'outTime': '1766926590988933'} +2025-12-28 20:56:36,569 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2939.65, pending_signals=2 +2025-12-28 20:56:36,571 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2940.23, 'position_size': 0, 'timestamp': 1766926500}, {'type': 'open_short', 'trigger_price': 2940.23, 'position_size': 0.08, 'timestamp': 1766926500}] +2025-12-28 20:56:46,771 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2938.87, pending_signals=2 +2025-12-28 20:56:46,774 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2940.23, 'position_size': 0, 'timestamp': 1766926500}, {'type': 'open_short', 'trigger_price': 2940.23, 'position_size': 0.08, 'timestamp': 1766926500}] +2025-12-28 20:56:52,640 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:56:52] "POST /api/indicator/backtest/history HTTP/1.1" 200 - +2025-12-28 20:56:54,049 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:56:54] "POST /api/indicator/backtest/get HTTP/1.1" 200 - +2025-12-28 20:56:56,571 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2938.87, pending_signals=2 +2025-12-28 20:56:56,574 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2940.23, 'position_size': 0, 'timestamp': 1766926500}, {'type': 'open_short', 'trigger_price': 2940.23, 'position_size': 0.08, 'timestamp': 1766926500}] +2025-12-28 20:57:21,681 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:57:21] "POST /api/indicator/backtest/history HTTP/1.1" 200 - +2025-12-28 20:57:23,434 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:57:23] "POST /api/indicator/backtest/get HTTP/1.1" 200 - +2025-12-28 20:58:07,241 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1H, limit=500 +2025-12-28 20:58:07,526 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:58:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 20:58:09,208 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:58:09] "POST /api/indicator/backtest/history HTTP/1.1" 200 - +2025-12-28 20:58:29,697 - app.utils.safe_exec - WARNING - Windows does not support signal-based timeouts; execution time limits may not work +2025-12-28 20:58:30,140 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:58:30] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-28 20:59:02,675 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:59:02] "POST /api/indicator/backtest/history HTTP/1.1" 200 - +2025-12-28 20:59:08,345 - app.routes.backtest - ERROR - ai_analyze_backtest_runs failed: 403 Client Error: Forbidden for url: https://openrouter.ai/api/v1/chat/completions +2025-12-28 20:59:08,347 - app.routes.backtest - ERROR - Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\quantdinger\backend_api_python\app\routes\backtest.py", line 771, in ai_analyze_backtest_runs + resp.raise_for_status() + ~~~~~~~~~~~~~~~~~~~~~^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\site-packages\requests\models.py", line 1026, in raise_for_status + raise HTTPError(http_error_msg, response=self) +requests.exceptions.HTTPError: 403 Client Error: Forbidden for url: https://openrouter.ai/api/v1/chat/completions + +2025-12-28 20:59:08,348 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:59:08] "POST /api/indicator/backtest/aiAnalyze HTTP/1.1" 500 - +2025-12-28 20:59:08,350 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1H, limit=5 +2025-12-28 20:59:08,538 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:59:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 20:59:12,447 - app.routes.backtest - ERROR - ai_analyze_backtest_runs failed: 403 Client Error: Forbidden for url: https://openrouter.ai/api/v1/chat/completions +2025-12-28 20:59:12,448 - app.routes.backtest - ERROR - Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\quantdinger\backend_api_python\app\routes\backtest.py", line 771, in ai_analyze_backtest_runs + resp.raise_for_status() + ~~~~~~~~~~~~~~~~~~~~~^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\site-packages\requests\models.py", line 1026, in raise_for_status + raise HTTPError(http_error_msg, response=self) +requests.exceptions.HTTPError: 403 Client Error: Forbidden for url: https://openrouter.ai/api/v1/chat/completions + +2025-12-28 20:59:12,450 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 20:59:12] "POST /api/indicator/backtest/aiAnalyze HTTP/1.1" 500 - +2025-12-28 21:00:07,567 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1H, limit=5 +2025-12-28 21:00:07,568 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:00:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 21:01:07,883 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1H, limit=5 +2025-12-28 21:01:07,884 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:01:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 21:02:07,567 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1H, limit=5 +2025-12-28 21:02:07,568 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:02:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 21:03:07,878 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1H, limit=5 +2025-12-28 21:03:07,879 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:03:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 21:04:07,561 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1H, limit=5 +2025-12-28 21:04:07,562 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:04:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 21:05:07,876 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1H, limit=5 +2025-12-28 21:05:07,990 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:05:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 21:06:06,775 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2941.4, pending_signals=1 +2025-12-28 21:06:06,778 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2941.4, 'position_size': 0, 'timestamp': 1766927160}] +2025-12-28 21:06:07,565 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1H, limit=5 +2025-12-28 21:06:07,565 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:06:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 21:06:16,667 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2941.4, pending_signals=1 +2025-12-28 21:06:16,669 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2941.4, 'position_size': 0, 'timestamp': 1766927160}] +2025-12-28 21:06:28,585 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2941.72, pending_signals=2 +2025-12-28 21:06:28,587 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 2941.0, 'position_size': 0.08, 'timestamp': 1766927100}, {'type': 'close_short', 'trigger_price': 2941.0, 'position_size': 0, 'timestamp': 1766927100}] +2025-12-28 21:06:28,597 - app.services.trading_executor - INFO - Strategy 1 signal executed: open_long @ 2941.0 +2025-12-28 21:06:31,874 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=21, strategy_id=1, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd121lmt', 'ordId': '', 'sCode': '51000', 'sMsg': 'Parameter posSide error ', 'tag': '', 'ts': '1766927191449'}], 'inTime': '1766927191448572', 'msg': 'All operations failed', 'outTime': '1766927191449443'} +2025-12-28 21:06:34,491 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=21, strategy_id=1, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd121mkt', 'ordId': '', 'sCode': '51000', 'sMsg': 'Parameter posSide error ', 'tag': '', 'ts': '1766927194140'}], 'inTime': '1766927194140081', 'msg': 'All operations failed', 'outTime': '1766927194141402'} +2025-12-28 21:06:36,670 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2941.72, pending_signals=2 +2025-12-28 21:06:36,671 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 2941.0, 'position_size': 0.08, 'timestamp': 1766927100}, {'type': 'close_short', 'trigger_price': 2941.0, 'position_size': 0, 'timestamp': 1766927100}] +2025-12-28 21:06:47,732 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2942.86, pending_signals=2 +2025-12-28 21:06:47,734 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 2941.0, 'position_size': 0.08, 'timestamp': 1766927100}, {'type': 'close_short', 'trigger_price': 2941.0, 'position_size': 0, 'timestamp': 1766927100}] +2025-12-28 21:06:56,672 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2942.86, pending_signals=2 +2025-12-28 21:06:56,674 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 2941.0, 'position_size': 0.08, 'timestamp': 1766927100}, {'type': 'close_short', 'trigger_price': 2941.0, 'position_size': 0, 'timestamp': 1766927100}] +2025-12-28 21:07:07,871 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1H, limit=5 +2025-12-28 21:07:07,872 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:07:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 21:08:07,562 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1H, limit=5 +2025-12-28 21:08:07,562 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:08:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 21:09:07,454 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2940.35, pending_signals=1 +2025-12-28 21:09:07,456 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2940.35, 'position_size': 0, 'timestamp': 1766927340}] +2025-12-28 21:09:07,879 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1H, limit=5 +2025-12-28 21:09:07,880 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:09:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 21:09:16,691 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2940.35, pending_signals=1 +2025-12-28 21:09:16,693 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2940.35, 'position_size': 0, 'timestamp': 1766927340}] +2025-12-28 21:09:29,626 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2939.77, pending_signals=1 +2025-12-28 21:09:29,628 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2939.77, 'position_size': 0, 'timestamp': 1766927340}] +2025-12-28 21:09:36,694 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2939.77, pending_signals=1 +2025-12-28 21:09:36,696 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2939.77, 'position_size': 0, 'timestamp': 1766927340}] +2025-12-28 21:09:46,570 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87872.68, pending_signals=1 +2025-12-28 21:09:46,572 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87872.68, 'position_size': 0, 'timestamp': 1766927340}] +2025-12-28 21:09:46,806 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2938.99, pending_signals=1 +2025-12-28 21:09:46,809 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2938.99, 'position_size': 0, 'timestamp': 1766927340}] +2025-12-28 21:09:56,059 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87872.68, pending_signals=1 +2025-12-28 21:09:56,061 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87872.68, 'position_size': 0, 'timestamp': 1766927340}] +2025-12-28 21:09:56,698 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2938.99, pending_signals=1 +2025-12-28 21:09:56,700 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2938.99, 'position_size': 0, 'timestamp': 1766927340}] +2025-12-28 21:10:06,171 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87872.68, pending_signals=1 +2025-12-28 21:10:06,172 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87872.68, 'position_size': 0, 'timestamp': 1766927400}] +2025-12-28 21:10:06,895 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2939.33, pending_signals=2 +2025-12-28 21:10:06,897 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2939.77, 'position_size': 0, 'timestamp': 1766927340}, {'type': 'open_short', 'trigger_price': 2939.77, 'position_size': 0.08, 'timestamp': 1766927340}] +2025-12-28 21:10:06,904 - app.services.trading_executor - INFO - Strategy 1 signal executed: open_short @ 2939.77 +2025-12-28 21:10:07,564 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1H, limit=5 +2025-12-28 21:10:07,564 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:10:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 21:10:09,770 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=22, strategy_id=1, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd122lmt', 'ordId': '', 'sCode': '51000', 'sMsg': 'Parameter posSide error ', 'tag': '', 'ts': '1766927409326'}], 'inTime': '1766927409325977', 'msg': 'All operations failed', 'outTime': '1766927409326400'} +2025-12-28 21:10:12,370 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=22, strategy_id=1, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd122mkt', 'ordId': '', 'sCode': '51000', 'sMsg': 'Parameter posSide error ', 'tag': '', 'ts': '1766927411043'}], 'inTime': '1766927411042528', 'msg': 'All operations failed', 'outTime': '1766927411043422'} +2025-12-28 21:10:16,061 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87872.68, pending_signals=1 +2025-12-28 21:10:16,064 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87872.68, 'position_size': 0, 'timestamp': 1766927400}] +2025-12-28 21:10:16,700 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2939.33, pending_signals=2 +2025-12-28 21:10:16,703 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2939.77, 'position_size': 0, 'timestamp': 1766927340}, {'type': 'open_short', 'trigger_price': 2939.77, 'position_size': 0.08, 'timestamp': 1766927340}] +2025-12-28 21:10:27,577 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87859.51, pending_signals=2 +2025-12-28 21:10:27,579 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87872.69, 'position_size': 0, 'timestamp': 1766927340}, {'type': 'open_short', 'trigger_price': 87872.69, 'position_size': 0.08, 'timestamp': 1766927340}] +2025-12-28 21:10:27,589 - app.services.trading_executor - INFO - Strategy 2 signal executed: open_short @ 87872.69 +2025-12-28 21:10:28,177 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2939.25, pending_signals=2 +2025-12-28 21:10:28,179 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2939.21, 'position_size': 0, 'timestamp': 1766927340}] +2025-12-28 21:10:30,675 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=23, strategy_id=2, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd223lmt', 'ordId': '', 'sCode': '51000', 'sMsg': 'Parameter posSide error ', 'tag': '', 'ts': '1766927429801'}], 'inTime': '1766927429801404', 'msg': 'All operations failed', 'outTime': '1766927429801812'} +2025-12-28 21:10:31,482 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=23, strategy_id=2, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd223mkt', 'ordId': '', 'sCode': '51000', 'sMsg': 'Parameter posSide error ', 'tag': '', 'ts': '1766927431118'}], 'inTime': '1766927431117928', 'msg': 'All operations failed', 'outTime': '1766927431118746'} +2025-12-28 21:10:36,066 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87859.51, pending_signals=2 +2025-12-28 21:10:36,067 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87872.69, 'position_size': 0, 'timestamp': 1766927340}, {'type': 'open_short', 'trigger_price': 87872.69, 'position_size': 0.08, 'timestamp': 1766927340}] +2025-12-28 21:10:36,702 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2939.25, pending_signals=2 +2025-12-28 21:10:36,705 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2939.21, 'position_size': 0, 'timestamp': 1766927340}] +2025-12-28 21:10:46,173 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87879.23, pending_signals=2 +2025-12-28 21:10:46,175 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87872.69, 'position_size': 0, 'timestamp': 1766927340}] +2025-12-28 21:10:48,133 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2939.65, pending_signals=2 +2025-12-28 21:10:48,135 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2939.21, 'position_size': 0, 'timestamp': 1766927340}] +2025-12-28 21:10:56,067 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87879.23, pending_signals=2 +2025-12-28 21:10:56,069 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87872.69, 'position_size': 0, 'timestamp': 1766927340}] +2025-12-28 21:10:56,705 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2939.65, pending_signals=2 +2025-12-28 21:10:56,707 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2939.21, 'position_size': 0, 'timestamp': 1766927340}] +2025-12-28 21:11:07,864 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1H, limit=5 +2025-12-28 21:11:07,976 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:11:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 21:12:07,561 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1H, limit=5 +2025-12-28 21:12:07,561 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:12:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 21:13:07,876 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1H, limit=5 +2025-12-28 21:13:07,876 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:13:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 21:14:07,566 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1H, limit=5 +2025-12-28 21:14:07,567 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:14:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 21:15:07,878 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1H, limit=5 +2025-12-28 21:15:07,879 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:15:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 21:16:07,564 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1H, limit=5 +2025-12-28 21:16:07,565 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:16:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 21:17:07,872 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1H, limit=5 +2025-12-28 21:17:07,983 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:17:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 21:17:42,578 - app.routes.backtest - ERROR - ai_analyze_backtest_runs failed: 403 Client Error: Forbidden for url: https://openrouter.ai/api/v1/chat/completions +2025-12-28 21:17:42,580 - app.routes.backtest - ERROR - Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\quantdinger\backend_api_python\app\routes\backtest.py", line 771, in ai_analyze_backtest_runs + try: + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\site-packages\requests\models.py", line 1026, in raise_for_status + raise HTTPError(http_error_msg, response=self) +requests.exceptions.HTTPError: 403 Client Error: Forbidden for url: https://openrouter.ai/api/v1/chat/completions + +2025-12-28 21:17:42,581 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:17:42] "POST /api/indicator/backtest/aiAnalyze HTTP/1.1" 500 - +2025-12-28 21:17:51,043 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-28 21:17:51,051 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-28 21:17:51,512 - app.services.strategy - INFO - Found 2 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}] +2025-12-28 21:17:51,512 - app - INFO - Restoring 2 running strategies... +2025-12-28 21:17:51,512 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-28 21:17:51,512 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-28 21:17:51,513 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-28 21:17:51,513 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-28 21:17:51,513 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-28 21:17:51,513 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-28 21:17:51,513 - app - INFO - Strategy restore completed: 2/2 restored +2025-12-28 21:17:51,514 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-28 21:17:51,516 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-28 21:17:51,545 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-28 21:17:51,546 - werkzeug - INFO - Press CTRL+C to quit +2025-12-28 21:17:56,067 - app.routes.backtest - ERROR - OpenRouter request failed, falling back to heuristic: 403 Client Error: Forbidden for url: https://openrouter.ai/api/v1/chat/completions +2025-12-28 21:17:56,069 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:17:56] "POST /api/indicator/backtest/aiAnalyze HTTP/1.1" 200 - +2025-12-28 21:17:59,367 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 21:17:59,387 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2025-12-28 21:17:59,742 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 21:17:59,759 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2025-12-28 21:18:07,572 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1H, limit=5 +2025-12-28 21:18:07,770 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:18:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 21:19:06,947 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:19:06] "GET /api/dashboard/summary?_t=1766927946635 HTTP/1.1" 200 - +2025-12-28 21:19:06,951 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:19:06] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766927946636 HTTP/1.1" 200 - +2025-12-28 21:19:13,619 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:19:13] "GET /api/dashboard/summary?_t=1766927953609 HTTP/1.1" 200 - +2025-12-28 21:19:13,931 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:19:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766927953609 HTTP/1.1" 200 - +2025-12-28 21:22:21,131 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87887.91, pending_signals=1 +2025-12-28 21:22:21,133 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87887.91, 'position_size': 0, 'timestamp': 1766928120}] +2025-12-28 21:22:29,823 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87887.91, pending_signals=1 +2025-12-28 21:22:29,825 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87887.91, 'position_size': 0, 'timestamp': 1766928120}] +2025-12-28 21:22:39,653 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2942.25, pending_signals=1 +2025-12-28 21:22:39,655 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2942.25, 'position_size': 0, 'timestamp': 1766928120}] +2025-12-28 21:22:40,021 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87887.91, pending_signals=1 +2025-12-28 21:22:40,023 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87887.91, 'position_size': 0, 'timestamp': 1766928120}] +2025-12-28 21:22:49,448 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2942.25, pending_signals=1 +2025-12-28 21:22:49,450 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2942.25, 'position_size': 0, 'timestamp': 1766928120}] +2025-12-28 21:22:49,820 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87887.91, pending_signals=1 +2025-12-28 21:22:49,823 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87887.91, 'position_size': 0, 'timestamp': 1766928120}] +2025-12-28 21:23:00,204 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2942.36, pending_signals=1 +2025-12-28 21:23:00,207 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2942.36, 'position_size': 0, 'timestamp': 1766928120}] +2025-12-28 21:23:00,475 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87887.91, pending_signals=1 +2025-12-28 21:23:00,477 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87887.92, 'position_size': 0, 'timestamp': 1766928120}] +2025-12-28 21:23:09,451 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2942.36, pending_signals=2 +2025-12-28 21:23:09,453 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 2942.36, 'position_size': 0.08, 'timestamp': 1766928120}, {'type': 'close_short', 'trigger_price': 2942.36, 'position_size': 0, 'timestamp': 1766928120}] +2025-12-28 21:23:09,460 - app.services.trading_executor - INFO - Strategy 1 signal executed: open_long @ 2942.36 +2025-12-28 21:23:09,823 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87887.91, pending_signals=2 +2025-12-28 21:23:09,825 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87887.92, 'position_size': 0, 'timestamp': 1766928120}] +2025-12-28 21:23:11,996 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=24, strategy_id=1, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd124lmt', 'ordId': '', 'sCode': '51000', 'sMsg': 'Parameter posSide error ', 'tag': '', 'ts': '1766928191474'}], 'inTime': '1766928191473693', 'msg': 'All operations failed', 'outTime': '1766928191474506'} +2025-12-28 21:23:12,562 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=24, strategy_id=1, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd124mkt', 'ordId': '', 'sCode': '51000', 'sMsg': 'Parameter posSide error ', 'tag': '', 'ts': '1766928192399'}], 'inTime': '1766928192399436', 'msg': 'All operations failed', 'outTime': '1766928192399760'} +2025-12-28 21:23:19,654 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2942.36, pending_signals=2 +2025-12-28 21:23:19,656 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 2942.36, 'position_size': 0.08, 'timestamp': 1766928120}, {'type': 'close_short', 'trigger_price': 2942.36, 'position_size': 0, 'timestamp': 1766928120}] +2025-12-28 21:23:20,124 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87887.91, pending_signals=2 +2025-12-28 21:23:20,126 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87887.92, 'position_size': 0, 'timestamp': 1766928120}] +2025-12-28 21:23:29,454 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2942.36, pending_signals=2 +2025-12-28 21:23:29,456 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 2942.36, 'position_size': 0.08, 'timestamp': 1766928120}, {'type': 'close_short', 'trigger_price': 2942.36, 'position_size': 0, 'timestamp': 1766928120}] +2025-12-28 21:23:29,827 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87887.91, pending_signals=2 +2025-12-28 21:23:29,829 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87887.92, 'position_size': 0, 'timestamp': 1766928120}] +2025-12-28 21:23:31,892 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:23:31] "GET /api/market/types?_t=1766928211568 HTTP/1.1" 200 - +2025-12-28 21:23:31,897 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:23:31] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 21:23:31,910 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:23:31] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 21:23:32,132 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-28 21:23:32,696 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:23:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 21:23:35,871 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:23:35] "POST /api/indicator/backtest/history HTTP/1.1" 200 - +2025-12-28 21:23:39,661 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2943.07, pending_signals=2 +2025-12-28 21:23:39,663 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 2942.36, 'position_size': 0.08, 'timestamp': 1766928120}, {'type': 'close_short', 'trigger_price': 2942.36, 'position_size': 0, 'timestamp': 1766928120}] +2025-12-28 21:23:40,030 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87893.34, pending_signals=2 +2025-12-28 21:23:40,034 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 87887.92, 'position_size': 0.08, 'timestamp': 1766928120}, {'type': 'close_short', 'trigger_price': 87887.92, 'position_size': 0, 'timestamp': 1766928120}] +2025-12-28 21:23:40,043 - app.services.trading_executor - INFO - Strategy 2 signal executed: open_long @ 87887.92 +2025-12-28 21:23:40,145 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:23:40] "POST /api/indicator/backtest/get HTTP/1.1" 200 - +2025-12-28 21:23:42,354 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=25, strategy_id=2, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd225lmt', 'ordId': '', 'sCode': '51000', 'sMsg': 'Parameter posSide error ', 'tag': '', 'ts': '1766928222043'}], 'inTime': '1766928222043060', 'msg': 'All operations failed', 'outTime': '1766928222043448'} +2025-12-28 21:23:43,044 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=25, strategy_id=2, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd225mkt', 'ordId': '', 'sCode': '51000', 'sMsg': 'Parameter posSide error ', 'tag': '', 'ts': '1766928222791'}], 'inTime': '1766928222791190', 'msg': 'All operations failed', 'outTime': '1766928222791987'} +2025-12-28 21:23:49,457 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2943.07, pending_signals=2 +2025-12-28 21:23:49,459 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 2942.36, 'position_size': 0.08, 'timestamp': 1766928120}, {'type': 'close_short', 'trigger_price': 2942.36, 'position_size': 0, 'timestamp': 1766928120}] +2025-12-28 21:23:49,831 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87893.34, pending_signals=2 +2025-12-28 21:23:49,834 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 87887.92, 'position_size': 0.08, 'timestamp': 1766928120}, {'type': 'close_short', 'trigger_price': 87887.92, 'position_size': 0, 'timestamp': 1766928120}] +2025-12-28 21:23:59,907 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2943.67, pending_signals=2 +2025-12-28 21:23:59,909 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 2942.36, 'position_size': 0.08, 'timestamp': 1766928120}, {'type': 'close_short', 'trigger_price': 2942.36, 'position_size': 0, 'timestamp': 1766928120}] +2025-12-28 21:24:01,062 - app.services.trading_executor - WARNING - Signal expired and removed: {'type': 'open_long', 'trigger_price': 87887.91, 'position_size': 0.08, 'timestamp': 1766928120} +2025-12-28 21:24:01,063 - app.services.trading_executor - WARNING - Signal expired and removed: {'type': 'close_short', 'trigger_price': 87887.91, 'position_size': 0, 'timestamp': 1766928120} +2025-12-28 21:24:10,649 - app.utils.safe_exec - WARNING - Windows does not support signal-based timeouts; execution time limits may not work +2025-12-28 21:24:10,669 - app.services.backtest - WARNING - [K็บฟ193] ๅš็ฉบ่งฆๅŠ็ˆ†ไป“็บฟ๏ผๅผ€ไป“=2295.72, ๆœ€้ซ˜=2795.74, ็ˆ†ไป“็บฟ=2754.86, ๆญขๆŸไฟกๅท=False, ๆญขๆŸไปท=0.0000, ๆ—ถ้—ด=2025-07-09 00:00:00 +2025-12-28 21:24:10,669 - app.services.backtest - WARNING - ๅš็ฉบ็ˆ†ไป“๏ผๅผ€ไป“ไปท=2295.72, ๆœ€้ซ˜ไปท=2795.74, ็ˆ†ไป“็บฟ=2754.86, ๆญขๆŸไปท=0.00 +2025-12-28 21:24:10,681 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:24:10] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-28 21:24:41,716 - app.utils.safe_exec - WARNING - Windows does not support signal-based timeouts; execution time limits may not work +2025-12-28 21:24:41,753 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:24:41] "POST /api/indicator/backtest HTTP/1.1" 200 - +2025-12-28 21:25:03,682 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:25:03] "POST /api/indicator/backtest/history HTTP/1.1" 200 - +2025-12-28 21:25:05,983 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:25:05] "POST /api/indicator/backtest/get HTTP/1.1" 200 - +2025-12-28 21:26:01,524 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:26:01] "POST /api/indicator/backtest/get HTTP/1.1" 200 - +2025-12-28 21:29:40,082 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87862.8, pending_signals=1 +2025-12-28 21:29:40,084 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87862.8, 'position_size': 0, 'timestamp': 1766928540}] +2025-12-28 21:29:49,888 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87862.8, pending_signals=1 +2025-12-28 21:29:49,891 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87862.8, 'position_size': 0, 'timestamp': 1766928540}] +2025-12-28 21:30:00,386 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87851.57, pending_signals=1 +2025-12-28 21:30:00,388 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87851.57, 'position_size': 0, 'timestamp': 1766928540}] +2025-12-28 21:30:09,890 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87851.57, pending_signals=2 +2025-12-28 21:30:09,892 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87851.57, 'position_size': 0, 'timestamp': 1766928540}, {'type': 'open_short', 'trigger_price': 87851.57, 'position_size': 0.08, 'timestamp': 1766928540}] +2025-12-28 21:30:09,901 - app.services.trading_executor - INFO - Strategy 2 signal executed: open_short @ 87851.57 +2025-12-28 21:30:13,130 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=26, strategy_id=2, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd226lmt', 'ordId': '', 'sCode': '51000', 'sMsg': 'Parameter posSide error ', 'tag': '', 'ts': '1766928612304'}], 'inTime': '1766928612303269', 'msg': 'All operations failed', 'outTime': '1766928612304567'} +2025-12-28 21:30:16,018 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=26, strategy_id=2, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd226mkt', 'ordId': '', 'sCode': '51000', 'sMsg': 'Parameter posSide error ', 'tag': '', 'ts': '1766928615700'}], 'inTime': '1766928615700545', 'msg': 'All operations failed', 'outTime': '1766928615700921'} +2025-12-28 21:30:20,166 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87862.72, pending_signals=2 +2025-12-28 21:30:20,169 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87851.57, 'position_size': 0, 'timestamp': 1766928540}] +2025-12-28 21:30:29,895 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87862.72, pending_signals=2 +2025-12-28 21:30:29,898 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87851.57, 'position_size': 0, 'timestamp': 1766928540}] +2025-12-28 21:30:40,529 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87881.52, pending_signals=2 +2025-12-28 21:30:40,532 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87851.57, 'position_size': 0, 'timestamp': 1766928540}] +2025-12-28 21:30:49,900 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87881.52, pending_signals=2 +2025-12-28 21:30:49,902 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87851.57, 'position_size': 0, 'timestamp': 1766928540}] +2025-12-28 21:31:01,853 - app.services.trading_executor - WARNING - Signal expired and removed: {'type': 'close_long', 'trigger_price': 87851.58, 'position_size': 0, 'timestamp': 1766928540} +2025-12-28 21:31:01,854 - app.services.trading_executor - WARNING - Signal expired and removed: {'type': 'open_short', 'trigger_price': 87851.58, 'position_size': 0.08, 'timestamp': 1766928540} +2025-12-28 21:33:33,048 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-28 21:33:33,158 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:33:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 21:35:00,281 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2942.1, pending_signals=1 +2025-12-28 21:35:00,283 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2942.11, 'position_size': 0, 'timestamp': 1766928840}] +2025-12-28 21:35:09,568 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2942.1, pending_signals=2 +2025-12-28 21:35:09,570 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2942.11, 'position_size': 0, 'timestamp': 1766928840}, {'type': 'open_short', 'trigger_price': 2942.11, 'position_size': 0.08, 'timestamp': 1766928840}] +2025-12-28 21:35:09,580 - app.services.trading_executor - INFO - Strategy 1 signal executed: open_short @ 2942.11 +2025-12-28 21:35:12,736 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=27, strategy_id=1, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd127lmt', 'ordId': '', 'sCode': '51000', 'sMsg': 'Parameter posSide error ', 'tag': '', 'ts': '1766928912415'}], 'inTime': '1766928912414495', 'msg': 'All operations failed', 'outTime': '1766928912415637'} +2025-12-28 21:35:13,483 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=27, strategy_id=1, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd127mkt', 'ordId': '', 'sCode': '51000', 'sMsg': 'Parameter posSide error ', 'tag': '', 'ts': '1766928913254'}], 'inTime': '1766928913254483', 'msg': 'All operations failed', 'outTime': '1766928913255316'} +2025-12-28 21:35:19,769 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2942.1, pending_signals=2 +2025-12-28 21:35:19,770 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2942.11, 'position_size': 0, 'timestamp': 1766928840}, {'type': 'open_short', 'trigger_price': 2942.11, 'position_size': 0.08, 'timestamp': 1766928840}] +2025-12-28 21:35:29,571 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2942.1, pending_signals=2 +2025-12-28 21:35:29,575 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2942.11, 'position_size': 0, 'timestamp': 1766928840}, {'type': 'open_short', 'trigger_price': 2942.11, 'position_size': 0.08, 'timestamp': 1766928840}] +2025-12-28 21:35:39,776 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2942.98, pending_signals=2 +2025-12-28 21:35:39,779 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2942.11, 'position_size': 0, 'timestamp': 1766928840}] +2025-12-28 21:35:49,573 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2942.98, pending_signals=2 +2025-12-28 21:35:49,576 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2942.11, 'position_size': 0, 'timestamp': 1766928840}] +2025-12-28 21:36:00,145 - app.services.trading_executor - WARNING - Signal expired and removed: {'type': 'close_long', 'trigger_price': 2942.11, 'position_size': 0, 'timestamp': 1766928840} +2025-12-28 21:36:00,146 - app.services.trading_executor - WARNING - Signal expired and removed: {'type': 'open_short', 'trigger_price': 2942.11, 'position_size': 0.08, 'timestamp': 1766928840} +2025-12-28 21:36:20,150 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87935.82, pending_signals=1 +2025-12-28 21:36:20,152 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87935.82, 'position_size': 0, 'timestamp': 1766928960}] +2025-12-28 21:36:29,952 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87935.82, pending_signals=1 +2025-12-28 21:36:29,953 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87935.82, 'position_size': 0, 'timestamp': 1766928960}] +2025-12-28 21:36:39,785 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2944.89, pending_signals=1 +2025-12-28 21:36:39,787 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2944.89, 'position_size': 0, 'timestamp': 1766928960}] +2025-12-28 21:36:40,061 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87950.0, pending_signals=1 +2025-12-28 21:36:40,063 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87950.0, 'position_size': 0, 'timestamp': 1766928960}] +2025-12-28 21:36:49,584 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2944.89, pending_signals=1 +2025-12-28 21:36:49,586 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2944.89, 'position_size': 0, 'timestamp': 1766928960}] +2025-12-28 21:36:49,955 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87950.0, pending_signals=1 +2025-12-28 21:36:49,957 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87950.0, 'position_size': 0, 'timestamp': 1766928960}] +2025-12-28 21:37:00,286 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2944.74, pending_signals=1 +2025-12-28 21:37:00,288 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2944.75, 'position_size': 0, 'timestamp': 1766928960}] +2025-12-28 21:37:00,610 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87952.4, pending_signals=1 +2025-12-28 21:37:00,612 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87952.4, 'position_size': 0, 'timestamp': 1766928960}] +2025-12-28 21:37:09,588 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2944.74, pending_signals=2 +2025-12-28 21:37:09,590 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2944.75, 'position_size': 0, 'timestamp': 1766928960}] +2025-12-28 21:37:09,958 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87952.4, pending_signals=2 +2025-12-28 21:37:09,961 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 87952.4, 'position_size': 0.08, 'timestamp': 1766928960}, {'type': 'close_short', 'trigger_price': 87952.4, 'position_size': 0, 'timestamp': 1766928960}] +2025-12-28 21:37:09,969 - app.services.trading_executor - INFO - Strategy 2 signal executed: open_long @ 87952.4 +2025-12-28 21:37:12,367 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=28, strategy_id=2, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd228lmt', 'ordId': '', 'sCode': '51000', 'sMsg': 'Parameter posSide error ', 'tag': '', 'ts': '1766929031954'}], 'inTime': '1766929031954239', 'msg': 'All operations failed', 'outTime': '1766929031955064'} +2025-12-28 21:37:13,237 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=28, strategy_id=2, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd228mkt', 'ordId': '', 'sCode': '51000', 'sMsg': 'Parameter posSide error ', 'tag': '', 'ts': '1766929032935'}], 'inTime': '1766929032935389', 'msg': 'All operations failed', 'outTime': '1766929032936236'} +2025-12-28 21:37:19,693 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2943.18, pending_signals=2 +2025-12-28 21:37:19,696 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2944.75, 'position_size': 0, 'timestamp': 1766928960}] +2025-12-28 21:37:20,072 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87932.92, pending_signals=2 +2025-12-28 21:37:20,074 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87952.4, 'position_size': 0, 'timestamp': 1766928960}] +2025-12-28 21:37:29,589 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2943.18, pending_signals=2 +2025-12-28 21:37:29,591 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2944.75, 'position_size': 0, 'timestamp': 1766928960}] +2025-12-28 21:37:29,961 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87932.92, pending_signals=2 +2025-12-28 21:37:29,964 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87952.4, 'position_size': 0, 'timestamp': 1766928960}] +2025-12-28 21:37:39,698 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2943.29, pending_signals=2 +2025-12-28 21:37:39,701 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2944.75, 'position_size': 0, 'timestamp': 1766928960}] +2025-12-28 21:37:40,066 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87928.54, pending_signals=2 +2025-12-28 21:37:40,068 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87952.4, 'position_size': 0, 'timestamp': 1766928960}] +2025-12-28 21:37:49,594 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2943.29, pending_signals=2 +2025-12-28 21:37:49,597 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2944.75, 'position_size': 0, 'timestamp': 1766928960}] +2025-12-28 21:37:49,966 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87928.54, pending_signals=2 +2025-12-28 21:37:49,968 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87952.4, 'position_size': 0, 'timestamp': 1766928960}] +2025-12-28 21:37:59,738 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:37:59] "POST /api/indicator/backtest/get HTTP/1.1" 200 - +2025-12-28 21:38:00,133 - app.services.trading_executor - WARNING - Signal expired and removed: {'type': 'open_long', 'trigger_price': 2944.63, 'position_size': 0.08, 'timestamp': 1766928960} +2025-12-28 21:38:00,135 - app.services.trading_executor - WARNING - Signal expired and removed: {'type': 'close_short', 'trigger_price': 2944.63, 'position_size': 0, 'timestamp': 1766928960} +2025-12-28 21:38:00,517 - app.services.trading_executor - WARNING - Signal expired and removed: {'type': 'open_long', 'trigger_price': 87952.4, 'position_size': 0.08, 'timestamp': 1766928960} +2025-12-28 21:38:00,517 - app.services.trading_executor - WARNING - Signal expired and removed: {'type': 'close_short', 'trigger_price': 87952.4, 'position_size': 0, 'timestamp': 1766928960} +2025-12-28 21:38:19,183 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:38:19] "GET /api/dashboard/summary?_t=1766929099168 HTTP/1.1" 200 - +2025-12-28 21:38:19,486 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:38:19] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766929099168 HTTP/1.1" 200 - +2025-12-28 21:43:19,845 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2941.9, pending_signals=1 +2025-12-28 21:43:19,847 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2941.9, 'position_size': 0, 'timestamp': 1766929380}] +2025-12-28 21:43:29,643 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2941.9, pending_signals=1 +2025-12-28 21:43:29,645 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2941.9, 'position_size': 0, 'timestamp': 1766929380}] +2025-12-28 21:43:40,058 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2941.77, pending_signals=1 +2025-12-28 21:43:40,060 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2941.77, 'position_size': 0, 'timestamp': 1766929380}] +2025-12-28 21:43:49,646 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2941.77, pending_signals=1 +2025-12-28 21:43:49,648 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2941.77, 'position_size': 0, 'timestamp': 1766929380}] +2025-12-28 21:45:17,834 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-28 21:45:17,839 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-28 21:45:18,233 - app.services.strategy - INFO - Found 2 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}] +2025-12-28 21:45:18,233 - app - INFO - Restoring 2 running strategies... +2025-12-28 21:45:18,234 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-28 21:45:18,234 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-28 21:45:18,234 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-28 21:45:18,234 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-28 21:45:18,234 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-28 21:45:18,234 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-28 21:45:18,234 - app - INFO - Strategy restore completed: 2/2 restored +2025-12-28 21:45:18,235 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-28 21:45:18,237 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-28 21:45:18,262 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-28 21:45:18,262 - werkzeug - INFO - Press CTRL+C to quit +2025-12-28 21:45:22,802 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 21:45:22,822 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2025-12-28 21:45:22,887 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 21:45:22,907 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2025-12-28 21:45:25,751 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:25] "GET /api/dashboard/summary?_t=1766929525434 HTTP/1.1" 200 - +2025-12-28 21:45:25,755 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:25] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766929525434 HTTP/1.1" 200 - +2025-12-28 21:45:28,335 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:28] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 21:45:28,643 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:28] "GET /api/market/config?_t=1766929528318 HTTP/1.1" 200 - +2025-12-28 21:45:28,980 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 21:45:28,980 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 21:45:28,980 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 21:45:28,980 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 21:45:28,980 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 21:45:30,248 - app.data_sources.base - WARNING - Warning: 00700 data is delayed (423930s) +2025-12-28 21:45:30,407 - app.data_sources.base - WARNING - Warning: 000858 data is delayed (251130s) +2025-12-28 21:45:30,408 - app.data_sources.base - WARNING - Warning: 600519 data is delayed (251130s) +2025-12-28 21:45:30,556 - app.data_sources.base - WARNING - Warning: 300475 data is delayed (251131s) +2025-12-28 21:45:31,048 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (204331s) +2025-12-28 21:45:31,808 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:31] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-28 21:45:31,812 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:31] "GET /api/market/types?_t=1766929528651 HTTP/1.1" 200 - +2025-12-28 21:45:31,815 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:31] "GET /api/market/types?_t=1766929529380 HTTP/1.1" 200 - +2025-12-28 21:45:31,821 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:31] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 21:45:31,831 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:31] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 21:45:31,837 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:31] "GET /api/strategies?_t=1766929530596 HTTP/1.1" 200 - +2025-12-28 21:45:34,880 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:34] "GET /api/strategies/equityCurve?id=1&_t=1766929534545 HTTP/1.1" 200 - +2025-12-28 21:45:34,884 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:34] "GET /api/strategies/equityCurve?id=1&_t=1766929534545 HTTP/1.1" 200 - +2025-12-28 21:45:34,888 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:34] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766929534545 HTTP/1.1" 200 - +2025-12-28 21:45:34,893 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:34] "GET /api/strategies/positions?id=1&_t=1766929534550 HTTP/1.1" 200 - +2025-12-28 21:45:35,404 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:35] "GET /api/strategies/equityCurve?id=1&_t=1766929535386 HTTP/1.1" 200 - +2025-12-28 21:45:35,413 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:35] "GET /api/strategies/equityCurve?id=1&_t=1766929535386 HTTP/1.1" 200 - +2025-12-28 21:45:35,702 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:35] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766929535386 HTTP/1.1" 200 - +2025-12-28 21:45:38,702 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:38] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929538386 HTTP/1.1" 200 - +2025-12-28 21:45:39,554 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:39] "GET /api/strategies/positions?id=1&_t=1766929539543 HTTP/1.1" 200 - +2025-12-28 21:45:41,690 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:41] "GET /api/strategies/equityCurve?id=1&_t=1766929541367 HTTP/1.1" 200 - +2025-12-28 21:45:41,695 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:41] "GET /api/strategies/equityCurve?id=1&_t=1766929541367 HTTP/1.1" 200 - +2025-12-28 21:45:41,699 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:41] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766929541367 HTTP/1.1" 200 - +2025-12-28 21:45:43,365 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:43] "GET /api/strategies/equityCurve?id=1&_t=1766929543354 HTTP/1.1" 200 - +2025-12-28 21:45:43,671 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:43] "GET /api/strategies/equityCurve?id=1&_t=1766929543354 HTTP/1.1" 200 - +2025-12-28 21:45:43,674 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:43] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766929543354 HTTP/1.1" 200 - +2025-12-28 21:45:44,785 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:44] "GET /api/strategies/equityCurve?id=2&_t=1766929544460 HTTP/1.1" 200 - +2025-12-28 21:45:44,789 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:44] "GET /api/strategies/equityCurve?id=2&_t=1766929544460 HTTP/1.1" 200 - +2025-12-28 21:45:44,793 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:44] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766929544460 HTTP/1.1" 200 - +2025-12-28 21:45:44,801 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:44] "GET /api/strategies/positions?id=2&_t=1766929544464 HTTP/1.1" 200 - +2025-12-28 21:45:45,692 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:45] "GET /api/strategies/equityCurve?id=1&_t=1766929545679 HTTP/1.1" 200 - +2025-12-28 21:45:46,002 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:46] "GET /api/strategies/equityCurve?id=1&_t=1766929545679 HTTP/1.1" 200 - +2025-12-28 21:45:46,005 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:46] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766929545679 HTTP/1.1" 200 - +2025-12-28 21:45:46,008 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:46] "GET /api/strategies/positions?id=1&_t=1766929545683 HTTP/1.1" 200 - +2025-12-28 21:45:47,452 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:47] "GET /api/strategies/equityCurve?id=1&_t=1766929547129 HTTP/1.1" 200 - +2025-12-28 21:45:47,455 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:47] "GET /api/strategies/equityCurve?id=1&_t=1766929547129 HTTP/1.1" 200 - +2025-12-28 21:45:47,459 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:47] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766929547129 HTTP/1.1" 200 - +2025-12-28 21:45:50,142 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:50] "GET /api/strategies/equityCurve?id=1&_t=1766929550132 HTTP/1.1" 200 - +2025-12-28 21:45:50,448 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:50] "GET /api/strategies/equityCurve?id=1&_t=1766929550132 HTTP/1.1" 200 - +2025-12-28 21:45:50,451 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:50] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766929550132 HTTP/1.1" 200 - +2025-12-28 21:45:51,008 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:51] "GET /api/strategies/positions?id=1&_t=1766929550691 HTTP/1.1" 200 - +2025-12-28 21:45:52,677 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:52] "GET /api/dashboard/summary?_t=1766929552664 HTTP/1.1" 200 - +2025-12-28 21:45:52,982 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766929552664 HTTP/1.1" 200 - +2025-12-28 21:45:58,923 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:45:58] "GET /api/strategies?_t=1766929558613 HTTP/1.1" 200 - +2025-12-28 21:46:00,083 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:00] "GET /api/strategies/equityCurve?id=2&_t=1766929560066 HTTP/1.1" 200 - +2025-12-28 21:46:00,391 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:00] "GET /api/strategies/equityCurve?id=2&_t=1766929560066 HTTP/1.1" 200 - +2025-12-28 21:46:00,395 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:00] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766929560066 HTTP/1.1" 200 - +2025-12-28 21:46:00,400 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:00] "GET /api/strategies/positions?id=2&_t=1766929560068 HTTP/1.1" 200 - +2025-12-28 21:46:01,008 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:01] "GET /api/strategies/equityCurve?id=1&_t=1766929560683 HTTP/1.1" 200 - +2025-12-28 21:46:01,015 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:01] "GET /api/strategies/equityCurve?id=1&_t=1766929560683 HTTP/1.1" 200 - +2025-12-28 21:46:01,021 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:01] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766929560683 HTTP/1.1" 200 - +2025-12-28 21:46:01,026 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:01] "GET /api/strategies/positions?id=1&_t=1766929560684 HTTP/1.1" 200 - +2025-12-28 21:46:01,724 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:01] "GET /api/strategies/equityCurve?id=1&_t=1766929561711 HTTP/1.1" 200 - +2025-12-28 21:46:02,034 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:02] "GET /api/strategies/equityCurve?id=1&_t=1766929561711 HTTP/1.1" 200 - +2025-12-28 21:46:02,038 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:02] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766929561711 HTTP/1.1" 200 - +2025-12-28 21:46:02,926 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:02] "GET /api/strategies/equityCurve?id=1&_t=1766929562603 HTTP/1.1" 200 - +2025-12-28 21:46:02,932 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:02] "GET /api/strategies/equityCurve?id=1&_t=1766929562603 HTTP/1.1" 200 - +2025-12-28 21:46:02,937 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:02] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766929562603 HTTP/1.1" 200 - +2025-12-28 21:46:03,468 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:03] "GET /api/strategies/equityCurve?id=1&_t=1766929563457 HTTP/1.1" 200 - +2025-12-28 21:46:03,782 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:03] "GET /api/strategies/equityCurve?id=1&_t=1766929563457 HTTP/1.1" 200 - +2025-12-28 21:46:03,785 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:03] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766929563457 HTTP/1.1" 200 - +2025-12-28 21:46:04,907 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:04] "GET /api/strategies/equityCurve?id=1&_t=1766929564587 HTTP/1.1" 200 - +2025-12-28 21:46:04,911 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:04] "GET /api/strategies/equityCurve?id=1&_t=1766929564587 HTTP/1.1" 200 - +2025-12-28 21:46:04,915 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:04] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766929564587 HTTP/1.1" 200 - +2025-12-28 21:46:05,702 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:05] "GET /api/strategies/positions?id=1&_t=1766929565695 HTTP/1.1" 200 - +2025-12-28 21:46:06,586 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:06] "GET /api/strategies/trades?id=1&_t=1766929566273 HTTP/1.1" 200 - +2025-12-28 21:46:07,602 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:07] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929567594 HTTP/1.1" 200 - +2025-12-28 21:46:08,503 - app.services.trading_executor - INFO - Strategy 1 stopped +2025-12-28 21:46:08,511 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:08] "POST /api/strategies/stop?id=1 HTTP/1.1" 200 - +2025-12-28 21:46:08,764 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:08] "GET /api/strategies?_t=1766929568524 HTTP/1.1" 200 - +2025-12-28 21:46:08,990 - app.services.trading_executor - INFO - Strategy 1 stopped +2025-12-28 21:46:08,990 - app.services.trading_executor - INFO - Strategy 1 loop exited +2025-12-28 21:46:09,561 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:09] "GET /api/strategies/equityCurve?id=1&_t=1766929569551 HTTP/1.1" 200 - +2025-12-28 21:46:09,874 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:09] "GET /api/strategies/equityCurve?id=1&_t=1766929569551 HTTP/1.1" 200 - +2025-12-28 21:46:09,878 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:09] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766929569551 HTTP/1.1" 200 - +2025-12-28 21:46:10,990 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:10] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 21:46:10,996 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:10] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 21:46:11,004 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:11] "GET /api/credentials/list?user_id=1&_t=1766929570669 HTTP/1.1" 200 - +2025-12-28 21:46:11,009 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:11] "GET /api/strategies/equityCurve?id=1&_t=1766929570685 HTTP/1.1" 200 - +2025-12-28 21:46:11,019 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:11] "GET /api/strategies/equityCurve?id=1&_t=1766929570685 HTTP/1.1" 200 - +2025-12-28 21:46:11,023 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:11] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766929570685 HTTP/1.1" 200 - +2025-12-28 21:46:11,304 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:11] "GET /api/strategies/positions?id=1&_t=1766929570696 HTTP/1.1" 200 - +2025-12-28 21:46:11,571 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:11] "GET /api/credentials/get?id=2&user_id=1&_t=1766929571155 HTTP/1.1" 200 - +2025-12-28 21:46:14,002 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:14] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929573675 HTTP/1.1" 200 - +2025-12-28 21:46:15,717 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:15] "GET /api/strategies/positions?id=1&_t=1766929575705 HTTP/1.1" 200 - +2025-12-28 21:46:16,992 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:16] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929576672 HTTP/1.1" 200 - +2025-12-28 21:46:19,682 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:19] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929579673 HTTP/1.1" 200 - +2025-12-28 21:46:20,995 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:20] "GET /api/strategies/positions?id=1&_t=1766929580684 HTTP/1.1" 200 - +2025-12-28 21:46:22,679 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:22] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929582672 HTTP/1.1" 200 - +2025-12-28 21:46:25,987 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:25] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929585673 HTTP/1.1" 200 - +2025-12-28 21:46:25,996 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:25] "GET /api/strategies/positions?id=1&_t=1766929585685 HTTP/1.1" 200 - +2025-12-28 21:46:28,686 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:28] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929588677 HTTP/1.1" 200 - +2025-12-28 21:46:31,020 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:31] "GET /api/strategies/positions?id=1&_t=1766929590700 HTTP/1.1" 200 - +2025-12-28 21:46:31,694 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:31] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929591687 HTTP/1.1" 200 - +2025-12-28 21:46:34,999 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:34] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929594683 HTTP/1.1" 200 - +2025-12-28 21:46:35,705 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:35] "GET /api/strategies/positions?id=1&_t=1766929595696 HTTP/1.1" 200 - +2025-12-28 21:46:37,999 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:37] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929597678 HTTP/1.1" 200 - +2025-12-28 21:46:40,684 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:40] "GET /api/strategies/equityCurve?id=1&_t=1766929600674 HTTP/1.1" 200 - +2025-12-28 21:46:40,989 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:40] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929600675 HTTP/1.1" 200 - +2025-12-28 21:46:40,995 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:40] "GET /api/strategies/positions?id=1&_t=1766929600687 HTTP/1.1" 200 - +2025-12-28 21:46:44,817 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:44] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929604483 HTTP/1.1" 200 - +2025-12-28 21:46:46,488 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:46] "GET /api/strategies/positions?id=1&_t=1766929606477 HTTP/1.1" 200 - +2025-12-28 21:46:47,801 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:47] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929607481 HTTP/1.1" 200 - +2025-12-28 21:46:50,483 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:50] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929610472 HTTP/1.1" 200 - +2025-12-28 21:46:51,789 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:51] "GET /api/strategies/positions?id=1&_t=1766929611472 HTTP/1.1" 200 - +2025-12-28 21:46:53,487 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:53] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929613479 HTTP/1.1" 200 - +2025-12-28 21:46:56,789 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:56] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929616470 HTTP/1.1" 200 - +2025-12-28 21:46:56,793 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:56] "GET /api/strategies/positions?id=1&_t=1766929616470 HTTP/1.1" 200 - +2025-12-28 21:46:58,681 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:46:58] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929618673 HTTP/1.1" 200 - +2025-12-28 21:47:01,787 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:01] "GET /api/strategies/positions?id=1&_t=1766929621471 HTTP/1.1" 200 - +2025-12-28 21:47:02,491 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:02] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929622480 HTTP/1.1" 200 - +2025-12-28 21:47:04,984 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:04] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929624672 HTTP/1.1" 200 - +2025-12-28 21:47:05,690 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:05] "GET /api/strategies/positions?id=1&_t=1766929625684 HTTP/1.1" 200 - +2025-12-28 21:47:07,996 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:07] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929627672 HTTP/1.1" 200 - +2025-12-28 21:47:10,682 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:10] "GET /api/strategies/equityCurve?id=1&_t=1766929630673 HTTP/1.1" 200 - +2025-12-28 21:47:10,993 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:10] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929630673 HTTP/1.1" 200 - +2025-12-28 21:47:10,998 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:10] "GET /api/strategies/positions?id=1&_t=1766929630684 HTTP/1.1" 200 - +2025-12-28 21:47:13,990 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:13] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929633672 HTTP/1.1" 200 - +2025-12-28 21:47:15,694 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:15] "GET /api/strategies/positions?id=1&_t=1766929635683 HTTP/1.1" 200 - +2025-12-28 21:47:16,468 - app.routes.strategy - INFO - Testing connection: exchange_id=bitget +2025-12-28 21:47:16,468 - app.routes.strategy - INFO - API Key: bg_87... (len=35) +2025-12-28 21:47:16,469 - app.routes.strategy - INFO - Secret Key: 3b7ee... (len=64) +2025-12-28 21:47:20,441 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:20] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-28 21:47:20,444 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:20] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929636672 HTTP/1.1" 200 - +2025-12-28 21:47:20,449 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:20] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929639673 HTTP/1.1" 200 - +2025-12-28 21:47:21,002 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:21] "GET /api/strategies/positions?id=1&_t=1766929640685 HTTP/1.1" 200 - +2025-12-28 21:47:22,680 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:22] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929642672 HTTP/1.1" 200 - +2025-12-28 21:47:24,151 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:24] "PUT /api/strategies/update?id=1 HTTP/1.1" 200 - +2025-12-28 21:47:24,418 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:24] "POST /api/credentials/create HTTP/1.1" 200 - +2025-12-28 21:47:24,467 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:24] "GET /api/credentials/list?user_id=1&_t=1766929644451 HTTP/1.1" 200 - +2025-12-28 21:47:24,771 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:24] "GET /api/strategies?_t=1766929644451 HTTP/1.1" 200 - +2025-12-28 21:47:25,982 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:25] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929645673 HTTP/1.1" 200 - +2025-12-28 21:47:25,996 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:25] "GET /api/strategies/positions?id=1&_t=1766929645684 HTTP/1.1" 200 - +2025-12-28 21:47:28,685 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:28] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929648672 HTTP/1.1" 200 - +2025-12-28 21:47:29,414 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-28 21:47:29,414 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-28 21:47:29,415 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:29] "POST /api/strategies/start?id=1 HTTP/1.1" 200 - +2025-12-28 21:47:29,417 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-28 21:47:29,671 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:29] "GET /api/strategies?_t=1766929649456 HTTP/1.1" 200 - +2025-12-28 21:47:29,728 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 21:47:29,751 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=1 +2025-12-28 21:47:29,752 - app.services.trading_executor - INFO - Initial signals: [{'type': 'close_long', 'trigger_price': 2941.68, 'position_size': 0, 'timestamp': 1766929620}] +2025-12-28 21:47:30,143 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2941.68, pending_signals=1 +2025-12-28 21:47:30,145 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2941.68, 'position_size': 0, 'timestamp': 1766929620}] +2025-12-28 21:47:30,702 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:30] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 21:47:31,008 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:31] "GET /api/credentials/list?user_id=1&_t=1766929650694 HTTP/1.1" 200 - +2025-12-28 21:47:31,014 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:31] "GET /api/strategies/positions?id=1&_t=1766929650702 HTTP/1.1" 200 - +2025-12-28 21:47:31,982 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:31] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929651673 HTTP/1.1" 200 - +2025-12-28 21:47:34,679 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:34] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929654672 HTTP/1.1" 200 - +2025-12-28 21:47:36,005 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:36] "GET /api/strategies/positions?id=1&_t=1766929655684 HTTP/1.1" 200 - +2025-12-28 21:47:37,679 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:37] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929657671 HTTP/1.1" 200 - +2025-12-28 21:47:39,772 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2941.68, pending_signals=1 +2025-12-28 21:47:39,774 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2941.68, 'position_size': 0, 'timestamp': 1766929620}] +2025-12-28 21:47:40,984 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:40] "GET /api/strategies/equityCurve?id=1&_t=1766929660672 HTTP/1.1" 200 - +2025-12-28 21:47:40,988 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:40] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929660673 HTTP/1.1" 200 - +2025-12-28 21:47:40,992 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:40] "GET /api/strategies/positions?id=1&_t=1766929660684 HTTP/1.1" 200 - +2025-12-28 21:47:43,684 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:43] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929663674 HTTP/1.1" 200 - +2025-12-28 21:47:46,003 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:46] "GET /api/strategies/positions?id=1&_t=1766929665684 HTTP/1.1" 200 - +2025-12-28 21:47:46,678 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:46] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929666672 HTTP/1.1" 200 - +2025-12-28 21:47:49,884 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2941.68, pending_signals=1 +2025-12-28 21:47:49,886 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2941.68, 'position_size': 0, 'timestamp': 1766929620}] +2025-12-28 21:47:49,992 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:49] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929669672 HTTP/1.1" 200 - +2025-12-28 21:47:50,692 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:50] "GET /api/strategies/positions?id=1&_t=1766929670684 HTTP/1.1" 200 - +2025-12-28 21:47:52,987 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:52] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929672672 HTTP/1.1" 200 - +2025-12-28 21:47:55,679 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:55] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929675672 HTTP/1.1" 200 - +2025-12-28 21:47:55,992 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:55] "GET /api/strategies/positions?id=1&_t=1766929675684 HTTP/1.1" 200 - +2025-12-28 21:47:58,679 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:47:58] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929678673 HTTP/1.1" 200 - +2025-12-28 21:47:59,777 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2941.68, pending_signals=1 +2025-12-28 21:47:59,780 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2941.68, 'position_size': 0, 'timestamp': 1766929620}] +2025-12-28 21:48:01,007 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:48:01] "GET /api/strategies/positions?id=1&_t=1766929680685 HTTP/1.1" 200 - +2025-12-28 21:48:01,679 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:48:01] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929681672 HTTP/1.1" 200 - +2025-12-28 21:48:04,998 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:48:04] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929684680 HTTP/1.1" 200 - +2025-12-28 21:48:05,691 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:48:05] "GET /api/strategies/positions?id=1&_t=1766929685684 HTTP/1.1" 200 - +2025-12-28 21:48:07,984 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:48:07] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929687672 HTTP/1.1" 200 - +2025-12-28 21:48:09,967 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2941.99, pending_signals=2 +2025-12-28 21:48:09,970 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2941.68, 'position_size': 0, 'timestamp': 1766929620}] +2025-12-28 21:48:10,679 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:48:10] "GET /api/strategies/equityCurve?id=1&_t=1766929690672 HTTP/1.1" 200 - +2025-12-28 21:48:10,993 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:48:10] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929690672 HTTP/1.1" 200 - +2025-12-28 21:48:10,997 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:48:10] "GET /api/strategies/positions?id=1&_t=1766929690685 HTTP/1.1" 200 - +2025-12-28 21:48:13,986 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:48:13] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929693672 HTTP/1.1" 200 - +2025-12-28 21:48:15,693 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:48:15] "GET /api/strategies/positions?id=1&_t=1766929695684 HTTP/1.1" 200 - +2025-12-28 21:48:17,953 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:48:17] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929697476 HTTP/1.1" 200 - +2025-12-28 21:48:19,792 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2941.99, pending_signals=2 +2025-12-28 21:48:19,795 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2941.68, 'position_size': 0, 'timestamp': 1766929620}] +2025-12-28 21:48:20,478 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:48:20] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929700470 HTTP/1.1" 200 - +2025-12-28 21:48:21,795 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:48:21] "GET /api/strategies/positions?id=1&_t=1766929701475 HTTP/1.1" 200 - +2025-12-28 21:48:23,480 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:48:23] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929703471 HTTP/1.1" 200 - +2025-12-28 21:48:26,798 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:48:26] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929706477 HTTP/1.1" 200 - +2025-12-28 21:48:26,802 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:48:26] "GET /api/strategies/positions?id=1&_t=1766929706478 HTTP/1.1" 200 - +2025-12-28 21:48:29,479 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:48:29] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929709470 HTTP/1.1" 200 - +2025-12-28 21:48:30,330 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2941.99, pending_signals=2 +2025-12-28 21:48:30,332 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2941.68, 'position_size': 0, 'timestamp': 1766929620}] +2025-12-28 21:48:31,787 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:48:31] "GET /api/strategies/positions?id=1&_t=1766929711472 HTTP/1.1" 200 - +2025-12-28 21:48:32,480 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:48:32] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929712471 HTTP/1.1" 200 - +2025-12-28 21:48:35,805 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:48:35] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929715485 HTTP/1.1" 200 - +2025-12-28 21:48:36,513 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:48:36] "GET /api/strategies/positions?id=1&_t=1766929716506 HTTP/1.1" 200 - +2025-12-28 21:48:37,990 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:48:37] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929717672 HTTP/1.1" 200 - +2025-12-28 21:48:39,790 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2941.99, pending_signals=2 +2025-12-28 21:48:39,792 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2941.68, 'position_size': 0, 'timestamp': 1766929620}] +2025-12-28 21:48:41,483 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:48:41] "GET /api/strategies/equityCurve?id=1&_t=1766929721474 HTTP/1.1" 200 - +2025-12-28 21:48:41,793 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:48:41] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929721475 HTTP/1.1" 200 - +2025-12-28 21:48:41,797 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:48:41] "GET /api/strategies/positions?id=1&_t=1766929721475 HTTP/1.1" 200 - +2025-12-28 21:48:43,987 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:48:43] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929723673 HTTP/1.1" 200 - +2025-12-28 21:48:45,692 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:48:45] "GET /api/strategies/positions?id=1&_t=1766929725683 HTTP/1.1" 200 - +2025-12-28 21:48:46,987 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:48:46] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929726673 HTTP/1.1" 200 - +2025-12-28 21:48:49,679 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:48:49] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929729672 HTTP/1.1" 200 - +2025-12-28 21:48:50,991 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:48:50] "GET /api/strategies/positions?id=1&_t=1766929730684 HTTP/1.1" 200 - +2025-12-28 21:48:51,329 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2942.01, pending_signals=2 +2025-12-28 21:48:51,331 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2941.68, 'position_size': 0, 'timestamp': 1766929620}] +2025-12-28 21:48:51,796 - app.routes.strategy - INFO - Testing connection: exchange_id=binance +2025-12-28 21:48:51,797 - app.routes.strategy - INFO - API Key: kC5vP... (len=64) +2025-12-28 21:48:51,797 - app.routes.strategy - INFO - Secret Key: S5Blu... (len=64) +2025-12-28 21:48:53,996 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:48:53] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-28 21:48:53,999 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:48:53] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929732674 HTTP/1.1" 200 - +2025-12-28 21:48:55,992 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:48:55] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929735672 HTTP/1.1" 200 - +2025-12-28 21:48:55,996 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:48:55] "GET /api/strategies/positions?id=1&_t=1766929735685 HTTP/1.1" 200 - +2025-12-28 21:48:58,679 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:48:58] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929738672 HTTP/1.1" 200 - +2025-12-28 21:48:59,789 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2942.01, pending_signals=2 +2025-12-28 21:48:59,791 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2941.68, 'position_size': 0, 'timestamp': 1766929620}] +2025-12-28 21:49:01,791 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:49:01] "GET /api/strategies/positions?id=1&_t=1766929741478 HTTP/1.1" 200 - +2025-12-28 21:49:02,492 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:49:02] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929742470 HTTP/1.1" 200 - +2025-12-28 21:49:05,796 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:49:05] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929745481 HTTP/1.1" 200 - +2025-12-28 21:49:06,486 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:49:06] "GET /api/strategies/positions?id=1&_t=1766929746475 HTTP/1.1" 200 - +2025-12-28 21:49:08,793 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:49:08] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929748475 HTTP/1.1" 200 - +2025-12-28 21:49:11,559 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:49:11] "GET /api/strategies/equityCurve?id=1&_t=1766929751477 HTTP/1.1" 200 - +2025-12-28 21:49:11,925 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:49:11] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929751477 HTTP/1.1" 200 - +2025-12-28 21:49:11,961 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:49:11] "GET /api/strategies/positions?id=1&_t=1766929751478 HTTP/1.1" 200 - +2025-12-28 21:49:14,796 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:49:14] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929754478 HTTP/1.1" 200 - +2025-12-28 21:49:16,498 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:49:16] "GET /api/strategies/positions?id=1&_t=1766929756480 HTTP/1.1" 200 - +2025-12-28 21:49:17,790 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:49:17] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929757474 HTTP/1.1" 200 - +2025-12-28 21:49:20,520 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:49:20] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929760473 HTTP/1.1" 200 - +2025-12-28 21:49:21,791 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:49:21] "GET /api/strategies/positions?id=1&_t=1766929761474 HTTP/1.1" 200 - +2025-12-28 21:49:23,506 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:49:23] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929763482 HTTP/1.1" 200 - +2025-12-28 21:49:26,795 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:49:26] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929766476 HTTP/1.1" 200 - +2025-12-28 21:49:26,799 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:49:26] "GET /api/strategies/positions?id=1&_t=1766929766477 HTTP/1.1" 200 - +2025-12-28 21:49:29,507 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:49:29] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929769480 HTTP/1.1" 200 - +2025-12-28 21:49:31,803 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:49:31] "GET /api/strategies/positions?id=1&_t=1766929771484 HTTP/1.1" 200 - +2025-12-28 21:49:32,511 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:49:32] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929772475 HTTP/1.1" 200 - +2025-12-28 21:49:35,797 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:49:35] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929775477 HTTP/1.1" 200 - +2025-12-28 21:49:36,493 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:49:36] "GET /api/strategies/positions?id=1&_t=1766929776482 HTTP/1.1" 200 - +2025-12-28 21:49:38,798 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:49:38] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929778482 HTTP/1.1" 200 - +2025-12-28 21:49:41,495 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:49:41] "GET /api/strategies/equityCurve?id=1&_t=1766929781480 HTTP/1.1" 200 - +2025-12-28 21:49:41,796 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:49:41] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929781481 HTTP/1.1" 200 - +2025-12-28 21:49:41,800 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:49:41] "GET /api/strategies/positions?id=1&_t=1766929781482 HTTP/1.1" 200 - +2025-12-28 21:49:44,803 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:49:44] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929784483 HTTP/1.1" 200 - +2025-12-28 21:49:46,497 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:49:46] "GET /api/strategies/positions?id=1&_t=1766929786480 HTTP/1.1" 200 - +2025-12-28 21:49:47,800 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:49:47] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929787482 HTTP/1.1" 200 - +2025-12-28 21:49:50,481 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:49:50] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929790472 HTTP/1.1" 200 - +2025-12-28 21:49:51,797 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:49:51] "GET /api/strategies/positions?id=1&_t=1766929791482 HTTP/1.1" 200 - +2025-12-28 21:49:53,495 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:49:53] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929793481 HTTP/1.1" 200 - +2025-12-28 21:49:56,793 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:49:56] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929796476 HTTP/1.1" 200 - +2025-12-28 21:49:56,797 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:49:56] "GET /api/strategies/positions?id=1&_t=1766929796477 HTTP/1.1" 200 - +2025-12-28 21:50:37,495 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:50:37] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929837482 HTTP/1.1" 200 - +2025-12-28 21:50:37,804 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:50:37] "GET /api/strategies/positions?id=1&_t=1766929837483 HTTP/1.1" 200 - +2025-12-28 21:50:37,808 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:50:37] "GET /api/strategies/equityCurve?id=1&_t=1766929837484 HTTP/1.1" 200 - +2025-12-28 21:51:37,799 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:51:37] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929897485 HTTP/1.1" 200 - +2025-12-28 21:51:37,802 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:51:37] "GET /api/strategies/equityCurve?id=1&_t=1766929897486 HTTP/1.1" 200 - +2025-12-28 21:51:37,806 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:51:37] "GET /api/strategies/positions?id=1&_t=1766929897487 HTTP/1.1" 200 - +2025-12-28 21:52:37,482 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:52:37] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766929957470 HTTP/1.1" 200 - +2025-12-28 21:52:37,790 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:52:37] "GET /api/strategies/equityCurve?id=1&_t=1766929957471 HTTP/1.1" 200 - +2025-12-28 21:52:37,798 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:52:37] "GET /api/strategies/positions?id=1&_t=1766929957472 HTTP/1.1" 200 - +2025-12-28 21:53:37,801 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:53:37] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766930017481 HTTP/1.1" 200 - +2025-12-28 21:53:37,805 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:53:37] "GET /api/strategies/equityCurve?id=1&_t=1766930017481 HTTP/1.1" 200 - +2025-12-28 21:53:37,810 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:53:37] "GET /api/strategies/positions?id=1&_t=1766930017481 HTTP/1.1" 200 - +2025-12-28 21:54:37,487 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:54:37] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766930077474 HTTP/1.1" 200 - +2025-12-28 21:54:37,790 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:54:37] "GET /api/strategies/equityCurve?id=1&_t=1766930077475 HTTP/1.1" 200 - +2025-12-28 21:54:37,794 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:54:37] "GET /api/strategies/positions?id=1&_t=1766930077476 HTTP/1.1" 200 - +2025-12-28 21:54:43,134 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87906.13, pending_signals=1 +2025-12-28 21:54:43,136 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87906.13, 'position_size': 0, 'timestamp': 1766930040}] +2025-12-28 21:54:53,023 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87906.13, pending_signals=1 +2025-12-28 21:54:53,026 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87906.13, 'position_size': 0, 'timestamp': 1766930040}] +2025-12-28 21:55:03,137 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87906.13, pending_signals=1 +2025-12-28 21:55:03,141 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87906.13, 'position_size': 0, 'timestamp': 1766930100}] +2025-12-28 21:55:13,034 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87906.13, pending_signals=1 +2025-12-28 21:55:13,036 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87906.13, 'position_size': 0, 'timestamp': 1766930100}] +2025-12-28 21:55:23,873 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87892.69, pending_signals=2 +2025-12-28 21:55:23,875 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87906.13, 'position_size': 0, 'timestamp': 1766930040}, {'type': 'open_short', 'trigger_price': 87906.13, 'position_size': 0.08, 'timestamp': 1766930040}] +2025-12-28 21:55:23,884 - app.services.trading_executor - INFO - Strategy 2 signal executed: open_short @ 87906.13 +2025-12-28 21:55:27,401 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=29, strategy_id=2, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd229lmt', 'ordId': '', 'sCode': '51008', 'sMsg': 'Order failed. Insufficient USDT margin in account ', 'tag': '', 'ts': '1766930127296'}], 'inTime': '1766930127295699', 'msg': 'All operations failed', 'outTime': '1766930127296612'} +2025-12-28 21:55:28,364 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=29, strategy_id=2, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd229mkt', 'ordId': '', 'sCode': '51008', 'sMsg': 'Order failed. Insufficient USDT margin in account ', 'tag': '', 'ts': '1766930128189'}], 'inTime': '1766930128189253', 'msg': 'All operations failed', 'outTime': '1766930128190126'} +2025-12-28 21:55:33,045 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87892.69, pending_signals=2 +2025-12-28 21:55:33,048 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87906.13, 'position_size': 0, 'timestamp': 1766930040}, {'type': 'open_short', 'trigger_price': 87906.13, 'position_size': 0.08, 'timestamp': 1766930040}] +2025-12-28 21:55:37,805 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:55:37] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766930137476 HTTP/1.1" 200 - +2025-12-28 21:55:37,811 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:55:37] "GET /api/strategies/equityCurve?id=1&_t=1766930137477 HTTP/1.1" 200 - +2025-12-28 21:55:37,818 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:55:37] "GET /api/strategies/positions?id=1&_t=1766930137478 HTTP/1.1" 200 - +2025-12-28 21:55:43,141 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87892.68, pending_signals=2 +2025-12-28 21:55:43,143 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87906.13, 'position_size': 0, 'timestamp': 1766930040}, {'type': 'open_short', 'trigger_price': 87906.13, 'position_size': 0.08, 'timestamp': 1766930040}] +2025-12-28 21:55:53,033 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87892.68, pending_signals=2 +2025-12-28 21:55:53,035 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87906.13, 'position_size': 0, 'timestamp': 1766930040}, {'type': 'open_short', 'trigger_price': 87906.13, 'position_size': 0.08, 'timestamp': 1766930040}] +2025-12-28 21:56:37,491 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:56:37] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766930197479 HTTP/1.1" 200 - +2025-12-28 21:56:37,809 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:56:37] "GET /api/strategies/equityCurve?id=1&_t=1766930197480 HTTP/1.1" 200 - +2025-12-28 21:56:37,812 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:56:37] "GET /api/strategies/positions?id=1&_t=1766930197480 HTTP/1.1" 200 - +2025-12-28 21:57:37,796 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:57:37] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766930257479 HTTP/1.1" 200 - +2025-12-28 21:57:37,799 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:57:37] "GET /api/strategies/equityCurve?id=1&_t=1766930257480 HTTP/1.1" 200 - +2025-12-28 21:57:37,803 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:57:37] "GET /api/strategies/positions?id=1&_t=1766930257481 HTTP/1.1" 200 - +2025-12-28 21:58:37,490 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:58:37] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766930317476 HTTP/1.1" 200 - +2025-12-28 21:58:37,796 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:58:37] "GET /api/strategies/equityCurve?id=1&_t=1766930317478 HTTP/1.1" 200 - +2025-12-28 21:58:37,800 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:58:37] "GET /api/strategies/positions?id=1&_t=1766930317479 HTTP/1.1" 200 - +2025-12-28 21:58:43,165 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87916.79, pending_signals=1 +2025-12-28 21:58:43,167 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87916.79, 'position_size': 0, 'timestamp': 1766930280}] +2025-12-28 21:58:49,744 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:58:49] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766930329393 HTTP/1.1" 200 - +2025-12-28 21:58:49,748 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:58:49] "GET /api/strategies/equityCurve?id=1&_t=1766930329404 HTTP/1.1" 200 - +2025-12-28 21:58:49,753 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:58:49] "GET /api/strategies/positions?id=1&_t=1766930329405 HTTP/1.1" 200 - +2025-12-28 21:58:50,000 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:58:50] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766930329672 HTTP/1.1" 200 - +2025-12-28 21:58:50,826 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:58:50] "GET /api/strategies/positions?id=1&_t=1766930330684 HTTP/1.1" 200 - +2025-12-28 21:58:53,063 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87916.79, pending_signals=1 +2025-12-28 21:58:53,065 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87916.79, 'position_size': 0, 'timestamp': 1766930280}] +2025-12-28 21:58:53,491 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:58:53] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766930333482 HTTP/1.1" 200 - +2025-12-28 21:58:56,492 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:58:56] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766930336477 HTTP/1.1" 200 - +2025-12-28 21:58:56,499 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:58:56] "GET /api/strategies/positions?id=1&_t=1766930336478 HTTP/1.1" 200 - +2025-12-28 21:58:57,033 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:58:57] "GET /api/dashboard/summary?_t=1766930337021 HTTP/1.1" 200 - +2025-12-28 21:58:57,167 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:58:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766930337021 HTTP/1.1" 200 - +2025-12-28 21:58:59,482 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:58:59] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766930339473 HTTP/1.1" 200 - +2025-12-28 21:59:01,800 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:59:01] "GET /api/strategies/positions?id=1&_t=1766930341482 HTTP/1.1" 200 - +2025-12-28 21:59:02,486 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:59:02] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766930342472 HTTP/1.1" 200 - +2025-12-28 21:59:03,614 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87916.79, pending_signals=1 +2025-12-28 21:59:03,617 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87916.79, 'position_size': 0, 'timestamp': 1766930340}] +2025-12-28 21:59:05,823 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:59:05] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766930345470 HTTP/1.1" 200 - +2025-12-28 21:59:06,486 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:59:06] "GET /api/strategies/positions?id=1&_t=1766930346479 HTTP/1.1" 200 - +2025-12-28 21:59:08,793 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:59:08] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766930348478 HTTP/1.1" 200 - +2025-12-28 21:59:11,496 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:59:11] "GET /api/strategies/equityCurve?id=1&_t=1766930351483 HTTP/1.1" 200 - +2025-12-28 21:59:11,802 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:59:11] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766930351484 HTTP/1.1" 200 - +2025-12-28 21:59:11,806 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:59:11] "GET /api/strategies/positions?id=1&_t=1766930351484 HTTP/1.1" 200 - +2025-12-28 21:59:13,063 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87916.79, pending_signals=1 +2025-12-28 21:59:13,065 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87916.79, 'position_size': 0, 'timestamp': 1766930340}] +2025-12-28 21:59:14,791 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:59:14] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766930354472 HTTP/1.1" 200 - +2025-12-28 21:59:16,485 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:59:16] "GET /api/strategies/positions?id=1&_t=1766930356476 HTTP/1.1" 200 - +2025-12-28 21:59:17,794 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:59:17] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766930357477 HTTP/1.1" 200 - +2025-12-28 21:59:20,483 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:59:20] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766930360476 HTTP/1.1" 200 - +2025-12-28 21:59:21,799 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:59:21] "GET /api/strategies/positions?id=1&_t=1766930361481 HTTP/1.1" 200 - +2025-12-28 21:59:23,478 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:59:23] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766930363471 HTTP/1.1" 200 - +2025-12-28 21:59:24,256 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87916.8, pending_signals=2 +2025-12-28 21:59:24,258 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 87916.79, 'position_size': 0.08, 'timestamp': 1766930280}, {'type': 'close_short', 'trigger_price': 87916.79, 'position_size': 0, 'timestamp': 1766930280}] +2025-12-28 21:59:24,266 - app.services.trading_executor - INFO - Strategy 2 signal executed: open_long @ 87916.79 +2025-12-28 21:59:26,791 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:59:26] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766930366470 HTTP/1.1" 200 - +2025-12-28 21:59:26,794 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:59:26] "GET /api/strategies/positions?id=1&_t=1766930366471 HTTP/1.1" 200 - +2025-12-28 21:59:27,411 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=30, strategy_id=2, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd230lmt', 'ordId': '', 'sCode': '51008', 'sMsg': 'Order failed. Insufficient USDT margin in account ', 'tag': '', 'ts': '1766930367312'}], 'inTime': '1766930367311937', 'msg': 'All operations failed', 'outTime': '1766930367312357'} +2025-12-28 21:59:27,998 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=30, strategy_id=2, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd230mkt', 'ordId': '', 'sCode': '51008', 'sMsg': 'Order failed. Insufficient USDT margin in account ', 'tag': '', 'ts': '1766930367899'}], 'inTime': '1766930367899100', 'msg': 'All operations failed', 'outTime': '1766930367899962'} +2025-12-28 21:59:29,480 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:59:29] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766930369473 HTTP/1.1" 200 - +2025-12-28 21:59:31,799 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:59:31] "GET /api/strategies/positions?id=1&_t=1766930371480 HTTP/1.1" 200 - +2025-12-28 21:59:32,490 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:59:32] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766930372482 HTTP/1.1" 200 - +2025-12-28 21:59:33,067 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87916.8, pending_signals=2 +2025-12-28 21:59:33,069 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 87916.79, 'position_size': 0.08, 'timestamp': 1766930280}, {'type': 'close_short', 'trigger_price': 87916.79, 'position_size': 0, 'timestamp': 1766930280}] +2025-12-28 21:59:35,790 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:59:35] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766930375473 HTTP/1.1" 200 - +2025-12-28 21:59:36,487 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:59:36] "GET /api/strategies/positions?id=1&_t=1766930376479 HTTP/1.1" 200 - +2025-12-28 21:59:38,801 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:59:38] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766930378483 HTTP/1.1" 200 - +2025-12-28 21:59:41,479 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:59:41] "GET /api/strategies/equityCurve?id=1&_t=1766930381471 HTTP/1.1" 200 - +2025-12-28 21:59:41,790 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:59:41] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766930381472 HTTP/1.1" 200 - +2025-12-28 21:59:41,794 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:59:41] "GET /api/strategies/positions?id=1&_t=1766930381472 HTTP/1.1" 200 - +2025-12-28 21:59:43,265 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87896.59, pending_signals=2 +2025-12-28 21:59:43,267 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87916.79, 'position_size': 0, 'timestamp': 1766930280}] +2025-12-28 21:59:44,799 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:59:44] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766930384478 HTTP/1.1" 200 - +2025-12-28 21:59:46,478 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:59:46] "GET /api/strategies/positions?id=1&_t=1766930386470 HTTP/1.1" 200 - +2025-12-28 21:59:47,802 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:59:47] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766930387483 HTTP/1.1" 200 - +2025-12-28 21:59:50,487 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:59:50] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766930390479 HTTP/1.1" 200 - +2025-12-28 21:59:51,801 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 21:59:51] "GET /api/strategies/positions?id=1&_t=1766930391481 HTTP/1.1" 200 - +2025-12-28 21:59:53,069 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87896.59, pending_signals=2 +2025-12-28 21:59:53,071 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87916.79, 'position_size': 0, 'timestamp': 1766930280}] +2025-12-28 22:00:37,486 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:00:37] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766930437478 HTTP/1.1" 200 - +2025-12-28 22:00:37,795 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:00:37] "GET /api/strategies/positions?id=1&_t=1766930437479 HTTP/1.1" 200 - +2025-12-28 22:00:37,799 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:00:37] "GET /api/strategies/equityCurve?id=1&_t=1766930437479 HTTP/1.1" 200 - +2025-12-28 22:01:37,788 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:01:37] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766930497472 HTTP/1.1" 200 - +2025-12-28 22:01:37,792 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:01:37] "GET /api/strategies/equityCurve?id=1&_t=1766930497473 HTTP/1.1" 200 - +2025-12-28 22:01:37,796 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:01:37] "GET /api/strategies/positions?id=1&_t=1766930497474 HTTP/1.1" 200 - +2025-12-28 22:02:37,493 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:02:37] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766930557483 HTTP/1.1" 200 - +2025-12-28 22:02:37,802 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:02:37] "GET /api/strategies/equityCurve?id=1&_t=1766930557484 HTTP/1.1" 200 - +2025-12-28 22:02:37,806 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:02:37] "GET /api/strategies/positions?id=1&_t=1766930557484 HTTP/1.1" 200 - +2025-12-28 22:03:10,030 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2941.96, pending_signals=1 +2025-12-28 22:03:10,032 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2941.96, 'position_size': 0, 'timestamp': 1766930580}] +2025-12-28 22:03:19,927 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2941.96, pending_signals=1 +2025-12-28 22:03:19,929 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2941.96, 'position_size': 0, 'timestamp': 1766930580}] +2025-12-28 22:03:30,681 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2942.26, pending_signals=2 +2025-12-28 22:03:30,683 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 2941.79, 'position_size': 0.08, 'timestamp': 1766930520}, {'type': 'close_short', 'trigger_price': 2941.79, 'position_size': 0, 'timestamp': 1766930520}] +2025-12-28 22:03:30,690 - app.services.trading_executor - INFO - Strategy 1 signal executed: open_long @ 2941.79 +2025-12-28 22:03:33,686 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=31, strategy_id=1, cfg={'exchange_id': 'bitget', 'api_key': 'bg_8...b659', 'secret_key': '3b7e...b239', 'passphrase': 'xuji...u123', 'credential_id': 2}, err=Bitget HTTP 400: {"code":"400172","msg":"The margin mode cannot be empty","requestTime":1766930613490,"data":null} +2025-12-28 22:03:34,315 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=31, strategy_id=1, cfg={'exchange_id': 'bitget', 'api_key': 'bg_8...b659', 'secret_key': '3b7e...b239', 'passphrase': 'xuji...u123', 'credential_id': 2}, err=Bitget HTTP 400: {"code":"400172","msg":"The margin mode cannot be empty","requestTime":1766930614197,"data":null} +2025-12-28 22:03:37,791 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:03:37] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766930617474 HTTP/1.1" 200 - +2025-12-28 22:03:37,795 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:03:37] "GET /api/strategies/equityCurve?id=1&_t=1766930617474 HTTP/1.1" 200 - +2025-12-28 22:03:37,799 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:03:37] "GET /api/strategies/positions?id=1&_t=1766930617474 HTTP/1.1" 200 - +2025-12-28 22:03:39,929 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2942.26, pending_signals=2 +2025-12-28 22:03:39,932 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 2941.79, 'position_size': 0.08, 'timestamp': 1766930520}, {'type': 'close_short', 'trigger_price': 2941.79, 'position_size': 0, 'timestamp': 1766930520}] +2025-12-28 22:03:50,036 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2942.43, pending_signals=2 +2025-12-28 22:03:50,038 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 2941.79, 'position_size': 0.08, 'timestamp': 1766930520}, {'type': 'close_short', 'trigger_price': 2941.79, 'position_size': 0, 'timestamp': 1766930520}] +2025-12-28 22:03:59,934 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2942.43, pending_signals=2 +2025-12-28 22:03:59,937 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 2941.79, 'position_size': 0.08, 'timestamp': 1766930520}, {'type': 'close_short', 'trigger_price': 2941.79, 'position_size': 0, 'timestamp': 1766930520}] +2025-12-28 22:04:37,485 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:04:37] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766930677475 HTTP/1.1" 200 - +2025-12-28 22:04:37,792 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:04:37] "GET /api/strategies/equityCurve?id=1&_t=1766930677475 HTTP/1.1" 200 - +2025-12-28 22:04:37,796 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:04:37] "GET /api/strategies/positions?id=1&_t=1766930677476 HTTP/1.1" 200 - +2025-12-28 22:04:56,875 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:04:56] "GET /api/market/types?_t=1766930696865 HTTP/1.1" 200 - +2025-12-28 22:04:56,879 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:04:56] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 22:04:57,009 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:04:57] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 22:04:57,209 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-28 22:04:57,603 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:04:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 22:04:58,531 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:04:58] "GET /api/strategies?_t=1766930698518 HTTP/1.1" 200 - +2025-12-28 22:05:00,114 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:00] "GET /api/strategies/equityCurve?id=2&_t=1766930700095 HTTP/1.1" 200 - +2025-12-28 22:05:00,118 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:00] "GET /api/strategies/equityCurve?id=2&_t=1766930700095 HTTP/1.1" 200 - +2025-12-28 22:05:00,123 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:00] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930700095 HTTP/1.1" 200 - +2025-12-28 22:05:00,127 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:00] "GET /api/strategies/positions?id=2&_t=1766930700098 HTTP/1.1" 200 - +2025-12-28 22:05:03,093 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:03] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930703086 HTTP/1.1" 200 - +2025-12-28 22:05:05,418 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:05] "GET /api/strategies/positions?id=2&_t=1766930705100 HTTP/1.1" 200 - +2025-12-28 22:05:06,115 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:06] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930706100 HTTP/1.1" 200 - +2025-12-28 22:05:06,588 - app.services.trading_executor - INFO - Strategy 2 stopped +2025-12-28 22:05:06,596 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:06] "POST /api/strategies/stop?id=2 HTTP/1.1" 200 - +2025-12-28 22:05:06,845 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:06] "GET /api/strategies?_t=1766930706611 HTTP/1.1" 200 - +2025-12-28 22:05:07,324 - app.services.trading_executor - INFO - Strategy 2 stopped +2025-12-28 22:05:07,324 - app.services.trading_executor - INFO - Strategy 2 loop exited +2025-12-28 22:05:07,594 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:07] "GET /api/strategies/equityCurve?id=2&_t=1766930707585 HTTP/1.1" 200 - +2025-12-28 22:05:07,897 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:07] "GET /api/strategies/equityCurve?id=2&_t=1766930707585 HTTP/1.1" 200 - +2025-12-28 22:05:07,901 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:07] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930707585 HTTP/1.1" 200 - +2025-12-28 22:05:08,713 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:08] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 22:05:08,720 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:08] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 22:05:08,729 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:08] "GET /api/credentials/list?user_id=1&_t=1766930708388 HTTP/1.1" 200 - +2025-12-28 22:05:08,741 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:08] "GET /api/strategies/equityCurve?id=2&_t=1766930708405 HTTP/1.1" 200 - +2025-12-28 22:05:08,749 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:08] "GET /api/strategies/equityCurve?id=2&_t=1766930708405 HTTP/1.1" 200 - +2025-12-28 22:05:08,755 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:08] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930708405 HTTP/1.1" 200 - +2025-12-28 22:05:09,226 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:09] "GET /api/credentials/get?id=2&user_id=1&_t=1766930708897 HTTP/1.1" 200 - +2025-12-28 22:05:10,104 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:10] "GET /api/strategies/positions?id=2&_t=1766930710095 HTTP/1.1" 200 - +2025-12-28 22:05:11,719 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:11] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930711403 HTTP/1.1" 200 - +2025-12-28 22:05:14,407 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:14] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930714399 HTTP/1.1" 200 - +2025-12-28 22:05:15,426 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:15] "GET /api/strategies/positions?id=2&_t=1766930715101 HTTP/1.1" 200 - +2025-12-28 22:05:17,403 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:17] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930717393 HTTP/1.1" 200 - +2025-12-28 22:05:20,409 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:20] "GET /api/strategies/positions?id=2&_t=1766930720094 HTTP/1.1" 200 - +2025-12-28 22:05:20,670 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:20] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930720393 HTTP/1.1" 200 - +2025-12-28 22:05:23,399 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:23] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930723391 HTTP/1.1" 200 - +2025-12-28 22:05:25,439 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:25] "GET /api/strategies/positions?id=2&_t=1766930725104 HTTP/1.1" 200 - +2025-12-28 22:05:26,410 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:26] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930726404 HTTP/1.1" 200 - +2025-12-28 22:05:28,874 - app.routes.strategy - INFO - Testing connection: exchange_id=okx +2025-12-28 22:05:28,874 - app.routes.strategy - INFO - API Key: 4cd9c... (len=36) +2025-12-28 22:05:28,874 - app.routes.strategy - INFO - Secret Key: 2B295... (len=32) +2025-12-28 22:05:30,388 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:30] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-28 22:05:30,392 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:30] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930729399 HTTP/1.1" 200 - +2025-12-28 22:05:30,420 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:30] "GET /api/strategies/positions?id=2&_t=1766930730101 HTTP/1.1" 200 - +2025-12-28 22:05:32,282 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:32] "PUT /api/strategies/update?id=2 HTTP/1.1" 200 - +2025-12-28 22:05:32,542 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:32] "GET /api/strategies?_t=1766930732325 HTTP/1.1" 200 - +2025-12-28 22:05:32,649 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:32] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930732394 HTTP/1.1" 200 - +2025-12-28 22:05:35,101 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:35] "GET /api/strategies/positions?id=2&_t=1766930735094 HTTP/1.1" 200 - +2025-12-28 22:05:35,712 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:35] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930735393 HTTP/1.1" 200 - +2025-12-28 22:05:37,481 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:37] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766930737473 HTTP/1.1" 200 - +2025-12-28 22:05:37,788 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:37] "GET /api/strategies/positions?id=1&_t=1766930737474 HTTP/1.1" 200 - +2025-12-28 22:05:37,792 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:37] "GET /api/strategies/equityCurve?id=1&_t=1766930737474 HTTP/1.1" 200 - +2025-12-28 22:05:38,724 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:38] "GET /api/strategies/equityCurve?id=2&_t=1766930738404 HTTP/1.1" 200 - +2025-12-28 22:05:38,728 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:38] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930738405 HTTP/1.1" 200 - +2025-12-28 22:05:40,099 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:40] "GET /api/strategies/positions?id=2&_t=1766930740093 HTTP/1.1" 200 - +2025-12-28 22:05:41,720 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:41] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930741399 HTTP/1.1" 200 - +2025-12-28 22:05:44,397 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:44] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930744391 HTTP/1.1" 200 - +2025-12-28 22:05:45,412 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:45] "GET /api/strategies/positions?id=2&_t=1766930745094 HTTP/1.1" 200 - +2025-12-28 22:05:47,409 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:47] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930747402 HTTP/1.1" 200 - +2025-12-28 22:05:50,411 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:50] "GET /api/strategies/positions?id=2&_t=1766930750093 HTTP/1.1" 200 - +2025-12-28 22:05:50,677 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:50] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930750406 HTTP/1.1" 200 - +2025-12-28 22:05:53,399 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:53] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930753392 HTTP/1.1" 200 - +2025-12-28 22:05:55,415 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:55] "GET /api/strategies/positions?id=2&_t=1766930755093 HTTP/1.1" 200 - +2025-12-28 22:05:56,407 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:56] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930756400 HTTP/1.1" 200 - +2025-12-28 22:05:59,721 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:05:59] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930759402 HTTP/1.1" 200 - +2025-12-28 22:06:00,099 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:06:00] "GET /api/strategies/positions?id=2&_t=1766930760093 HTTP/1.1" 200 - +2025-12-28 22:06:02,718 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:06:02] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930762402 HTTP/1.1" 200 - +2025-12-28 22:06:05,100 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:06:05] "GET /api/strategies/positions?id=2&_t=1766930765094 HTTP/1.1" 200 - +2025-12-28 22:06:05,714 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:06:05] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930765400 HTTP/1.1" 200 - +2025-12-28 22:06:08,413 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:06:08] "GET /api/strategies/equityCurve?id=2&_t=1766930768406 HTTP/1.1" 200 - +2025-12-28 22:06:08,723 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:06:08] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930768406 HTTP/1.1" 200 - +2025-12-28 22:06:10,414 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:06:10] "GET /api/strategies/positions?id=2&_t=1766930770093 HTTP/1.1" 200 - +2025-12-28 22:06:11,406 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:06:11] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930771399 HTTP/1.1" 200 - +2025-12-28 22:06:14,723 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:06:14] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930774403 HTTP/1.1" 200 - +2025-12-28 22:06:15,100 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:06:15] "GET /api/strategies/positions?id=2&_t=1766930775093 HTTP/1.1" 200 - +2025-12-28 22:06:17,725 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:06:17] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930777404 HTTP/1.1" 200 - +2025-12-28 22:06:20,100 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:06:20] "GET /api/strategies/positions?id=2&_t=1766930780093 HTTP/1.1" 200 - +2025-12-28 22:06:20,722 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:06:20] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930780406 HTTP/1.1" 200 - +2025-12-28 22:06:23,409 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:06:23] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930783402 HTTP/1.1" 200 - +2025-12-28 22:06:25,420 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:06:25] "GET /api/strategies/positions?id=2&_t=1766930785094 HTTP/1.1" 200 - +2025-12-28 22:06:26,411 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:06:26] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930786404 HTTP/1.1" 200 - +2025-12-28 22:06:29,721 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:06:29] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930789401 HTTP/1.1" 200 - +2025-12-28 22:06:30,100 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:06:30] "GET /api/strategies/positions?id=2&_t=1766930790093 HTTP/1.1" 200 - +2025-12-28 22:06:32,726 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:06:32] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930792405 HTTP/1.1" 200 - +2025-12-28 22:06:35,102 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:06:35] "GET /api/strategies/positions?id=2&_t=1766930795093 HTTP/1.1" 200 - +2025-12-28 22:06:35,710 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:06:35] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930795393 HTTP/1.1" 200 - +2025-12-28 22:06:37,493 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:06:37] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766930797484 HTTP/1.1" 200 - +2025-12-28 22:06:37,803 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:06:37] "GET /api/strategies/equityCurve?id=1&_t=1766930797485 HTTP/1.1" 200 - +2025-12-28 22:06:37,807 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:06:37] "GET /api/strategies/positions?id=1&_t=1766930797485 HTTP/1.1" 200 - +2025-12-28 22:06:38,715 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:06:38] "GET /api/strategies/equityCurve?id=2&_t=1766930798392 HTTP/1.1" 200 - +2025-12-28 22:06:38,718 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:06:38] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930798393 HTTP/1.1" 200 - +2025-12-28 22:06:40,099 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:06:40] "GET /api/strategies/positions?id=2&_t=1766930800093 HTTP/1.1" 200 - +2025-12-28 22:06:41,720 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:06:41] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930801404 HTTP/1.1" 200 - +2025-12-28 22:06:44,405 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:06:44] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930804398 HTTP/1.1" 200 - +2025-12-28 22:06:45,421 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:06:45] "GET /api/strategies/positions?id=2&_t=1766930805102 HTTP/1.1" 200 - +2025-12-28 22:06:47,411 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:06:47] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930807404 HTTP/1.1" 200 - +2025-12-28 22:06:50,416 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:06:50] "GET /api/strategies/positions?id=2&_t=1766930810098 HTTP/1.1" 200 - +2025-12-28 22:06:50,684 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:06:50] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930810396 HTTP/1.1" 200 - +2025-12-28 22:06:53,406 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:06:53] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930813399 HTTP/1.1" 200 - +2025-12-28 22:06:55,417 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:06:55] "GET /api/strategies/positions?id=2&_t=1766930815099 HTTP/1.1" 200 - +2025-12-28 22:06:56,398 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:06:56] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930816391 HTTP/1.1" 200 - +2025-12-28 22:06:59,712 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:06:59] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930819393 HTTP/1.1" 200 - +2025-12-28 22:07:00,106 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:07:00] "GET /api/strategies/positions?id=2&_t=1766930820099 HTTP/1.1" 200 - +2025-12-28 22:07:02,713 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:07:02] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930822393 HTTP/1.1" 200 - +2025-12-28 22:07:04,175 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:07:04] "GET /api/strategies/equityCurve?id=1&_t=1766930824160 HTTP/1.1" 200 - +2025-12-28 22:07:04,488 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:07:04] "GET /api/strategies/equityCurve?id=1&_t=1766930824160 HTTP/1.1" 200 - +2025-12-28 22:07:04,492 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:07:04] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766930824160 HTTP/1.1" 200 - +2025-12-28 22:07:04,495 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:07:04] "GET /api/strategies/positions?id=1&_t=1766930824164 HTTP/1.1" 200 - +2025-12-28 22:07:05,284 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:07:05] "GET /api/strategies/equityCurve?id=2&_t=1766930825268 HTTP/1.1" 200 - +2025-12-28 22:07:05,292 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:07:05] "GET /api/strategies/equityCurve?id=2&_t=1766930825268 HTTP/1.1" 200 - +2025-12-28 22:07:05,597 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:07:05] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930825268 HTTP/1.1" 200 - +2025-12-28 22:07:05,601 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:07:05] "GET /api/strategies/positions?id=2&_t=1766930825272 HTTP/1.1" 200 - +2025-12-28 22:07:08,340 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-28 22:07:08,340 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-28 22:07:08,341 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:07:08] "POST /api/strategies/start?id=2 HTTP/1.1" 200 - +2025-12-28 22:07:08,342 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-28 22:07:08,682 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:07:08] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930828234 HTTP/1.1" 200 - +2025-12-28 22:07:08,687 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:07:08] "GET /api/strategies?_t=1766930828383 HTTP/1.1" 200 - +2025-12-28 22:07:08,931 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 22:07:08,952 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2025-12-28 22:07:10,246 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:07:10] "GET /api/strategies/positions?id=2&_t=1766930830238 HTTP/1.1" 200 - +2025-12-28 22:07:11,514 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:07:11] "GET /api/strategies/equityCurve?id=1&_t=1766930831196 HTTP/1.1" 200 - +2025-12-28 22:07:11,518 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:07:11] "GET /api/strategies/equityCurve?id=1&_t=1766930831196 HTTP/1.1" 200 - +2025-12-28 22:07:11,521 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:07:11] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766930831196 HTTP/1.1" 200 - +2025-12-28 22:07:11,529 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:07:11] "GET /api/strategies/positions?id=1&_t=1766930831199 HTTP/1.1" 200 - +2025-12-28 22:07:14,177 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:07:14] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766930834166 HTTP/1.1" 200 - +2025-12-28 22:07:16,491 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:07:16] "GET /api/strategies/positions?id=1&_t=1766930836172 HTTP/1.1" 200 - +2025-12-28 22:07:17,178 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:07:17] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766930837171 HTTP/1.1" 200 - +2025-12-28 22:07:18,066 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:07:18] "GET /api/strategies/equityCurve?id=2&_t=1766930837747 HTTP/1.1" 200 - +2025-12-28 22:07:18,069 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:07:18] "GET /api/strategies/equityCurve?id=2&_t=1766930837747 HTTP/1.1" 200 - +2025-12-28 22:07:18,074 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:07:18] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766930837747 HTTP/1.1" 200 - +2025-12-28 22:07:18,078 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:07:18] "GET /api/strategies/positions?id=2&_t=1766930837750 HTTP/1.1" 200 - +2025-12-28 22:07:18,960 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:07:18] "GET /api/strategies/equityCurve?id=1&_t=1766930838943 HTTP/1.1" 200 - +2025-12-28 22:07:19,266 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:07:19] "GET /api/strategies/equityCurve?id=1&_t=1766930838943 HTTP/1.1" 200 - +2025-12-28 22:07:19,269 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:07:19] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766930838943 HTTP/1.1" 200 - +2025-12-28 22:07:19,273 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:07:19] "GET /api/strategies/positions?id=1&_t=1766930838947 HTTP/1.1" 200 - +2025-12-28 22:07:22,257 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:07:22] "GET /api/dashboard/summary?_t=1766930841945 HTTP/1.1" 200 - +2025-12-28 22:07:22,266 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:07:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766930841945 HTTP/1.1" 200 - +2025-12-28 22:07:37,483 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:07:37] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766930857470 HTTP/1.1" 200 - +2025-12-28 22:07:37,789 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:07:37] "GET /api/strategies/equityCurve?id=1&_t=1766930857472 HTTP/1.1" 200 - +2025-12-28 22:07:37,793 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:07:37] "GET /api/strategies/positions?id=1&_t=1766930857472 HTTP/1.1" 200 - +2025-12-28 22:08:37,798 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:08:37] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766930917477 HTTP/1.1" 200 - +2025-12-28 22:08:37,808 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:08:37] "GET /api/strategies/equityCurve?id=1&_t=1766930917477 HTTP/1.1" 200 - +2025-12-28 22:08:37,816 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:08:37] "GET /api/strategies/positions?id=1&_t=1766930917478 HTTP/1.1" 200 - +2025-12-28 22:09:37,484 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:09:37] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766930977474 HTTP/1.1" 200 - +2025-12-28 22:09:37,788 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:09:37] "GET /api/strategies/equityCurve?id=1&_t=1766930977475 HTTP/1.1" 200 - +2025-12-28 22:09:37,792 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:09:37] "GET /api/strategies/positions?id=1&_t=1766930977476 HTTP/1.1" 200 - +2025-12-28 22:10:37,800 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:10:37] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931037485 HTTP/1.1" 200 - +2025-12-28 22:10:37,803 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:10:37] "GET /api/strategies/equityCurve?id=1&_t=1766931037485 HTTP/1.1" 200 - +2025-12-28 22:10:37,807 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:10:37] "GET /api/strategies/positions?id=1&_t=1766931037486 HTTP/1.1" 200 - +2025-12-28 22:11:37,490 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:11:37] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931097480 HTTP/1.1" 200 - +2025-12-28 22:11:37,798 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:11:37] "GET /api/strategies/equityCurve?id=1&_t=1766931097481 HTTP/1.1" 200 - +2025-12-28 22:11:37,802 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:11:37] "GET /api/strategies/positions?id=1&_t=1766931097483 HTTP/1.1" 200 - +2025-12-28 22:12:37,794 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:12:37] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931157478 HTTP/1.1" 200 - +2025-12-28 22:12:37,798 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:12:37] "GET /api/strategies/equityCurve?id=1&_t=1766931157479 HTTP/1.1" 200 - +2025-12-28 22:12:37,802 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:12:37] "GET /api/strategies/positions?id=1&_t=1766931157479 HTTP/1.1" 200 - +2025-12-28 22:13:21,177 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:13:21] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931201160 HTTP/1.1" 200 - +2025-12-28 22:13:21,492 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:13:21] "GET /api/strategies/equityCurve?id=1&_t=1766931201161 HTTP/1.1" 200 - +2025-12-28 22:13:21,496 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:13:21] "GET /api/strategies/positions?id=1&_t=1766931201161 HTTP/1.1" 200 - +2025-12-28 22:13:23,069 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:13:23] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931202672 HTTP/1.1" 200 - +2025-12-28 22:13:23,251 - app.routes.strategy - INFO - Testing connection: exchange_id=binance +2025-12-28 22:13:23,252 - app.routes.strategy - INFO - API Key: kC5vP... (len=64) +2025-12-28 22:13:23,252 - app.routes.strategy - INFO - Secret Key: S5Blu... (len=64) +2025-12-28 22:13:25,064 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:13:25] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-28 22:13:25,680 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:13:25] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931205673 HTTP/1.1" 200 - +2025-12-28 22:13:26,005 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:13:26] "GET /api/strategies/positions?id=1&_t=1766931205684 HTTP/1.1" 200 - +2025-12-28 22:13:27,771 - app.routes.strategy - INFO - Testing connection: exchange_id=binance +2025-12-28 22:13:27,772 - app.routes.strategy - INFO - API Key: kC5vP... (len=64) +2025-12-28 22:13:27,772 - app.routes.strategy - INFO - Secret Key: S5Blu... (len=64) +2025-12-28 22:13:29,420 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:13:29] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-28 22:13:29,424 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:13:29] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931208673 HTTP/1.1" 200 - +2025-12-28 22:13:31,009 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:13:31] "GET /api/strategies/positions?id=1&_t=1766931210684 HTTP/1.1" 200 - +2025-12-28 22:13:31,679 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:13:31] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931211673 HTTP/1.1" 200 - +2025-12-28 22:13:35,787 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:13:35] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931215471 HTTP/1.1" 200 - +2025-12-28 22:13:36,494 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:13:36] "GET /api/strategies/positions?id=1&_t=1766931216481 HTTP/1.1" 200 - +2025-12-28 22:13:38,795 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:13:38] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931218479 HTTP/1.1" 200 - +2025-12-28 22:13:41,486 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:13:41] "GET /api/strategies/equityCurve?id=1&_t=1766931221476 HTTP/1.1" 200 - +2025-12-28 22:13:41,798 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:13:41] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931221477 HTTP/1.1" 200 - +2025-12-28 22:13:41,804 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:13:41] "GET /api/strategies/positions?id=1&_t=1766931221477 HTTP/1.1" 200 - +2025-12-28 22:13:44,802 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:13:44] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931224483 HTTP/1.1" 200 - +2025-12-28 22:13:46,479 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:13:46] "GET /api/strategies/positions?id=1&_t=1766931226471 HTTP/1.1" 200 - +2025-12-28 22:13:47,783 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:13:47] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931227470 HTTP/1.1" 200 - +2025-12-28 22:13:50,481 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:13:50] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931230474 HTTP/1.1" 200 - +2025-12-28 22:13:51,788 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:13:51] "GET /api/strategies/positions?id=1&_t=1766931231472 HTTP/1.1" 200 - +2025-12-28 22:13:53,482 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:13:53] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931233474 HTTP/1.1" 200 - +2025-12-28 22:13:56,794 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:13:56] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931236475 HTTP/1.1" 200 - +2025-12-28 22:13:56,798 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:13:56] "GET /api/strategies/positions?id=1&_t=1766931236476 HTTP/1.1" 200 - +2025-12-28 22:13:59,489 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:13:59] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931239480 HTTP/1.1" 200 - +2025-12-28 22:14:01,794 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:14:01] "GET /api/strategies/positions?id=1&_t=1766931241478 HTTP/1.1" 200 - +2025-12-28 22:14:02,493 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:14:02] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931242482 HTTP/1.1" 200 - +2025-12-28 22:14:05,801 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:14:05] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931245481 HTTP/1.1" 200 - +2025-12-28 22:14:06,492 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:14:06] "GET /api/strategies/positions?id=1&_t=1766931246482 HTTP/1.1" 200 - +2025-12-28 22:14:08,795 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:14:08] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931248470 HTTP/1.1" 200 - +2025-12-28 22:14:11,497 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:14:11] "GET /api/strategies/equityCurve?id=1&_t=1766931251484 HTTP/1.1" 200 - +2025-12-28 22:14:11,801 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:14:11] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931251486 HTTP/1.1" 200 - +2025-12-28 22:14:11,805 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:14:11] "GET /api/strategies/positions?id=1&_t=1766931251487 HTTP/1.1" 200 - +2025-12-28 22:14:14,790 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:14:14] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931254471 HTTP/1.1" 200 - +2025-12-28 22:14:16,482 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:14:16] "GET /api/strategies/positions?id=1&_t=1766931256471 HTTP/1.1" 200 - +2025-12-28 22:14:17,806 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:14:17] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931257478 HTTP/1.1" 200 - +2025-12-28 22:14:20,491 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:14:20] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931260482 HTTP/1.1" 200 - +2025-12-28 22:14:21,795 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:14:21] "GET /api/strategies/positions?id=1&_t=1766931261482 HTTP/1.1" 200 - +2025-12-28 22:14:22,680 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:14:22] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931262673 HTTP/1.1" 200 - +2025-12-28 22:14:25,996 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:14:25] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931265673 HTTP/1.1" 200 - +2025-12-28 22:14:26,000 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:14:26] "GET /api/strategies/positions?id=1&_t=1766931265684 HTTP/1.1" 200 - +2025-12-28 22:14:28,679 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:14:28] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931268672 HTTP/1.1" 200 - +2025-12-28 22:14:30,996 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:14:30] "GET /api/strategies/positions?id=1&_t=1766931270684 HTTP/1.1" 200 - +2025-12-28 22:14:31,261 - app.routes.strategy - INFO - Testing connection: exchange_id=binance +2025-12-28 22:14:31,262 - app.routes.strategy - INFO - API Key: kC5vP... (len=64) +2025-12-28 22:14:31,262 - app.routes.strategy - INFO - Secret Key: S5Blu... (len=64) +2025-12-28 22:14:32,963 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:14:32] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-28 22:14:32,967 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:14:32] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931271672 HTTP/1.1" 200 - +2025-12-28 22:14:34,980 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:14:34] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931274672 HTTP/1.1" 200 - +2025-12-28 22:14:35,073 - app.routes.strategy - INFO - Testing connection: exchange_id=binance +2025-12-28 22:14:35,074 - app.routes.strategy - INFO - API Key: kC5vP... (len=64) +2025-12-28 22:14:35,074 - app.routes.strategy - INFO - Secret Key: S5Blu... (len=64) +2025-12-28 22:14:36,944 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:14:36] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-28 22:14:36,948 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:14:36] "GET /api/strategies/positions?id=1&_t=1766931275684 HTTP/1.1" 200 - +2025-12-28 22:14:37,983 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:14:37] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931277674 HTTP/1.1" 200 - +2025-12-28 22:14:40,680 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:14:40] "GET /api/strategies/equityCurve?id=1&_t=1766931280673 HTTP/1.1" 200 - +2025-12-28 22:14:40,983 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:14:40] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931280674 HTTP/1.1" 200 - +2025-12-28 22:14:40,999 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:14:40] "GET /api/strategies/positions?id=1&_t=1766931280684 HTTP/1.1" 200 - +2025-12-28 22:14:43,980 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:14:43] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931283672 HTTP/1.1" 200 - +2025-12-28 22:14:45,691 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:14:45] "GET /api/strategies/positions?id=1&_t=1766931285684 HTTP/1.1" 200 - +2025-12-28 22:14:46,983 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:14:46] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931286673 HTTP/1.1" 200 - +2025-12-28 22:14:49,679 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:14:49] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931289672 HTTP/1.1" 200 - +2025-12-28 22:14:50,993 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:14:50] "GET /api/strategies/positions?id=1&_t=1766931290684 HTTP/1.1" 200 - +2025-12-28 22:14:52,679 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:14:52] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931292672 HTTP/1.1" 200 - +2025-12-28 22:14:56,801 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:14:56] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931296481 HTTP/1.1" 200 - +2025-12-28 22:14:56,805 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:14:56] "GET /api/strategies/positions?id=1&_t=1766931296482 HTTP/1.1" 200 - +2025-12-28 22:14:59,488 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:14:59] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931299479 HTTP/1.1" 200 - +2025-12-28 22:15:01,794 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:15:01] "GET /api/strategies/positions?id=1&_t=1766931301475 HTTP/1.1" 200 - +2025-12-28 22:15:02,489 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:15:02] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931302478 HTTP/1.1" 200 - +2025-12-28 22:15:05,789 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:15:05] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931305471 HTTP/1.1" 200 - +2025-12-28 22:15:06,494 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:15:06] "GET /api/strategies/positions?id=1&_t=1766931306484 HTTP/1.1" 200 - +2025-12-28 22:15:08,799 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:15:08] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931308482 HTTP/1.1" 200 - +2025-12-28 22:15:11,489 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:15:11] "GET /api/strategies/equityCurve?id=1&_t=1766931311477 HTTP/1.1" 200 - +2025-12-28 22:15:11,793 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:15:11] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931311477 HTTP/1.1" 200 - +2025-12-28 22:15:11,796 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:15:11] "GET /api/strategies/positions?id=1&_t=1766931311478 HTTP/1.1" 200 - +2025-12-28 22:15:14,806 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:15:14] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931314485 HTTP/1.1" 200 - +2025-12-28 22:15:16,479 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:15:16] "GET /api/strategies/positions?id=1&_t=1766931316471 HTTP/1.1" 200 - +2025-12-28 22:15:17,789 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:15:17] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931317480 HTTP/1.1" 200 - +2025-12-28 22:15:20,481 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:15:20] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931320472 HTTP/1.1" 200 - +2025-12-28 22:15:21,791 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:15:21] "GET /api/strategies/positions?id=1&_t=1766931321470 HTTP/1.1" 200 - +2025-12-28 22:15:23,489 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:15:23] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931323479 HTTP/1.1" 200 - +2025-12-28 22:15:26,790 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:15:26] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931326470 HTTP/1.1" 200 - +2025-12-28 22:15:26,794 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:15:26] "GET /api/strategies/positions?id=1&_t=1766931326472 HTTP/1.1" 200 - +2025-12-28 22:15:29,493 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:15:29] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931329484 HTTP/1.1" 200 - +2025-12-28 22:15:31,799 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:15:31] "GET /api/strategies/positions?id=1&_t=1766931331480 HTTP/1.1" 200 - +2025-12-28 22:15:32,481 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:15:32] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931332472 HTTP/1.1" 200 - +2025-12-28 22:15:35,794 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:15:35] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931335475 HTTP/1.1" 200 - +2025-12-28 22:15:36,481 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:15:36] "GET /api/strategies/positions?id=1&_t=1766931336473 HTTP/1.1" 200 - +2025-12-28 22:15:38,793 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:15:38] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931338473 HTTP/1.1" 200 - +2025-12-28 22:15:41,483 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:15:41] "GET /api/strategies/equityCurve?id=1&_t=1766931341472 HTTP/1.1" 200 - +2025-12-28 22:15:41,793 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:15:41] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931341473 HTTP/1.1" 200 - +2025-12-28 22:15:41,797 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:15:41] "GET /api/strategies/positions?id=1&_t=1766931341473 HTTP/1.1" 200 - +2025-12-28 22:15:44,799 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:15:44] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931344483 HTTP/1.1" 200 - +2025-12-28 22:15:46,486 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:15:46] "GET /api/strategies/positions?id=1&_t=1766931346477 HTTP/1.1" 200 - +2025-12-28 22:15:47,792 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:15:47] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931347478 HTTP/1.1" 200 - +2025-12-28 22:15:50,493 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:15:50] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931350484 HTTP/1.1" 200 - +2025-12-28 22:15:51,803 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:15:51] "GET /api/strategies/positions?id=1&_t=1766931351484 HTTP/1.1" 200 - +2025-12-28 22:15:53,489 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:15:53] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931353481 HTTP/1.1" 200 - +2025-12-28 22:16:14,134 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:14] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931373805 HTTP/1.1" 200 - +2025-12-28 22:16:14,138 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:14] "GET /api/strategies/positions?id=1&_t=1766931373809 HTTP/1.1" 200 - +2025-12-28 22:16:14,143 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:14] "GET /api/strategies/equityCurve?id=1&_t=1766931373809 HTTP/1.1" 200 - +2025-12-28 22:16:15,691 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:15] "GET /api/strategies/positions?id=1&_t=1766931375684 HTTP/1.1" 200 - +2025-12-28 22:16:16,985 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:16] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931376672 HTTP/1.1" 200 - +2025-12-28 22:16:19,684 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:19] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931379673 HTTP/1.1" 200 - +2025-12-28 22:16:21,000 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:20] "GET /api/strategies/positions?id=1&_t=1766931380684 HTTP/1.1" 200 - +2025-12-28 22:16:23,482 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:23] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931383470 HTTP/1.1" 200 - +2025-12-28 22:16:26,792 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:26] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931386473 HTTP/1.1" 200 - +2025-12-28 22:16:26,797 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:26] "GET /api/strategies/positions?id=1&_t=1766931386474 HTTP/1.1" 200 - +2025-12-28 22:16:32,706 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-28 22:16:32,711 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-28 22:16:33,176 - app.services.strategy - INFO - Found 2 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}] +2025-12-28 22:16:33,176 - app - INFO - Restoring 2 running strategies... +2025-12-28 22:16:33,177 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-28 22:16:33,177 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-28 22:16:33,177 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-28 22:16:33,177 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-28 22:16:33,177 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-28 22:16:33,178 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-28 22:16:33,178 - app - INFO - Strategy restore completed: 2/2 restored +2025-12-28 22:16:33,180 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-28 22:16:33,193 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-28 22:16:33,203 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-28 22:16:33,203 - werkzeug - INFO - Press CTRL+C to quit +2025-12-28 22:16:35,083 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:35] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 22:16:35,485 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:35] "GET /api/market/config?_t=1766931395036 HTTP/1.1" 200 - +2025-12-28 22:16:35,703 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 22:16:35,703 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 22:16:35,703 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 22:16:35,703 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 22:16:35,703 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-28 22:16:36,991 - app.data_sources.base - WARNING - Warning: 300475 data is delayed (252997s) +2025-12-28 22:16:37,172 - app.data_sources.base - WARNING - Warning: 600519 data is delayed (252997s) +2025-12-28 22:16:37,289 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (206197s) +2025-12-28 22:16:37,495 - app.data_sources.base - WARNING - Warning: 000858 data is delayed (252997s) +2025-12-28 22:16:38,460 - app.data_sources.base - WARNING - Warning: 00700 data is delayed (425798s) +2025-12-28 22:16:39,147 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 22:16:39,188 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2025-12-28 22:16:40,022 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 22:16:40,099 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2025-12-28 22:16:41,178 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:41] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-28 22:16:41,183 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:41] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 22:16:41,194 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:41] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 22:16:41,199 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:41] "GET /api/market/types?_t=1766931395396 HTTP/1.1" 200 - +2025-12-28 22:16:41,207 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:41] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931395480 HTTP/1.1" 200 - +2025-12-28 22:16:41,217 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:41] "GET /api/market/types?_t=1766931395496 HTTP/1.1" 200 - +2025-12-28 22:16:41,502 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:41] "GET /api/strategies?_t=1766931396345 HTTP/1.1" 200 - +2025-12-28 22:16:41,513 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:41] "GET /api/strategies/positions?id=1&_t=1766931396479 HTTP/1.1" 200 - +2025-12-28 22:16:41,521 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:41] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931398475 HTTP/1.1" 200 - +2025-12-28 22:16:41,804 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:41] "GET /api/strategies/equityCurve?id=1&_t=1766931401474 HTTP/1.1" 200 - +2025-12-28 22:16:41,810 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:41] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931401475 HTTP/1.1" 200 - +2025-12-28 22:16:41,816 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:41] "GET /api/strategies/positions?id=1&_t=1766931401476 HTTP/1.1" 200 - +2025-12-28 22:16:44,797 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:44] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931404482 HTTP/1.1" 200 - +2025-12-28 22:16:46,483 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:46] "GET /api/strategies/positions?id=1&_t=1766931406474 HTTP/1.1" 200 - +2025-12-28 22:16:47,792 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:47] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931407473 HTTP/1.1" 200 - +2025-12-28 22:16:50,189 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:50] "GET /api/strategies/equityCurve?id=2&_t=1766931410167 HTTP/1.1" 200 - +2025-12-28 22:16:50,496 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:50] "GET /api/strategies/equityCurve?id=2&_t=1766931410167 HTTP/1.1" 200 - +2025-12-28 22:16:50,500 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:50] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766931410167 HTTP/1.1" 200 - +2025-12-28 22:16:50,505 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:50] "GET /api/strategies/positions?id=2&_t=1766931410170 HTTP/1.1" 200 - +2025-12-28 22:16:50,790 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:50] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931410470 HTTP/1.1" 200 - +2025-12-28 22:16:51,789 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:51] "GET /api/strategies/positions?id=1&_t=1766931411474 HTTP/1.1" 200 - +2025-12-28 22:16:51,868 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:51] "GET /api/strategies/equityCurve?id=1&_t=1766931411547 HTTP/1.1" 200 - +2025-12-28 22:16:51,872 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:51] "GET /api/strategies/equityCurve?id=1&_t=1766931411547 HTTP/1.1" 200 - +2025-12-28 22:16:51,877 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:51] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766931411547 HTTP/1.1" 200 - +2025-12-28 22:16:51,882 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:51] "GET /api/strategies/positions?id=1&_t=1766931411548 HTTP/1.1" 200 - +2025-12-28 22:16:53,492 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:53] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931413482 HTTP/1.1" 200 - +2025-12-28 22:16:54,158 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:54] "GET /api/strategies/equityCurve?id=1&_t=1766931413846 HTTP/1.1" 200 - +2025-12-28 22:16:54,163 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:54] "GET /api/strategies/equityCurve?id=1&_t=1766931413846 HTTP/1.1" 200 - +2025-12-28 22:16:54,166 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:54] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766931413846 HTTP/1.1" 200 - +2025-12-28 22:16:56,196 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:56] "GET /api/strategies/equityCurve?id=1&_t=1766931416185 HTTP/1.1" 200 - +2025-12-28 22:16:56,498 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:56] "GET /api/strategies/equityCurve?id=1&_t=1766931416185 HTTP/1.1" 200 - +2025-12-28 22:16:56,501 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:56] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766931416185 HTTP/1.1" 200 - +2025-12-28 22:16:56,790 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:56] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931416476 HTTP/1.1" 200 - +2025-12-28 22:16:56,795 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:56] "GET /api/strategies/positions?id=1&_t=1766931416477 HTTP/1.1" 200 - +2025-12-28 22:16:56,869 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:56] "GET /api/strategies/positions?id=1&_t=1766931416548 HTTP/1.1" 200 - +2025-12-28 22:16:58,812 - app.services.trading_executor - INFO - Strategy 1 stopped +2025-12-28 22:16:58,822 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:58] "POST /api/strategies/stop?id=1 HTTP/1.1" 200 - +2025-12-28 22:16:59,059 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:59] "GET /api/strategies?_t=1766931418837 HTTP/1.1" 200 - +2025-12-28 22:16:59,190 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:59] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931419184 HTTP/1.1" 200 - +2025-12-28 22:16:59,201 - app.services.trading_executor - INFO - Strategy 1 stopped +2025-12-28 22:16:59,202 - app.services.trading_executor - INFO - Strategy 1 loop exited +2025-12-28 22:16:59,795 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:16:59] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931419474 HTTP/1.1" 200 - +2025-12-28 22:17:00,689 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:00] "GET /api/strategies/equityCurve?id=1&_t=1766931420485 HTTP/1.1" 200 - +2025-12-28 22:17:01,003 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:01] "GET /api/strategies/equityCurve?id=1&_t=1766931420485 HTTP/1.1" 200 - +2025-12-28 22:17:01,007 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:01] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766931420485 HTTP/1.1" 200 - +2025-12-28 22:17:01,589 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:01] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 22:17:01,603 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:01] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 22:17:01,618 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:01] "GET /api/credentials/list?user_id=1&_t=1766931421268 HTTP/1.1" 200 - +2025-12-28 22:17:01,634 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:01] "GET /api/strategies/equityCurve?id=1&_t=1766931421290 HTTP/1.1" 200 - +2025-12-28 22:17:01,648 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:01] "GET /api/strategies/equityCurve?id=1&_t=1766931421290 HTTP/1.1" 200 - +2025-12-28 22:17:01,655 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:01] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766931421290 HTTP/1.1" 200 - +2025-12-28 22:17:01,920 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:01] "GET /api/strategies/positions?id=1&_t=1766931421473 HTTP/1.1" 200 - +2025-12-28 22:17:01,934 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:01] "GET /api/strategies/positions?id=1&_t=1766931421548 HTTP/1.1" 200 - +2025-12-28 22:17:02,085 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:02] "GET /api/credentials/get?id=2&user_id=1&_t=1766931421766 HTTP/1.1" 200 - +2025-12-28 22:17:02,485 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:02] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931422472 HTTP/1.1" 200 - +2025-12-28 22:17:04,594 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:04] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931424271 HTTP/1.1" 200 - +2025-12-28 22:17:05,481 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:05] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931425470 HTTP/1.1" 200 - +2025-12-28 22:17:06,785 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:06] "GET /api/strategies/positions?id=1&_t=1766931426470 HTTP/1.1" 200 - +2025-12-28 22:17:06,868 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:06] "GET /api/strategies/positions?id=1&_t=1766931426549 HTTP/1.1" 200 - +2025-12-28 22:17:07,281 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:07] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931427271 HTTP/1.1" 200 - +2025-12-28 22:17:08,801 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:08] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931428483 HTTP/1.1" 200 - +2025-12-28 22:17:10,281 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:10] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931430271 HTTP/1.1" 200 - +2025-12-28 22:17:11,799 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:11] "GET /api/strategies/equityCurve?id=1&_t=1766931431479 HTTP/1.1" 200 - +2025-12-28 22:17:11,805 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:11] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931431479 HTTP/1.1" 200 - +2025-12-28 22:17:11,809 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:11] "GET /api/strategies/positions?id=1&_t=1766931431480 HTTP/1.1" 200 - +2025-12-28 22:17:11,859 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:11] "GET /api/strategies/positions?id=1&_t=1766931431548 HTTP/1.1" 200 - +2025-12-28 22:17:13,283 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:13] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931433270 HTTP/1.1" 200 - +2025-12-28 22:17:14,797 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:14] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931434477 HTTP/1.1" 200 - +2025-12-28 22:17:15,368 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:15] "GET /api/credentials/get?id=3&user_id=1&_t=1766931435355 HTTP/1.1" 200 - +2025-12-28 22:17:16,582 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:16] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931436271 HTTP/1.1" 200 - +2025-12-28 22:17:16,801 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:16] "GET /api/strategies/positions?id=1&_t=1766931436483 HTTP/1.1" 200 - +2025-12-28 22:17:16,849 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:16] "GET /api/strategies/positions?id=1&_t=1766931436549 HTTP/1.1" 200 - +2025-12-28 22:17:17,481 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:17] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931437471 HTTP/1.1" 200 - +2025-12-28 22:17:19,591 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:19] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931439271 HTTP/1.1" 200 - +2025-12-28 22:17:20,488 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:20] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931440475 HTTP/1.1" 200 - +2025-12-28 22:17:21,787 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:21] "GET /api/strategies/positions?id=1&_t=1766931441472 HTTP/1.1" 200 - +2025-12-28 22:17:21,871 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:21] "GET /api/strategies/positions?id=1&_t=1766931441548 HTTP/1.1" 200 - +2025-12-28 22:17:22,050 - app.routes.strategy - INFO - Testing connection: exchange_id=bitget +2025-12-28 22:17:22,051 - app.routes.strategy - INFO - API Key: bg_87... (len=35) +2025-12-28 22:17:22,051 - app.routes.strategy - INFO - Secret Key: 3b7ee... (len=64) +2025-12-28 22:17:24,118 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:24] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-28 22:17:24,122 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:24] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931442271 HTTP/1.1" 200 - +2025-12-28 22:17:25,591 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:25] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931445270 HTTP/1.1" 200 - +2025-12-28 22:17:25,755 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:25] "PUT /api/strategies/update?id=1 HTTP/1.1" 200 - +2025-12-28 22:17:25,847 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:25] "GET /api/strategies?_t=1766931445792 HTTP/1.1" 200 - +2025-12-28 22:17:26,556 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:26] "GET /api/strategies/positions?id=1&_t=1766931446549 HTTP/1.1" 200 - +2025-12-28 22:17:28,594 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:28] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931448271 HTTP/1.1" 200 - +2025-12-28 22:17:31,271 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-28 22:17:31,271 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-28 22:17:31,272 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:31] "POST /api/strategies/start?id=1 HTTP/1.1" 200 - +2025-12-28 22:17:31,273 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-28 22:17:31,586 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:31] "GET /api/strategies/equityCurve?id=1&_t=1766931451271 HTTP/1.1" 200 - +2025-12-28 22:17:31,589 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:31] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931451271 HTTP/1.1" 200 - +2025-12-28 22:17:31,635 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:31] "GET /api/strategies?_t=1766931451312 HTTP/1.1" 200 - +2025-12-28 22:17:31,713 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 22:17:31,740 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2025-12-28 22:17:31,868 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:31] "GET /api/strategies/positions?id=1&_t=1766931451548 HTTP/1.1" 200 - +2025-12-28 22:17:33,401 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:33] "GET /api/strategies?_t=1766931453087 HTTP/1.1" 200 - +2025-12-28 22:17:34,079 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:34] "GET /api/strategies/equityCurve?id=1&_t=1766931454067 HTTP/1.1" 200 - +2025-12-28 22:17:34,390 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:34] "GET /api/strategies/equityCurve?id=1&_t=1766931454067 HTTP/1.1" 200 - +2025-12-28 22:17:34,394 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:34] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766931454067 HTTP/1.1" 200 - +2025-12-28 22:17:34,400 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:34] "GET /api/strategies/positions?id=1&_t=1766931454069 HTTP/1.1" 200 - +2025-12-28 22:17:35,655 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:35] "GET /api/strategies/equityCurve?id=2&_t=1766931455342 HTTP/1.1" 200 - +2025-12-28 22:17:35,659 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:35] "GET /api/strategies/equityCurve?id=2&_t=1766931455342 HTTP/1.1" 200 - +2025-12-28 22:17:35,666 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:35] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766931455342 HTTP/1.1" 200 - +2025-12-28 22:17:35,670 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:35] "GET /api/strategies/positions?id=2&_t=1766931455343 HTTP/1.1" 200 - +2025-12-28 22:17:36,226 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:36] "GET /api/strategies/equityCurve?id=1&_t=1766931456045 HTTP/1.1" 200 - +2025-12-28 22:17:36,531 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:36] "GET /api/strategies/equityCurve?id=1&_t=1766931456045 HTTP/1.1" 200 - +2025-12-28 22:17:36,534 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:36] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766931456045 HTTP/1.1" 200 - +2025-12-28 22:17:36,537 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:36] "GET /api/strategies/positions?id=1&_t=1766931456047 HTTP/1.1" 200 - +2025-12-28 22:17:37,799 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:37] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931457481 HTTP/1.1" 200 - +2025-12-28 22:17:37,802 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:37] "GET /api/strategies/positions?id=1&_t=1766931457482 HTTP/1.1" 200 - +2025-12-28 22:17:39,048 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:39] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931459041 HTTP/1.1" 200 - +2025-12-28 22:17:41,360 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:41] "GET /api/strategies/positions?id=1&_t=1766931461047 HTTP/1.1" 200 - +2025-12-28 22:17:41,622 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:41] "GET /api/strategies/equityCurve?id=2&_t=1766931461362 HTTP/1.1" 200 - +2025-12-28 22:17:41,689 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:41] "GET /api/strategies/equityCurve?id=2&_t=1766931461362 HTTP/1.1" 200 - +2025-12-28 22:17:41,695 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:41] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766931461362 HTTP/1.1" 200 - +2025-12-28 22:17:41,700 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:41] "GET /api/strategies/positions?id=2&_t=1766931461363 HTTP/1.1" 200 - +2025-12-28 22:17:42,369 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:42] "GET /api/strategies/equityCurve?id=1&_t=1766931462360 HTTP/1.1" 200 - +2025-12-28 22:17:42,685 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:42] "GET /api/strategies/equityCurve?id=1&_t=1766931462360 HTTP/1.1" 200 - +2025-12-28 22:17:42,687 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:42] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766931462360 HTTP/1.1" 200 - +2025-12-28 22:17:42,692 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:42] "GET /api/strategies/positions?id=1&_t=1766931462361 HTTP/1.1" 200 - +2025-12-28 22:17:45,675 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:45] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931465357 HTTP/1.1" 200 - +2025-12-28 22:17:47,369 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:47] "GET /api/strategies/positions?id=1&_t=1766931467361 HTTP/1.1" 200 - +2025-12-28 22:17:48,679 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:48] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931468356 HTTP/1.1" 200 - +2025-12-28 22:17:49,105 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:49] "GET /api/strategies/trades?id=1&_t=1766931469095 HTTP/1.1" 200 - +2025-12-28 22:17:51,020 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:51] "GET /api/strategies/equityCurve?id=2&_t=1766931470692 HTTP/1.1" 200 - +2025-12-28 22:17:51,024 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:51] "GET /api/strategies/equityCurve?id=2&_t=1766931470692 HTTP/1.1" 200 - +2025-12-28 22:17:51,029 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:51] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766931470692 HTTP/1.1" 200 - +2025-12-28 22:17:51,037 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:51] "GET /api/strategies/positions?id=2&_t=1766931470693 HTTP/1.1" 200 - +2025-12-28 22:17:51,043 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:51] "GET /api/strategies/trades?id=2&_t=1766931470693 HTTP/1.1" 200 - +2025-12-28 22:17:52,803 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:52] "GET /api/strategies/equityCurve?id=1&_t=1766931472793 HTTP/1.1" 200 - +2025-12-28 22:17:53,113 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:53] "GET /api/strategies/equityCurve?id=1&_t=1766931472793 HTTP/1.1" 200 - +2025-12-28 22:17:53,117 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:53] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766931472793 HTTP/1.1" 200 - +2025-12-28 22:17:53,121 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:53] "GET /api/strategies/positions?id=1&_t=1766931472794 HTTP/1.1" 200 - +2025-12-28 22:17:53,125 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:53] "GET /api/strategies/trades?id=1&_t=1766931472794 HTTP/1.1" 200 - +2025-12-28 22:17:56,116 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:56] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931475789 HTTP/1.1" 200 - +2025-12-28 22:17:56,194 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:56] "GET /api/market/types?_t=1766931475870 HTTP/1.1" 200 - +2025-12-28 22:17:56,203 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:56] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 22:17:56,213 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:56] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 22:17:56,351 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-28 22:17:56,667 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 22:17:56,711 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:56] "GET /api/dashboard/summary?_t=1766931476700 HTTP/1.1" 200 - +2025-12-28 22:17:57,027 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:17:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766931476700 HTTP/1.1" 200 - +2025-12-28 22:18:37,796 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:18:37] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931517477 HTTP/1.1" 200 - +2025-12-28 22:18:37,800 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:18:37] "GET /api/strategies/equityCurve?id=1&_t=1766931517479 HTTP/1.1" 200 - +2025-12-28 22:18:37,803 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:18:37] "GET /api/strategies/positions?id=1&_t=1766931517480 HTTP/1.1" 200 - +2025-12-28 22:19:37,490 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:19:37] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931577478 HTTP/1.1" 200 - +2025-12-28 22:19:37,796 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:19:37] "GET /api/strategies/equityCurve?id=1&_t=1766931577479 HTTP/1.1" 200 - +2025-12-28 22:19:37,800 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:19:37] "GET /api/strategies/positions?id=1&_t=1766931577480 HTTP/1.1" 200 - +2025-12-28 22:20:31,714 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:20:31] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931631367 HTTP/1.1" 200 - +2025-12-28 22:20:31,719 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:20:31] "GET /api/strategies/equityCurve?id=1&_t=1766931631373 HTTP/1.1" 200 - +2025-12-28 22:20:31,722 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:20:31] "GET /api/strategies/positions?id=1&_t=1766931631373 HTTP/1.1" 200 - +2025-12-28 22:20:31,979 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:20:31] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931631673 HTTP/1.1" 200 - +2025-12-28 22:20:33,483 - app.routes.strategy - INFO - Testing connection: exchange_id=binance +2025-12-28 22:20:33,483 - app.routes.strategy - INFO - API Key: kC5vP... (len=64) +2025-12-28 22:20:33,484 - app.routes.strategy - INFO - Secret Key: S5Blu... (len=64) +2025-12-28 22:20:35,521 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:20:35] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-28 22:20:35,525 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:20:35] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931634672 HTTP/1.1" 200 - +2025-12-28 22:20:35,996 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:20:35] "GET /api/strategies/positions?id=1&_t=1766931635684 HTTP/1.1" 200 - +2025-12-28 22:20:37,474 - app.routes.strategy - INFO - Testing connection: exchange_id=binance +2025-12-28 22:20:37,475 - app.routes.strategy - INFO - API Key: kC5vP... (len=64) +2025-12-28 22:20:37,475 - app.routes.strategy - INFO - Secret Key: S5Blu... (len=64) +2025-12-28 22:20:39,024 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:20:39] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-28 22:20:39,028 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:20:39] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931637672 HTTP/1.1" 200 - +2025-12-28 22:20:40,983 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:20:40] "GET /api/strategies/equityCurve?id=1&_t=1766931640672 HTTP/1.1" 200 - +2025-12-28 22:20:40,987 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:20:40] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931640673 HTTP/1.1" 200 - +2025-12-28 22:20:40,992 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:20:40] "GET /api/strategies/positions?id=1&_t=1766931640684 HTTP/1.1" 200 - +2025-12-28 22:20:43,679 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:20:43] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931643672 HTTP/1.1" 200 - +2025-12-28 22:20:46,000 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:20:46] "GET /api/strategies/positions?id=1&_t=1766931645684 HTTP/1.1" 200 - +2025-12-28 22:20:46,678 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:20:46] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931646672 HTTP/1.1" 200 - +2025-12-28 22:20:49,980 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:20:49] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931649672 HTTP/1.1" 200 - +2025-12-28 22:20:50,691 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:20:50] "GET /api/strategies/positions?id=1&_t=1766931650684 HTTP/1.1" 200 - +2025-12-28 22:20:52,993 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:20:52] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931652672 HTTP/1.1" 200 - +2025-12-28 22:20:55,679 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:20:55] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931655672 HTTP/1.1" 200 - +2025-12-28 22:20:56,004 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:20:56] "GET /api/strategies/positions?id=1&_t=1766931655684 HTTP/1.1" 200 - +2025-12-28 22:20:58,679 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:20:58] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931658673 HTTP/1.1" 200 - +2025-12-28 22:21:00,996 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:21:00] "GET /api/strategies/positions?id=1&_t=1766931660684 HTTP/1.1" 200 - +2025-12-28 22:21:01,678 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:21:01] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931661672 HTTP/1.1" 200 - +2025-12-28 22:21:04,990 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:21:04] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931664673 HTTP/1.1" 200 - +2025-12-28 22:21:05,692 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:21:05] "GET /api/strategies/positions?id=1&_t=1766931665685 HTTP/1.1" 200 - +2025-12-28 22:21:08,782 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-28 22:21:08,788 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-28 22:21:09,254 - app.services.strategy - INFO - Found 2 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}] +2025-12-28 22:21:09,254 - app - INFO - Restoring 2 running strategies... +2025-12-28 22:21:09,255 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-28 22:21:09,255 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-28 22:21:09,255 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-28 22:21:09,255 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-28 22:21:09,255 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-28 22:21:09,255 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-28 22:21:09,255 - app - INFO - Strategy restore completed: 2/2 restored +2025-12-28 22:21:09,258 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-28 22:21:09,258 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-28 22:21:09,285 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-28 22:21:09,285 - werkzeug - INFO - Press CTRL+C to quit +2025-12-28 22:21:10,698 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:21:10] "GET /api/strategies/equityCurve?id=1&_t=1766931670673 HTTP/1.1" 200 - +2025-12-28 22:21:10,702 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:21:10] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931670673 HTTP/1.1" 200 - +2025-12-28 22:21:11,005 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:21:11] "GET /api/strategies/positions?id=1&_t=1766931670684 HTTP/1.1" 200 - +2025-12-28 22:21:11,356 - app.routes.strategy - INFO - Testing connection: exchange_id=binance +2025-12-28 22:21:11,356 - app.routes.strategy - INFO - API Key: kC5vP... (len=64) +2025-12-28 22:21:11,356 - app.routes.strategy - INFO - Secret Key: S5Blu... (len=64) +2025-12-28 22:21:14,487 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:21:14] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-28 22:21:14,491 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:21:14] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931673673 HTTP/1.1" 200 - +2025-12-28 22:21:15,938 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 22:21:15,966 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2025-12-28 22:21:15,999 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:21:15] "GET /api/strategies/positions?id=1&_t=1766931675685 HTTP/1.1" 200 - +2025-12-28 22:21:16,594 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 22:21:16,612 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2025-12-28 22:21:16,680 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:21:16] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931676673 HTTP/1.1" 200 - +2025-12-28 22:21:19,994 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:21:19] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931679672 HTTP/1.1" 200 - +2025-12-28 22:21:21,495 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:21:21] "GET /api/strategies/positions?id=1&_t=1766931681479 HTTP/1.1" 200 - +2025-12-28 22:21:22,994 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:21:22] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931682673 HTTP/1.1" 200 - +2025-12-28 22:21:26,485 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:21:26] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931686475 HTTP/1.1" 200 - +2025-12-28 22:21:26,791 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:21:26] "GET /api/strategies/positions?id=1&_t=1766931686476 HTTP/1.1" 200 - +2025-12-28 22:21:29,792 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:21:29] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931689474 HTTP/1.1" 200 - +2025-12-28 22:21:31,479 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:21:31] "GET /api/strategies/positions?id=1&_t=1766931691471 HTTP/1.1" 200 - +2025-12-28 22:21:32,799 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:21:32] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931692479 HTTP/1.1" 200 - +2025-12-28 22:21:35,486 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:21:35] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931695477 HTTP/1.1" 200 - +2025-12-28 22:21:36,792 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:21:36] "GET /api/strategies/positions?id=1&_t=1766931696477 HTTP/1.1" 200 - +2025-12-28 22:21:38,480 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:21:38] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931698472 HTTP/1.1" 200 - +2025-12-28 22:21:41,810 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:21:41] "GET /api/strategies/equityCurve?id=1&_t=1766931701480 HTTP/1.1" 200 - +2025-12-28 22:21:41,816 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:21:41] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931701484 HTTP/1.1" 200 - +2025-12-28 22:21:41,824 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:21:41] "GET /api/strategies/positions?id=1&_t=1766931701485 HTTP/1.1" 200 - +2025-12-28 22:21:44,488 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:21:44] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931704478 HTTP/1.1" 200 - +2025-12-28 22:21:46,793 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:21:46] "GET /api/strategies/positions?id=1&_t=1766931706472 HTTP/1.1" 200 - +2025-12-28 22:21:47,482 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:21:47] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931707472 HTTP/1.1" 200 - +2025-12-28 22:21:50,801 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:21:50] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931710482 HTTP/1.1" 200 - +2025-12-28 22:21:51,492 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:21:51] "GET /api/strategies/positions?id=1&_t=1766931711483 HTTP/1.1" 200 - +2025-12-28 22:21:53,910 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:21:53] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931713479 HTTP/1.1" 200 - +2025-12-28 22:21:56,490 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:21:56] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931716480 HTTP/1.1" 200 - +2025-12-28 22:21:56,798 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:21:56] "GET /api/strategies/positions?id=1&_t=1766931716481 HTTP/1.1" 200 - +2025-12-28 22:21:59,793 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:21:59] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931719479 HTTP/1.1" 200 - +2025-12-28 22:22:01,480 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:22:01] "GET /api/strategies/positions?id=1&_t=1766931721472 HTTP/1.1" 200 - +2025-12-28 22:22:02,791 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:22:02] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931722477 HTTP/1.1" 200 - +2025-12-28 22:22:04,680 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:22:04] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931724672 HTTP/1.1" 200 - +2025-12-28 22:22:05,480 - app.routes.strategy - INFO - Testing connection: exchange_id=binance +2025-12-28 22:22:05,480 - app.routes.strategy - INFO - API Key: kC5vP... (len=64) +2025-12-28 22:22:05,480 - app.routes.strategy - INFO - Secret Key: S5Blu... (len=64) +2025-12-28 22:22:08,112 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:22:08] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-28 22:22:08,117 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:22:08] "GET /api/strategies/positions?id=1&_t=1766931725684 HTTP/1.1" 200 - +2025-12-28 22:22:08,122 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:22:08] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931727673 HTTP/1.1" 200 - +2025-12-28 22:22:10,988 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:22:10] "GET /api/strategies/equityCurve?id=1&_t=1766931730672 HTTP/1.1" 200 - +2025-12-28 22:22:10,991 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:22:10] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931730673 HTTP/1.1" 200 - +2025-12-28 22:22:10,995 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:22:10] "GET /api/strategies/positions?id=1&_t=1766931730684 HTTP/1.1" 200 - +2025-12-28 22:22:13,680 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:22:13] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931733672 HTTP/1.1" 200 - +2025-12-28 22:22:16,009 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:22:16] "GET /api/strategies/positions?id=1&_t=1766931735684 HTTP/1.1" 200 - +2025-12-28 22:22:16,678 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:22:16] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931736672 HTTP/1.1" 200 - +2025-12-28 22:22:19,993 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:22:19] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931739672 HTTP/1.1" 200 - +2025-12-28 22:22:20,704 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:22:20] "GET /api/strategies/positions?id=1&_t=1766931740693 HTTP/1.1" 200 - +2025-12-28 22:22:22,994 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:22:22] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931742672 HTTP/1.1" 200 - +2025-12-28 22:22:25,680 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:22:25] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931745672 HTTP/1.1" 200 - +2025-12-28 22:22:26,005 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:22:26] "GET /api/strategies/positions?id=1&_t=1766931745684 HTTP/1.1" 200 - +2025-12-28 22:22:28,679 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:22:28] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931748672 HTTP/1.1" 200 - +2025-12-28 22:22:31,000 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:22:31] "GET /api/strategies/positions?id=1&_t=1766931750683 HTTP/1.1" 200 - +2025-12-28 22:22:31,679 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:22:31] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931751672 HTTP/1.1" 200 - +2025-12-28 22:22:34,988 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:22:34] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931754673 HTTP/1.1" 200 - +2025-12-28 22:22:35,691 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:22:35] "GET /api/strategies/positions?id=1&_t=1766931755683 HTTP/1.1" 200 - +2025-12-28 22:22:37,994 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:22:37] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931757681 HTTP/1.1" 200 - +2025-12-28 22:22:40,680 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:22:40] "GET /api/strategies/equityCurve?id=1&_t=1766931760672 HTTP/1.1" 200 - +2025-12-28 22:22:40,986 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:22:40] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931760672 HTTP/1.1" 200 - +2025-12-28 22:22:40,993 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:22:40] "GET /api/strategies/positions?id=1&_t=1766931760684 HTTP/1.1" 200 - +2025-12-28 22:22:43,985 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:22:43] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931763673 HTTP/1.1" 200 - +2025-12-28 22:22:45,692 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:22:45] "GET /api/strategies/positions?id=1&_t=1766931765685 HTTP/1.1" 200 - +2025-12-28 22:22:46,980 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:22:46] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931766672 HTTP/1.1" 200 - +2025-12-28 22:22:49,680 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:22:49] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931769672 HTTP/1.1" 200 - +2025-12-28 22:22:51,006 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:22:51] "GET /api/strategies/positions?id=1&_t=1766931770685 HTTP/1.1" 200 - +2025-12-28 22:22:52,679 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:22:52] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931772672 HTTP/1.1" 200 - +2025-12-28 22:22:56,789 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:22:56] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931776472 HTTP/1.1" 200 - +2025-12-28 22:22:56,793 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:22:56] "GET /api/strategies/positions?id=1&_t=1766931776473 HTTP/1.1" 200 - +2025-12-28 22:22:59,490 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:22:59] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931779483 HTTP/1.1" 200 - +2025-12-28 22:23:01,791 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:23:01] "GET /api/strategies/positions?id=1&_t=1766931781477 HTTP/1.1" 200 - +2025-12-28 22:23:02,492 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:23:02] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931782483 HTTP/1.1" 200 - +2025-12-28 22:23:05,795 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:23:05] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931785477 HTTP/1.1" 200 - +2025-12-28 22:23:06,484 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:23:06] "GET /api/strategies/positions?id=1&_t=1766931786476 HTTP/1.1" 200 - +2025-12-28 22:23:08,787 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:23:08] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931788474 HTTP/1.1" 200 - +2025-12-28 22:23:11,492 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:23:11] "GET /api/strategies/equityCurve?id=1&_t=1766931791481 HTTP/1.1" 200 - +2025-12-28 22:23:11,798 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:23:11] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931791482 HTTP/1.1" 200 - +2025-12-28 22:23:11,802 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:23:11] "GET /api/strategies/positions?id=1&_t=1766931791482 HTTP/1.1" 200 - +2025-12-28 22:23:14,790 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:23:14] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931794474 HTTP/1.1" 200 - +2025-12-28 22:23:16,488 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:23:16] "GET /api/strategies/positions?id=1&_t=1766931796480 HTTP/1.1" 200 - +2025-12-28 22:23:17,789 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:23:17] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931797480 HTTP/1.1" 200 - +2025-12-28 22:23:20,494 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:23:20] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931800484 HTTP/1.1" 200 - +2025-12-28 22:23:21,795 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:23:21] "GET /api/strategies/positions?id=1&_t=1766931801476 HTTP/1.1" 200 - +2025-12-28 22:23:23,480 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:23:23] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931803470 HTTP/1.1" 200 - +2025-12-28 22:23:26,790 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:23:26] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931806472 HTTP/1.1" 200 - +2025-12-28 22:23:26,794 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:23:26] "GET /api/strategies/positions?id=1&_t=1766931806473 HTTP/1.1" 200 - +2025-12-28 22:23:29,489 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:23:29] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931809480 HTTP/1.1" 200 - +2025-12-28 22:23:31,797 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:23:31] "GET /api/strategies/positions?id=1&_t=1766931811481 HTTP/1.1" 200 - +2025-12-28 22:23:32,482 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:23:32] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931812474 HTTP/1.1" 200 - +2025-12-28 22:23:35,789 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:23:35] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931815473 HTTP/1.1" 200 - +2025-12-28 22:23:36,481 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:23:36] "GET /api/strategies/positions?id=1&_t=1766931816470 HTTP/1.1" 200 - +2025-12-28 22:23:36,816 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87951.95, pending_signals=1 +2025-12-28 22:23:36,818 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87951.95, 'position_size': 0, 'timestamp': 1766931780}] +2025-12-28 22:23:38,787 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:23:38] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931818471 HTTP/1.1" 200 - +2025-12-28 22:23:41,488 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:23:41] "GET /api/strategies/equityCurve?id=1&_t=1766931821477 HTTP/1.1" 200 - +2025-12-28 22:23:41,796 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:23:41] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931821478 HTTP/1.1" 200 - +2025-12-28 22:23:41,800 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:23:41] "GET /api/strategies/positions?id=1&_t=1766931821478 HTTP/1.1" 200 - +2025-12-28 22:23:44,789 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:23:44] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931824474 HTTP/1.1" 200 - +2025-12-28 22:23:46,490 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:23:46] "GET /api/strategies/positions?id=1&_t=1766931826481 HTTP/1.1" 200 - +2025-12-28 22:23:46,657 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87951.95, pending_signals=1 +2025-12-28 22:23:46,659 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87951.95, 'position_size': 0, 'timestamp': 1766931780}] +2025-12-28 22:23:47,797 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:23:47] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931827482 HTTP/1.1" 200 - +2025-12-28 22:23:50,491 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:23:50] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931830480 HTTP/1.1" 200 - +2025-12-28 22:23:51,797 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:23:51] "GET /api/strategies/positions?id=1&_t=1766931831477 HTTP/1.1" 200 - +2025-12-28 22:23:55,099 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:23:55] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766931833472 HTTP/1.1" 200 - +2025-12-28 22:23:55,556 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:23:55] "GET /api/strategies?_t=1766931835513 HTTP/1.1" 200 - +2025-12-28 22:23:56,780 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87923.93, pending_signals=1 +2025-12-28 22:23:56,784 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87923.93, 'position_size': 0, 'timestamp': 1766931780}] +2025-12-28 22:24:06,665 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87923.93, pending_signals=1 +2025-12-28 22:24:06,669 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87923.93, 'position_size': 0, 'timestamp': 1766931840}] +2025-12-28 22:24:17,394 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87937.1, pending_signals=2 +2025-12-28 22:24:17,397 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87923.92, 'position_size': 0, 'timestamp': 1766931780}] +2025-12-28 22:24:26,672 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87937.1, pending_signals=2 +2025-12-28 22:24:26,674 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87923.92, 'position_size': 0, 'timestamp': 1766931780}] +2025-12-28 22:24:34,400 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:24:34] "GET /api/dashboard/summary?_t=1766931874383 HTTP/1.1" 200 - +2025-12-28 22:24:34,407 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:24:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766931874383 HTTP/1.1" 200 - +2025-12-28 22:24:36,771 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87943.36, pending_signals=2 +2025-12-28 22:24:36,773 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87923.92, 'position_size': 0, 'timestamp': 1766931780}] +2025-12-28 22:24:46,666 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87943.36, pending_signals=2 +2025-12-28 22:24:46,668 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87923.92, 'position_size': 0, 'timestamp': 1766931780}] +2025-12-28 22:24:56,862 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87943.37, pending_signals=2 +2025-12-28 22:24:56,864 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87923.92, 'position_size': 0, 'timestamp': 1766931780}] +2025-12-28 22:25:16,767 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT +2025-12-28 22:25:16,768 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-28 22:25:40,191 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:25:40] "GET /api/strategies?_t=1766931940185 HTTP/1.1" 200 - +2025-12-28 22:25:46,955 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-28 22:25:46,962 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-28 22:25:47,357 - app.services.strategy - INFO - Found 2 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}] +2025-12-28 22:25:47,357 - app - INFO - Restoring 2 running strategies... +2025-12-28 22:25:47,358 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-28 22:25:47,358 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-28 22:25:47,358 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-28 22:25:47,358 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-28 22:25:47,358 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-28 22:25:47,358 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-28 22:25:47,359 - app - INFO - Strategy restore completed: 2/2 restored +2025-12-28 22:25:47,359 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-28 22:25:47,361 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-28 22:25:47,387 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-28 22:25:47,387 - werkzeug - INFO - Press CTRL+C to quit +2025-12-28 22:25:50,410 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:25:50] "GET /api/dashboard/summary?_t=1766931950400 HTTP/1.1" 200 - +2025-12-28 22:25:50,419 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:25:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766931950400 HTTP/1.1" 200 - +2025-12-28 22:25:51,412 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:25:51] "GET /api/dashboard/summary?_t=1766931951404 HTTP/1.1" 200 - +2025-12-28 22:25:51,419 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:25:51] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766931951404 HTTP/1.1" 200 - +2025-12-28 22:25:52,106 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 22:25:52,125 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2025-12-28 22:25:52,636 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:25:52] "GET /api/strategies?_t=1766931952624 HTTP/1.1" 200 - +2025-12-28 22:25:53,023 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 22:25:53,040 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2025-12-28 22:25:55,613 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:25:55] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 22:25:55,620 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:25:55] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 22:25:55,919 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:25:55] "GET /api/credentials/list?user_id=1&_t=1766931955605 HTTP/1.1" 200 - +2025-12-28 22:27:01,401 - app.routes.strategy - INFO - Testing connection: exchange_id=binance +2025-12-28 22:27:01,402 - app.routes.strategy - INFO - API Key: kC5vP... (len=64) +2025-12-28 22:27:01,402 - app.routes.strategy - INFO - Secret Key: S5Blu... (len=64) +2025-12-28 22:27:02,794 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:27:02] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-28 22:27:33,278 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87974.33, pending_signals=1 +2025-12-28 22:27:33,279 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87974.33, 'position_size': 0, 'timestamp': 1766932020}] +2025-12-28 22:27:43,080 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87974.33, pending_signals=1 +2025-12-28 22:27:43,083 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87974.33, 'position_size': 0, 'timestamp': 1766932020}] +2025-12-28 22:27:54,068 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87974.32, pending_signals=1 +2025-12-28 22:27:54,070 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87974.33, 'position_size': 0, 'timestamp': 1766932020}] +2025-12-28 22:28:03,080 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87974.32, pending_signals=2 +2025-12-28 22:28:03,082 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87974.33, 'position_size': 0, 'timestamp': 1766932020}] +2025-12-28 22:28:13,185 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87974.32, pending_signals=2 +2025-12-28 22:28:13,187 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87974.33, 'position_size': 0, 'timestamp': 1766932020}] +2025-12-28 22:28:23,082 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87974.32, pending_signals=2 +2025-12-28 22:28:23,084 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87974.33, 'position_size': 0, 'timestamp': 1766932020}] +2025-12-28 22:28:33,277 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87974.33, pending_signals=2 +2025-12-28 22:28:33,279 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 87974.33, 'position_size': 0.08, 'timestamp': 1766932020}, {'type': 'close_short', 'trigger_price': 87974.33, 'position_size': 0, 'timestamp': 1766932020}] +2025-12-28 22:28:33,287 - app.services.trading_executor - INFO - Strategy 2 signal executed: open_long @ 87974.33 +2025-12-28 22:28:43,085 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87974.33, pending_signals=2 +2025-12-28 22:28:43,094 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 87974.33, 'position_size': 0.08, 'timestamp': 1766932020}, {'type': 'close_short', 'trigger_price': 87974.33, 'position_size': 0, 'timestamp': 1766932020}] +2025-12-28 22:28:53,981 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87974.33, pending_signals=2 +2025-12-28 22:28:53,990 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 87974.33, 'position_size': 0.08, 'timestamp': 1766932020}, {'type': 'close_short', 'trigger_price': 87974.33, 'position_size': 0, 'timestamp': 1766932020}] +2025-12-28 22:28:57,605 - app.routes.strategy - INFO - Testing connection: exchange_id=binance +2025-12-28 22:28:57,605 - app.routes.strategy - INFO - API Key: kC5vP... (len=64) +2025-12-28 22:28:57,605 - app.routes.strategy - INFO - Secret Key: S5Blu... (len=64) +2025-12-28 22:29:00,271 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:29:00] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-28 22:30:35,479 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-28 22:30:35,484 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-28 22:30:35,902 - app.services.strategy - INFO - Found 2 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}] +2025-12-28 22:30:35,902 - app - INFO - Restoring 2 running strategies... +2025-12-28 22:30:35,903 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-28 22:30:35,903 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-28 22:30:35,903 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-28 22:30:35,903 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-28 22:30:35,903 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-28 22:30:35,903 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-28 22:30:35,903 - app - INFO - Strategy restore completed: 2/2 restored +2025-12-28 22:30:35,904 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-28 22:30:35,906 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-28 22:30:35,931 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-28 22:30:35,931 - werkzeug - INFO - Press CTRL+C to quit +2025-12-28 22:30:39,156 - app.routes.strategy - INFO - Testing connection: exchange_id=binance +2025-12-28 22:30:39,157 - app.routes.strategy - INFO - API Key: kC5vP... (len=64) +2025-12-28 22:30:39,157 - app.routes.strategy - INFO - Secret Key: S5Blu... (len=64) +2025-12-28 22:30:42,163 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 22:30:42,184 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2025-12-28 22:30:43,039 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:30:43] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-28 22:30:43,150 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=1, position=1, entry_price=87930.3, highest=87981.02 +2025-12-28 22:30:43,170 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2025-12-28 22:32:44,037 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87951.34, pending_signals=1 +2025-12-28 22:32:44,062 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87951.34, 'position_size': 0, 'timestamp': 1766932320}] +2025-12-28 22:32:44,070 - app.services.trading_executor - INFO - Strategy 2 signal executed: close_long @ 87951.34 +2025-12-28 22:32:53,208 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87951.34, pending_signals=1 +2025-12-28 22:32:53,217 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87951.34, 'position_size': 0, 'timestamp': 1766932320}] +2025-12-28 22:33:03,410 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87942.7, pending_signals=2 +2025-12-28 22:33:03,413 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87951.34, 'position_size': 0, 'timestamp': 1766932320}, {'type': 'open_short', 'trigger_price': 87951.34, 'position_size': 0.08, 'timestamp': 1766932320}] +2025-12-28 22:33:03,420 - app.services.trading_executor - INFO - Strategy 2 signal executed: open_short @ 87951.34 +2025-12-28 22:33:13,210 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87942.7, pending_signals=2 +2025-12-28 22:33:13,212 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87951.34, 'position_size': 0, 'timestamp': 1766932320}, {'type': 'open_short', 'trigger_price': 87951.34, 'position_size': 0.08, 'timestamp': 1766932320}] +2025-12-28 22:33:23,901 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87934.2, pending_signals=2 +2025-12-28 22:33:23,910 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87951.34, 'position_size': 0, 'timestamp': 1766932320}, {'type': 'open_short', 'trigger_price': 87951.34, 'position_size': 0.08, 'timestamp': 1766932320}] +2025-12-28 22:33:33,213 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87934.2, pending_signals=2 +2025-12-28 22:33:33,222 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87951.34, 'position_size': 0, 'timestamp': 1766932320}, {'type': 'open_short', 'trigger_price': 87951.34, 'position_size': 0.08, 'timestamp': 1766932320}] +2025-12-28 22:33:44,037 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87951.34, pending_signals=2 +2025-12-28 22:33:44,046 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87942.71, 'position_size': 0, 'timestamp': 1766932320}] +2025-12-28 22:33:53,217 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87951.34, pending_signals=2 +2025-12-28 22:33:53,226 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87942.71, 'position_size': 0, 'timestamp': 1766932320}] +2025-12-28 22:36:03,317 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-28 22:36:03,324 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-28 22:36:03,743 - app.services.strategy - INFO - Found 2 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}] +2025-12-28 22:36:03,743 - app - INFO - Restoring 2 running strategies... +2025-12-28 22:36:03,744 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-28 22:36:03,744 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-28 22:36:03,744 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-28 22:36:03,744 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-28 22:36:03,744 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-28 22:36:03,744 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-28 22:36:03,744 - app - INFO - Strategy restore completed: 2/2 restored +2025-12-28 22:36:03,747 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-28 22:36:03,747 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-28 22:36:03,772 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-28 22:36:03,772 - werkzeug - INFO - Press CTRL+C to quit +2025-12-28 22:36:08,533 - app.routes.strategy - INFO - Testing connection: exchange_id=binance +2025-12-28 22:36:08,578 - app.routes.strategy - INFO - API Key: kC5vP... (len=64) +2025-12-28 22:36:08,610 - app.routes.strategy - INFO - Secret Key: S5Blu... (len=64) +2025-12-28 22:36:08,769 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 22:36:08,788 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2025-12-28 22:36:09,155 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=1, position=-1, entry_price=87892.1, highest=87958.11 +2025-12-28 22:36:09,172 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2025-12-28 22:36:12,853 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:36:12] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-28 22:41:29,408 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87981.01, pending_signals=1 +2025-12-28 22:41:29,421 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87981.01, 'position_size': 0, 'timestamp': 1766932860}] +2025-12-28 22:41:29,433 - app.services.trading_executor - INFO - Strategy 2 signal executed: close_short @ 87981.01 +2025-12-28 22:41:39,247 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87981.01, pending_signals=1 +2025-12-28 22:41:39,250 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87981.01, 'position_size': 0, 'timestamp': 1766932860}] +2025-12-28 22:41:49,406 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=88004.0, pending_signals=1 +2025-12-28 22:41:49,408 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 88004.0, 'position_size': 0, 'timestamp': 1766932860}] +2025-12-28 22:41:59,247 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=88004.0, pending_signals=1 +2025-12-28 22:41:59,249 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 88004.0, 'position_size': 0, 'timestamp': 1766932860}] +2025-12-28 22:42:10,337 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=88038.41, pending_signals=2 +2025-12-28 22:42:10,339 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 88088.0, 'position_size': 0, 'timestamp': 1766932860}] +2025-12-28 22:42:19,249 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=88038.41, pending_signals=2 +2025-12-28 22:42:19,251 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 88088.0, 'position_size': 0, 'timestamp': 1766932860}] +2025-12-28 22:42:21,177 - app.routes.strategy - INFO - Testing connection: exchange_id=binance +2025-12-28 22:42:21,177 - app.routes.strategy - INFO - API Key: kC5vP... (len=64) +2025-12-28 22:42:21,177 - app.routes.strategy - INFO - Secret Key: S5Blu... (len=64) +2025-12-28 22:42:25,057 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:42:25] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-28 22:42:29,868 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=88000.0, pending_signals=2 +2025-12-28 22:42:29,870 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 88088.0, 'position_size': 0, 'timestamp': 1766932860}] +2025-12-28 22:42:39,253 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=88000.0, pending_signals=2 +2025-12-28 22:42:39,255 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 88088.0, 'position_size': 0, 'timestamp': 1766932860}] +2025-12-28 22:42:50,125 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87974.92, pending_signals=3 +2025-12-28 22:42:50,127 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87974.92, 'position_size': 0, 'timestamp': 1766932920}, {'type': 'close_short', 'trigger_price': 88088.0, 'position_size': 0, 'timestamp': 1766932860}] +2025-12-28 22:42:59,255 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87974.92, pending_signals=3 +2025-12-28 22:42:59,257 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87974.92, 'position_size': 0, 'timestamp': 1766932920}, {'type': 'close_short', 'trigger_price': 88088.0, 'position_size': 0, 'timestamp': 1766932860}] +2025-12-28 22:43:10,154 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87998.73, pending_signals=2 +2025-12-28 22:43:10,156 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87961.73, 'position_size': 0, 'timestamp': 1766932920}] +2025-12-28 22:43:19,259 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87998.73, pending_signals=2 +2025-12-28 22:43:19,262 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87961.73, 'position_size': 0, 'timestamp': 1766932920}] +2025-12-28 22:43:29,424 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87992.69, pending_signals=2 +2025-12-28 22:43:29,426 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87961.73, 'position_size': 0, 'timestamp': 1766932920}] +2025-12-28 22:43:32,406 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:43:32] "GET /api/dashboard/summary?_t=1766933012096 HTTP/1.1" 200 - +2025-12-28 22:43:32,411 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:43:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766933012096 HTTP/1.1" 200 - +2025-12-28 22:43:39,261 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87992.69, pending_signals=2 +2025-12-28 22:43:39,263 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87961.73, 'position_size': 0, 'timestamp': 1766932920}] +2025-12-28 22:43:44,130 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:43:44] "GET /api/strategies?_t=1766933024121 HTTP/1.1" 200 - +2025-12-28 22:43:45,622 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:43:45] "GET /api/strategies/equityCurve?id=1&_t=1766933025299 HTTP/1.1" 200 - +2025-12-28 22:43:45,628 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:43:45] "GET /api/strategies/equityCurve?id=1&_t=1766933025299 HTTP/1.1" 200 - +2025-12-28 22:43:45,633 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:43:45] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766933025299 HTTP/1.1" 200 - +2025-12-28 22:43:45,639 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:43:45] "GET /api/strategies/positions?id=1&_t=1766933025303 HTTP/1.1" 200 - +2025-12-28 22:43:46,308 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:43:46] "GET /api/strategies/trades?id=1&_t=1766933026301 HTTP/1.1" 200 - +2025-12-28 22:43:48,017 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:43:48] "GET /api/strategies/equityCurve?id=2&_t=1766933027694 HTTP/1.1" 200 - +2025-12-28 22:43:48,023 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:43:48] "GET /api/strategies/equityCurve?id=2&_t=1766933027694 HTTP/1.1" 200 - +2025-12-28 22:43:48,028 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:43:48] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933027694 HTTP/1.1" 200 - +2025-12-28 22:43:48,034 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:43:48] "GET /api/strategies/positions?id=2&_t=1766933027695 HTTP/1.1" 200 - +2025-12-28 22:43:48,040 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:43:48] "GET /api/strategies/trades?id=2&_t=1766933027695 HTTP/1.1" 200 - +2025-12-28 22:43:49,370 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87992.69, pending_signals=2 +2025-12-28 22:43:49,372 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87961.73, 'position_size': 0, 'timestamp': 1766932920}] +2025-12-28 22:43:50,696 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:43:50] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933030690 HTTP/1.1" 200 - +2025-12-28 22:43:53,012 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:43:53] "GET /api/strategies/positions?id=2&_t=1766933032694 HTTP/1.1" 200 - +2025-12-28 22:43:53,697 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:43:53] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933033690 HTTP/1.1" 200 - +2025-12-28 22:43:57,007 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:43:57] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933036691 HTTP/1.1" 200 - +2025-12-28 22:43:57,702 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:43:57] "GET /api/strategies/positions?id=2&_t=1766933037695 HTTP/1.1" 200 - +2025-12-28 22:43:59,267 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87992.69, pending_signals=2 +2025-12-28 22:43:59,270 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87961.73, 'position_size': 0, 'timestamp': 1766932920}] +2025-12-28 22:44:00,014 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:44:00] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933039691 HTTP/1.1" 200 - +2025-12-28 22:44:02,697 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:44:02] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933042690 HTTP/1.1" 200 - +2025-12-28 22:44:03,014 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:44:03] "GET /api/strategies/positions?id=2&_t=1766933042694 HTTP/1.1" 200 - +2025-12-28 22:44:06,007 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:44:06] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933045689 HTTP/1.1" 200 - +2025-12-28 22:44:07,702 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:44:07] "GET /api/strategies/positions?id=2&_t=1766933047694 HTTP/1.1" 200 - +2025-12-28 22:44:09,004 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:44:09] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933048690 HTTP/1.1" 200 - +2025-12-28 22:44:11,698 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:44:11] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933051690 HTTP/1.1" 200 - +2025-12-28 22:44:13,012 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:44:13] "GET /api/strategies/positions?id=2&_t=1766933052695 HTTP/1.1" 200 - +2025-12-28 22:44:14,697 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:44:14] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933054690 HTTP/1.1" 200 - +2025-12-28 22:44:18,013 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:44:18] "GET /api/strategies/equityCurve?id=2&_t=1766933057689 HTTP/1.1" 200 - +2025-12-28 22:44:18,031 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:44:18] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933057690 HTTP/1.1" 200 - +2025-12-28 22:44:18,035 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:44:18] "GET /api/strategies/positions?id=2&_t=1766933057695 HTTP/1.1" 200 - +2025-12-28 22:44:20,696 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:44:20] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933060690 HTTP/1.1" 200 - +2025-12-28 22:44:23,003 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:44:23] "GET /api/strategies/positions?id=2&_t=1766933062694 HTTP/1.1" 200 - +2025-12-28 22:44:23,695 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:44:23] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933063689 HTTP/1.1" 200 - +2025-12-28 22:44:27,008 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:44:27] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933066690 HTTP/1.1" 200 - +2025-12-28 22:44:27,705 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:44:27] "GET /api/strategies/positions?id=2&_t=1766933067694 HTTP/1.1" 200 - +2025-12-28 22:44:30,007 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:44:30] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933069690 HTTP/1.1" 200 - +2025-12-28 22:44:32,697 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:44:32] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933072690 HTTP/1.1" 200 - +2025-12-28 22:44:33,007 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:44:33] "GET /api/strategies/positions?id=2&_t=1766933072695 HTTP/1.1" 200 - +2025-12-28 22:44:36,003 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:44:36] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933075690 HTTP/1.1" 200 - +2025-12-28 22:44:37,701 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:44:37] "GET /api/strategies/positions?id=2&_t=1766933077694 HTTP/1.1" 200 - +2025-12-28 22:44:38,997 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:44:38] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933078690 HTTP/1.1" 200 - +2025-12-28 22:44:41,696 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:44:41] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933081689 HTTP/1.1" 200 - +2025-12-28 22:44:43,012 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:44:43] "GET /api/strategies/positions?id=2&_t=1766933082695 HTTP/1.1" 200 - +2025-12-28 22:44:44,696 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:44:44] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933084690 HTTP/1.1" 200 - +2025-12-28 22:44:47,999 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:44:47] "GET /api/strategies/equityCurve?id=2&_t=1766933087690 HTTP/1.1" 200 - +2025-12-28 22:44:48,003 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:44:48] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933087690 HTTP/1.1" 200 - +2025-12-28 22:44:48,007 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:44:48] "GET /api/strategies/positions?id=2&_t=1766933087695 HTTP/1.1" 200 - +2025-12-28 22:44:50,699 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:44:50] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933090691 HTTP/1.1" 200 - +2025-12-28 22:44:53,012 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:44:53] "GET /api/strategies/positions?id=2&_t=1766933092695 HTTP/1.1" 200 - +2025-12-28 22:44:53,699 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:44:53] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933093691 HTTP/1.1" 200 - +2025-12-28 22:44:57,010 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:44:57] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933096690 HTTP/1.1" 200 - +2025-12-28 22:44:57,703 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:44:57] "GET /api/strategies/positions?id=2&_t=1766933097696 HTTP/1.1" 200 - +2025-12-28 22:45:00,004 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:45:00] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933099690 HTTP/1.1" 200 - +2025-12-28 22:45:02,696 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:45:02] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933102690 HTTP/1.1" 200 - +2025-12-28 22:45:03,010 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:45:03] "GET /api/strategies/positions?id=2&_t=1766933102696 HTTP/1.1" 200 - +2025-12-28 22:45:05,696 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:45:05] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933105690 HTTP/1.1" 200 - +2025-12-28 22:45:08,015 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:45:08] "GET /api/strategies/positions?id=2&_t=1766933107696 HTTP/1.1" 200 - +2025-12-28 22:45:08,696 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:45:08] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933108690 HTTP/1.1" 200 - +2025-12-28 22:45:12,001 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:45:12] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933111689 HTTP/1.1" 200 - +2025-12-28 22:45:12,703 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:45:12] "GET /api/strategies/positions?id=2&_t=1766933112695 HTTP/1.1" 200 - +2025-12-28 22:45:15,010 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:45:15] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933114689 HTTP/1.1" 200 - +2025-12-28 22:45:17,696 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:45:17] "GET /api/strategies/equityCurve?id=2&_t=1766933117689 HTTP/1.1" 200 - +2025-12-28 22:45:18,005 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:45:18] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933117690 HTTP/1.1" 200 - +2025-12-28 22:45:18,009 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:45:18] "GET /api/strategies/positions?id=2&_t=1766933117695 HTTP/1.1" 200 - +2025-12-28 22:45:21,004 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:45:21] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933120690 HTTP/1.1" 200 - +2025-12-28 22:45:22,702 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:45:22] "GET /api/strategies/positions?id=2&_t=1766933122695 HTTP/1.1" 200 - +2025-12-28 22:45:24,001 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:45:24] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933123690 HTTP/1.1" 200 - +2025-12-28 22:45:26,695 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:45:26] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933126689 HTTP/1.1" 200 - +2025-12-28 22:45:28,003 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:45:28] "GET /api/strategies/positions?id=2&_t=1766933127695 HTTP/1.1" 200 - +2025-12-28 22:45:29,695 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:45:29] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933129689 HTTP/1.1" 200 - +2025-12-28 22:45:33,002 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:45:33] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933132690 HTTP/1.1" 200 - +2025-12-28 22:45:33,006 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:45:33] "GET /api/strategies/positions?id=2&_t=1766933132694 HTTP/1.1" 200 - +2025-12-28 22:45:35,697 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:45:35] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933135690 HTTP/1.1" 200 - +2025-12-28 22:45:38,009 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:45:38] "GET /api/strategies/positions?id=2&_t=1766933137695 HTTP/1.1" 200 - +2025-12-28 22:45:38,698 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:45:38] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933138690 HTTP/1.1" 200 - +2025-12-28 22:45:42,009 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:45:42] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933141690 HTTP/1.1" 200 - +2025-12-28 22:45:42,701 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:45:42] "GET /api/strategies/positions?id=2&_t=1766933142695 HTTP/1.1" 200 - +2025-12-28 22:45:45,003 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:45:45] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933144690 HTTP/1.1" 200 - +2025-12-28 22:45:47,697 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:45:47] "GET /api/strategies/equityCurve?id=2&_t=1766933147690 HTTP/1.1" 200 - +2025-12-28 22:45:48,013 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:45:48] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933147691 HTTP/1.1" 200 - +2025-12-28 22:45:48,016 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:45:48] "GET /api/strategies/positions?id=2&_t=1766933147695 HTTP/1.1" 200 - +2025-12-28 22:45:51,005 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:45:51] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933150690 HTTP/1.1" 200 - +2025-12-28 22:45:52,701 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:45:52] "GET /api/strategies/positions?id=2&_t=1766933152695 HTTP/1.1" 200 - +2025-12-28 22:45:54,004 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:45:54] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933153690 HTTP/1.1" 200 - +2025-12-28 22:45:56,696 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:45:56] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933156690 HTTP/1.1" 200 - +2025-12-28 22:45:58,017 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:45:58] "GET /api/strategies/positions?id=2&_t=1766933157695 HTTP/1.1" 200 - +2025-12-28 22:45:59,697 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:45:59] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933159690 HTTP/1.1" 200 - +2025-12-28 22:46:02,998 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:46:02] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933162690 HTTP/1.1" 200 - +2025-12-28 22:46:03,003 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:46:03] "GET /api/strategies/positions?id=2&_t=1766933162695 HTTP/1.1" 200 - +2025-12-28 22:46:05,696 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:46:05] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933165691 HTTP/1.1" 200 - +2025-12-28 22:46:08,017 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:46:08] "GET /api/strategies/positions?id=2&_t=1766933167695 HTTP/1.1" 200 - +2025-12-28 22:46:08,695 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:46:08] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933168689 HTTP/1.1" 200 - +2025-12-28 22:46:12,002 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:46:12] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933171690 HTTP/1.1" 200 - +2025-12-28 22:46:12,702 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:46:12] "GET /api/strategies/positions?id=2&_t=1766933172695 HTTP/1.1" 200 - +2025-12-28 22:46:15,003 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:46:15] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933174690 HTTP/1.1" 200 - +2025-12-28 22:46:17,697 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:46:17] "GET /api/strategies/equityCurve?id=2&_t=1766933177690 HTTP/1.1" 200 - +2025-12-28 22:46:18,010 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:46:18] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933177690 HTTP/1.1" 200 - +2025-12-28 22:46:18,037 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:46:18] "GET /api/strategies/positions?id=2&_t=1766933177694 HTTP/1.1" 200 - +2025-12-28 22:46:21,001 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:46:21] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933180689 HTTP/1.1" 200 - +2025-12-28 22:46:22,701 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:46:22] "GET /api/strategies/positions?id=2&_t=1766933182695 HTTP/1.1" 200 - +2025-12-28 22:46:24,008 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:46:24] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933183689 HTTP/1.1" 200 - +2025-12-28 22:46:26,696 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:46:26] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933186690 HTTP/1.1" 200 - +2025-12-28 22:46:28,013 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:46:28] "GET /api/strategies/positions?id=2&_t=1766933187695 HTTP/1.1" 200 - +2025-12-28 22:46:29,696 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:46:29] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933189689 HTTP/1.1" 200 - +2025-12-28 22:46:33,007 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:46:33] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933192690 HTTP/1.1" 200 - +2025-12-28 22:46:33,010 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:46:33] "GET /api/strategies/positions?id=2&_t=1766933192694 HTTP/1.1" 200 - +2025-12-28 22:46:35,696 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:46:35] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933195689 HTTP/1.1" 200 - +2025-12-28 22:46:38,012 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:46:38] "GET /api/strategies/positions?id=2&_t=1766933197695 HTTP/1.1" 200 - +2025-12-28 22:46:38,696 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:46:38] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933198690 HTTP/1.1" 200 - +2025-12-28 22:46:42,009 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:46:42] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933201690 HTTP/1.1" 200 - +2025-12-28 22:46:42,701 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:46:42] "GET /api/strategies/positions?id=2&_t=1766933202694 HTTP/1.1" 200 - +2025-12-28 22:46:45,009 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:46:45] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933204691 HTTP/1.1" 200 - +2025-12-28 22:46:47,697 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:46:47] "GET /api/strategies/equityCurve?id=2&_t=1766933207689 HTTP/1.1" 200 - +2025-12-28 22:46:48,011 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:46:48] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933207690 HTTP/1.1" 200 - +2025-12-28 22:46:48,015 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:46:48] "GET /api/strategies/positions?id=2&_t=1766933207694 HTTP/1.1" 200 - +2025-12-28 22:46:51,003 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:46:51] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933210690 HTTP/1.1" 200 - +2025-12-28 22:46:52,701 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:46:52] "GET /api/strategies/positions?id=2&_t=1766933212695 HTTP/1.1" 200 - +2025-12-28 22:46:54,014 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:46:54] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933213690 HTTP/1.1" 200 - +2025-12-28 22:46:56,696 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:46:56] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933216690 HTTP/1.1" 200 - +2025-12-28 22:46:58,007 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:46:58] "GET /api/strategies/positions?id=2&_t=1766933217695 HTTP/1.1" 200 - +2025-12-28 22:46:59,698 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:46:59] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933219690 HTTP/1.1" 200 - +2025-12-28 22:47:02,998 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:47:02] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933222690 HTTP/1.1" 200 - +2025-12-28 22:47:03,003 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:47:03] "GET /api/strategies/positions?id=2&_t=1766933222695 HTTP/1.1" 200 - +2025-12-28 22:47:05,697 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:47:05] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933225691 HTTP/1.1" 200 - +2025-12-28 22:47:08,013 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:47:08] "GET /api/strategies/positions?id=2&_t=1766933227695 HTTP/1.1" 200 - +2025-12-28 22:47:08,696 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:47:08] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933228690 HTTP/1.1" 200 - +2025-12-28 22:47:11,999 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:47:11] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933231690 HTTP/1.1" 200 - +2025-12-28 22:47:12,703 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:47:12] "GET /api/strategies/positions?id=2&_t=1766933232696 HTTP/1.1" 200 - +2025-12-28 22:47:14,998 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:47:14] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933234690 HTTP/1.1" 200 - +2025-12-28 22:47:17,697 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:47:17] "GET /api/strategies/equityCurve?id=2&_t=1766933237690 HTTP/1.1" 200 - +2025-12-28 22:47:18,009 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:47:18] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933237690 HTTP/1.1" 200 - +2025-12-28 22:47:18,013 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:47:18] "GET /api/strategies/positions?id=2&_t=1766933237695 HTTP/1.1" 200 - +2025-12-28 22:47:21,014 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:47:21] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933240690 HTTP/1.1" 200 - +2025-12-28 22:47:22,701 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:47:22] "GET /api/strategies/positions?id=2&_t=1766933242695 HTTP/1.1" 200 - +2025-12-28 22:47:24,013 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:47:24] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933243690 HTTP/1.1" 200 - +2025-12-28 22:47:26,696 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:47:26] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933246690 HTTP/1.1" 200 - +2025-12-28 22:47:28,013 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:47:28] "GET /api/strategies/positions?id=2&_t=1766933247694 HTTP/1.1" 200 - +2025-12-28 22:47:29,698 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:47:29] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933249691 HTTP/1.1" 200 - +2025-12-28 22:47:33,001 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:47:33] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933252690 HTTP/1.1" 200 - +2025-12-28 22:47:33,007 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:47:33] "GET /api/strategies/positions?id=2&_t=1766933252696 HTTP/1.1" 200 - +2025-12-28 22:47:35,698 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:47:35] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933255690 HTTP/1.1" 200 - +2025-12-28 22:47:38,014 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:47:38] "GET /api/strategies/positions?id=2&_t=1766933257695 HTTP/1.1" 200 - +2025-12-28 22:47:38,698 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:47:38] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933258691 HTTP/1.1" 200 - +2025-12-28 22:47:42,001 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:47:42] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933261690 HTTP/1.1" 200 - +2025-12-28 22:47:42,702 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:47:42] "GET /api/strategies/positions?id=2&_t=1766933262695 HTTP/1.1" 200 - +2025-12-28 22:47:45,008 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:47:45] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933264689 HTTP/1.1" 200 - +2025-12-28 22:47:47,699 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:47:47] "GET /api/strategies/equityCurve?id=2&_t=1766933267690 HTTP/1.1" 200 - +2025-12-28 22:47:48,014 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:47:48] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933267691 HTTP/1.1" 200 - +2025-12-28 22:47:48,017 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:47:48] "GET /api/strategies/positions?id=2&_t=1766933267695 HTTP/1.1" 200 - +2025-12-28 22:47:51,014 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:47:51] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933270691 HTTP/1.1" 200 - +2025-12-28 22:47:52,702 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:47:52] "GET /api/strategies/positions?id=2&_t=1766933272694 HTTP/1.1" 200 - +2025-12-28 22:47:53,999 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:47:53] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933273690 HTTP/1.1" 200 - +2025-12-28 22:47:56,697 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:47:56] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933276690 HTTP/1.1" 200 - +2025-12-28 22:47:58,016 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:47:58] "GET /api/strategies/positions?id=2&_t=1766933277695 HTTP/1.1" 200 - +2025-12-28 22:47:59,697 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:47:59] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933279690 HTTP/1.1" 200 - +2025-12-28 22:48:03,002 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:48:03] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933282690 HTTP/1.1" 200 - +2025-12-28 22:48:03,006 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:48:03] "GET /api/strategies/positions?id=2&_t=1766933282694 HTTP/1.1" 200 - +2025-12-28 22:48:05,697 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:48:05] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933285690 HTTP/1.1" 200 - +2025-12-28 22:48:08,015 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:48:08] "GET /api/strategies/positions?id=2&_t=1766933287695 HTTP/1.1" 200 - +2025-12-28 22:48:08,697 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:48:08] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933288689 HTTP/1.1" 200 - +2025-12-28 22:48:11,998 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:48:11] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933291689 HTTP/1.1" 200 - +2025-12-28 22:48:12,703 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:48:12] "GET /api/strategies/positions?id=2&_t=1766933292696 HTTP/1.1" 200 - +2025-12-28 22:48:15,003 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:48:15] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933294690 HTTP/1.1" 200 - +2025-12-28 22:48:17,697 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:48:17] "GET /api/strategies/equityCurve?id=2&_t=1766933297690 HTTP/1.1" 200 - +2025-12-28 22:48:18,007 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:48:18] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933297690 HTTP/1.1" 200 - +2025-12-28 22:48:18,011 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:48:18] "GET /api/strategies/positions?id=2&_t=1766933297695 HTTP/1.1" 200 - +2025-12-28 22:48:21,004 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:48:21] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933300690 HTTP/1.1" 200 - +2025-12-28 22:48:22,702 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:48:22] "GET /api/strategies/positions?id=2&_t=1766933302695 HTTP/1.1" 200 - +2025-12-28 22:48:24,009 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:48:24] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933303690 HTTP/1.1" 200 - +2025-12-28 22:48:26,698 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:48:26] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933306689 HTTP/1.1" 200 - +2025-12-28 22:48:28,017 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:48:28] "GET /api/strategies/positions?id=2&_t=1766933307695 HTTP/1.1" 200 - +2025-12-28 22:48:29,697 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:48:29] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933309690 HTTP/1.1" 200 - +2025-12-28 22:48:33,017 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:48:33] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933312690 HTTP/1.1" 200 - +2025-12-28 22:48:33,020 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:48:33] "GET /api/strategies/positions?id=2&_t=1766933312695 HTTP/1.1" 200 - +2025-12-28 22:48:35,697 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:48:35] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933315690 HTTP/1.1" 200 - +2025-12-28 22:48:38,018 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:48:38] "GET /api/strategies/positions?id=2&_t=1766933317695 HTTP/1.1" 200 - +2025-12-28 22:48:38,697 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:48:38] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933318690 HTTP/1.1" 200 - +2025-12-28 22:48:42,012 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:48:42] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933321689 HTTP/1.1" 200 - +2025-12-28 22:48:42,704 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:48:42] "GET /api/strategies/positions?id=2&_t=1766933322695 HTTP/1.1" 200 - +2025-12-28 22:48:45,013 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:48:45] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933324690 HTTP/1.1" 200 - +2025-12-28 22:48:47,697 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:48:47] "GET /api/strategies/equityCurve?id=2&_t=1766933327689 HTTP/1.1" 200 - +2025-12-28 22:48:47,998 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:48:47] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933327690 HTTP/1.1" 200 - +2025-12-28 22:48:48,004 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:48:48] "GET /api/strategies/positions?id=2&_t=1766933327694 HTTP/1.1" 200 - +2025-12-28 22:48:50,999 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:48:50] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933330690 HTTP/1.1" 200 - +2025-12-28 22:48:52,701 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:48:52] "GET /api/strategies/positions?id=2&_t=1766933332695 HTTP/1.1" 200 - +2025-12-28 22:48:54,011 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:48:54] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933333689 HTTP/1.1" 200 - +2025-12-28 22:48:56,696 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:48:56] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933336689 HTTP/1.1" 200 - +2025-12-28 22:48:58,007 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:48:58] "GET /api/strategies/positions?id=2&_t=1766933337694 HTTP/1.1" 200 - +2025-12-28 22:48:59,697 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:48:59] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933339690 HTTP/1.1" 200 - +2025-12-28 22:49:03,012 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:49:03] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933342689 HTTP/1.1" 200 - +2025-12-28 22:49:03,016 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:49:03] "GET /api/strategies/positions?id=2&_t=1766933342696 HTTP/1.1" 200 - +2025-12-28 22:49:05,696 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:49:05] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933345690 HTTP/1.1" 200 - +2025-12-28 22:49:08,005 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:49:08] "GET /api/strategies/positions?id=2&_t=1766933347695 HTTP/1.1" 200 - +2025-12-28 22:49:08,697 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:49:08] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933348690 HTTP/1.1" 200 - +2025-12-28 22:49:12,010 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:49:12] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933351690 HTTP/1.1" 200 - +2025-12-28 22:49:12,701 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:49:12] "GET /api/strategies/positions?id=2&_t=1766933352695 HTTP/1.1" 200 - +2025-12-28 22:49:14,999 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:49:14] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933354690 HTTP/1.1" 200 - +2025-12-28 22:49:17,698 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:49:17] "GET /api/strategies/equityCurve?id=2&_t=1766933357690 HTTP/1.1" 200 - +2025-12-28 22:49:18,002 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:49:18] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933357691 HTTP/1.1" 200 - +2025-12-28 22:49:18,005 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:49:18] "GET /api/strategies/positions?id=2&_t=1766933357694 HTTP/1.1" 200 - +2025-12-28 22:49:21,009 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:49:21] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933360690 HTTP/1.1" 200 - +2025-12-28 22:49:22,702 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:49:22] "GET /api/strategies/positions?id=2&_t=1766933362696 HTTP/1.1" 200 - +2025-12-28 22:49:23,998 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:49:23] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933363689 HTTP/1.1" 200 - +2025-12-28 22:49:26,697 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:49:26] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933366690 HTTP/1.1" 200 - +2025-12-28 22:49:28,023 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:49:28] "GET /api/strategies/positions?id=2&_t=1766933367695 HTTP/1.1" 200 - +2025-12-28 22:49:29,698 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:49:29] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933369690 HTTP/1.1" 200 - +2025-12-28 22:49:33,002 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:49:33] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933372690 HTTP/1.1" 200 - +2025-12-28 22:49:33,006 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:49:33] "GET /api/strategies/positions?id=2&_t=1766933372694 HTTP/1.1" 200 - +2025-12-28 22:49:35,696 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:49:35] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933375690 HTTP/1.1" 200 - +2025-12-28 22:49:38,006 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:49:38] "GET /api/strategies/positions?id=2&_t=1766933377695 HTTP/1.1" 200 - +2025-12-28 22:49:38,697 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:49:38] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933378690 HTTP/1.1" 200 - +2025-12-28 22:49:41,999 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:49:41] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933381690 HTTP/1.1" 200 - +2025-12-28 22:49:42,702 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:49:42] "GET /api/strategies/positions?id=2&_t=1766933382695 HTTP/1.1" 200 - +2025-12-28 22:49:45,008 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:49:45] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933384690 HTTP/1.1" 200 - +2025-12-28 22:49:47,698 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:49:47] "GET /api/strategies/equityCurve?id=2&_t=1766933387691 HTTP/1.1" 200 - +2025-12-28 22:49:48,001 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:49:48] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933387691 HTTP/1.1" 200 - +2025-12-28 22:49:48,004 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:49:48] "GET /api/strategies/positions?id=2&_t=1766933387695 HTTP/1.1" 200 - +2025-12-28 22:49:51,012 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:49:51] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933390689 HTTP/1.1" 200 - +2025-12-28 22:49:52,703 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:49:52] "GET /api/strategies/positions?id=2&_t=1766933392695 HTTP/1.1" 200 - +2025-12-28 22:49:54,002 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:49:54] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933393689 HTTP/1.1" 200 - +2025-12-28 22:49:56,696 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:49:56] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933396690 HTTP/1.1" 200 - +2025-12-28 22:49:58,012 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:49:58] "GET /api/strategies/positions?id=2&_t=1766933397694 HTTP/1.1" 200 - +2025-12-28 22:49:59,697 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:49:59] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933399690 HTTP/1.1" 200 - +2025-12-28 22:50:03,000 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:50:03] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933402690 HTTP/1.1" 200 - +2025-12-28 22:50:03,005 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:50:03] "GET /api/strategies/positions?id=2&_t=1766933402696 HTTP/1.1" 200 - +2025-12-28 22:50:06,487 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:50:06] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933406475 HTTP/1.1" 200 - +2025-12-28 22:50:08,797 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:50:08] "GET /api/strategies/positions?id=2&_t=1766933408480 HTTP/1.1" 200 - +2025-12-28 22:50:09,485 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:50:09] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933409477 HTTP/1.1" 200 - +2025-12-28 22:50:12,790 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:50:12] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933412471 HTTP/1.1" 200 - +2025-12-28 22:50:13,488 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:50:13] "GET /api/strategies/positions?id=2&_t=1766933413477 HTTP/1.1" 200 - +2025-12-28 22:50:15,795 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:50:15] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933415480 HTTP/1.1" 200 - +2025-12-28 22:50:18,485 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:50:18] "GET /api/strategies/equityCurve?id=2&_t=1766933418474 HTTP/1.1" 200 - +2025-12-28 22:50:18,794 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:50:18] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933418475 HTTP/1.1" 200 - +2025-12-28 22:50:18,799 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:50:18] "GET /api/strategies/positions?id=2&_t=1766933418476 HTTP/1.1" 200 - +2025-12-28 22:50:21,789 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:50:21] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933421472 HTTP/1.1" 200 - +2025-12-28 22:50:23,491 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:50:23] "GET /api/strategies/positions?id=2&_t=1766933423483 HTTP/1.1" 200 - +2025-12-28 22:50:24,791 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:50:24] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933424471 HTTP/1.1" 200 - +2025-12-28 22:50:27,493 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:50:27] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933427484 HTTP/1.1" 200 - +2025-12-28 22:50:28,794 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:50:28] "GET /api/strategies/positions?id=2&_t=1766933428475 HTTP/1.1" 200 - +2025-12-28 22:50:30,478 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:50:30] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933430470 HTTP/1.1" 200 - +2025-12-28 22:50:33,791 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:50:33] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933433472 HTTP/1.1" 200 - +2025-12-28 22:50:33,795 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:50:33] "GET /api/strategies/positions?id=2&_t=1766933433473 HTTP/1.1" 200 - +2025-12-28 22:50:36,487 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:50:36] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933436477 HTTP/1.1" 200 - +2025-12-28 22:50:38,798 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:50:38] "GET /api/strategies/positions?id=2&_t=1766933438485 HTTP/1.1" 200 - +2025-12-28 22:50:39,491 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:50:39] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933439484 HTTP/1.1" 200 - +2025-12-28 22:50:42,791 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:50:42] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933442473 HTTP/1.1" 200 - +2025-12-28 22:50:43,479 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:50:43] "GET /api/strategies/positions?id=2&_t=1766933443471 HTTP/1.1" 200 - +2025-12-28 22:50:45,792 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:50:45] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933445476 HTTP/1.1" 200 - +2025-12-28 22:50:48,494 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:50:48] "GET /api/strategies/equityCurve?id=2&_t=1766933448484 HTTP/1.1" 200 - +2025-12-28 22:50:48,804 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:50:48] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933448484 HTTP/1.1" 200 - +2025-12-28 22:50:48,808 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:50:48] "GET /api/strategies/positions?id=2&_t=1766933448487 HTTP/1.1" 200 - +2025-12-28 22:50:51,789 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:50:51] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933451470 HTTP/1.1" 200 - +2025-12-28 22:50:53,488 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:50:53] "GET /api/strategies/positions?id=2&_t=1766933453475 HTTP/1.1" 200 - +2025-12-28 22:50:54,800 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:50:54] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933454482 HTTP/1.1" 200 - +2025-12-28 22:50:57,493 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:50:57] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933457480 HTTP/1.1" 200 - +2025-12-28 22:50:58,787 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:50:58] "GET /api/strategies/positions?id=2&_t=1766933458473 HTTP/1.1" 200 - +2025-12-28 22:51:00,494 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:51:00] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933460484 HTTP/1.1" 200 - +2025-12-28 22:51:37,813 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:51:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933497477 HTTP/1.1" 200 - +2025-12-28 22:51:37,817 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:51:37] "GET /api/strategies/positions?id=2&_t=1766933497478 HTTP/1.1" 200 - +2025-12-28 22:51:37,824 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:51:37] "GET /api/strategies/equityCurve?id=2&_t=1766933497478 HTTP/1.1" 200 - +2025-12-28 22:51:39,661 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:51:39] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933499646 HTTP/1.1" 200 - +2025-12-28 22:51:42,552 - app.routes.strategy - INFO - Testing connection: exchange_id=binance +2025-12-28 22:51:42,552 - app.routes.strategy - INFO - API Key: kC5vP... (len=64) +2025-12-28 22:51:42,552 - app.routes.strategy - INFO - Secret Key: S5Blu... (len=64) +2025-12-28 22:51:45,904 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:51:45] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-28 22:51:45,908 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:51:45] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933502476 HTTP/1.1" 200 - +2025-12-28 22:51:45,912 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:51:45] "GET /api/strategies/positions?id=2&_t=1766933503484 HTTP/1.1" 200 - +2025-12-28 22:51:45,915 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:51:45] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933505478 HTTP/1.1" 200 - +2025-12-28 22:51:48,792 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:51:48] "GET /api/strategies/equityCurve?id=2&_t=1766933508474 HTTP/1.1" 200 - +2025-12-28 22:51:48,795 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:51:48] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933508475 HTTP/1.1" 200 - +2025-12-28 22:51:48,798 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:51:48] "GET /api/strategies/positions?id=2&_t=1766933508476 HTTP/1.1" 200 - +2025-12-28 22:51:51,488 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:51:51] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933511481 HTTP/1.1" 200 - +2025-12-28 22:51:53,792 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:51:53] "GET /api/strategies/positions?id=2&_t=1766933513476 HTTP/1.1" 200 - +2025-12-28 22:51:54,482 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:51:54] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933514472 HTTP/1.1" 200 - +2025-12-28 22:51:57,782 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:51:57] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933517471 HTTP/1.1" 200 - +2025-12-28 22:51:58,484 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:51:58] "GET /api/strategies/positions?id=2&_t=1766933518476 HTTP/1.1" 200 - +2025-12-28 22:52:00,787 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:52:00] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933520471 HTTP/1.1" 200 - +2025-12-28 22:52:03,488 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:52:03] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933523477 HTTP/1.1" 200 - +2025-12-28 22:52:03,797 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:52:03] "GET /api/strategies/positions?id=2&_t=1766933523478 HTTP/1.1" 200 - +2025-12-28 22:52:06,804 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:52:06] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933526481 HTTP/1.1" 200 - +2025-12-28 22:52:08,481 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:52:08] "GET /api/strategies/positions?id=2&_t=1766933528472 HTTP/1.1" 200 - +2025-12-28 22:52:09,798 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:52:09] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933529481 HTTP/1.1" 200 - +2025-12-28 22:52:12,494 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:52:12] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933532483 HTTP/1.1" 200 - +2025-12-28 22:52:13,795 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:52:13] "GET /api/strategies/positions?id=2&_t=1766933533479 HTTP/1.1" 200 - +2025-12-28 22:52:15,491 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:52:15] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933535482 HTTP/1.1" 200 - +2025-12-28 22:52:18,791 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:52:18] "GET /api/strategies/equityCurve?id=2&_t=1766933538474 HTTP/1.1" 200 - +2025-12-28 22:52:18,794 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:52:18] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933538475 HTTP/1.1" 200 - +2025-12-28 22:52:18,797 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:52:18] "GET /api/strategies/positions?id=2&_t=1766933538476 HTTP/1.1" 200 - +2025-12-28 22:52:21,491 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:52:21] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933541483 HTTP/1.1" 200 - +2025-12-28 22:52:23,799 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:52:23] "GET /api/strategies/positions?id=2&_t=1766933543481 HTTP/1.1" 200 - +2025-12-28 22:52:24,486 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:52:24] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933544479 HTTP/1.1" 200 - +2025-12-28 22:52:27,784 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:52:27] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933547472 HTTP/1.1" 200 - +2025-12-28 22:52:28,488 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:52:28] "GET /api/strategies/positions?id=2&_t=1766933548481 HTTP/1.1" 200 - +2025-12-28 22:52:30,801 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:52:30] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933550479 HTTP/1.1" 200 - +2025-12-28 22:52:33,479 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:52:33] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933553471 HTTP/1.1" 200 - +2025-12-28 22:52:33,787 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:52:33] "GET /api/strategies/positions?id=2&_t=1766933553471 HTTP/1.1" 200 - +2025-12-28 22:52:36,801 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:52:36] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933556484 HTTP/1.1" 200 - +2025-12-28 22:52:38,483 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:52:38] "GET /api/strategies/positions?id=2&_t=1766933558475 HTTP/1.1" 200 - +2025-12-28 22:52:39,794 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:52:39] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933559479 HTTP/1.1" 200 - +2025-12-28 22:53:37,484 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:53:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933617474 HTTP/1.1" 200 - +2025-12-28 22:53:37,791 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:53:37] "GET /api/strategies/positions?id=2&_t=1766933617475 HTTP/1.1" 200 - +2025-12-28 22:53:37,795 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:53:37] "GET /api/strategies/equityCurve?id=2&_t=1766933617475 HTTP/1.1" 200 - +2025-12-28 22:54:37,787 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:54:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933677475 HTTP/1.1" 200 - +2025-12-28 22:54:37,791 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:54:37] "GET /api/strategies/positions?id=2&_t=1766933677476 HTTP/1.1" 200 - +2025-12-28 22:54:37,798 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:54:37] "GET /api/strategies/equityCurve?id=2&_t=1766933677476 HTTP/1.1" 200 - +2025-12-28 22:55:37,486 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:55:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933737476 HTTP/1.1" 200 - +2025-12-28 22:55:37,797 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:55:37] "GET /api/strategies/positions?id=2&_t=1766933737477 HTTP/1.1" 200 - +2025-12-28 22:55:37,801 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:55:37] "GET /api/strategies/equityCurve?id=2&_t=1766933737478 HTTP/1.1" 200 - +2025-12-28 22:56:34,373 - app.routes.strategy - INFO - Testing connection: exchange_id=binance +2025-12-28 22:56:34,373 - app.routes.strategy - INFO - API Key: 9E46G... (len=64) +2025-12-28 22:56:34,373 - app.routes.strategy - INFO - Secret Key: I5uDy... (len=64) +2025-12-28 22:56:36,604 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:56:36] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-28 22:56:37,485 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:56:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933797474 HTTP/1.1" 200 - +2025-12-28 22:56:37,795 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:56:37] "GET /api/strategies/positions?id=2&_t=1766933797475 HTTP/1.1" 200 - +2025-12-28 22:56:37,799 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:56:37] "GET /api/strategies/equityCurve?id=2&_t=1766933797475 HTTP/1.1" 200 - +2025-12-28 22:56:42,019 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:56:42] "POST /api/strategies/create HTTP/1.1" 200 - +2025-12-28 22:56:42,265 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:56:42] "POST /api/credentials/create HTTP/1.1" 200 - +2025-12-28 22:56:42,355 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:56:42] "GET /api/credentials/list?user_id=1&_t=1766933802296 HTTP/1.1" 200 - +2025-12-28 22:56:42,620 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:56:42] "GET /api/strategies?_t=1766933802296 HTTP/1.1" 200 - +2025-12-28 22:56:43,841 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:56:43] "GET /api/strategies/equityCurve?id=9&_t=1766933803822 HTTP/1.1" 200 - +2025-12-28 22:56:44,151 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:56:44] "GET /api/strategies/equityCurve?id=9&_t=1766933803822 HTTP/1.1" 200 - +2025-12-28 22:56:44,153 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:56:44] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766933803822 HTTP/1.1" 200 - +2025-12-28 22:56:44,156 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:56:44] "GET /api/strategies/positions?id=9&_t=1766933803833 HTTP/1.1" 200 - +2025-12-28 22:56:46,852 - app.services.trading_executor - INFO - Strategy 9 loop starting +2025-12-28 22:56:46,852 - app.services.trading_executor - INFO - Strategy 9 started +2025-12-28 22:56:46,853 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:56:46] "POST /api/strategies/start?id=9 HTTP/1.1" 200 - +2025-12-28 22:56:46,853 - app.services.trading_executor - INFO - Strategy 9 derivatives trading; normalize market_type to: swap +2025-12-28 22:56:47,110 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:56:47] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766933806794 HTTP/1.1" 200 - +2025-12-28 22:56:47,115 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:56:47] "GET /api/strategies?_t=1766933806885 HTTP/1.1" 200 - +2025-12-28 22:56:47,353 - app.services.trading_executor - INFO - ็ญ–็•ฅ 9 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 22:56:47,370 - app.services.trading_executor - INFO - Strategy 9 initialized; pending_signals=2 +2025-12-28 22:56:47,370 - app.services.trading_executor - INFO - Initial signals: [{'type': 'close_long', 'trigger_price': 857.74, 'position_size': 0, 'timestamp': 1766933700}, {'type': 'open_short', 'trigger_price': 857.74, 'position_size': 0.08, 'timestamp': 1766933700}] +2025-12-28 22:56:47,496 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=857.96, pending_signals=2 +2025-12-28 22:56:47,498 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 857.74, 'position_size': 0, 'timestamp': 1766933700}] +2025-12-28 22:56:48,598 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:56:48] "GET /api/strategies/equityCurve?id=2&_t=1766933808576 HTTP/1.1" 200 - +2025-12-28 22:56:48,909 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:56:48] "GET /api/strategies/equityCurve?id=2&_t=1766933808576 HTTP/1.1" 200 - +2025-12-28 22:56:48,912 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:56:48] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933808576 HTTP/1.1" 200 - +2025-12-28 22:56:48,915 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:56:48] "GET /api/strategies/positions?id=2&_t=1766933808585 HTTP/1.1" 200 - +2025-12-28 22:56:51,399 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:56:51] "GET /api/strategies/trades?id=2&_t=1766933811084 HTTP/1.1" 200 - +2025-12-28 22:56:51,662 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:56:51] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933811560 HTTP/1.1" 200 - +2025-12-28 22:56:53,583 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:56:53] "GET /api/strategies/positions?id=2&_t=1766933813576 HTTP/1.1" 200 - +2025-12-28 22:56:54,871 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:56:54] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933814560 HTTP/1.1" 200 - +2025-12-28 22:56:57,390 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=857.96, pending_signals=2 +2025-12-28 22:56:57,392 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 857.74, 'position_size': 0, 'timestamp': 1766933700}] +2025-12-28 22:56:57,563 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:56:57] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933817556 HTTP/1.1" 200 - +2025-12-28 22:56:58,902 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:56:58] "GET /api/strategies/positions?id=2&_t=1766933818582 HTTP/1.1" 200 - +2025-12-28 22:57:00,574 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:57:00] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933820568 HTTP/1.1" 200 - +2025-12-28 22:57:03,888 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:57:03] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933823568 HTTP/1.1" 200 - +2025-12-28 22:57:03,894 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:57:03] "GET /api/strategies/positions?id=2&_t=1766933823583 HTTP/1.1" 200 - +2025-12-28 22:57:06,561 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:57:06] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933826555 HTTP/1.1" 200 - +2025-12-28 22:57:08,910 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:57:08] "GET /api/strategies/positions?id=2&_t=1766933828592 HTTP/1.1" 200 - +2025-12-28 22:57:09,564 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:57:09] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933829557 HTTP/1.1" 200 - +2025-12-28 22:57:12,089 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:57:12] "GET /api/dashboard/summary?_t=1766933831772 HTTP/1.1" 200 - +2025-12-28 22:57:12,096 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:57:12] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766933831772 HTTP/1.1" 200 - +2025-12-28 22:57:34,276 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:57:34] "GET /api/market/types?_t=1766933854267 HTTP/1.1" 200 - +2025-12-28 22:57:34,592 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:57:34] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 22:57:34,601 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:57:34] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 22:57:34,623 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-28 22:57:35,238 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:57:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 22:57:35,704 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:57:35] "GET /api/strategies?_t=1766933855526 HTTP/1.1" 200 - +2025-12-28 22:57:36,831 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:57:36] "GET /api/strategies/equityCurve?id=2&_t=1766933856807 HTTP/1.1" 200 - +2025-12-28 22:57:36,839 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:57:36] "GET /api/strategies/equityCurve?id=2&_t=1766933856807 HTTP/1.1" 200 - +2025-12-28 22:57:36,846 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:57:36] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933856807 HTTP/1.1" 200 - +2025-12-28 22:57:36,855 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:57:36] "GET /api/strategies/positions?id=2&_t=1766933856811 HTTP/1.1" 200 - +2025-12-28 22:57:37,494 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:57:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933857484 HTTP/1.1" 200 - +2025-12-28 22:57:37,799 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:57:37] "GET /api/strategies/positions?id=2&_t=1766933857485 HTTP/1.1" 200 - +2025-12-28 22:57:37,803 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:57:37] "GET /api/strategies/equityCurve?id=2&_t=1766933857485 HTTP/1.1" 200 - +2025-12-28 22:57:38,124 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:57:38] "GET /api/strategies/trades?id=2&_t=1766933857803 HTTP/1.1" 200 - +2025-12-28 22:57:39,801 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:57:39] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933859794 HTTP/1.1" 200 - +2025-12-28 22:57:42,136 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:57:42] "GET /api/strategies/positions?id=2&_t=1766933861808 HTTP/1.1" 200 - +2025-12-28 22:57:42,799 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:57:42] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933862792 HTTP/1.1" 200 - +2025-12-28 22:57:46,107 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:57:46] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933865791 HTTP/1.1" 200 - +2025-12-28 22:57:46,812 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:57:46] "GET /api/strategies/positions?id=2&_t=1766933866804 HTTP/1.1" 200 - +2025-12-28 22:57:49,116 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:57:49] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933868803 HTTP/1.1" 200 - +2025-12-28 22:57:51,810 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:57:51] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933871803 HTTP/1.1" 200 - +2025-12-28 22:57:52,118 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:57:52] "GET /api/strategies/positions?id=2&_t=1766933871803 HTTP/1.1" 200 - +2025-12-28 22:57:55,114 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:57:55] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933874793 HTTP/1.1" 200 - +2025-12-28 22:57:56,812 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:57:56] "GET /api/strategies/positions?id=2&_t=1766933876805 HTTP/1.1" 200 - +2025-12-28 22:57:58,121 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:57:58] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933877802 HTTP/1.1" 200 - +2025-12-28 22:58:00,797 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:58:00] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933880791 HTTP/1.1" 200 - +2025-12-28 22:58:02,131 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:58:02] "GET /api/strategies/positions?id=2&_t=1766933881816 HTTP/1.1" 200 - +2025-12-28 22:58:03,802 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:58:03] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933883795 HTTP/1.1" 200 - +2025-12-28 22:58:07,110 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:58:07] "GET /api/strategies/equityCurve?id=2&_t=1766933886790 HTTP/1.1" 200 - +2025-12-28 22:58:07,113 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:58:07] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933886791 HTTP/1.1" 200 - +2025-12-28 22:58:07,116 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:58:07] "GET /api/strategies/positions?id=2&_t=1766933886805 HTTP/1.1" 200 - +2025-12-28 22:58:09,799 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:58:09] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933889793 HTTP/1.1" 200 - +2025-12-28 22:58:12,125 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:58:12] "GET /api/strategies/positions?id=2&_t=1766933891806 HTTP/1.1" 200 - +2025-12-28 22:58:12,799 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:58:12] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933892793 HTTP/1.1" 200 - +2025-12-28 22:58:16,110 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:58:16] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933895792 HTTP/1.1" 200 - +2025-12-28 22:58:16,811 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:58:16] "GET /api/strategies/positions?id=2&_t=1766933896804 HTTP/1.1" 200 - +2025-12-28 22:58:19,119 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:58:19] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933898801 HTTP/1.1" 200 - +2025-12-28 22:58:21,805 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:58:21] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933901798 HTTP/1.1" 200 - +2025-12-28 22:58:22,116 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:58:22] "GET /api/strategies/positions?id=2&_t=1766933901807 HTTP/1.1" 200 - +2025-12-28 22:58:24,810 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:58:24] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933904803 HTTP/1.1" 200 - +2025-12-28 22:58:27,130 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:58:27] "GET /api/strategies/positions?id=2&_t=1766933906816 HTTP/1.1" 200 - +2025-12-28 22:58:27,802 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:58:27] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933907796 HTTP/1.1" 200 - +2025-12-28 22:58:31,110 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:58:31] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933910794 HTTP/1.1" 200 - +2025-12-28 22:58:31,824 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:58:31] "GET /api/strategies/positions?id=2&_t=1766933911817 HTTP/1.1" 200 - +2025-12-28 22:58:34,109 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:58:34] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933913790 HTTP/1.1" 200 - +2025-12-28 22:58:36,809 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:58:36] "GET /api/strategies/equityCurve?id=2&_t=1766933916802 HTTP/1.1" 200 - +2025-12-28 22:58:37,121 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:58:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933916802 HTTP/1.1" 200 - +2025-12-28 22:58:37,124 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:58:37] "GET /api/strategies/positions?id=2&_t=1766933916803 HTTP/1.1" 200 - +2025-12-28 22:58:37,796 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:58:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933917479 HTTP/1.1" 200 - +2025-12-28 22:58:37,799 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:58:37] "GET /api/strategies/positions?id=2&_t=1766933917479 HTTP/1.1" 200 - +2025-12-28 22:58:37,803 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:58:37] "GET /api/strategies/equityCurve?id=2&_t=1766933917480 HTTP/1.1" 200 - +2025-12-28 22:58:39,809 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:58:39] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933919803 HTTP/1.1" 200 - +2025-12-28 22:58:42,129 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:58:42] "GET /api/strategies/positions?id=2&_t=1766933921812 HTTP/1.1" 200 - +2025-12-28 22:58:42,798 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:58:42] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933922792 HTTP/1.1" 200 - +2025-12-28 22:58:46,108 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:58:46] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933925792 HTTP/1.1" 200 - +2025-12-28 22:58:46,819 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:58:46] "GET /api/strategies/positions?id=2&_t=1766933926810 HTTP/1.1" 200 - +2025-12-28 22:58:49,118 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:58:49] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933928798 HTTP/1.1" 200 - +2025-12-28 22:58:49,247 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2945.99, pending_signals=1 +2025-12-28 22:58:49,249 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2945.99, 'position_size': 0, 'timestamp': 1766933880}] +2025-12-28 22:58:51,803 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:58:51] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933931797 HTTP/1.1" 200 - +2025-12-28 22:58:52,113 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:58:52] "GET /api/strategies/positions?id=2&_t=1766933931805 HTTP/1.1" 200 - +2025-12-28 22:58:54,803 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:58:54] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933934793 HTTP/1.1" 200 - +2025-12-28 22:58:57,129 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:58:57] "GET /api/strategies/positions?id=2&_t=1766933936810 HTTP/1.1" 200 - +2025-12-28 22:58:57,805 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:58:57] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933937799 HTTP/1.1" 200 - +2025-12-28 22:58:59,017 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2945.99, pending_signals=1 +2025-12-28 22:58:59,019 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2945.99, 'position_size': 0, 'timestamp': 1766933880}] +2025-12-28 22:59:01,109 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:59:01] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933940792 HTTP/1.1" 200 - +2025-12-28 22:59:01,450 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:59:01] "GET /api/strategies/equityCurve?id=1&_t=1766933941441 HTTP/1.1" 200 - +2025-12-28 22:59:01,763 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:59:01] "GET /api/strategies/equityCurve?id=1&_t=1766933941441 HTTP/1.1" 200 - +2025-12-28 22:59:01,767 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:59:01] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766933941441 HTTP/1.1" 200 - +2025-12-28 22:59:01,770 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:59:01] "GET /api/strategies/positions?id=1&_t=1766933941442 HTTP/1.1" 200 - +2025-12-28 22:59:01,773 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:59:01] "GET /api/strategies/trades?id=1&_t=1766933941442 HTTP/1.1" 200 - +2025-12-28 22:59:03,403 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:59:03] "GET /api/strategies/equityCurve?id=9&_t=1766933943390 HTTP/1.1" 200 - +2025-12-28 22:59:03,408 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:59:03] "GET /api/strategies/equityCurve?id=9&_t=1766933943390 HTTP/1.1" 200 - +2025-12-28 22:59:03,709 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:59:03] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766933943390 HTTP/1.1" 200 - +2025-12-28 22:59:03,713 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:59:03] "GET /api/strategies/positions?id=9&_t=1766933943392 HTTP/1.1" 200 - +2025-12-28 22:59:03,717 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:59:03] "GET /api/strategies/trades?id=9&_t=1766933943392 HTTP/1.1" 200 - +2025-12-28 22:59:06,695 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:59:06] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766933946385 HTTP/1.1" 200 - +2025-12-28 22:59:08,006 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:59:08] "GET /api/dashboard/summary?_t=1766933947990 HTTP/1.1" 200 - +2025-12-28 22:59:08,320 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:59:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766933947990 HTTP/1.1" 200 - +2025-12-28 22:59:09,644 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2946.92, pending_signals=2 +2025-12-28 22:59:09,668 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2946.0, 'position_size': 0, 'timestamp': 1766933880}] +2025-12-28 22:59:19,022 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2946.92, pending_signals=2 +2025-12-28 22:59:19,024 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2946.0, 'position_size': 0, 'timestamp': 1766933880}] +2025-12-28 22:59:29,126 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2946.4, pending_signals=2 +2025-12-28 22:59:29,128 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2946.0, 'position_size': 0, 'timestamp': 1766933880}] +2025-12-28 22:59:29,952 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:59:29] "GET /api/dashboard/summary?_t=1766933969638 HTTP/1.1" 200 - +2025-12-28 22:59:29,957 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:59:29] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766933969638 HTTP/1.1" 200 - +2025-12-28 22:59:37,482 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:59:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766933977472 HTTP/1.1" 200 - +2025-12-28 22:59:37,785 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:59:37] "GET /api/strategies/positions?id=2&_t=1766933977473 HTTP/1.1" 200 - +2025-12-28 22:59:37,789 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 22:59:37] "GET /api/strategies/equityCurve?id=2&_t=1766933977474 HTTP/1.1" 200 - +2025-12-28 22:59:39,027 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2946.4, pending_signals=2 +2025-12-28 22:59:39,029 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2946.0, 'position_size': 0, 'timestamp': 1766933880}] +2025-12-28 22:59:49,226 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2945.69, pending_signals=2 +2025-12-28 22:59:49,228 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2946.0, 'position_size': 0, 'timestamp': 1766933880}, {'type': 'open_short', 'trigger_price': 2946.0, 'position_size': 0.08, 'timestamp': 1766933880}] +2025-12-28 22:59:49,235 - app.services.trading_executor - INFO - Strategy 1 signal executed: open_short @ 2946.0 +2025-12-28 22:59:51,239 - app.services.pending_order_worker - WARNING - live limit phase unexpected error: pending_id=36, strategy_id=1, cfg={'exchange_id': 'bitget', 'api_key': 'bg_8...b659', 'secret_key': '3b7e...b239', 'passphrase': 'xuji...u123', 'credential_id': 3}, err='<' not supported between instances of 'NoneType' and 'decimal.Decimal' +2025-12-28 22:59:51,239 - app.services.pending_order_worker - WARNING - live market phase unexpected error: pending_id=36, strategy_id=1, cfg={'exchange_id': 'bitget', 'api_key': 'bg_8...b659', 'secret_key': '3b7e...b239', 'passphrase': 'xuji...u123', 'credential_id': 3}, err='<' not supported between instances of 'NoneType' and 'decimal.Decimal' +2025-12-28 22:59:59,028 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2945.69, pending_signals=2 +2025-12-28 22:59:59,030 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2946.0, 'position_size': 0, 'timestamp': 1766933880}, {'type': 'open_short', 'trigger_price': 2946.0, 'position_size': 0.08, 'timestamp': 1766933880}] +2025-12-28 23:00:37,788 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:00:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934037470 HTTP/1.1" 200 - +2025-12-28 23:00:37,792 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:00:37] "GET /api/strategies/positions?id=2&_t=1766934037471 HTTP/1.1" 200 - +2025-12-28 23:00:37,795 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:00:37] "GET /api/strategies/equityCurve?id=2&_t=1766934037471 HTTP/1.1" 200 - +2025-12-28 23:01:37,484 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:01:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934097475 HTTP/1.1" 200 - +2025-12-28 23:01:37,793 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:01:37] "GET /api/strategies/positions?id=2&_t=1766934097476 HTTP/1.1" 200 - +2025-12-28 23:01:37,797 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:01:37] "GET /api/strategies/equityCurve?id=2&_t=1766934097477 HTTP/1.1" 200 - +2025-12-28 23:02:28,253 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=858.45, pending_signals=1 +2025-12-28 23:02:28,255 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 858.45, 'position_size': 0, 'timestamp': 1766934120}] +2025-12-28 23:02:37,442 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=858.45, pending_signals=1 +2025-12-28 23:02:37,444 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 858.45, 'position_size': 0, 'timestamp': 1766934120}] +2025-12-28 23:02:37,795 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:02:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934157481 HTTP/1.1" 200 - +2025-12-28 23:02:37,799 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:02:37] "GET /api/strategies/positions?id=2&_t=1766934157482 HTTP/1.1" 200 - +2025-12-28 23:02:37,803 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:02:37] "GET /api/strategies/equityCurve?id=2&_t=1766934157482 HTTP/1.1" 200 - +2025-12-28 23:02:47,957 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=858.38, pending_signals=1 +2025-12-28 23:02:47,959 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 858.38, 'position_size': 0, 'timestamp': 1766934120}] +2025-12-28 23:02:56,710 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:02:56] "GET /api/dashboard/summary?_t=1766934176700 HTTP/1.1" 200 - +2025-12-28 23:02:57,019 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:02:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766934176700 HTTP/1.1" 200 - +2025-12-28 23:02:57,446 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=858.38, pending_signals=1 +2025-12-28 23:02:57,449 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 858.38, 'position_size': 0, 'timestamp': 1766934120}] +2025-12-28 23:03:07,705 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=858.27, pending_signals=2 +2025-12-28 23:03:07,708 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 858.38, 'position_size': 0, 'timestamp': 1766934120}] +2025-12-28 23:03:17,448 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=858.27, pending_signals=2 +2025-12-28 23:03:17,450 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 858.38, 'position_size': 0, 'timestamp': 1766934120}] +2025-12-28 23:03:26,559 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-28 23:03:26,562 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-28 23:03:27,019 - app.services.strategy - INFO - Found 3 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}, {'id': 9, 'strategy_type': 'IndicatorStrategy'}] +2025-12-28 23:03:27,019 - app - INFO - Restoring 3 running strategies... +2025-12-28 23:03:27,020 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-28 23:03:27,020 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-28 23:03:27,020 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-28 23:03:27,020 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-28 23:03:27,020 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-28 23:03:27,020 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-28 23:03:27,021 - app.services.trading_executor - INFO - Strategy 9 loop starting +2025-12-28 23:03:27,021 - app.services.trading_executor - INFO - Strategy 9 started +2025-12-28 23:03:27,021 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-28 23:03:27,021 - app - INFO - [OK] IndicatorStrategy 9 restored +2025-12-28 23:03:27,021 - app - INFO - Strategy restore completed: 3/3 restored +2025-12-28 23:03:27,021 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-28 23:03:27,037 - app.services.trading_executor - INFO - Strategy 9 derivatives trading; normalize market_type to: swap +2025-12-28 23:03:27,050 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-28 23:03:27,050 - werkzeug - INFO - Press CTRL+C to quit +2025-12-28 23:03:32,383 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 23:03:32,383 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 23:03:32,404 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2025-12-28 23:03:32,422 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2025-12-28 23:03:32,426 - app.services.trading_executor - INFO - ็ญ–็•ฅ 9 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 23:03:32,443 - app.services.trading_executor - INFO - Strategy 9 initialized; pending_signals=0 +2025-12-28 23:03:37,790 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:03:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934217478 HTTP/1.1" 200 - +2025-12-28 23:03:37,794 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:03:37] "GET /api/strategies/positions?id=2&_t=1766934217479 HTTP/1.1" 200 - +2025-12-28 23:03:37,798 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:03:37] "GET /api/strategies/equityCurve?id=2&_t=1766934217479 HTTP/1.1" 200 - +2025-12-28 23:04:33,148 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87948.78, pending_signals=1 +2025-12-28 23:04:33,150 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87948.78, 'position_size': 0, 'timestamp': 1766934240}] +2025-12-28 23:04:37,482 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:04:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934277473 HTTP/1.1" 200 - +2025-12-28 23:04:37,788 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:04:37] "GET /api/strategies/positions?id=2&_t=1766934277474 HTTP/1.1" 200 - +2025-12-28 23:04:37,792 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:04:37] "GET /api/strategies/equityCurve?id=2&_t=1766934277475 HTTP/1.1" 200 - +2025-12-28 23:04:42,456 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87948.78, pending_signals=1 +2025-12-28 23:04:42,475 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87948.78, 'position_size': 0, 'timestamp': 1766934240}] +2025-12-28 23:04:52,559 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2950.81, pending_signals=1 +2025-12-28 23:04:52,561 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2950.81, 'position_size': 0, 'timestamp': 1766934240}] +2025-12-28 23:04:52,879 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87948.77, pending_signals=1 +2025-12-28 23:04:52,881 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87948.77, 'position_size': 0, 'timestamp': 1766934240}] +2025-12-28 23:05:02,460 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2950.81, pending_signals=1 +2025-12-28 23:05:02,477 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87948.77, pending_signals=2 +2025-12-28 23:05:02,478 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2950.81, 'position_size': 0, 'timestamp': 1766934300}] +2025-12-28 23:05:02,479 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87948.78, 'position_size': 0, 'timestamp': 1766934240}] +2025-12-28 23:05:07,772 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:07] "GET /api/dashboard/summary?_t=1766934307460 HTTP/1.1" 200 - +2025-12-28 23:05:07,776 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766934307460 HTTP/1.1" 200 - +2025-12-28 23:05:10,891 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:10] "GET /api/strategies?_t=1766934310881 HTTP/1.1" 200 - +2025-12-28 23:05:12,663 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:12] "GET /api/strategies/equityCurve?id=9&_t=1766934312158 HTTP/1.1" 200 - +2025-12-28 23:05:12,668 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:12] "GET /api/strategies/equityCurve?id=9&_t=1766934312158 HTTP/1.1" 200 - +2025-12-28 23:05:12,672 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:12] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766934312158 HTTP/1.1" 200 - +2025-12-28 23:05:12,678 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:12] "GET /api/strategies/positions?id=9&_t=1766934312161 HTTP/1.1" 200 - +2025-12-28 23:05:12,735 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87952.81, pending_signals=2 +2025-12-28 23:05:12,737 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 87948.78, 'position_size': 0.08, 'timestamp': 1766934240}, {'type': 'close_short', 'trigger_price': 87948.78, 'position_size': 0, 'timestamp': 1766934240}] +2025-12-28 23:05:12,745 - app.services.trading_executor - INFO - Strategy 2 signal executed: open_long @ 87948.78 +2025-12-28 23:05:12,956 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=858.33, pending_signals=1 +2025-12-28 23:05:12,958 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 858.33, 'position_size': 0, 'timestamp': 1766934300}] +2025-12-28 23:05:13,610 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:13] "GET /api/strategies/trades?id=9&_t=1766934313604 HTTP/1.1" 200 - +2025-12-28 23:05:15,396 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:15] "GET /api/strategies/equityCurve?id=2&_t=1766934315075 HTTP/1.1" 200 - +2025-12-28 23:05:15,400 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:15] "GET /api/strategies/equityCurve?id=2&_t=1766934315075 HTTP/1.1" 200 - +2025-12-28 23:05:15,403 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:15] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934315075 HTTP/1.1" 200 - +2025-12-28 23:05:15,406 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:15] "GET /api/strategies/positions?id=2&_t=1766934315076 HTTP/1.1" 200 - +2025-12-28 23:05:15,410 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:15] "GET /api/strategies/trades?id=2&_t=1766934315076 HTTP/1.1" 200 - +2025-12-28 23:05:16,436 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:16] "GET /api/strategies/equityCurve?id=1&_t=1766934316425 HTTP/1.1" 200 - +2025-12-28 23:05:16,746 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:16] "GET /api/strategies/equityCurve?id=1&_t=1766934316425 HTTP/1.1" 200 - +2025-12-28 23:05:16,749 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:16] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766934316425 HTTP/1.1" 200 - +2025-12-28 23:05:16,752 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:16] "GET /api/strategies/positions?id=1&_t=1766934316426 HTTP/1.1" 200 - +2025-12-28 23:05:16,755 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:16] "GET /api/strategies/trades?id=1&_t=1766934316426 HTTP/1.1" 200 - +2025-12-28 23:05:19,690 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:19] "GET /api/dashboard/summary?_t=1766934319374 HTTP/1.1" 200 - +2025-12-28 23:05:19,696 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:19] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766934319374 HTTP/1.1" 200 - +2025-12-28 23:05:22,480 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87952.81, pending_signals=2 +2025-12-28 23:05:22,508 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 87948.78, 'position_size': 0.08, 'timestamp': 1766934240}, {'type': 'close_short', 'trigger_price': 87948.78, 'position_size': 0, 'timestamp': 1766934240}] +2025-12-28 23:05:22,533 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=858.33, pending_signals=1 +2025-12-28 23:05:22,537 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 858.33, 'position_size': 0, 'timestamp': 1766934300}] +2025-12-28 23:05:29,291 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:29] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 23:05:29,608 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:29] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 23:05:29,615 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:29] "GET /api/market/types?_t=1766934329281 HTTP/1.1" 200 - +2025-12-28 23:05:29,622 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-28 23:05:30,628 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 23:05:30,634 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:30] "GET /api/strategies?_t=1766934330086 HTTP/1.1" 200 - +2025-12-28 23:05:31,597 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:31] "GET /api/strategies/equityCurve?id=2&_t=1766934331279 HTTP/1.1" 200 - +2025-12-28 23:05:31,600 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:31] "GET /api/strategies/equityCurve?id=2&_t=1766934331279 HTTP/1.1" 200 - +2025-12-28 23:05:31,604 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:31] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934331279 HTTP/1.1" 200 - +2025-12-28 23:05:31,720 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:31] "GET /api/strategies/positions?id=2&_t=1766934331280 HTTP/1.1" 200 - +2025-12-28 23:05:32,815 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2950.85, pending_signals=1 +2025-12-28 23:05:32,818 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2950.86, 'position_size': 0, 'timestamp': 1766934300}] +2025-12-28 23:05:33,097 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=858.56, pending_signals=1 +2025-12-28 23:05:33,099 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 858.56, 'position_size': 0, 'timestamp': 1766934300}] +2025-12-28 23:05:33,452 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87958.94, pending_signals=2 +2025-12-28 23:05:33,462 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 87948.78, 'position_size': 0.08, 'timestamp': 1766934240}, {'type': 'close_short', 'trigger_price': 87948.78, 'position_size': 0, 'timestamp': 1766934240}] +2025-12-28 23:05:34,279 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:34] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934334272 HTTP/1.1" 200 - +2025-12-28 23:05:36,780 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:36] "GET /api/strategies/positions?id=2&_t=1766934336277 HTTP/1.1" 200 - +2025-12-28 23:05:37,279 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934337272 HTTP/1.1" 200 - +2025-12-28 23:05:37,797 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934337484 HTTP/1.1" 200 - +2025-12-28 23:05:37,909 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:37] "GET /api/strategies/positions?id=2&_t=1766934337485 HTTP/1.1" 200 - +2025-12-28 23:05:37,914 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:37] "GET /api/strategies/equityCurve?id=2&_t=1766934337485 HTTP/1.1" 200 - +2025-12-28 23:05:40,279 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:40] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934340273 HTTP/1.1" 200 - +2025-12-28 23:05:41,711 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:41] "GET /api/strategies/positions?id=2&_t=1766934341276 HTTP/1.1" 200 - +2025-12-28 23:05:42,464 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2950.85, pending_signals=1 +2025-12-28 23:05:42,481 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87958.94, pending_signals=2 +2025-12-28 23:05:42,490 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 87948.78, 'position_size': 0.08, 'timestamp': 1766934240}, {'type': 'close_short', 'trigger_price': 87948.78, 'position_size': 0, 'timestamp': 1766934240}] +2025-12-28 23:05:42,501 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2950.85, 'position_size': 0, 'timestamp': 1766934300}] +2025-12-28 23:05:42,537 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=858.56, pending_signals=1 +2025-12-28 23:05:42,539 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 858.56, 'position_size': 0, 'timestamp': 1766934300}] +2025-12-28 23:05:43,279 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:43] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934343273 HTTP/1.1" 200 - +2025-12-28 23:05:46,594 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:46] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934346272 HTTP/1.1" 200 - +2025-12-28 23:05:46,710 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:46] "GET /api/strategies/positions?id=2&_t=1766934346277 HTTP/1.1" 200 - +2025-12-28 23:05:49,278 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:49] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934349272 HTTP/1.1" 200 - +2025-12-28 23:05:51,782 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:51] "GET /api/strategies/positions?id=2&_t=1766934351277 HTTP/1.1" 200 - +2025-12-28 23:05:52,279 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:52] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934352272 HTTP/1.1" 200 - +2025-12-28 23:05:52,732 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=858.56, pending_signals=1 +2025-12-28 23:05:52,748 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87974.91, pending_signals=2 +2025-12-28 23:05:52,749 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 858.56, 'position_size': 0, 'timestamp': 1766934300}] +2025-12-28 23:05:52,758 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 87948.78, 'position_size': 0.08, 'timestamp': 1766934240}, {'type': 'close_short', 'trigger_price': 87948.78, 'position_size': 0, 'timestamp': 1766934240}] +2025-12-28 23:05:52,777 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2951.71, pending_signals=1 +2025-12-28 23:05:52,780 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2951.71, 'position_size': 0, 'timestamp': 1766934300}] +2025-12-28 23:05:55,592 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:55] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934355272 HTTP/1.1" 200 - +2025-12-28 23:05:56,532 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:56] "GET /api/strategies/positions?id=2&_t=1766934356276 HTTP/1.1" 200 - +2025-12-28 23:05:58,590 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:05:58] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934358272 HTTP/1.1" 200 - +2025-12-28 23:06:01,280 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:06:01] "GET /api/strategies/equityCurve?id=2&_t=1766934361272 HTTP/1.1" 200 - +2025-12-28 23:06:01,588 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:06:01] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934361273 HTTP/1.1" 200 - +2025-12-28 23:06:01,786 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:06:01] "GET /api/strategies/positions?id=2&_t=1766934361277 HTTP/1.1" 200 - +2025-12-28 23:06:02,467 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2951.71, pending_signals=2 +2025-12-28 23:06:02,471 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 2950.86, 'position_size': 0.08, 'timestamp': 1766934300}, {'type': 'close_short', 'trigger_price': 2950.86, 'position_size': 0, 'timestamp': 1766934300}] +2025-12-28 23:06:02,495 - app.services.trading_executor - INFO - Strategy 1 signal executed: open_long @ 2950.86 +2025-12-28 23:06:02,539 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=858.56, pending_signals=2 +2025-12-28 23:06:02,541 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'open_long', 'trigger_price': 858.56, 'position_size': 0.08, 'timestamp': 1766934300}, {'type': 'close_short', 'trigger_price': 858.56, 'position_size': 0, 'timestamp': 1766934300}] +2025-12-28 23:06:02,549 - app.services.trading_executor - INFO - Strategy 9 signal executed: open_long @ 858.56 +2025-12-28 23:06:03,876 - app.services.pending_order_worker - WARNING - live limit phase unexpected error: pending_id=38, strategy_id=1, cfg={'exchange_id': 'bitget', 'api_key': 'bg_8...b659', 'secret_key': '3b7e...b239', 'passphrase': 'xuji...u123', 'credential_id': 3}, err='<' not supported between instances of 'NoneType' and 'decimal.Decimal' +2025-12-28 23:06:03,876 - app.services.pending_order_worker - WARNING - live market phase unexpected error: pending_id=38, strategy_id=1, cfg={'exchange_id': 'bitget', 'api_key': 'bg_8...b659', 'secret_key': '3b7e...b239', 'passphrase': 'xuji...u123', 'credential_id': 3}, err='<' not supported between instances of 'NoneType' and 'decimal.Decimal' +2025-12-28 23:06:04,590 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:06:04] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934364272 HTTP/1.1" 200 - +2025-12-28 23:06:06,353 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=39, strategy_id=9, cfg={'exchange_id': 'binance', 'api_key': '9E46...x6ec', 'secret_key': 'I5uD...ykZh'}, err=Binance HTTP 400: {"code":-1111,"msg":"Precision is over the maximum defined for this asset."} +2025-12-28 23:06:06,393 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:06:06] "GET /api/strategies/positions?id=2&_t=1766934366277 HTTP/1.1" 200 - +2025-12-28 23:06:07,091 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=39, strategy_id=9, cfg={'exchange_id': 'binance', 'api_key': '9E46...x6ec', 'secret_key': 'I5uD...ykZh'}, err=Binance HTTP 400: {"code":-1111,"msg":"Precision is over the maximum defined for this asset."} +2025-12-28 23:06:07,588 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:06:07] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934367272 HTTP/1.1" 200 - +2025-12-28 23:06:10,279 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:06:10] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934370272 HTTP/1.1" 200 - +2025-12-28 23:06:11,707 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:06:11] "GET /api/strategies/positions?id=2&_t=1766934371276 HTTP/1.1" 200 - +2025-12-28 23:06:12,571 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2951.93, pending_signals=2 +2025-12-28 23:06:12,573 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 2950.86, 'position_size': 0.08, 'timestamp': 1766934300}, {'type': 'close_short', 'trigger_price': 2950.86, 'position_size': 0, 'timestamp': 1766934300}] +2025-12-28 23:06:12,650 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=858.79, pending_signals=2 +2025-12-28 23:06:12,652 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'open_long', 'trigger_price': 858.56, 'position_size': 0.08, 'timestamp': 1766934300}, {'type': 'close_short', 'trigger_price': 858.56, 'position_size': 0, 'timestamp': 1766934300}] +2025-12-28 23:06:13,278 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:06:13] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934373272 HTTP/1.1" 200 - +2025-12-28 23:06:16,594 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:06:16] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934376273 HTTP/1.1" 200 - +2025-12-28 23:06:16,760 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:06:16] "GET /api/strategies/positions?id=2&_t=1766934376278 HTTP/1.1" 200 - +2025-12-28 23:06:19,279 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:06:19] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934379273 HTTP/1.1" 200 - +2025-12-28 23:06:21,699 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:06:21] "GET /api/strategies/positions?id=2&_t=1766934381277 HTTP/1.1" 200 - +2025-12-28 23:06:22,278 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:06:22] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934382272 HTTP/1.1" 200 - +2025-12-28 23:06:22,469 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2951.93, pending_signals=2 +2025-12-28 23:06:22,472 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 2950.86, 'position_size': 0.08, 'timestamp': 1766934300}, {'type': 'close_short', 'trigger_price': 2950.86, 'position_size': 0, 'timestamp': 1766934300}] +2025-12-28 23:06:22,553 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=858.79, pending_signals=2 +2025-12-28 23:06:22,555 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'open_long', 'trigger_price': 858.56, 'position_size': 0.08, 'timestamp': 1766934300}, {'type': 'close_short', 'trigger_price': 858.56, 'position_size': 0, 'timestamp': 1766934300}] +2025-12-28 23:06:25,586 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:06:25] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934385273 HTTP/1.1" 200 - +2025-12-28 23:06:26,395 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:06:26] "GET /api/strategies/positions?id=2&_t=1766934386277 HTTP/1.1" 200 - +2025-12-28 23:06:28,592 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:06:28] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934388272 HTTP/1.1" 200 - +2025-12-28 23:06:31,280 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:06:31] "GET /api/strategies/equityCurve?id=2&_t=1766934391272 HTTP/1.1" 200 - +2025-12-28 23:06:31,588 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:06:31] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934391272 HTTP/1.1" 200 - +2025-12-28 23:06:31,711 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:06:31] "GET /api/strategies/positions?id=2&_t=1766934391278 HTTP/1.1" 200 - +2025-12-28 23:06:32,853 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2950.85, pending_signals=2 +2025-12-28 23:06:32,855 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2951.92, 'position_size': 0, 'timestamp': 1766934300}] +2025-12-28 23:06:33,240 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=858.59, pending_signals=2 +2025-12-28 23:06:33,242 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 858.65, 'position_size': 0, 'timestamp': 1766934300}] +2025-12-28 23:06:34,587 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:06:34] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934394272 HTTP/1.1" 200 - +2025-12-28 23:06:36,496 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:06:36] "GET /api/strategies/positions?id=2&_t=1766934396276 HTTP/1.1" 200 - +2025-12-28 23:06:37,589 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:06:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934397272 HTTP/1.1" 200 - +2025-12-28 23:06:37,793 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:06:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934397477 HTTP/1.1" 200 - +2025-12-28 23:06:38,127 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:06:38] "GET /api/strategies/positions?id=2&_t=1766934397477 HTTP/1.1" 200 - +2025-12-28 23:06:38,133 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:06:38] "GET /api/strategies/equityCurve?id=2&_t=1766934397478 HTTP/1.1" 200 - +2025-12-28 23:06:40,279 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:06:40] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934400273 HTTP/1.1" 200 - +2025-12-28 23:06:41,704 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:06:41] "GET /api/strategies/positions?id=2&_t=1766934401277 HTTP/1.1" 200 - +2025-12-28 23:06:42,473 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2950.85, pending_signals=2 +2025-12-28 23:06:42,476 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2951.92, 'position_size': 0, 'timestamp': 1766934300}] +2025-12-28 23:06:42,556 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=858.59, pending_signals=2 +2025-12-28 23:06:42,558 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 858.65, 'position_size': 0, 'timestamp': 1766934300}] +2025-12-28 23:06:43,279 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:06:43] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934403273 HTTP/1.1" 200 - +2025-12-28 23:06:46,595 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:06:46] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934406273 HTTP/1.1" 200 - +2025-12-28 23:06:46,708 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:06:46] "GET /api/strategies/positions?id=2&_t=1766934406276 HTTP/1.1" 200 - +2025-12-28 23:06:49,279 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:06:49] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934409272 HTTP/1.1" 200 - +2025-12-28 23:06:51,703 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:06:51] "GET /api/strategies/positions?id=2&_t=1766934411277 HTTP/1.1" 200 - +2025-12-28 23:06:52,280 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:06:52] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934412273 HTTP/1.1" 200 - +2025-12-28 23:06:52,580 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2950.48, pending_signals=2 +2025-12-28 23:06:52,582 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2951.92, 'position_size': 0, 'timestamp': 1766934300}] +2025-12-28 23:06:52,724 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=858.46, pending_signals=2 +2025-12-28 23:06:52,726 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 858.65, 'position_size': 0, 'timestamp': 1766934300}] +2025-12-28 23:06:55,590 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:06:55] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934415272 HTTP/1.1" 200 - +2025-12-28 23:06:56,575 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:06:56] "GET /api/strategies/positions?id=2&_t=1766934416277 HTTP/1.1" 200 - +2025-12-28 23:06:58,588 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:06:58] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934418272 HTTP/1.1" 200 - +2025-12-28 23:07:01,281 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:07:01] "GET /api/strategies/equityCurve?id=2&_t=1766934421273 HTTP/1.1" 200 - +2025-12-28 23:07:01,588 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:07:01] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934421273 HTTP/1.1" 200 - +2025-12-28 23:07:01,700 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:07:01] "GET /api/strategies/positions?id=2&_t=1766934421278 HTTP/1.1" 200 - +2025-12-28 23:07:04,586 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:07:04] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934424272 HTTP/1.1" 200 - +2025-12-28 23:07:06,508 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:07:06] "GET /api/strategies/positions?id=2&_t=1766934426277 HTTP/1.1" 200 - +2025-12-28 23:07:07,587 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:07:07] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934427272 HTTP/1.1" 200 - +2025-12-28 23:07:10,279 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:07:10] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934430272 HTTP/1.1" 200 - +2025-12-28 23:07:11,708 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:07:11] "GET /api/strategies/positions?id=2&_t=1766934431277 HTTP/1.1" 200 - +2025-12-28 23:07:13,278 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:07:13] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934433272 HTTP/1.1" 200 - +2025-12-28 23:07:16,580 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:07:16] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934436272 HTTP/1.1" 200 - +2025-12-28 23:07:16,816 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:07:16] "GET /api/strategies/positions?id=2&_t=1766934436277 HTTP/1.1" 200 - +2025-12-28 23:07:19,280 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:07:19] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934439273 HTTP/1.1" 200 - +2025-12-28 23:07:21,943 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:07:21] "GET /api/strategies/positions?id=2&_t=1766934441277 HTTP/1.1" 200 - +2025-12-28 23:07:22,279 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:07:22] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934442272 HTTP/1.1" 200 - +2025-12-28 23:07:22,751 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:07:22] "GET /api/strategies/trades?id=2&_t=1766934442426 HTTP/1.1" 200 - +2025-12-28 23:07:25,279 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:07:25] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934445272 HTTP/1.1" 200 - +2025-12-28 23:07:26,718 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:07:26] "GET /api/strategies/positions?id=2&_t=1766934446277 HTTP/1.1" 200 - +2025-12-28 23:07:28,278 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:07:28] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934448272 HTTP/1.1" 200 - +2025-12-28 23:07:31,585 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:07:31] "GET /api/strategies/equityCurve?id=2&_t=1766934451272 HTTP/1.1" 200 - +2025-12-28 23:07:31,588 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:07:31] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934451272 HTTP/1.1" 200 - +2025-12-28 23:07:31,703 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:07:31] "GET /api/strategies/positions?id=2&_t=1766934451278 HTTP/1.1" 200 - +2025-12-28 23:07:34,278 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:07:34] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934454272 HTTP/1.1" 200 - +2025-12-28 23:07:35,843 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-28 23:07:35,950 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:07:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 23:07:36,394 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:07:36] "GET /api/strategies/positions?id=2&_t=1766934456277 HTTP/1.1" 200 - +2025-12-28 23:07:37,594 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:07:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934457272 HTTP/1.1" 200 - +2025-12-28 23:07:37,800 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:07:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934457481 HTTP/1.1" 200 - +2025-12-28 23:07:38,005 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:07:38] "GET /api/strategies/positions?id=2&_t=1766934457482 HTTP/1.1" 200 - +2025-12-28 23:07:38,010 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:07:38] "GET /api/strategies/equityCurve?id=2&_t=1766934457482 HTTP/1.1" 200 - +2025-12-28 23:07:40,280 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:07:40] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934460273 HTTP/1.1" 200 - +2025-12-28 23:07:41,695 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:07:41] "GET /api/strategies/positions?id=2&_t=1766934461276 HTTP/1.1" 200 - +2025-12-28 23:07:43,279 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:07:43] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934463272 HTTP/1.1" 200 - +2025-12-28 23:07:46,582 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:07:46] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934466272 HTTP/1.1" 200 - +2025-12-28 23:07:46,697 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:07:46] "GET /api/strategies/positions?id=2&_t=1766934466278 HTTP/1.1" 200 - +2025-12-28 23:07:49,279 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:07:49] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934469272 HTTP/1.1" 200 - +2025-12-28 23:07:51,696 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:07:51] "GET /api/strategies/positions?id=2&_t=1766934471277 HTTP/1.1" 200 - +2025-12-28 23:07:52,279 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:07:52] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934472273 HTTP/1.1" 200 - +2025-12-28 23:07:55,579 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:07:55] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934475272 HTTP/1.1" 200 - +2025-12-28 23:07:56,397 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:07:56] "GET /api/strategies/positions?id=2&_t=1766934476276 HTTP/1.1" 200 - +2025-12-28 23:07:58,595 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:07:58] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934478273 HTTP/1.1" 200 - +2025-12-28 23:08:01,280 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:08:01] "GET /api/strategies/equityCurve?id=2&_t=1766934481272 HTTP/1.1" 200 - +2025-12-28 23:08:01,595 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:08:01] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934481273 HTTP/1.1" 200 - +2025-12-28 23:08:01,876 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:08:01] "GET /api/strategies/positions?id=2&_t=1766934481276 HTTP/1.1" 200 - +2025-12-28 23:08:04,581 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:08:04] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934484272 HTTP/1.1" 200 - +2025-12-28 23:08:06,567 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:08:06] "GET /api/strategies/positions?id=2&_t=1766934486276 HTTP/1.1" 200 - +2025-12-28 23:08:07,579 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:08:07] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934487273 HTTP/1.1" 200 - +2025-12-28 23:08:10,279 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:08:10] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934490272 HTTP/1.1" 200 - +2025-12-28 23:08:11,789 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:08:11] "GET /api/strategies/positions?id=2&_t=1766934491277 HTTP/1.1" 200 - +2025-12-28 23:08:13,278 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:08:13] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934493272 HTTP/1.1" 200 - +2025-12-28 23:08:16,581 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:08:16] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934496272 HTTP/1.1" 200 - +2025-12-28 23:08:16,696 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:08:16] "GET /api/strategies/positions?id=2&_t=1766934496277 HTTP/1.1" 200 - +2025-12-28 23:08:19,279 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:08:19] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934499273 HTTP/1.1" 200 - +2025-12-28 23:08:21,945 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:08:21] "GET /api/strategies/positions?id=2&_t=1766934501277 HTTP/1.1" 200 - +2025-12-28 23:08:22,279 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:08:22] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934502273 HTTP/1.1" 200 - +2025-12-28 23:08:25,584 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:08:25] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934505272 HTTP/1.1" 200 - +2025-12-28 23:08:26,473 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:08:26] "GET /api/strategies/positions?id=2&_t=1766934506277 HTTP/1.1" 200 - +2025-12-28 23:08:28,587 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:08:28] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934508272 HTTP/1.1" 200 - +2025-12-28 23:08:31,280 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:08:31] "GET /api/strategies/equityCurve?id=2&_t=1766934511272 HTTP/1.1" 200 - +2025-12-28 23:08:31,581 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:08:31] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934511272 HTTP/1.1" 200 - +2025-12-28 23:08:31,694 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:08:31] "GET /api/strategies/positions?id=2&_t=1766934511276 HTTP/1.1" 200 - +2025-12-28 23:08:34,591 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:08:34] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934514272 HTTP/1.1" 200 - +2025-12-28 23:08:36,641 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:08:36] "GET /api/strategies/positions?id=2&_t=1766934516277 HTTP/1.1" 200 - +2025-12-28 23:08:37,582 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:08:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934517273 HTTP/1.1" 200 - +2025-12-28 23:08:37,786 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:08:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934517472 HTTP/1.1" 200 - +2025-12-28 23:08:38,298 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:08:38] "GET /api/strategies/positions?id=2&_t=1766934517473 HTTP/1.1" 200 - +2025-12-28 23:08:38,312 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:08:38] "GET /api/strategies/equityCurve?id=2&_t=1766934517473 HTTP/1.1" 200 - +2025-12-28 23:08:40,278 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:08:40] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934520272 HTTP/1.1" 200 - +2025-12-28 23:08:41,698 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:08:41] "GET /api/strategies/positions?id=2&_t=1766934521277 HTTP/1.1" 200 - +2025-12-28 23:08:43,279 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:08:43] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934523273 HTTP/1.1" 200 - +2025-12-28 23:08:46,594 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:08:46] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934526272 HTTP/1.1" 200 - +2025-12-28 23:08:46,707 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:08:46] "GET /api/strategies/positions?id=2&_t=1766934526276 HTTP/1.1" 200 - +2025-12-28 23:08:49,278 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:08:49] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934529272 HTTP/1.1" 200 - +2025-12-28 23:08:51,703 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:08:51] "GET /api/strategies/positions?id=2&_t=1766934531277 HTTP/1.1" 200 - +2025-12-28 23:08:52,278 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:08:52] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934532273 HTTP/1.1" 200 - +2025-12-28 23:08:55,591 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:08:55] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934535273 HTTP/1.1" 200 - +2025-12-28 23:08:56,394 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:08:56] "GET /api/strategies/positions?id=2&_t=1766934536277 HTTP/1.1" 200 - +2025-12-28 23:08:58,590 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:08:58] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934538273 HTTP/1.1" 200 - +2025-12-28 23:09:01,279 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:09:01] "GET /api/strategies/equityCurve?id=2&_t=1766934541272 HTTP/1.1" 200 - +2025-12-28 23:09:01,594 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:09:01] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934541273 HTTP/1.1" 200 - +2025-12-28 23:09:01,771 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:09:01] "GET /api/strategies/positions?id=2&_t=1766934541276 HTTP/1.1" 200 - +2025-12-28 23:09:04,591 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:09:04] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934544273 HTTP/1.1" 200 - +2025-12-28 23:09:06,397 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:09:06] "GET /api/strategies/positions?id=2&_t=1766934546278 HTTP/1.1" 200 - +2025-12-28 23:09:07,592 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:09:07] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934547273 HTTP/1.1" 200 - +2025-12-28 23:09:10,279 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:09:10] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934550272 HTTP/1.1" 200 - +2025-12-28 23:09:11,786 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:09:11] "GET /api/strategies/positions?id=2&_t=1766934551276 HTTP/1.1" 200 - +2025-12-28 23:09:13,279 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:09:13] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934553272 HTTP/1.1" 200 - +2025-12-28 23:09:16,585 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:09:16] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934556273 HTTP/1.1" 200 - +2025-12-28 23:09:16,817 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:09:16] "GET /api/strategies/positions?id=2&_t=1766934556277 HTTP/1.1" 200 - +2025-12-28 23:09:19,278 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:09:19] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934559272 HTTP/1.1" 200 - +2025-12-28 23:09:21,884 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:09:21] "GET /api/strategies/positions?id=2&_t=1766934561277 HTTP/1.1" 200 - +2025-12-28 23:09:22,278 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:09:22] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934562272 HTTP/1.1" 200 - +2025-12-28 23:09:25,587 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:09:25] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934565272 HTTP/1.1" 200 - +2025-12-28 23:09:26,394 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:09:26] "GET /api/strategies/positions?id=2&_t=1766934566278 HTTP/1.1" 200 - +2025-12-28 23:09:28,581 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:09:28] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934568273 HTTP/1.1" 200 - +2025-12-28 23:09:31,280 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:09:31] "GET /api/strategies/equityCurve?id=2&_t=1766934571273 HTTP/1.1" 200 - +2025-12-28 23:09:31,581 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:09:31] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934571273 HTTP/1.1" 200 - +2025-12-28 23:09:31,771 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:09:31] "GET /api/strategies/positions?id=2&_t=1766934571278 HTTP/1.1" 200 - +2025-12-28 23:09:34,580 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:09:34] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934574273 HTTP/1.1" 200 - +2025-12-28 23:09:36,398 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:09:36] "GET /api/strategies/positions?id=2&_t=1766934576277 HTTP/1.1" 200 - +2025-12-28 23:09:37,588 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:09:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934577273 HTTP/1.1" 200 - +2025-12-28 23:09:37,789 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:09:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934577475 HTTP/1.1" 200 - +2025-12-28 23:09:37,902 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:09:37] "GET /api/strategies/positions?id=2&_t=1766934577475 HTTP/1.1" 200 - +2025-12-28 23:09:37,907 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:09:37] "GET /api/strategies/equityCurve?id=2&_t=1766934577475 HTTP/1.1" 200 - +2025-12-28 23:09:40,279 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:09:40] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934580272 HTTP/1.1" 200 - +2025-12-28 23:09:41,777 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:09:41] "GET /api/strategies/positions?id=2&_t=1766934581277 HTTP/1.1" 200 - +2025-12-28 23:09:43,278 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:09:43] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934583273 HTTP/1.1" 200 - +2025-12-28 23:09:46,587 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:09:46] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934586272 HTTP/1.1" 200 - +2025-12-28 23:09:46,701 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:09:46] "GET /api/strategies/positions?id=2&_t=1766934586277 HTTP/1.1" 200 - +2025-12-28 23:09:49,279 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:09:49] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934589273 HTTP/1.1" 200 - +2025-12-28 23:09:51,705 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:09:51] "GET /api/strategies/positions?id=2&_t=1766934591277 HTTP/1.1" 200 - +2025-12-28 23:09:52,278 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:09:52] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934592272 HTTP/1.1" 200 - +2025-12-28 23:09:55,594 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:09:55] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934595272 HTTP/1.1" 200 - +2025-12-28 23:09:56,474 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:09:56] "GET /api/strategies/positions?id=2&_t=1766934596277 HTTP/1.1" 200 - +2025-12-28 23:09:58,580 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:09:58] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934598272 HTTP/1.1" 200 - +2025-12-28 23:10:01,280 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:10:01] "GET /api/strategies/equityCurve?id=2&_t=1766934601273 HTTP/1.1" 200 - +2025-12-28 23:10:01,582 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:10:01] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934601273 HTTP/1.1" 200 - +2025-12-28 23:10:02,587 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:10:02] "GET /api/strategies/positions?id=2&_t=1766934601276 HTTP/1.1" 200 - +2025-12-28 23:10:04,591 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:10:04] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934604272 HTTP/1.1" 200 - +2025-12-28 23:10:06,678 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:10:06] "GET /api/strategies/positions?id=2&_t=1766934606276 HTTP/1.1" 200 - +2025-12-28 23:10:07,582 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:10:07] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934607272 HTTP/1.1" 200 - +2025-12-28 23:10:10,280 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:10:10] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934610273 HTTP/1.1" 200 - +2025-12-28 23:10:11,703 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:10:11] "GET /api/strategies/positions?id=2&_t=1766934611277 HTTP/1.1" 200 - +2025-12-28 23:10:13,279 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:10:13] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934613273 HTTP/1.1" 200 - +2025-12-28 23:10:16,593 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:10:16] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934616272 HTTP/1.1" 200 - +2025-12-28 23:10:16,707 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:10:16] "GET /api/strategies/positions?id=2&_t=1766934616277 HTTP/1.1" 200 - +2025-12-28 23:10:19,279 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:10:19] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934619272 HTTP/1.1" 200 - +2025-12-28 23:10:21,703 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:10:21] "GET /api/strategies/positions?id=2&_t=1766934621277 HTTP/1.1" 200 - +2025-12-28 23:10:22,080 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:10:22] "GET /api/dashboard/summary?_t=1766934622067 HTTP/1.1" 200 - +2025-12-28 23:10:22,379 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:10:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766934622067 HTTP/1.1" 200 - +2025-12-28 23:10:37,827 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:10:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934637480 HTTP/1.1" 200 - +2025-12-28 23:10:37,943 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:10:37] "GET /api/strategies/positions?id=2&_t=1766934637481 HTTP/1.1" 200 - +2025-12-28 23:10:37,947 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:10:37] "GET /api/strategies/equityCurve?id=2&_t=1766934637481 HTTP/1.1" 200 - +2025-12-28 23:11:37,494 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:11:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934697484 HTTP/1.1" 200 - +2025-12-28 23:11:38,078 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:11:38] "GET /api/strategies/positions?id=2&_t=1766934697485 HTTP/1.1" 200 - +2025-12-28 23:11:38,083 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:11:38] "GET /api/strategies/equityCurve?id=2&_t=1766934697485 HTTP/1.1" 200 - +2025-12-28 23:12:37,799 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:12:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934757484 HTTP/1.1" 200 - +2025-12-28 23:12:38,011 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:12:38] "GET /api/strategies/positions?id=2&_t=1766934757484 HTTP/1.1" 200 - +2025-12-28 23:12:38,017 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:12:38] "GET /api/strategies/equityCurve?id=2&_t=1766934757485 HTTP/1.1" 200 - +2025-12-28 23:13:37,482 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:13:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934817471 HTTP/1.1" 200 - +2025-12-28 23:13:37,980 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:13:37] "GET /api/strategies/positions?id=2&_t=1766934817471 HTTP/1.1" 200 - +2025-12-28 23:13:37,985 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:13:37] "GET /api/strategies/equityCurve?id=2&_t=1766934817472 HTTP/1.1" 200 - +2025-12-28 23:14:37,794 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:14:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934877478 HTTP/1.1" 200 - +2025-12-28 23:14:38,041 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:14:38] "GET /api/strategies/positions?id=2&_t=1766934877481 HTTP/1.1" 200 - +2025-12-28 23:14:38,047 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:14:38] "GET /api/strategies/equityCurve?id=2&_t=1766934877482 HTTP/1.1" 200 - +2025-12-28 23:14:53,217 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-28 23:14:53,223 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-28 23:14:53,614 - app.services.strategy - INFO - Found 3 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}, {'id': 9, 'strategy_type': 'IndicatorStrategy'}] +2025-12-28 23:14:53,615 - app - INFO - Restoring 3 running strategies... +2025-12-28 23:14:53,615 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-28 23:14:53,615 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-28 23:14:53,615 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-28 23:14:53,615 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-28 23:14:53,615 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-28 23:14:53,616 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-28 23:14:53,616 - app.services.trading_executor - INFO - Strategy 9 loop starting +2025-12-28 23:14:53,616 - app.services.trading_executor - INFO - Strategy 9 started +2025-12-28 23:14:53,616 - app - INFO - [OK] IndicatorStrategy 9 restored +2025-12-28 23:14:53,616 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-28 23:14:53,616 - app - INFO - Strategy restore completed: 3/3 restored +2025-12-28 23:14:53,617 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-28 23:14:53,630 - app.services.trading_executor - INFO - Strategy 9 derivatives trading; normalize market_type to: swap +2025-12-28 23:14:53,657 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-28 23:14:53,657 - werkzeug - INFO - Press CTRL+C to quit +2025-12-28 23:14:56,313 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:14:56] "GET /api/dashboard/summary?_t=1766934896287 HTTP/1.1" 200 - +2025-12-28 23:14:56,601 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:14:56] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766934896287 HTTP/1.1" 200 - +2025-12-28 23:14:57,937 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=1, position=1, entry_price=87911.1, highest=87990.0 +2025-12-28 23:14:57,955 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2025-12-28 23:14:58,040 - app.services.trading_executor - INFO - ็ญ–็•ฅ 9 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 23:14:58,057 - app.services.trading_executor - INFO - Strategy 9 initialized; pending_signals=0 +2025-12-28 23:14:58,315 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 23:14:58,334 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2025-12-28 23:15:30,942 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-28 23:15:31,133 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:15:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 23:15:37,490 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:15:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934937481 HTTP/1.1" 200 - +2025-12-28 23:15:37,972 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:15:37] "GET /api/strategies/positions?id=2&_t=1766934937482 HTTP/1.1" 200 - +2025-12-28 23:15:37,978 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:15:37] "GET /api/strategies/equityCurve?id=2&_t=1766934937483 HTTP/1.1" 200 - +2025-12-28 23:16:37,793 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:16:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766934997476 HTTP/1.1" 200 - +2025-12-28 23:16:37,987 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:16:37] "GET /api/strategies/positions?id=2&_t=1766934997478 HTTP/1.1" 200 - +2025-12-28 23:16:37,993 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:16:37] "GET /api/strategies/equityCurve?id=2&_t=1766934997478 HTTP/1.1" 200 - +2025-12-28 23:17:35,541 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-28 23:17:35,541 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:17:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 23:17:37,790 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:17:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935057476 HTTP/1.1" 200 - +2025-12-28 23:17:37,907 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:17:37] "GET /api/strategies/positions?id=2&_t=1766935057477 HTTP/1.1" 200 - +2025-12-28 23:17:37,911 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:17:37] "GET /api/strategies/equityCurve?id=2&_t=1766935057477 HTTP/1.1" 200 - +2025-12-28 23:17:57,159 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:17:57] "GET /api/dashboard/summary?_t=1766935077150 HTTP/1.1" 200 - +2025-12-28 23:17:57,465 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:17:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935077150 HTTP/1.1" 200 - +2025-12-28 23:18:37,799 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:18:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935117483 HTTP/1.1" 200 - +2025-12-28 23:18:37,915 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:18:37] "GET /api/strategies/positions?id=2&_t=1766935117485 HTTP/1.1" 200 - +2025-12-28 23:18:37,920 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:18:37] "GET /api/strategies/equityCurve?id=2&_t=1766935117485 HTTP/1.1" 200 - +2025-12-28 23:19:37,490 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:19:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935177481 HTTP/1.1" 200 - +2025-12-28 23:19:38,016 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:19:38] "GET /api/strategies/positions?id=2&_t=1766935177482 HTTP/1.1" 200 - +2025-12-28 23:19:38,021 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:19:38] "GET /api/strategies/equityCurve?id=2&_t=1766935177482 HTTP/1.1" 200 - +2025-12-28 23:20:37,801 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:20:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935237482 HTTP/1.1" 200 - +2025-12-28 23:20:37,915 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:20:37] "GET /api/strategies/positions?id=2&_t=1766935237483 HTTP/1.1" 200 - +2025-12-28 23:20:37,920 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:20:37] "GET /api/strategies/equityCurve?id=2&_t=1766935237483 HTTP/1.1" 200 - +2025-12-28 23:21:00,262 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:21:00] "GET /api/dashboard/summary?_t=1766935260250 HTTP/1.1" 200 - +2025-12-28 23:21:00,572 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:21:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935260250 HTTP/1.1" 200 - +2025-12-28 23:21:27,805 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:21:27] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935287484 HTTP/1.1" 200 - +2025-12-28 23:21:28,231 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:21:28] "GET /api/strategies/positions?id=2&_t=1766935287485 HTTP/1.1" 200 - +2025-12-28 23:21:28,236 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:21:28] "GET /api/strategies/equityCurve?id=2&_t=1766935287485 HTTP/1.1" 200 - +2025-12-28 23:21:30,622 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:21:30] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935290606 HTTP/1.1" 200 - +2025-12-28 23:21:34,026 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:21:34] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935293480 HTTP/1.1" 200 - +2025-12-28 23:21:34,224 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:21:34] "GET /api/strategies/positions?id=2&_t=1766935293481 HTTP/1.1" 200 - +2025-12-28 23:21:36,688 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:21:36] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935296481 HTTP/1.1" 200 - +2025-12-28 23:21:39,131 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:21:39] "GET /api/strategies/positions?id=2&_t=1766935298482 HTTP/1.1" 200 - +2025-12-28 23:21:39,486 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:21:39] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935299479 HTTP/1.1" 200 - +2025-12-28 23:21:42,861 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:21:42] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935302485 HTTP/1.1" 200 - +2025-12-28 23:21:43,882 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:21:43] "GET /api/strategies/positions?id=2&_t=1766935303479 HTTP/1.1" 200 - +2025-12-28 23:21:45,793 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:21:45] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935305482 HTTP/1.1" 200 - +2025-12-28 23:21:48,478 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:21:48] "GET /api/strategies/equityCurve?id=2&_t=1766935308470 HTTP/1.1" 200 - +2025-12-28 23:21:48,785 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:21:48] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935308470 HTTP/1.1" 200 - +2025-12-28 23:21:48,900 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:21:48] "GET /api/strategies/positions?id=2&_t=1766935308471 HTTP/1.1" 200 - +2025-12-28 23:21:51,795 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:21:51] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935311482 HTTP/1.1" 200 - +2025-12-28 23:21:53,668 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:21:53] "GET /api/strategies/positions?id=2&_t=1766935313471 HTTP/1.1" 200 - +2025-12-28 23:21:54,800 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:21:54] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935314484 HTTP/1.1" 200 - +2025-12-28 23:21:57,751 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:21:57] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935317483 HTTP/1.1" 200 - +2025-12-28 23:21:58,895 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:21:58] "GET /api/strategies/positions?id=2&_t=1766935318476 HTTP/1.1" 200 - +2025-12-28 23:22:00,484 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:22:00] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935320476 HTTP/1.1" 200 - +2025-12-28 23:22:03,791 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:22:03] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935323472 HTTP/1.1" 200 - +2025-12-28 23:22:03,916 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:22:03] "GET /api/strategies/positions?id=2&_t=1766935323472 HTTP/1.1" 200 - +2025-12-28 23:22:06,895 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:22:06] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935326472 HTTP/1.1" 200 - +2025-12-28 23:22:08,983 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:22:08] "GET /api/strategies/positions?id=2&_t=1766935328472 HTTP/1.1" 200 - +2025-12-28 23:22:09,486 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:22:09] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935329478 HTTP/1.1" 200 - +2025-12-28 23:22:12,794 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:22:12] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935332478 HTTP/1.1" 200 - +2025-12-28 23:22:13,800 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:22:13] "GET /api/strategies/positions?id=2&_t=1766935333475 HTTP/1.1" 200 - +2025-12-28 23:22:15,796 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:22:15] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935335482 HTTP/1.1" 200 - +2025-12-28 23:22:18,493 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:22:18] "GET /api/strategies/equityCurve?id=2&_t=1766935338484 HTTP/1.1" 200 - +2025-12-28 23:22:18,801 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:22:18] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935338484 HTTP/1.1" 200 - +2025-12-28 23:22:19,091 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:22:19] "GET /api/strategies/positions?id=2&_t=1766935338485 HTTP/1.1" 200 - +2025-12-28 23:22:21,789 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:22:21] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935341472 HTTP/1.1" 200 - +2025-12-28 23:22:23,594 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:22:23] "GET /api/strategies/positions?id=2&_t=1766935343477 HTTP/1.1" 200 - +2025-12-28 23:22:24,786 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:22:24] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935344475 HTTP/1.1" 200 - +2025-12-28 23:22:27,480 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:22:27] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935347472 HTTP/1.1" 200 - +2025-12-28 23:22:28,988 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:22:28] "GET /api/strategies/positions?id=2&_t=1766935348483 HTTP/1.1" 200 - +2025-12-28 23:22:30,483 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:22:30] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935350477 HTTP/1.1" 200 - +2025-12-28 23:22:33,794 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:22:33] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935353476 HTTP/1.1" 200 - +2025-12-28 23:22:33,912 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:22:33] "GET /api/strategies/positions?id=2&_t=1766935353477 HTTP/1.1" 200 - +2025-12-28 23:22:36,490 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:22:36] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935356484 HTTP/1.1" 200 - +2025-12-28 23:22:38,900 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:22:38] "GET /api/strategies/positions?id=2&_t=1766935358482 HTTP/1.1" 200 - +2025-12-28 23:22:39,478 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:22:39] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935359470 HTTP/1.1" 200 - +2025-12-28 23:22:42,046 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:22:42] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935361690 HTTP/1.1" 200 - +2025-12-28 23:22:43,743 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:22:43] "GET /api/strategies/positions?id=2&_t=1766935363472 HTTP/1.1" 200 - +2025-12-28 23:22:45,792 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:22:45] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935365476 HTTP/1.1" 200 - +2025-12-28 23:22:48,485 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:22:48] "GET /api/strategies/equityCurve?id=2&_t=1766935368473 HTTP/1.1" 200 - +2025-12-28 23:22:48,792 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:22:48] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935368477 HTTP/1.1" 200 - +2025-12-28 23:22:48,986 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:22:48] "GET /api/strategies/positions?id=2&_t=1766935368477 HTTP/1.1" 200 - +2025-12-28 23:22:51,786 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:22:51] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935371471 HTTP/1.1" 200 - +2025-12-28 23:22:53,592 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:22:53] "GET /api/strategies/positions?id=2&_t=1766935373470 HTTP/1.1" 200 - +2025-12-28 23:22:54,795 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:22:54] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935374479 HTTP/1.1" 200 - +2025-12-28 23:22:57,487 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:22:57] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935377479 HTTP/1.1" 200 - +2025-12-28 23:22:58,921 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:22:58] "GET /api/strategies/positions?id=2&_t=1766935378483 HTTP/1.1" 200 - +2025-12-28 23:23:00,489 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:23:00] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935380481 HTTP/1.1" 200 - +2025-12-28 23:23:03,799 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:23:03] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935383478 HTTP/1.1" 200 - +2025-12-28 23:23:04,011 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:23:04] "GET /api/strategies/positions?id=2&_t=1766935383479 HTTP/1.1" 200 - +2025-12-28 23:23:06,493 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:23:06] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935386485 HTTP/1.1" 200 - +2025-12-28 23:23:08,903 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:23:08] "GET /api/strategies/positions?id=2&_t=1766935388479 HTTP/1.1" 200 - +2025-12-28 23:23:09,510 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:23:09] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935389477 HTTP/1.1" 200 - +2025-12-28 23:23:12,797 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:23:12] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935392482 HTTP/1.1" 200 - +2025-12-28 23:23:13,693 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:23:13] "GET /api/strategies/positions?id=2&_t=1766935393477 HTTP/1.1" 200 - +2025-12-28 23:23:15,796 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:23:15] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935395482 HTTP/1.1" 200 - +2025-12-28 23:23:18,488 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:23:18] "GET /api/strategies/equityCurve?id=2&_t=1766935398479 HTTP/1.1" 200 - +2025-12-28 23:23:18,795 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:23:18] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935398480 HTTP/1.1" 200 - +2025-12-28 23:23:18,911 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:23:18] "GET /api/strategies/positions?id=2&_t=1766935398480 HTTP/1.1" 200 - +2025-12-28 23:23:21,795 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:23:21] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935401479 HTTP/1.1" 200 - +2025-12-28 23:23:23,596 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:23:23] "GET /api/strategies/positions?id=2&_t=1766935403476 HTTP/1.1" 200 - +2025-12-28 23:23:24,800 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:23:24] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935404483 HTTP/1.1" 200 - +2025-12-28 23:23:27,486 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:23:27] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935407477 HTTP/1.1" 200 - +2025-12-28 23:23:28,897 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:23:28] "GET /api/strategies/positions?id=2&_t=1766935408476 HTTP/1.1" 200 - +2025-12-28 23:23:30,491 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:23:30] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935410484 HTTP/1.1" 200 - +2025-12-28 23:23:33,789 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:23:33] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935413475 HTTP/1.1" 200 - +2025-12-28 23:23:34,023 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:23:34] "GET /api/strategies/positions?id=2&_t=1766935413476 HTTP/1.1" 200 - +2025-12-28 23:23:36,485 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:23:36] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935416477 HTTP/1.1" 200 - +2025-12-28 23:23:38,911 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:23:38] "GET /api/strategies/positions?id=2&_t=1766935418482 HTTP/1.1" 200 - +2025-12-28 23:23:39,490 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:23:39] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766935419481 HTTP/1.1" 200 - +2025-12-28 23:24:08,529 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:24:08] "GET /api/dashboard/summary?_t=1766935448484 HTTP/1.1" 200 - +2025-12-28 23:24:08,653 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:24:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935448484 HTTP/1.1" 200 - +2025-12-28 23:24:08,966 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:24:08] "GET /api/dashboard/summary?_t=1766935448948 HTTP/1.1" 200 - +2025-12-28 23:24:08,973 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:24:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935448948 HTTP/1.1" 200 - +2025-12-28 23:24:09,772 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:24:09] "GET /api/strategies?_t=1766935449754 HTTP/1.1" 200 - +2025-12-28 23:24:10,981 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:24:10] "GET /api/dashboard/summary?_t=1766935450965 HTTP/1.1" 200 - +2025-12-28 23:24:10,987 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:24:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935450966 HTTP/1.1" 200 - +2025-12-28 23:24:21,029 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:24:21] "GET /api/dashboard/summary?_t=1766935461016 HTTP/1.1" 200 - +2025-12-28 23:24:21,330 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:24:21] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935461016 HTTP/1.1" 200 - +2025-12-28 23:24:38,169 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87950.01, pending_signals=1 +2025-12-28 23:24:38,178 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87950.01, 'position_size': 0, 'timestamp': 1766935440}] +2025-12-28 23:24:38,187 - app.services.trading_executor - INFO - Strategy 2 signal executed: close_long @ 87950.01 +2025-12-28 23:24:48,066 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87950.01, pending_signals=1 +2025-12-28 23:24:48,077 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87950.01, 'position_size': 0, 'timestamp': 1766935440}] +2025-12-28 23:24:53,423 - app.services.pending_order_worker - INFO - position sync: removed 1 ghost positions for strategy_id=2 +2025-12-28 23:24:58,553 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87950.0, pending_signals=1 +2025-12-28 23:24:58,556 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87950.01, 'position_size': 0, 'timestamp': 1766935440}] +2025-12-28 23:24:58,615 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=858.59, pending_signals=1 +2025-12-28 23:24:58,618 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 858.6, 'position_size': 0, 'timestamp': 1766935440}] +2025-12-28 23:25:08,068 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87950.0, pending_signals=2 +2025-12-28 23:25:08,070 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87950.01, 'position_size': 0, 'timestamp': 1766935440}, {'type': 'open_short', 'trigger_price': 87950.01, 'position_size': 0.08, 'timestamp': 1766935440}] +2025-12-28 23:25:08,079 - app.services.trading_executor - INFO - Strategy 2 signal executed: open_short @ 87950.01 +2025-12-28 23:25:08,177 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=858.59, pending_signals=2 +2025-12-28 23:25:08,179 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 858.6, 'position_size': 0, 'timestamp': 1766935440}, {'type': 'open_short', 'trigger_price': 858.6, 'position_size': 0.08, 'timestamp': 1766935440}] +2025-12-28 23:25:08,187 - app.services.trading_executor - INFO - Strategy 9 signal executed: open_short @ 858.6 +2025-12-28 23:25:11,613 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-28 23:25:11,617 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-28 23:25:12,058 - app.services.strategy - INFO - Found 3 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}, {'id': 9, 'strategy_type': 'IndicatorStrategy'}] +2025-12-28 23:25:12,058 - app - INFO - Restoring 3 running strategies... +2025-12-28 23:25:12,059 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-28 23:25:12,059 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-28 23:25:12,059 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-28 23:25:12,059 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-28 23:25:12,059 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-28 23:25:12,060 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-28 23:25:12,060 - app.services.trading_executor - INFO - Strategy 9 loop starting +2025-12-28 23:25:12,060 - app.services.trading_executor - INFO - Strategy 9 started +2025-12-28 23:25:12,060 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-28 23:25:12,060 - app - INFO - [OK] IndicatorStrategy 9 restored +2025-12-28 23:25:12,061 - app - INFO - Strategy restore completed: 3/3 restored +2025-12-28 23:25:12,061 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-28 23:25:12,077 - app.services.trading_executor - INFO - Strategy 9 derivatives trading; normalize market_type to: swap +2025-12-28 23:25:12,090 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-28 23:25:12,090 - werkzeug - INFO - Press CTRL+C to quit +2025-12-28 23:25:13,645 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=42, strategy_id=9, cfg={'exchange_id': 'binance', 'api_key': '9E46...x6ec', 'secret_key': 'I5uD...ykZh'}, err=Binance HTTP 400: {"code":-1111,"msg":"Precision is over the maximum defined for this asset."} +2025-12-28 23:25:14,231 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:25:14] "GET /api/dashboard/summary?_t=1766935513909 HTTP/1.1" 200 - +2025-12-28 23:25:14,263 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:25:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935513909 HTTP/1.1" 200 - +2025-12-28 23:25:14,964 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=42, strategy_id=9, cfg={'exchange_id': 'binance', 'api_key': '9E46...x6ec', 'secret_key': 'I5uD...ykZh'}, err=Binance HTTP 400: {"code":-1111,"msg":"Precision is over the maximum defined for this asset."} +2025-12-28 23:25:16,784 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 23:25:16,802 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2025-12-28 23:25:16,865 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 23:25:16,882 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=2 +2025-12-28 23:25:16,882 - app.services.trading_executor - INFO - Initial signals: [{'type': 'close_long', 'trigger_price': 87943.51, 'position_size': 0, 'timestamp': 1766935440}, {'type': 'open_short', 'trigger_price': 87943.51, 'position_size': 0.08, 'timestamp': 1766935440}] +2025-12-28 23:25:17,007 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87943.5, pending_signals=2 +2025-12-28 23:25:17,009 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87943.51, 'position_size': 0, 'timestamp': 1766935440}, {'type': 'open_short', 'trigger_price': 87943.51, 'position_size': 0.08, 'timestamp': 1766935440}] +2025-12-28 23:25:17,016 - app.services.trading_executor - INFO - Strategy 2 signal executed: open_short @ 87943.51 +2025-12-28 23:25:17,473 - app.services.trading_executor - INFO - ็ญ–็•ฅ 9 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 23:25:17,492 - app.services.trading_executor - INFO - Strategy 9 initialized; pending_signals=2 +2025-12-28 23:25:17,493 - app.services.trading_executor - INFO - Initial signals: [{'type': 'close_long', 'trigger_price': 858.6, 'position_size': 0, 'timestamp': 1766935440}, {'type': 'open_short', 'trigger_price': 858.6, 'position_size': 0.08, 'timestamp': 1766935440}] +2025-12-28 23:25:17,900 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=858.13, pending_signals=2 +2025-12-28 23:25:17,903 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 858.6, 'position_size': 0, 'timestamp': 1766935440}, {'type': 'open_short', 'trigger_price': 858.6, 'position_size': 0.08, 'timestamp': 1766935440}] +2025-12-28 23:25:17,938 - app.services.trading_executor - INFO - Strategy 9 signal executed: open_short @ 858.6 +2025-12-28 23:25:26,904 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87943.5, pending_signals=2 +2025-12-28 23:25:26,907 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87943.51, 'position_size': 0, 'timestamp': 1766935440}, {'type': 'open_short', 'trigger_price': 87943.51, 'position_size': 0.08, 'timestamp': 1766935440}] +2025-12-28 23:25:27,513 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=858.13, pending_signals=2 +2025-12-28 23:25:27,515 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 858.6, 'position_size': 0, 'timestamp': 1766935440}, {'type': 'open_short', 'trigger_price': 858.6, 'position_size': 0.08, 'timestamp': 1766935440}] +2025-12-28 23:25:36,344 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=44, strategy_id=9, cfg={'exchange_id': 'binance', 'api_key': '9E46...x6ec', 'secret_key': 'I5uD...ykZh'}, err=Binance HTTP 400: {"code":-1111,"msg":"Precision is over the maximum defined for this asset."} +2025-12-28 23:25:37,012 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87950.01, pending_signals=2 +2025-12-28 23:25:37,022 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87943.51, 'position_size': 0, 'timestamp': 1766935440}] +2025-12-28 23:25:37,066 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=44, strategy_id=9, cfg={'exchange_id': 'binance', 'api_key': '9E46...x6ec', 'secret_key': 'I5uD...ykZh'}, err=Binance HTTP 400: {"code":-1111,"msg":"Precision is over the maximum defined for this asset."} +2025-12-28 23:25:37,741 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=858.13, pending_signals=2 +2025-12-28 23:25:37,743 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 858.6, 'position_size': 0, 'timestamp': 1766935440}, {'type': 'open_short', 'trigger_price': 858.6, 'position_size': 0.08, 'timestamp': 1766935440}] +2025-12-28 23:25:46,906 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87950.01, pending_signals=2 +2025-12-28 23:25:46,914 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87943.51, 'position_size': 0, 'timestamp': 1766935440}] +2025-12-28 23:25:47,517 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=858.13, pending_signals=2 +2025-12-28 23:25:47,519 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 858.6, 'position_size': 0, 'timestamp': 1766935440}, {'type': 'open_short', 'trigger_price': 858.6, 'position_size': 0.08, 'timestamp': 1766935440}] +2025-12-28 23:25:57,253 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87950.0, pending_signals=2 +2025-12-28 23:25:57,262 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87943.51, 'position_size': 0, 'timestamp': 1766935440}] +2025-12-28 23:25:58,316 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=858.12, pending_signals=2 +2025-12-28 23:25:58,318 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 858.6, 'position_size': 0, 'timestamp': 1766935440}, {'type': 'open_short', 'trigger_price': 858.6, 'position_size': 0.08, 'timestamp': 1766935440}] +2025-12-28 23:26:24,285 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:26:24] "GET /api/dashboard/summary?_t=1766935583967 HTTP/1.1" 200 - +2025-12-28 23:26:24,294 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:26:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935583967 HTTP/1.1" 200 - +2025-12-28 23:26:40,761 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:26:40] "GET /api/dashboard/summary?_t=1766935600751 HTTP/1.1" 200 - +2025-12-28 23:26:41,064 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:26:41] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935600751 HTTP/1.1" 200 - +2025-12-28 23:26:58,603 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:26:58] "DELETE /api/dashboard/pendingOrders/25 HTTP/1.1" 200 - +2025-12-28 23:26:59,522 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:26:59] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935618701 HTTP/1.1" 200 - +2025-12-28 23:26:59,704 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:26:59] "GET /api/dashboard/summary?_t=1766935619688 HTTP/1.1" 200 - +2025-12-28 23:26:59,833 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:26:59] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935619688 HTTP/1.1" 200 - +2025-12-28 23:27:01,715 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:01] "DELETE /api/dashboard/pendingOrders/24 HTTP/1.1" 200 - +2025-12-28 23:27:01,805 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:01] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935621794 HTTP/1.1" 200 - +2025-12-28 23:27:03,994 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:03] "DELETE /api/dashboard/pendingOrders/23 HTTP/1.1" 200 - +2025-12-28 23:27:04,388 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935624075 HTTP/1.1" 200 - +2025-12-28 23:27:06,076 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:06] "DELETE /api/dashboard/pendingOrders/22 HTTP/1.1" 200 - +2025-12-28 23:27:06,474 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:06] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935626159 HTTP/1.1" 200 - +2025-12-28 23:27:08,376 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:08] "DELETE /api/dashboard/pendingOrders/21 HTTP/1.1" 200 - +2025-12-28 23:27:08,781 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935628455 HTTP/1.1" 200 - +2025-12-28 23:27:09,946 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:09] "DELETE /api/dashboard/pendingOrders/20 HTTP/1.1" 200 - +2025-12-28 23:27:10,372 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935630049 HTTP/1.1" 200 - +2025-12-28 23:27:11,463 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:11] "DELETE /api/dashboard/pendingOrders/19 HTTP/1.1" 200 - +2025-12-28 23:27:11,867 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:11] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935631547 HTTP/1.1" 200 - +2025-12-28 23:27:12,878 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:12] "DELETE /api/dashboard/pendingOrders/18 HTTP/1.1" 200 - +2025-12-28 23:27:13,270 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935632959 HTTP/1.1" 200 - +2025-12-28 23:27:14,250 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:14] "DELETE /api/dashboard/pendingOrders/17 HTTP/1.1" 200 - +2025-12-28 23:27:14,657 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935634335 HTTP/1.1" 200 - +2025-12-28 23:27:15,645 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:15] "DELETE /api/dashboard/pendingOrders/16 HTTP/1.1" 200 - +2025-12-28 23:27:16,039 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:16] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935635726 HTTP/1.1" 200 - +2025-12-28 23:27:17,106 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:17] "DELETE /api/dashboard/pendingOrders/15 HTTP/1.1" 200 - +2025-12-28 23:27:17,503 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:17] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935637189 HTTP/1.1" 200 - +2025-12-28 23:27:18,953 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:18] "DELETE /api/dashboard/pendingOrders/14 HTTP/1.1" 200 - +2025-12-28 23:27:19,367 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:19] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935639041 HTTP/1.1" 200 - +2025-12-28 23:27:20,414 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:20] "DELETE /api/dashboard/pendingOrders/13 HTTP/1.1" 200 - +2025-12-28 23:27:20,818 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935640498 HTTP/1.1" 200 - +2025-12-28 23:27:21,897 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:21] "DELETE /api/dashboard/pendingOrders/12 HTTP/1.1" 200 - +2025-12-28 23:27:22,304 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935641980 HTTP/1.1" 200 - +2025-12-28 23:27:23,262 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:23] "DELETE /api/dashboard/pendingOrders/11 HTTP/1.1" 200 - +2025-12-28 23:27:23,669 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935643349 HTTP/1.1" 200 - +2025-12-28 23:27:24,556 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:24] "DELETE /api/dashboard/pendingOrders/10 HTTP/1.1" 200 - +2025-12-28 23:27:24,971 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935644644 HTTP/1.1" 200 - +2025-12-28 23:27:25,762 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:25] "DELETE /api/dashboard/pendingOrders/9 HTTP/1.1" 200 - +2025-12-28 23:27:26,168 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:26] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935645842 HTTP/1.1" 200 - +2025-12-28 23:27:27,137 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:27] "DELETE /api/dashboard/pendingOrders/8 HTTP/1.1" 200 - +2025-12-28 23:27:27,539 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935647219 HTTP/1.1" 200 - +2025-12-28 23:27:28,531 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:28] "DELETE /api/dashboard/pendingOrders/7 HTTP/1.1" 200 - +2025-12-28 23:27:28,939 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935648615 HTTP/1.1" 200 - +2025-12-28 23:27:30,052 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:30] "DELETE /api/dashboard/pendingOrders/6 HTTP/1.1" 200 - +2025-12-28 23:27:30,453 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935650133 HTTP/1.1" 200 - +2025-12-28 23:27:33,964 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:33] "DELETE /api/dashboard/pendingOrders/26 HTTP/1.1" 200 - +2025-12-28 23:27:34,372 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935654044 HTTP/1.1" 200 - +2025-12-28 23:27:35,787 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:35] "DELETE /api/dashboard/pendingOrders/27 HTTP/1.1" 200 - +2025-12-28 23:27:36,188 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:36] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935655870 HTTP/1.1" 200 - +2025-12-28 23:27:37,265 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:37] "DELETE /api/dashboard/pendingOrders/28 HTTP/1.1" 200 - +2025-12-28 23:27:37,666 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935657350 HTTP/1.1" 200 - +2025-12-28 23:27:38,795 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:38] "DELETE /api/dashboard/pendingOrders/29 HTTP/1.1" 200 - +2025-12-28 23:27:39,186 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:39] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935658872 HTTP/1.1" 200 - +2025-12-28 23:27:40,481 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:40] "DELETE /api/dashboard/pendingOrders/30 HTTP/1.1" 200 - +2025-12-28 23:27:40,886 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935660563 HTTP/1.1" 200 - +2025-12-28 23:27:42,812 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:42] "DELETE /api/dashboard/pendingOrders/31 HTTP/1.1" 200 - +2025-12-28 23:27:43,208 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935662883 HTTP/1.1" 200 - +2025-12-28 23:27:45,314 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:45] "DELETE /api/dashboard/pendingOrders/1 HTTP/1.1" 200 - +2025-12-28 23:27:45,711 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:45] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935665386 HTTP/1.1" 200 - +2025-12-28 23:27:51,764 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:51] "DELETE /api/dashboard/pendingOrders/36 HTTP/1.1" 200 - +2025-12-28 23:27:52,152 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:27:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935671828 HTTP/1.1" 200 - +2025-12-28 23:28:02,993 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:28:02] "DELETE /api/dashboard/pendingOrders/5 HTTP/1.1" 200 - +2025-12-28 23:28:03,392 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:28:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935683064 HTTP/1.1" 200 - +2025-12-28 23:28:05,087 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:28:05] "DELETE /api/dashboard/pendingOrders/3 HTTP/1.1" 200 - +2025-12-28 23:28:05,465 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:28:05] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935685145 HTTP/1.1" 200 - +2025-12-28 23:28:07,213 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:28:07] "DELETE /api/dashboard/pendingOrders/4 HTTP/1.1" 200 - +2025-12-28 23:28:07,591 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:28:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935687272 HTTP/1.1" 200 - +2025-12-28 23:28:08,921 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:28:08] "GET /api/dashboard/summary?_t=1766935688910 HTTP/1.1" 200 - +2025-12-28 23:28:09,155 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:28:09] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935688910 HTTP/1.1" 200 - +2025-12-28 23:28:11,453 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:28:11] "DELETE /api/dashboard/pendingOrders/2 HTTP/1.1" 200 - +2025-12-28 23:28:11,521 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:28:11] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935691511 HTTP/1.1" 200 - +2025-12-28 23:28:52,578 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:28:52] "GET /api/dashboard/summary?_t=1766935732563 HTTP/1.1" 200 - +2025-12-28 23:28:52,586 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:28:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935732564 HTTP/1.1" 200 - +2025-12-28 23:28:59,254 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:28:59] "GET /api/dashboard/summary?_t=1766935739235 HTTP/1.1" 200 - +2025-12-28 23:28:59,429 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:28:59] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935739235 HTTP/1.1" 200 - +2025-12-28 23:29:14,043 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:29:14] "GET /api/dashboard/summary?_t=1766935754023 HTTP/1.1" 200 - +2025-12-28 23:29:14,059 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:29:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935754023 HTTP/1.1" 200 - +2025-12-28 23:30:56,980 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2952.27, pending_signals=1 +2025-12-28 23:30:56,983 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2952.27, 'position_size': 0, 'timestamp': 1766935800}] +2025-12-28 23:31:06,877 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2952.27, pending_signals=1 +2025-12-28 23:31:06,880 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2952.27, 'position_size': 0, 'timestamp': 1766935860}] +2025-12-28 23:31:17,389 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2952.15, pending_signals=2 +2025-12-28 23:31:17,391 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2952.18, 'position_size': 0, 'timestamp': 1766935800}, {'type': 'open_short', 'trigger_price': 2952.18, 'position_size': 0.08, 'timestamp': 1766935800}] +2025-12-28 23:31:17,399 - app.services.trading_executor - INFO - Strategy 1 signal executed: open_short @ 2952.18 +2025-12-28 23:31:19,455 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=45, strategy_id=1, cfg={'exchange_id': 'bitget', 'api_key': 'bg_8...b659', 'secret_key': '3b7e...b239', 'passphrase': 'xuji...u123', 'credential_id': 3}, err=Bitget HTTP 400: {"code":"45115","msg":"The price you enter should be a multiple of 0.01{1}","requestTime":1766935879480,"data":null} +2025-12-28 23:31:26,884 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2952.15, pending_signals=2 +2025-12-28 23:31:26,893 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2952.18, 'position_size': 0, 'timestamp': 1766935800}, {'type': 'open_short', 'trigger_price': 2952.18, 'position_size': 0.08, 'timestamp': 1766935800}] +2025-12-28 23:31:37,764 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2952.15, pending_signals=2 +2025-12-28 23:31:37,774 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2952.18, 'position_size': 0, 'timestamp': 1766935800}, {'type': 'open_short', 'trigger_price': 2952.18, 'position_size': 0.08, 'timestamp': 1766935800}] +2025-12-28 23:31:46,886 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2952.15, pending_signals=2 +2025-12-28 23:31:46,896 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2952.18, 'position_size': 0, 'timestamp': 1766935800}, {'type': 'open_short', 'trigger_price': 2952.18, 'position_size': 0.08, 'timestamp': 1766935800}] +2025-12-28 23:31:56,992 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2952.15, pending_signals=2 +2025-12-28 23:31:57,002 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2952.18, 'position_size': 0, 'timestamp': 1766935800}, {'type': 'open_short', 'trigger_price': 2952.18, 'position_size': 0.08, 'timestamp': 1766935800}] +2025-12-28 23:32:26,028 - app.services.pending_order_worker - INFO - position sync: removed 1 ghost positions for strategy_id=1 +2025-12-28 23:32:43,843 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:32:43] "GET /api/dashboard/summary?_t=1766935963517 HTTP/1.1" 200 - +2025-12-28 23:32:43,847 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:32:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935963517 HTTP/1.1" 200 - +2025-12-28 23:32:53,522 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:32:53] "GET /api/dashboard/summary?_t=1766935973508 HTTP/1.1" 200 - +2025-12-28 23:32:53,832 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:32:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766935973508 HTTP/1.1" 200 - +2025-12-28 23:33:00,916 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:33:00] "GET /api/strategies?_t=1766935980897 HTTP/1.1" 200 - +2025-12-28 23:33:01,997 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:33:01] "GET /api/strategies/equityCurve?id=1&_t=1766935981973 HTTP/1.1" 200 - +2025-12-28 23:33:02,005 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:33:02] "GET /api/strategies/equityCurve?id=1&_t=1766935981973 HTTP/1.1" 200 - +2025-12-28 23:33:02,348 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:33:02] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766935981973 HTTP/1.1" 200 - +2025-12-28 23:33:02,352 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:33:02] "GET /api/strategies/positions?id=1&_t=1766935981975 HTTP/1.1" 200 - +2025-12-28 23:33:03,646 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:33:03] "GET /api/strategies/trades?id=1&_t=1766935983640 HTTP/1.1" 200 - +2025-12-28 23:33:04,969 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:33:04] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766935984962 HTTP/1.1" 200 - +2025-12-28 23:33:07,292 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:33:07] "GET /api/strategies/positions?id=1&_t=1766935986973 HTTP/1.1" 200 - +2025-12-28 23:33:07,980 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:33:07] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766935987974 HTTP/1.1" 200 - +2025-12-28 23:33:11,292 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:33:11] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766935990977 HTTP/1.1" 200 - +2025-12-28 23:33:11,978 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:33:11] "GET /api/strategies/positions?id=1&_t=1766935991971 HTTP/1.1" 200 - +2025-12-28 23:33:14,287 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:33:14] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766935993970 HTTP/1.1" 200 - +2025-12-28 23:33:16,968 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:33:16] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766935996962 HTTP/1.1" 200 - +2025-12-28 23:33:17,293 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:33:17] "GET /api/strategies/positions?id=1&_t=1766935996970 HTTP/1.1" 200 - +2025-12-28 23:33:19,978 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:33:19] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766935999971 HTTP/1.1" 200 - +2025-12-28 23:33:22,296 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:33:22] "GET /api/strategies/positions?id=1&_t=1766936001980 HTTP/1.1" 200 - +2025-12-28 23:33:22,981 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:33:22] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936002975 HTTP/1.1" 200 - +2025-12-28 23:33:26,285 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:33:26] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936005971 HTTP/1.1" 200 - +2025-12-28 23:33:26,991 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:33:26] "GET /api/strategies/positions?id=1&_t=1766936006984 HTTP/1.1" 200 - +2025-12-28 23:33:29,280 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:33:29] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936008962 HTTP/1.1" 200 - +2025-12-28 23:33:31,971 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:33:31] "GET /api/strategies/equityCurve?id=1&_t=1766936011964 HTTP/1.1" 200 - +2025-12-28 23:33:32,280 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:33:32] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936011965 HTTP/1.1" 200 - +2025-12-28 23:33:32,283 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:33:32] "GET /api/strategies/positions?id=1&_t=1766936011974 HTTP/1.1" 200 - +2025-12-28 23:33:35,276 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:33:35] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936014961 HTTP/1.1" 200 - +2025-12-28 23:33:36,977 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:33:36] "GET /api/strategies/positions?id=1&_t=1766936016970 HTTP/1.1" 200 - +2025-12-28 23:33:38,281 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:33:38] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936017961 HTTP/1.1" 200 - +2025-12-28 23:33:40,968 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:33:40] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936020962 HTTP/1.1" 200 - +2025-12-28 23:33:42,278 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:33:42] "GET /api/strategies/positions?id=1&_t=1766936021970 HTTP/1.1" 200 - +2025-12-28 23:33:43,968 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:33:43] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936023962 HTTP/1.1" 200 - +2025-12-28 23:33:47,277 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:33:47] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936026962 HTTP/1.1" 200 - +2025-12-28 23:33:47,280 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:33:47] "GET /api/strategies/positions?id=1&_t=1766936026970 HTTP/1.1" 200 - +2025-12-28 23:33:49,967 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:33:49] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936029961 HTTP/1.1" 200 - +2025-12-28 23:33:52,281 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:33:52] "GET /api/strategies/positions?id=1&_t=1766936031970 HTTP/1.1" 200 - +2025-12-28 23:33:52,968 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:33:52] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936032962 HTTP/1.1" 200 - +2025-12-28 23:33:56,283 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:33:56] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936035961 HTTP/1.1" 200 - +2025-12-28 23:33:56,978 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:33:56] "GET /api/strategies/positions?id=1&_t=1766936036971 HTTP/1.1" 200 - +2025-12-28 23:33:59,276 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:33:59] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936038961 HTTP/1.1" 200 - +2025-12-28 23:34:01,969 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:34:01] "GET /api/strategies/equityCurve?id=1&_t=1766936041962 HTTP/1.1" 200 - +2025-12-28 23:34:02,272 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:34:02] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936041962 HTTP/1.1" 200 - +2025-12-28 23:34:02,277 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:34:02] "GET /api/strategies/positions?id=1&_t=1766936041970 HTTP/1.1" 200 - +2025-12-28 23:34:05,284 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:34:05] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936044962 HTTP/1.1" 200 - +2025-12-28 23:34:06,985 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:34:06] "GET /api/strategies/positions?id=1&_t=1766936046969 HTTP/1.1" 200 - +2025-12-28 23:34:08,270 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:34:08] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936047962 HTTP/1.1" 200 - +2025-12-28 23:34:10,968 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:34:10] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936050962 HTTP/1.1" 200 - +2025-12-28 23:34:12,289 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:34:12] "GET /api/strategies/positions?id=1&_t=1766936051970 HTTP/1.1" 200 - +2025-12-28 23:34:13,968 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:34:13] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936053961 HTTP/1.1" 200 - +2025-12-28 23:34:17,279 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:34:17] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936056962 HTTP/1.1" 200 - +2025-12-28 23:34:17,282 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:34:17] "GET /api/strategies/positions?id=1&_t=1766936056971 HTTP/1.1" 200 - +2025-12-28 23:34:19,968 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:34:19] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936059962 HTTP/1.1" 200 - +2025-12-28 23:34:22,293 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:34:22] "GET /api/strategies/positions?id=1&_t=1766936061969 HTTP/1.1" 200 - +2025-12-28 23:34:22,967 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:34:22] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936062961 HTTP/1.1" 200 - +2025-12-28 23:34:26,279 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:34:26] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936065962 HTTP/1.1" 200 - +2025-12-28 23:34:26,988 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:34:26] "GET /api/strategies/positions?id=1&_t=1766936066970 HTTP/1.1" 200 - +2025-12-28 23:34:29,281 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:34:29] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936068961 HTTP/1.1" 200 - +2025-12-28 23:34:31,968 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:34:31] "GET /api/strategies/equityCurve?id=1&_t=1766936071961 HTTP/1.1" 200 - +2025-12-28 23:34:32,279 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:34:32] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936071961 HTTP/1.1" 200 - +2025-12-28 23:34:32,282 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:34:32] "GET /api/strategies/positions?id=1&_t=1766936071969 HTTP/1.1" 200 - +2025-12-28 23:34:35,272 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:34:35] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936074961 HTTP/1.1" 200 - +2025-12-28 23:34:36,977 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:34:36] "GET /api/strategies/positions?id=1&_t=1766936076969 HTTP/1.1" 200 - +2025-12-28 23:34:38,283 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:34:38] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936077961 HTTP/1.1" 200 - +2025-12-28 23:34:40,968 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:34:40] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936080962 HTTP/1.1" 200 - +2025-12-28 23:34:42,285 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:34:42] "GET /api/strategies/positions?id=1&_t=1766936081970 HTTP/1.1" 200 - +2025-12-28 23:34:43,967 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:34:43] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936083961 HTTP/1.1" 200 - +2025-12-28 23:34:47,282 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:34:47] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936086961 HTTP/1.1" 200 - +2025-12-28 23:34:47,285 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:34:47] "GET /api/strategies/positions?id=1&_t=1766936086970 HTTP/1.1" 200 - +2025-12-28 23:34:49,968 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:34:49] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936089962 HTTP/1.1" 200 - +2025-12-28 23:34:52,291 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:34:52] "GET /api/strategies/positions?id=1&_t=1766936091970 HTTP/1.1" 200 - +2025-12-28 23:34:52,968 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:34:52] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936092962 HTTP/1.1" 200 - +2025-12-28 23:34:56,271 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:34:56] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936095961 HTTP/1.1" 200 - +2025-12-28 23:34:56,977 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:34:56] "GET /api/strategies/positions?id=1&_t=1766936096969 HTTP/1.1" 200 - +2025-12-28 23:34:59,273 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:34:59] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936098961 HTTP/1.1" 200 - +2025-12-28 23:35:01,972 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:35:01] "GET /api/strategies/equityCurve?id=1&_t=1766936101961 HTTP/1.1" 200 - +2025-12-28 23:35:02,277 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:35:02] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936101962 HTTP/1.1" 200 - +2025-12-28 23:35:02,281 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:35:02] "GET /api/strategies/positions?id=1&_t=1766936101969 HTTP/1.1" 200 - +2025-12-28 23:35:05,278 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:35:05] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936104961 HTTP/1.1" 200 - +2025-12-28 23:35:06,990 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:35:06] "GET /api/strategies/positions?id=1&_t=1766936106970 HTTP/1.1" 200 - +2025-12-28 23:35:08,283 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:35:08] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936107962 HTTP/1.1" 200 - +2025-12-28 23:35:10,967 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:35:10] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936110961 HTTP/1.1" 200 - +2025-12-28 23:35:12,282 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:35:12] "GET /api/strategies/positions?id=1&_t=1766936111969 HTTP/1.1" 200 - +2025-12-28 23:35:13,970 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:35:13] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936113962 HTTP/1.1" 200 - +2025-12-28 23:35:17,271 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:35:17] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936116962 HTTP/1.1" 200 - +2025-12-28 23:35:17,277 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:35:17] "GET /api/strategies/positions?id=1&_t=1766936116970 HTTP/1.1" 200 - +2025-12-28 23:35:19,968 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:35:19] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936119961 HTTP/1.1" 200 - +2025-12-28 23:35:22,287 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:35:22] "GET /api/strategies/positions?id=1&_t=1766936121970 HTTP/1.1" 200 - +2025-12-28 23:35:22,968 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:35:22] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936122962 HTTP/1.1" 200 - +2025-12-28 23:35:26,270 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:35:26] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936125962 HTTP/1.1" 200 - +2025-12-28 23:35:26,977 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:35:26] "GET /api/strategies/positions?id=1&_t=1766936126969 HTTP/1.1" 200 - +2025-12-28 23:35:29,272 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:35:29] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936128961 HTTP/1.1" 200 - +2025-12-28 23:35:31,969 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:35:31] "GET /api/strategies/equityCurve?id=1&_t=1766936131962 HTTP/1.1" 200 - +2025-12-28 23:35:32,269 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:35:32] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936131962 HTTP/1.1" 200 - +2025-12-28 23:35:32,286 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:35:32] "GET /api/strategies/positions?id=1&_t=1766936131969 HTTP/1.1" 200 - +2025-12-28 23:35:35,275 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:35:35] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936134962 HTTP/1.1" 200 - +2025-12-28 23:35:36,977 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:35:36] "GET /api/strategies/positions?id=1&_t=1766936136969 HTTP/1.1" 200 - +2025-12-28 23:35:38,274 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:35:38] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936137961 HTTP/1.1" 200 - +2025-12-28 23:35:40,968 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:35:40] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936140962 HTTP/1.1" 200 - +2025-12-28 23:35:42,280 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:35:42] "GET /api/strategies/positions?id=1&_t=1766936141969 HTTP/1.1" 200 - +2025-12-28 23:35:43,968 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:35:43] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936143962 HTTP/1.1" 200 - +2025-12-28 23:35:47,283 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:35:47] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936146962 HTTP/1.1" 200 - +2025-12-28 23:35:47,286 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:35:47] "GET /api/strategies/positions?id=1&_t=1766936146970 HTTP/1.1" 200 - +2025-12-28 23:35:49,967 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:35:49] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936149961 HTTP/1.1" 200 - +2025-12-28 23:35:52,282 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:35:52] "GET /api/strategies/positions?id=1&_t=1766936151969 HTTP/1.1" 200 - +2025-12-28 23:35:52,968 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:35:52] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936152961 HTTP/1.1" 200 - +2025-12-28 23:35:56,283 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:35:56] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936155962 HTTP/1.1" 200 - +2025-12-28 23:35:56,976 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:35:56] "GET /api/strategies/positions?id=1&_t=1766936156969 HTTP/1.1" 200 - +2025-12-28 23:35:59,280 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:35:59] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936158962 HTTP/1.1" 200 - +2025-12-28 23:36:01,968 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:36:01] "GET /api/strategies/equityCurve?id=1&_t=1766936161961 HTTP/1.1" 200 - +2025-12-28 23:36:02,271 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:36:02] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936161962 HTTP/1.1" 200 - +2025-12-28 23:36:02,277 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:36:02] "GET /api/strategies/positions?id=1&_t=1766936161970 HTTP/1.1" 200 - +2025-12-28 23:36:05,274 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:36:05] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936164962 HTTP/1.1" 200 - +2025-12-28 23:36:06,976 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:36:06] "GET /api/strategies/positions?id=1&_t=1766936166969 HTTP/1.1" 200 - +2025-12-28 23:36:08,283 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:36:08] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936167962 HTTP/1.1" 200 - +2025-12-28 23:36:10,967 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:36:10] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936170961 HTTP/1.1" 200 - +2025-12-28 23:36:12,279 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:36:12] "GET /api/strategies/positions?id=1&_t=1766936171969 HTTP/1.1" 200 - +2025-12-28 23:36:13,969 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:36:13] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936173962 HTTP/1.1" 200 - +2025-12-28 23:36:18,063 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-28 23:36:18,088 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-28 23:36:18,510 - app.services.strategy - INFO - Found 3 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}, {'id': 9, 'strategy_type': 'IndicatorStrategy'}] +2025-12-28 23:36:18,510 - app - INFO - Restoring 3 running strategies... +2025-12-28 23:36:18,510 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-28 23:36:18,511 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-28 23:36:18,511 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-28 23:36:18,511 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-28 23:36:18,511 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-28 23:36:18,511 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-28 23:36:18,511 - app.services.trading_executor - INFO - Strategy 9 loop starting +2025-12-28 23:36:18,512 - app.services.trading_executor - INFO - Strategy 9 started +2025-12-28 23:36:18,512 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-28 23:36:18,512 - app - INFO - [OK] IndicatorStrategy 9 restored +2025-12-28 23:36:18,512 - app - INFO - Strategy restore completed: 3/3 restored +2025-12-28 23:36:18,513 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-28 23:36:18,515 - app.services.trading_executor - INFO - Strategy 9 derivatives trading; normalize market_type to: swap +2025-12-28 23:36:18,539 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-28 23:36:18,539 - werkzeug - INFO - Press CTRL+C to quit +2025-12-28 23:36:19,970 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:36:19] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936179962 HTTP/1.1" 200 - +2025-12-28 23:36:21,977 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:36:21] "GET /api/strategies/positions?id=1&_t=1766936181970 HTTP/1.1" 200 - +2025-12-28 23:36:23,234 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:36:23] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936182961 HTTP/1.1" 200 - +2025-12-28 23:36:23,302 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=1, position=-1, entry_price=87912.98415841583, highest=87968.1 +2025-12-28 23:36:23,320 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2025-12-28 23:36:23,690 - app.services.trading_executor - INFO - ็ญ–็•ฅ 9 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 23:36:23,707 - app.services.trading_executor - INFO - Strategy 9 initialized; pending_signals=0 +2025-12-28 23:36:23,716 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 23:36:23,733 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2025-12-28 23:36:26,276 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:36:26] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936185961 HTTP/1.1" 200 - +2025-12-28 23:36:26,978 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:36:26] "GET /api/strategies/positions?id=1&_t=1766936186970 HTTP/1.1" 200 - +2025-12-28 23:36:29,273 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:36:29] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936188962 HTTP/1.1" 200 - +2025-12-28 23:36:30,764 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:36:30] "GET /api/strategies/equityCurve?id=2&_t=1766936190751 HTTP/1.1" 200 - +2025-12-28 23:36:31,069 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:36:31] "GET /api/strategies/equityCurve?id=2&_t=1766936190751 HTTP/1.1" 200 - +2025-12-28 23:36:31,072 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:36:31] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766936190751 HTTP/1.1" 200 - +2025-12-28 23:36:31,186 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:36:31] "GET /api/strategies/positions?id=2&_t=1766936190752 HTTP/1.1" 200 - +2025-12-28 23:36:31,190 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:36:31] "GET /api/strategies/trades?id=2&_t=1766936190752 HTTP/1.1" 200 - +2025-12-28 23:36:31,973 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:36:31] "GET /api/strategies/equityCurve?id=1&_t=1766936191651 HTTP/1.1" 200 - +2025-12-28 23:36:31,977 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:36:31] "GET /api/strategies/equityCurve?id=1&_t=1766936191651 HTTP/1.1" 200 - +2025-12-28 23:36:31,980 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:36:31] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766936191651 HTTP/1.1" 200 - +2025-12-28 23:36:31,985 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:36:31] "GET /api/strategies/positions?id=1&_t=1766936191652 HTTP/1.1" 200 - +2025-12-28 23:36:31,988 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:36:31] "GET /api/strategies/trades?id=1&_t=1766936191652 HTTP/1.1" 200 - +2025-12-28 23:36:34,657 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:36:34] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936194648 HTTP/1.1" 200 - +2025-12-28 23:36:36,980 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:36:36] "GET /api/strategies/positions?id=1&_t=1766936196665 HTTP/1.1" 200 - +2025-12-28 23:36:37,654 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:36:37] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936197647 HTTP/1.1" 200 - +2025-12-28 23:36:40,967 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:36:40] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936200647 HTTP/1.1" 200 - +2025-12-28 23:36:41,671 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:36:41] "GET /api/strategies/positions?id=1&_t=1766936201665 HTTP/1.1" 200 - +2025-12-28 23:36:43,968 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:36:43] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936203647 HTTP/1.1" 200 - +2025-12-28 23:36:46,654 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:36:46] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936206648 HTTP/1.1" 200 - +2025-12-28 23:36:46,979 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:36:46] "GET /api/strategies/positions?id=1&_t=1766936206656 HTTP/1.1" 200 - +2025-12-28 23:36:49,653 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:36:49] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936209647 HTTP/1.1" 200 - +2025-12-28 23:36:51,966 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:36:51] "GET /api/strategies/positions?id=1&_t=1766936211652 HTTP/1.1" 200 - +2025-12-28 23:36:52,653 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:36:52] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936212647 HTTP/1.1" 200 - +2025-12-28 23:36:55,974 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:36:55] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936215658 HTTP/1.1" 200 - +2025-12-28 23:36:56,660 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:36:56] "GET /api/strategies/positions?id=1&_t=1766936216653 HTTP/1.1" 200 - +2025-12-28 23:36:58,963 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:36:58] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936218648 HTTP/1.1" 200 - +2025-12-28 23:37:01,655 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:37:01] "GET /api/strategies/equityCurve?id=1&_t=1766936221648 HTTP/1.1" 200 - +2025-12-28 23:37:01,959 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:37:01] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936221648 HTTP/1.1" 200 - +2025-12-28 23:37:01,964 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:37:01] "GET /api/strategies/positions?id=1&_t=1766936221656 HTTP/1.1" 200 - +2025-12-28 23:37:04,961 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:37:04] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936224648 HTTP/1.1" 200 - +2025-12-28 23:37:06,660 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:37:06] "GET /api/strategies/positions?id=1&_t=1766936226653 HTTP/1.1" 200 - +2025-12-28 23:37:07,953 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:37:07] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936227647 HTTP/1.1" 200 - +2025-12-28 23:37:10,654 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:37:10] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936230647 HTTP/1.1" 200 - +2025-12-28 23:37:11,972 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:37:11] "GET /api/strategies/positions?id=1&_t=1766936231652 HTTP/1.1" 200 - +2025-12-28 23:37:13,653 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:37:13] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936233647 HTTP/1.1" 200 - +2025-12-28 23:37:16,963 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:37:16] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936236647 HTTP/1.1" 200 - +2025-12-28 23:37:16,966 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:37:16] "GET /api/strategies/positions?id=1&_t=1766936236652 HTTP/1.1" 200 - +2025-12-28 23:37:19,653 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:37:19] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936239647 HTTP/1.1" 200 - +2025-12-28 23:37:21,962 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:37:21] "GET /api/strategies/positions?id=1&_t=1766936241652 HTTP/1.1" 200 - +2025-12-28 23:37:22,654 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:37:22] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766936242647 HTTP/1.1" 200 - +2025-12-28 23:37:25,774 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:37:25] "GET /api/strategies/equityCurve?id=2&_t=1766936245445 HTTP/1.1" 200 - +2025-12-28 23:37:25,778 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:37:25] "GET /api/strategies/equityCurve?id=2&_t=1766936245445 HTTP/1.1" 200 - +2025-12-28 23:37:25,782 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:37:25] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766936245446 HTTP/1.1" 200 - +2025-12-28 23:37:25,910 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:37:25] "GET /api/strategies/positions?id=2&_t=1766936245446 HTTP/1.1" 200 - +2025-12-28 23:37:25,915 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:37:25] "GET /api/strategies/trades?id=2&_t=1766936245446 HTTP/1.1" 200 - +2025-12-28 23:37:28,448 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:37:28] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766936248441 HTTP/1.1" 200 - +2025-12-28 23:37:30,875 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:37:30] "GET /api/strategies/positions?id=2&_t=1766936250447 HTTP/1.1" 200 - +2025-12-28 23:37:31,448 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:37:31] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766936251439 HTTP/1.1" 200 - +2025-12-28 23:37:34,751 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:37:34] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766936254441 HTTP/1.1" 200 - +2025-12-28 23:37:35,656 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:37:35] "GET /api/strategies/positions?id=2&_t=1766936255446 HTTP/1.1" 200 - +2025-12-28 23:37:37,767 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:37:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766936257440 HTTP/1.1" 200 - +2025-12-28 23:37:40,447 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:37:40] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766936260440 HTTP/1.1" 200 - +2025-12-28 23:37:40,874 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:37:40] "GET /api/strategies/positions?id=2&_t=1766936260446 HTTP/1.1" 200 - +2025-12-28 23:37:43,753 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:37:43] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766936263440 HTTP/1.1" 200 - +2025-12-28 23:37:45,570 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:37:45] "GET /api/strategies/positions?id=2&_t=1766936265446 HTTP/1.1" 200 - +2025-12-28 23:37:46,762 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:37:46] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766936266440 HTTP/1.1" 200 - +2025-12-28 23:37:47,665 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:37:47] "GET /api/dashboard/summary?_t=1766936267654 HTTP/1.1" 200 - +2025-12-28 23:37:47,974 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:37:47] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766936267654 HTTP/1.1" 200 - +2025-12-28 23:37:51,345 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:37:51] "GET /api/dashboard/summary?_t=1766936271021 HTTP/1.1" 200 - +2025-12-28 23:37:51,351 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:37:51] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766936271021 HTTP/1.1" 200 - +2025-12-28 23:39:03,918 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=859.04, pending_signals=1 +2025-12-28 23:39:03,920 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 859.04, 'position_size': 0, 'timestamp': 1766936340}] +2025-12-28 23:39:13,753 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=859.04, pending_signals=1 +2025-12-28 23:39:13,755 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 859.04, 'position_size': 0, 'timestamp': 1766936340}] +2025-12-28 23:39:24,237 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=858.98, pending_signals=2 +2025-12-28 23:39:24,240 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 859.05, 'position_size': 0, 'timestamp': 1766936280}] +2025-12-28 23:39:33,759 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=858.98, pending_signals=2 +2025-12-28 23:39:33,761 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 859.05, 'position_size': 0, 'timestamp': 1766936280}] +2025-12-28 23:39:43,866 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=858.97, pending_signals=2 +2025-12-28 23:39:43,868 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 859.05, 'position_size': 0, 'timestamp': 1766936280}] +2025-12-28 23:39:53,762 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=858.97, pending_signals=2 +2025-12-28 23:39:53,764 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 859.05, 'position_size': 0, 'timestamp': 1766936280}] +2025-12-28 23:40:03,478 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87937.91, pending_signals=1 +2025-12-28 23:40:03,487 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87937.91, 'position_size': 0, 'timestamp': 1766936400}] +2025-12-28 23:40:03,495 - app.services.trading_executor - INFO - Strategy 2 signal executed: close_short @ 87937.91 +2025-12-28 23:40:08,255 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=46, strategy_id=2, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=OKX error: {'code': '1', 'data': [{'clOrdId': 'qd246mkt', 'ordId': '', 'sCode': '51169', 'sMsg': "Order failed because you don't have any positions in this direction for this contract to reduce or close. ", 'tag': '', 'ts': '1766936408327'}], 'inTime': '1766936408326856', 'msg': 'All operations failed', 'outTime': '1766936408327209'} +2025-12-28 23:40:10,806 - app.services.pending_order_worker - INFO - position sync: removed 1 ghost positions for strategy_id=2 +2025-12-28 23:40:13,374 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87937.91, pending_signals=1 +2025-12-28 23:40:13,376 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87937.91, 'position_size': 0, 'timestamp': 1766936400}] +2025-12-28 23:40:23,830 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT +2025-12-28 23:40:23,830 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-28 23:40:23,909 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87937.91, pending_signals=2 +2025-12-28 23:40:23,911 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 87937.91, 'position_size': 0.08, 'timestamp': 1766936340}, {'type': 'close_short', 'trigger_price': 87937.91, 'position_size': 0, 'timestamp': 1766936340}] +2025-12-28 23:40:23,918 - app.services.trading_executor - INFO - Strategy 2 signal executed: open_long @ 87937.91 +2025-12-28 23:40:29,184 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=47, strategy_id=2, cfg={'exchange_id': 'okx', 'api_key': '4cd9...2c81', 'secret_key': '2B29...B8CC', 'passphrase': 'xuji...3..X', 'credential_id': 2}, err=Invalid size (below lot/min size): requested=4.11497953499236e-05 +2025-12-28 23:40:33,377 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87937.91, pending_signals=2 +2025-12-28 23:40:33,379 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 87937.91, 'position_size': 0.08, 'timestamp': 1766936340}, {'type': 'close_short', 'trigger_price': 87937.91, 'position_size': 0, 'timestamp': 1766936340}] +2025-12-28 23:40:43,482 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87919.25, pending_signals=2 +2025-12-28 23:40:43,484 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87937.91, 'position_size': 0, 'timestamp': 1766936340}] +2025-12-28 23:40:53,380 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87919.25, pending_signals=2 +2025-12-28 23:40:53,382 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87937.91, 'position_size': 0, 'timestamp': 1766936340}] +2025-12-28 23:41:00,515 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:41:00] "GET /api/dashboard/summary?_t=1766936460200 HTTP/1.1" 200 - +2025-12-28 23:41:00,520 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:41:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766936460200 HTTP/1.1" 200 - +2025-12-28 23:42:03,967 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:42:03] "GET /api/dashboard/summary?_t=1766936523623 HTTP/1.1" 200 - +2025-12-28 23:42:03,972 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:42:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766936523623 HTTP/1.1" 200 - +2025-12-28 23:42:28,529 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:42:28] "GET /api/dashboard/summary?_t=1766936548511 HTTP/1.1" 200 - +2025-12-28 23:42:28,834 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:42:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766936548511 HTTP/1.1" 200 - +2025-12-28 23:42:48,076 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:42:48] "GET /api/dashboard/summary?_t=1766936567756 HTTP/1.1" 200 - +2025-12-28 23:42:48,081 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:42:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766936567756 HTTP/1.1" 200 - +2025-12-28 23:43:21,347 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:43:21] "GET /api/strategies?_t=1766936601333 HTTP/1.1" 200 - +2025-12-28 23:43:23,070 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:43:23] "GET /api/strategies/equityCurve?id=1&_t=1766936602749 HTTP/1.1" 200 - +2025-12-28 23:43:23,074 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:43:23] "GET /api/strategies/equityCurve?id=1&_t=1766936602749 HTTP/1.1" 200 - +2025-12-28 23:43:23,077 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:43:23] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766936602749 HTTP/1.1" 200 - +2025-12-28 23:43:23,081 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:43:23] "GET /api/strategies/positions?id=1&_t=1766936602751 HTTP/1.1" 200 - +2025-12-28 23:43:23,970 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:43:23] "GET /api/strategies/equityCurve?id=2&_t=1766936603959 HTTP/1.1" 200 - +2025-12-28 23:43:24,274 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:43:24] "GET /api/strategies/equityCurve?id=2&_t=1766936603959 HTTP/1.1" 200 - +2025-12-28 23:43:24,278 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:43:24] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766936603959 HTTP/1.1" 200 - +2025-12-28 23:43:24,282 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:43:24] "GET /api/strategies/positions?id=2&_t=1766936603960 HTTP/1.1" 200 - +2025-12-28 23:43:26,064 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:43:26] "GET /api/strategies/equityCurve?id=9&_t=1766936605741 HTTP/1.1" 200 - +2025-12-28 23:43:26,067 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:43:26] "GET /api/strategies/equityCurve?id=9&_t=1766936605741 HTTP/1.1" 200 - +2025-12-28 23:43:26,070 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:43:26] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766936605741 HTTP/1.1" 200 - +2025-12-28 23:43:26,074 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:43:26] "GET /api/strategies/positions?id=9&_t=1766936605742 HTTP/1.1" 200 - +2025-12-28 23:43:26,989 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:43:26] "GET /api/strategies/trades?id=9&_t=1766936606982 HTTP/1.1" 200 - +2025-12-28 23:43:28,283 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:43:28] "GET /api/strategies/equityCurve?id=2&_t=1766936607954 HTTP/1.1" 200 - +2025-12-28 23:43:28,287 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:43:28] "GET /api/strategies/equityCurve?id=2&_t=1766936607954 HTTP/1.1" 200 - +2025-12-28 23:43:28,291 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:43:28] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766936607954 HTTP/1.1" 200 - +2025-12-28 23:43:28,296 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:43:28] "GET /api/strategies/positions?id=2&_t=1766936607955 HTTP/1.1" 200 - +2025-12-28 23:43:28,300 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:43:28] "GET /api/strategies/trades?id=2&_t=1766936607955 HTTP/1.1" 200 - +2025-12-28 23:43:30,958 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:43:30] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766936610952 HTTP/1.1" 200 - +2025-12-28 23:43:31,680 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:43:31] "GET /api/strategies/equityCurve?id=1&_t=1766936611355 HTTP/1.1" 200 - +2025-12-28 23:43:31,684 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:43:31] "GET /api/strategies/equityCurve?id=1&_t=1766936611355 HTTP/1.1" 200 - +2025-12-28 23:43:31,687 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:43:31] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766936611355 HTTP/1.1" 200 - +2025-12-28 23:43:31,690 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:43:31] "GET /api/strategies/positions?id=1&_t=1766936611356 HTTP/1.1" 200 - +2025-12-28 23:43:31,694 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:43:31] "GET /api/strategies/trades?id=1&_t=1766936611356 HTTP/1.1" 200 - +2025-12-28 23:43:33,147 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:43:33] "GET /api/dashboard/summary?_t=1766936613133 HTTP/1.1" 200 - +2025-12-28 23:43:33,478 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:43:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766936613133 HTTP/1.1" 200 - +2025-12-28 23:50:05,361 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-28 23:50:05,365 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-28 23:50:05,762 - app.services.strategy - INFO - Found 3 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}, {'id': 9, 'strategy_type': 'IndicatorStrategy'}] +2025-12-28 23:50:05,762 - app - INFO - Restoring 3 running strategies... +2025-12-28 23:50:05,762 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-28 23:50:05,762 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-28 23:50:05,763 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-28 23:50:05,763 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-28 23:50:05,763 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-28 23:50:05,763 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-28 23:50:05,763 - app.services.trading_executor - INFO - Strategy 9 loop starting +2025-12-28 23:50:05,763 - app.services.trading_executor - INFO - Strategy 9 started +2025-12-28 23:50:05,764 - app - INFO - [OK] IndicatorStrategy 9 restored +2025-12-28 23:50:05,764 - app - INFO - Strategy restore completed: 3/3 restored +2025-12-28 23:50:05,764 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-28 23:50:05,766 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-28 23:50:05,781 - app.services.trading_executor - INFO - Strategy 9 derivatives trading; normalize market_type to: swap +2025-12-28 23:50:05,807 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-28 23:50:05,807 - werkzeug - INFO - Press CTRL+C to quit +2025-12-28 23:50:09,990 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 23:50:10,009 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2025-12-28 23:50:10,011 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:50:10] "GET /api/dashboard/summary?_t=1766937009439 HTTP/1.1" 200 - +2025-12-28 23:50:10,016 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:50:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766937009439 HTTP/1.1" 200 - +2025-12-28 23:50:10,108 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 23:50:10,134 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2025-12-28 23:50:10,268 - app.services.trading_executor - INFO - ็ญ–็•ฅ 9 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 23:50:10,287 - app.services.trading_executor - INFO - Strategy 9 initialized; pending_signals=0 +2025-12-28 23:50:58,060 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:50:58] "GET /api/dashboard/summary?_t=1766937058043 HTTP/1.1" 200 - +2025-12-28 23:50:58,353 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:50:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766937058043 HTTP/1.1" 200 - +2025-12-28 23:51:26,117 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:51:26] "GET /api/dashboard/summary?_t=1766937085801 HTTP/1.1" 200 - +2025-12-28 23:51:26,121 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:51:26] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766937085801 HTTP/1.1" 200 - +2025-12-28 23:51:52,938 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:51:52] "GET /api/strategies?_t=1766937112928 HTTP/1.1" 200 - +2025-12-28 23:51:54,037 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:51:54] "GET /api/strategies/equityCurve?id=1&_t=1766937113705 HTTP/1.1" 200 - +2025-12-28 23:51:54,043 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:51:54] "GET /api/strategies/equityCurve?id=1&_t=1766937113705 HTTP/1.1" 200 - +2025-12-28 23:51:54,049 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:51:54] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766937113705 HTTP/1.1" 200 - +2025-12-28 23:51:54,055 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:51:54] "GET /api/strategies/positions?id=1&_t=1766937113707 HTTP/1.1" 200 - +2025-12-28 23:51:55,026 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:51:55] "GET /api/strategies/trades?id=1&_t=1766937115018 HTTP/1.1" 200 - +2025-12-28 23:51:57,017 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:51:57] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766937116697 HTTP/1.1" 200 - +2025-12-28 23:51:57,555 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:51:57] "GET /api/strategies/equityCurve?id=2&_t=1766937117546 HTTP/1.1" 200 - +2025-12-28 23:51:57,871 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:51:57] "GET /api/strategies/equityCurve?id=2&_t=1766937117546 HTTP/1.1" 200 - +2025-12-28 23:51:57,876 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:51:57] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766937117546 HTTP/1.1" 200 - +2025-12-28 23:51:57,880 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:51:57] "GET /api/strategies/positions?id=2&_t=1766937117547 HTTP/1.1" 200 - +2025-12-28 23:51:57,884 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:51:57] "GET /api/strategies/trades?id=2&_t=1766937117547 HTTP/1.1" 200 - +2025-12-28 23:52:00,865 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:52:00] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766937120542 HTTP/1.1" 200 - +2025-12-28 23:52:01,853 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:52:01] "GET /api/strategies/equityCurve?id=9&_t=1766937121838 HTTP/1.1" 200 - +2025-12-28 23:52:02,161 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:52:02] "GET /api/strategies/equityCurve?id=9&_t=1766937121838 HTTP/1.1" 200 - +2025-12-28 23:52:02,166 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:52:02] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766937121838 HTTP/1.1" 200 - +2025-12-28 23:52:02,171 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:52:02] "GET /api/strategies/positions?id=9&_t=1766937121839 HTTP/1.1" 200 - +2025-12-28 23:52:02,174 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:52:02] "GET /api/strategies/trades?id=9&_t=1766937121839 HTTP/1.1" 200 - +2025-12-28 23:52:04,901 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:52:04] "GET /api/strategies/equityCurve?id=2&_t=1766937124572 HTTP/1.1" 200 - +2025-12-28 23:52:04,909 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:52:04] "GET /api/strategies/equityCurve?id=2&_t=1766937124572 HTTP/1.1" 200 - +2025-12-28 23:52:04,917 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:52:04] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766937124572 HTTP/1.1" 200 - +2025-12-28 23:52:04,924 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:52:04] "GET /api/strategies/positions?id=2&_t=1766937124573 HTTP/1.1" 200 - +2025-12-28 23:52:04,930 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:52:04] "GET /api/strategies/trades?id=2&_t=1766937124573 HTTP/1.1" 200 - +2025-12-28 23:52:05,476 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:52:05] "GET /api/strategies/equityCurve?id=1&_t=1766937125465 HTTP/1.1" 200 - +2025-12-28 23:52:05,786 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:52:05] "GET /api/strategies/equityCurve?id=1&_t=1766937125465 HTTP/1.1" 200 - +2025-12-28 23:52:05,789 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:52:05] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766937125465 HTTP/1.1" 200 - +2025-12-28 23:52:05,792 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:52:05] "GET /api/strategies/positions?id=1&_t=1766937125466 HTTP/1.1" 200 - +2025-12-28 23:52:05,797 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:52:05] "GET /api/strategies/trades?id=1&_t=1766937125466 HTTP/1.1" 200 - +2025-12-28 23:52:06,707 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:52:06] "GET /api/strategies/equityCurve?id=2&_t=1766937126387 HTTP/1.1" 200 - +2025-12-28 23:52:06,712 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:52:06] "GET /api/strategies/equityCurve?id=2&_t=1766937126387 HTTP/1.1" 200 - +2025-12-28 23:52:06,719 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:52:06] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766937126387 HTTP/1.1" 200 - +2025-12-28 23:52:06,724 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:52:06] "GET /api/strategies/positions?id=2&_t=1766937126387 HTTP/1.1" 200 - +2025-12-28 23:52:06,730 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:52:06] "GET /api/strategies/trades?id=2&_t=1766937126387 HTTP/1.1" 200 - +2025-12-28 23:52:06,970 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:52:06] "GET /api/strategies/equityCurve?id=9&_t=1766937126777 HTTP/1.1" 200 - +2025-12-28 23:52:07,094 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:52:07] "GET /api/strategies/equityCurve?id=9&_t=1766937126777 HTTP/1.1" 200 - +2025-12-28 23:52:07,097 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:52:07] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766937126777 HTTP/1.1" 200 - +2025-12-28 23:52:07,100 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:52:07] "GET /api/strategies/positions?id=9&_t=1766937126778 HTTP/1.1" 200 - +2025-12-28 23:52:07,104 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:52:07] "GET /api/strategies/trades?id=9&_t=1766937126778 HTTP/1.1" 200 - +2025-12-28 23:52:08,507 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:52:08] "GET /api/dashboard/summary?_t=1766937128494 HTTP/1.1" 200 - +2025-12-28 23:52:08,809 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:52:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766937128494 HTTP/1.1" 200 - +2025-12-28 23:52:50,231 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87922.78, pending_signals=1 +2025-12-28 23:52:50,233 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87922.78, 'position_size': 0, 'timestamp': 1766937120}] +2025-12-28 23:53:00,064 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87922.78, pending_signals=1 +2025-12-28 23:53:00,068 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87922.78, 'position_size': 0, 'timestamp': 1766937180}] +2025-12-28 23:53:04,340 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:53:04] "GET /api/dashboard/summary?_t=1766937184014 HTTP/1.1" 200 - +2025-12-28 23:53:04,349 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:53:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766937184014 HTTP/1.1" 200 - +2025-12-28 23:53:11,643 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-28 23:53:11,649 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-28 23:53:12,030 - app.services.strategy - INFO - Found 3 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}, {'id': 9, 'strategy_type': 'IndicatorStrategy'}] +2025-12-28 23:53:12,031 - app - INFO - Restoring 3 running strategies... +2025-12-28 23:53:12,031 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-28 23:53:12,031 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-28 23:53:12,031 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-28 23:53:12,031 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-28 23:53:12,031 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-28 23:53:12,032 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-28 23:53:12,032 - app.services.trading_executor - INFO - Strategy 9 loop starting +2025-12-28 23:53:12,032 - app.services.trading_executor - INFO - Strategy 9 started +2025-12-28 23:53:12,032 - app - INFO - [OK] IndicatorStrategy 9 restored +2025-12-28 23:53:12,032 - app - INFO - Strategy restore completed: 3/3 restored +2025-12-28 23:53:12,032 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-28 23:53:12,035 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-28 23:53:12,041 - app.services.trading_executor - INFO - Strategy 9 derivatives trading; normalize market_type to: swap +2025-12-28 23:53:12,059 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-28 23:53:12,059 - werkzeug - INFO - Press CTRL+C to quit +2025-12-28 23:53:15,891 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 23:53:15,910 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2025-12-28 23:53:15,946 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 23:53:15,964 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=2 +2025-12-28 23:53:15,965 - app.services.trading_executor - INFO - Initial signals: [{'type': 'close_long', 'trigger_price': 87922.79, 'position_size': 0, 'timestamp': 1766937120}, {'type': 'open_short', 'trigger_price': 87922.79, 'position_size': 0.08, 'timestamp': 1766937120}] +2025-12-28 23:53:16,150 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87910.0, pending_signals=2 +2025-12-28 23:53:16,152 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87922.79, 'position_size': 0, 'timestamp': 1766937120}, {'type': 'open_short', 'trigger_price': 87922.79, 'position_size': 0.08, 'timestamp': 1766937120}] +2025-12-28 23:53:16,160 - app.services.trading_executor - INFO - Strategy 2 signal executed: open_short @ 87922.79 +2025-12-28 23:53:16,186 - app.services.trading_executor - INFO - ็ญ–็•ฅ 9 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-28 23:53:16,202 - app.services.trading_executor - INFO - Strategy 9 initialized; pending_signals=0 +2025-12-28 23:53:25,985 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87910.0, pending_signals=2 +2025-12-28 23:53:25,987 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87922.79, 'position_size': 0, 'timestamp': 1766937120}, {'type': 'open_short', 'trigger_price': 87922.79, 'position_size': 0.08, 'timestamp': 1766937120}] +2025-12-28 23:53:36,090 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87892.69, pending_signals=2 +2025-12-28 23:53:36,099 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87922.79, 'position_size': 0, 'timestamp': 1766937120}, {'type': 'open_short', 'trigger_price': 87922.79, 'position_size': 0.08, 'timestamp': 1766937120}] +2025-12-28 23:53:45,988 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87892.69, pending_signals=2 +2025-12-28 23:53:46,015 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87922.79, 'position_size': 0, 'timestamp': 1766937120}, {'type': 'open_short', 'trigger_price': 87922.79, 'position_size': 0.08, 'timestamp': 1766937120}] +2025-12-28 23:53:56,437 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87880.69, pending_signals=2 +2025-12-28 23:53:56,468 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87922.79, 'position_size': 0, 'timestamp': 1766937120}, {'type': 'open_short', 'trigger_price': 87922.79, 'position_size': 0.08, 'timestamp': 1766937120}] +2025-12-28 23:54:43,477 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:54:43] "GET /api/dashboard/summary?_t=1766937283152 HTTP/1.1" 200 - +2025-12-28 23:54:43,482 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:54:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766937283152 HTTP/1.1" 200 - +2025-12-28 23:55:06,748 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:06] "GET /api/market/types?_t=1766937306740 HTTP/1.1" 200 - +2025-12-28 23:55:07,063 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:07] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-28 23:55:07,075 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:07] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-28 23:55:07,113 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-28 23:55:07,330 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-28 23:55:08,252 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:08] "GET /api/strategies?_t=1766937308237 HTTP/1.1" 200 - +2025-12-28 23:55:09,048 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:09] "GET /api/strategies/equityCurve?id=2&_t=1766937309032 HTTP/1.1" 200 - +2025-12-28 23:55:09,057 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:09] "GET /api/strategies/equityCurve?id=2&_t=1766937309032 HTTP/1.1" 200 - +2025-12-28 23:55:09,062 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:09] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766937309032 HTTP/1.1" 200 - +2025-12-28 23:55:09,179 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:09] "GET /api/strategies/positions?id=2&_t=1766937309035 HTTP/1.1" 200 - +2025-12-28 23:55:12,340 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:12] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766937312025 HTTP/1.1" 200 - +2025-12-28 23:55:13,591 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:13] "GET /api/strategies/trades?id=2&_t=1766937313580 HTTP/1.1" 200 - +2025-12-28 23:55:14,457 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:14] "GET /api/strategies/positions?id=2&_t=1766937314030 HTTP/1.1" 200 - +2025-12-28 23:55:15,034 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:15] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766937315025 HTTP/1.1" 200 - +2025-12-28 23:55:18,343 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:18] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766937318025 HTTP/1.1" 200 - +2025-12-28 23:55:19,148 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:19] "GET /api/strategies/positions?id=2&_t=1766937319029 HTTP/1.1" 200 - +2025-12-28 23:55:21,340 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:21] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766937321025 HTTP/1.1" 200 - +2025-12-28 23:55:21,430 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:21] "GET /api/strategies?_t=1766937321119 HTTP/1.1" 200 - +2025-12-28 23:55:22,039 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:22] "GET /api/strategies/equityCurve?id=2&_t=1766937322027 HTTP/1.1" 200 - +2025-12-28 23:55:22,350 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:22] "GET /api/strategies/equityCurve?id=2&_t=1766937322027 HTTP/1.1" 200 - +2025-12-28 23:55:22,354 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:22] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766937322027 HTTP/1.1" 200 - +2025-12-28 23:55:22,467 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:22] "GET /api/strategies/positions?id=2&_t=1766937322029 HTTP/1.1" 200 - +2025-12-28 23:55:23,621 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:23] "GET /api/strategies/trades?id=2&_t=1766937323299 HTTP/1.1" 200 - +2025-12-28 23:55:25,031 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:25] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766937325021 HTTP/1.1" 200 - +2025-12-28 23:55:27,463 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:27] "GET /api/strategies/positions?id=2&_t=1766937327026 HTTP/1.1" 200 - +2025-12-28 23:55:28,027 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:28] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766937328021 HTTP/1.1" 200 - +2025-12-28 23:55:31,341 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:31] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766937331021 HTTP/1.1" 200 - +2025-12-28 23:55:32,146 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:32] "GET /api/strategies/positions?id=2&_t=1766937332026 HTTP/1.1" 200 - +2025-12-28 23:55:34,342 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:34] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766937334022 HTTP/1.1" 200 - +2025-12-28 23:55:34,603 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:34] "GET /api/strategies/equityCurve?id=9&_t=1766937334555 HTTP/1.1" 200 - +2025-12-28 23:55:34,881 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:34] "GET /api/strategies/equityCurve?id=9&_t=1766937334555 HTTP/1.1" 200 - +2025-12-28 23:55:34,885 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:34] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766937334555 HTTP/1.1" 200 - +2025-12-28 23:55:34,890 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:34] "GET /api/strategies/positions?id=9&_t=1766937334556 HTTP/1.1" 200 - +2025-12-28 23:55:34,893 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:34] "GET /api/strategies/trades?id=9&_t=1766937334556 HTTP/1.1" 200 - +2025-12-28 23:55:36,372 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:36] "GET /api/strategies/equityCurve?id=1&_t=1766937336359 HTTP/1.1" 200 - +2025-12-28 23:55:36,675 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:36] "GET /api/strategies/equityCurve?id=1&_t=1766937336359 HTTP/1.1" 200 - +2025-12-28 23:55:36,678 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:36] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766937336359 HTTP/1.1" 200 - +2025-12-28 23:55:36,681 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:36] "GET /api/strategies/positions?id=1&_t=1766937336360 HTTP/1.1" 200 - +2025-12-28 23:55:36,685 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:36] "GET /api/strategies/trades?id=1&_t=1766937336360 HTTP/1.1" 200 - +2025-12-28 23:55:39,672 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:39] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766937339355 HTTP/1.1" 200 - +2025-12-28 23:55:40,942 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:40] "GET /api/dashboard/summary?_t=1766937340925 HTTP/1.1" 200 - +2025-12-28 23:55:41,252 - werkzeug - INFO - 127.0.0.1 - - [28/Dec/2025 23:55:41] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766937340925 HTTP/1.1" 200 - +2025-12-28 23:59:16,550 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=860.57, pending_signals=2 +2025-12-28 23:59:16,552 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 860.26, 'position_size': 0, 'timestamp': 1766937480}] +2025-12-28 23:59:26,279 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=860.57, pending_signals=2 +2025-12-28 23:59:26,281 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 860.26, 'position_size': 0, 'timestamp': 1766937480}] +2025-12-28 23:59:36,382 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=860.58, pending_signals=2 +2025-12-28 23:59:36,384 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 860.26, 'position_size': 0, 'timestamp': 1766937480}] +2025-12-28 23:59:46,283 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=860.58, pending_signals=2 +2025-12-28 23:59:46,285 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 860.26, 'position_size': 0, 'timestamp': 1766937480}] +2025-12-28 23:59:56,391 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=860.57, pending_signals=2 +2025-12-28 23:59:56,394 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 860.26, 'position_size': 0, 'timestamp': 1766937480}] +2025-12-29 00:03:02,024 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:03:02] "GET /api/dashboard/summary?_t=1766937781694 HTTP/1.1" 200 - +2025-12-29 00:03:02,033 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:03:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766937781694 HTTP/1.1" 200 - +2025-12-29 00:03:07,340 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:03:07] "DELETE /api/dashboard/pendingOrders/47 HTTP/1.1" 200 - +2025-12-29 00:03:07,748 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:03:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766937787415 HTTP/1.1" 200 - +2025-12-29 00:03:09,542 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:03:09] "DELETE /api/dashboard/pendingOrders/46 HTTP/1.1" 200 - +2025-12-29 00:03:09,950 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:03:09] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766937789627 HTTP/1.1" 200 - +2025-12-29 00:03:13,661 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:03:13] "DELETE /api/dashboard/pendingOrders/44 HTTP/1.1" 200 - +2025-12-29 00:03:14,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:03:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766937793729 HTTP/1.1" 200 - +2025-12-29 00:03:15,839 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:03:15] "DELETE /api/dashboard/pendingOrders/42 HTTP/1.1" 200 - +2025-12-29 00:03:16,224 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:03:16] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766937795903 HTTP/1.1" 200 - +2025-12-29 00:03:19,028 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:03:19] "DELETE /api/dashboard/pendingOrders/39 HTTP/1.1" 200 - +2025-12-29 00:03:19,410 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:03:19] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766937799088 HTTP/1.1" 200 - +2025-12-29 00:03:20,936 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:03:20] "DELETE /api/dashboard/pendingOrders/38 HTTP/1.1" 200 - +2025-12-29 00:03:21,315 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:03:21] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766937800996 HTTP/1.1" 200 - +2025-12-29 00:03:27,279 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:03:27] "GET /api/dashboard/summary?_t=1766937807269 HTTP/1.1" 200 - +2025-12-29 00:03:27,591 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:03:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766937807269 HTTP/1.1" 200 - +2025-12-29 00:03:28,826 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:03:28] "GET /api/dashboard/summary?_t=1766937808512 HTTP/1.1" 200 - +2025-12-29 00:03:28,831 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:03:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766937808512 HTTP/1.1" 200 - +2025-12-29 00:03:39,162 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:03:39] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 00:03:39,170 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:03:39] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 00:03:39,481 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:03:39] "GET /api/market/types?_t=1766937819143 HTTP/1.1" 200 - +2025-12-29 00:03:39,490 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-29 00:03:39,767 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:03:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:03:44,097 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=500 +2025-12-29 00:03:44,298 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:03:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:03:49,346 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:03:49,527 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:03:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:03:51,980 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=500 +2025-12-29 00:03:52,276 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:03:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:03:57,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:03:57,589 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:03:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:04:02,726 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:04:03,764 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:04:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:04:07,332 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:04:07,332 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:04:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:04:12,647 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:04:12,863 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:04:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:04:17,325 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:04:17,326 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:04:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:04:22,632 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:04:22,738 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:04:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:04:27,327 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:04:27,328 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:04:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:04:32,645 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:04:32,749 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:04:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:04:37,328 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:04:37,328 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:04:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:04:42,641 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:04:42,828 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:04:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:04:47,326 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:04:47,326 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:04:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:04:52,784 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:04:52,888 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:04:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:04:56,297 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87870.36, pending_signals=1 +2025-12-29 00:04:56,307 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87870.36, 'position_size': 0, 'timestamp': 1766937840}] +2025-12-29 00:04:56,317 - app.services.trading_executor - INFO - Strategy 2 signal executed: close_short @ 87870.36 +2025-12-29 00:04:57,492 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:04:57,493 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:04:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:05:02,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:05:02,891 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:05:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:05:06,124 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87870.36, pending_signals=1 +2025-12-29 00:05:06,129 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87870.36, 'position_size': 0, 'timestamp': 1766937900}] +2025-12-29 00:05:07,326 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:05:07,326 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:05:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:05:12,868 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:05:12,974 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:05:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:05:13,117 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:05:13] "GET /api/dashboard/summary?_t=1766937912799 HTTP/1.1" 200 - +2025-12-29 00:05:13,122 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:05:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766937912799 HTTP/1.1" 200 - +2025-12-29 00:05:16,584 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87870.37, pending_signals=2 +2025-12-29 00:05:16,587 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 87870.37, 'position_size': 0.08, 'timestamp': 1766937840}, {'type': 'close_short', 'trigger_price': 87870.37, 'position_size': 0, 'timestamp': 1766937840}] +2025-12-29 00:05:16,596 - app.services.trading_executor - INFO - Strategy 2 signal executed: open_long @ 87870.37 +2025-12-29 00:05:17,483 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:05:17,483 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:05:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:05:22,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:05:22,955 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:05:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:05:26,103 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87870.37, pending_signals=2 +2025-12-29 00:05:26,112 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 87870.37, 'position_size': 0.08, 'timestamp': 1766937840}, {'type': 'close_short', 'trigger_price': 87870.37, 'position_size': 0, 'timestamp': 1766937840}] +2025-12-29 00:05:27,483 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:05:27,483 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:05:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:05:32,782 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:05:32,960 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:05:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:05:36,210 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87870.37, pending_signals=2 +2025-12-29 00:05:36,219 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 87870.37, 'position_size': 0.08, 'timestamp': 1766937840}, {'type': 'close_short', 'trigger_price': 87870.37, 'position_size': 0, 'timestamp': 1766937840}] +2025-12-29 00:05:37,490 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:05:37,491 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:05:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:05:42,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:05:42,959 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:05:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:05:46,109 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87870.37, pending_signals=2 +2025-12-29 00:05:46,119 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 87870.37, 'position_size': 0.08, 'timestamp': 1766937840}, {'type': 'close_short', 'trigger_price': 87870.37, 'position_size': 0, 'timestamp': 1766937840}] +2025-12-29 00:05:47,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:05:47,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:05:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:05:52,787 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:05:52,891 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:05:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:05:55,784 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:05:55] "GET /api/dashboard/summary?_t=1766937955771 HTTP/1.1" 200 - +2025-12-29 00:05:56,083 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:05:56] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766937955771 HTTP/1.1" 200 - +2025-12-29 00:05:56,226 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87876.09, pending_signals=2 +2025-12-29 00:05:56,246 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 87870.37, 'position_size': 0.08, 'timestamp': 1766937840}, {'type': 'close_short', 'trigger_price': 87870.37, 'position_size': 0, 'timestamp': 1766937840}] +2025-12-29 00:05:57,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:05:57,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:05:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:06:02,491 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:06:02,609 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:06:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:06:07,785 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:06:07,890 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:06:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:06:12,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:06:12,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:06:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:06:17,479 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:06:17,649 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:06:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:06:22,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:06:22,959 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:06:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:06:27,477 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:06:27,478 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:06:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:06:32,783 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:06:32,953 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:06:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:06:37,477 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:06:37,478 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:06:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:06:42,638 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:06:42,822 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:06:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:06:45,005 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=5m, limit=500 +2025-12-29 00:06:45,234 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:06:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:06:46,039 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=500 +2025-12-29 00:06:46,322 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:06:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:06:51,354 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:06:51,459 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:06:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:06:56,671 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:06:56,896 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:06:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:07:01,360 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:07:01,360 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:07:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:07:06,660 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:07:06,767 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:07:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:07:11,624 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:07:11,625 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:07:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:07:16,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:07:16,899 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:07:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:07:21,479 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:07:21,480 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:07:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:07:26,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:07:26,896 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:07:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:07:31,475 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:07:31,476 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:07:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:07:36,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:07:36,956 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:07:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:07:41,483 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:07:41,483 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:07:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:07:46,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:07:46,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:07:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:07:51,475 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:07:51,476 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:07:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:07:57,581 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-29 00:07:57,620 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-29 00:07:58,108 - app.services.strategy - INFO - Found 3 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}, {'id': 9, 'strategy_type': 'IndicatorStrategy'}] +2025-12-29 00:07:58,108 - app - INFO - Restoring 3 running strategies... +2025-12-29 00:07:58,108 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-29 00:07:58,108 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-29 00:07:58,108 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-29 00:07:58,109 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-29 00:07:58,109 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-29 00:07:58,109 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-29 00:07:58,110 - app.services.trading_executor - INFO - Strategy 9 loop starting +2025-12-29 00:07:58,110 - app.services.trading_executor - INFO - Strategy 9 started +2025-12-29 00:07:58,110 - app - INFO - [OK] IndicatorStrategy 9 restored +2025-12-29 00:07:58,110 - app - INFO - Strategy restore completed: 3/3 restored +2025-12-29 00:07:58,110 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-29 00:07:58,110 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-29 00:07:58,126 - app.services.trading_executor - INFO - Strategy 9 derivatives trading; normalize market_type to: swap +2025-12-29 00:07:58,138 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-29 00:07:58,139 - werkzeug - INFO - Press CTRL+C to quit +2025-12-29 00:08:01,520 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:08:02,063 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:08:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:08:02,182 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=1, position=1, entry_price=87828.0, highest=87898.41 +2025-12-29 00:08:02,210 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2025-12-29 00:08:02,210 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-29 00:08:02,230 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2025-12-29 00:08:02,345 - app.services.trading_executor - INFO - ็ญ–็•ฅ 9 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-29 00:08:02,362 - app.services.trading_executor - INFO - Strategy 9 initialized; pending_signals=0 +2025-12-29 00:08:06,354 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:08:06,354 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:08:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:08:11,661 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:08:11,765 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:08:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:08:16,366 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:08:16,367 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:08:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:08:21,655 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:08:21,762 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:08:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:08:26,349 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:08:26,350 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:08:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:08:31,662 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:08:31,766 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:08:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:08:36,350 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:08:36,350 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:08:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:08:41,666 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:08:41,770 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:08:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:08:42,534 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2951.48, pending_signals=1 +2025-12-29 00:08:42,553 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2951.48, 'position_size': 0, 'timestamp': 1766938080}] +2025-12-29 00:08:46,350 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:08:46,350 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:08:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:08:51,655 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:08:51,762 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:08:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:08:52,274 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2951.48, pending_signals=1 +2025-12-29 00:08:52,304 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2951.48, 'position_size': 0, 'timestamp': 1766938080}] +2025-12-29 00:08:56,351 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:08:56,351 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:08:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:09:01,659 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:09:01,763 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:09:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:09:02,782 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2951.38, pending_signals=2 +2025-12-29 00:09:02,785 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2951.61, 'position_size': 0, 'timestamp': 1766938080}] +2025-12-29 00:09:06,353 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:09:06,356 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:09:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:09:11,660 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:09:11,905 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:09:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:09:12,281 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2951.38, pending_signals=2 +2025-12-29 00:09:12,284 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2951.61, 'position_size': 0, 'timestamp': 1766938080}] +2025-12-29 00:09:16,352 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:09:16,353 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:09:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:09:21,663 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:09:21,767 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:09:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:09:22,389 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2951.37, pending_signals=2 +2025-12-29 00:09:22,392 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2951.61, 'position_size': 0, 'timestamp': 1766938080}] +2025-12-29 00:09:26,351 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:09:26,352 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:09:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:09:31,657 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:09:31,763 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:09:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:09:32,307 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2951.37, pending_signals=2 +2025-12-29 00:09:32,310 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2951.61, 'position_size': 0, 'timestamp': 1766938080}] +2025-12-29 00:09:36,353 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:09:36,353 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:09:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:09:41,665 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:09:41,839 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:09:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:09:42,404 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2951.22, pending_signals=2 +2025-12-29 00:09:42,407 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2951.61, 'position_size': 0, 'timestamp': 1766938080}] +2025-12-29 00:09:46,352 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:09:46,353 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:09:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:09:51,660 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:09:51,823 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:09:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:09:52,324 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2951.22, pending_signals=2 +2025-12-29 00:09:52,328 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2951.61, 'position_size': 0, 'timestamp': 1766938080}] +2025-12-29 00:09:56,356 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:09:56,357 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:09:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:10:01,657 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:10:01,976 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:10:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:10:06,354 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:10:06,355 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:10:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:10:11,657 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:10:11,765 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:10:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:10:16,357 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:10:16,358 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:10:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:10:21,666 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:10:21,771 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:10:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:10:26,354 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:10:26,355 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:10:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:10:31,672 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:10:31,867 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:10:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:10:36,355 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:10:36,355 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:10:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:10:41,660 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:10:41,766 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:10:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:10:46,353 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:10:46,353 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:10:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:10:51,661 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:10:51,767 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:10:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:10:56,357 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:10:56,357 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:10:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:11:01,660 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:11:01,765 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:11:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:11:06,355 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:11:06,355 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:11:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:11:11,671 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:11:11,980 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:11:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:11:16,356 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:11:16,356 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:11:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:11:21,664 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:11:21,772 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:11:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:11:26,359 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:11:26,360 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:11:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:11:31,662 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:11:31,765 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:11:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:11:36,357 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:11:36,357 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:11:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:11:41,668 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:11:41,954 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:11:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:11:46,354 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:11:46,354 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:11:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:11:51,666 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:11:51,772 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:11:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:11:56,354 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:11:56,355 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:11:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:12:01,665 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:12:01,770 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:12:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:12:06,355 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:12:06,356 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:12:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:12:11,671 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:12:11,776 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:12:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:12:16,353 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:12:16,354 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:12:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:12:21,665 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:12:22,036 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:12:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:12:26,353 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:12:26,354 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:12:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:12:31,674 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:12:31,782 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:12:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:12:36,349 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:12:36,349 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:12:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:12:41,667 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:12:41,774 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:12:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:12:46,359 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:12:46,359 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:12:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:12:51,666 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:12:51,856 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:12:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:12:56,353 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:12:56,354 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:12:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:13:01,668 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:13:01,892 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:13:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:13:06,359 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:13:06,359 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:13:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:13:11,667 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:13:11,772 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:13:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:13:16,360 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:13:16,361 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:13:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:13:21,663 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:13:21,768 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:13:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:13:26,360 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:13:26,360 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:13:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:13:31,668 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:13:31,943 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:13:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:13:36,360 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:13:36,361 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:13:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:13:41,661 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:13:41,765 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:13:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:13:46,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:13:46,364 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:13:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:13:49,721 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=5m, limit=500 +2025-12-29 00:13:49,928 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:13:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:13:50,880 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=500 +2025-12-29 00:13:51,127 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:13:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:13:56,479 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2025-12-29 00:13:56,583 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:13:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:13:56,730 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:13:56] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 00:13:56,994 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:13:56] "GET /api/market/types?_t=1766938436666 HTTP/1.1" 200 - +2025-12-29 00:13:57,006 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:13:57] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 00:13:57,015 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-29 00:13:57,264 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:13:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:13:59,093 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=500 +2025-12-29 00:13:59,262 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:13:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:14:04,607 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:14:04,711 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:14:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:14:06,333 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:14:06] "GET /api/market/types?_t=1766938446318 HTTP/1.1" 200 - +2025-12-29 00:14:06,337 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:14:06] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 00:14:06,344 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:14:06] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 00:14:06,668 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-29 00:14:06,670 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:14:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:14:09,026 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=500 +2025-12-29 00:14:09,245 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:14:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:14:14,596 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:14:14,786 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:14:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:14:19,279 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:14:19,280 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:14:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:14:24,582 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:14:24,785 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:14:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:14:32,783 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=5m, limit=500 +2025-12-29 00:14:33,129 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:14:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:14:33,745 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=500 +2025-12-29 00:14:34,012 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:14:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:14:39,046 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:14:39,150 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:14:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:14:44,046 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:14:44,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:14:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:14:49,046 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:14:49,151 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:14:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:14:54,046 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:14:54,046 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:14:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:14:59,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:14:59,468 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:14:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:15:03,020 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=861.47, pending_signals=2 +2025-12-29 00:15:03,022 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'open_long', 'trigger_price': 861.37, 'position_size': 0.08, 'timestamp': 1766938440}, {'type': 'close_short', 'trigger_price': 861.37, 'position_size': 0, 'timestamp': 1766938440}] +2025-12-29 00:15:03,030 - app.services.trading_executor - INFO - Strategy 9 signal executed: open_long @ 861.37 +2025-12-29 00:15:04,047 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:15:04,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:15:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:15:05,285 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=51, strategy_id=9, cfg={'exchange_id': 'binance', 'api_key': '9E46...x6ec', 'secret_key': 'I5uD...ykZh'}, err=Binance HTTP 400: {"code":-1111,"msg":"Precision is over the maximum defined for this asset."} | debug: symbol=BNBUSDT side=BUY qty_req=0.023218825823978082 qty_norm=0.023 price_req=861.197726 price_norm=861.10 +2025-12-29 00:15:05,937 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=51, strategy_id=9, cfg={'exchange_id': 'binance', 'api_key': '9E46...x6ec', 'secret_key': 'I5uD...ykZh'}, err=Binance HTTP 400: {"code":-1111,"msg":"Precision is over the maximum defined for this asset."} | debug: symbol=BNBUSDT side=BUY qty_req=0.023218825823978082 qty_norm=0.023 +2025-12-29 00:15:09,356 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:15:09,462 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:15:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:15:12,510 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=861.47, pending_signals=2 +2025-12-29 00:15:12,513 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'open_long', 'trigger_price': 861.37, 'position_size': 0.08, 'timestamp': 1766938440}, {'type': 'close_short', 'trigger_price': 861.37, 'position_size': 0, 'timestamp': 1766938440}] +2025-12-29 00:15:14,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:15:14,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:15:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:15:19,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:15:19,612 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:15:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:15:22,700 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=861.47, pending_signals=2 +2025-12-29 00:15:22,702 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'open_long', 'trigger_price': 861.37, 'position_size': 0.08, 'timestamp': 1766938440}, {'type': 'close_short', 'trigger_price': 861.37, 'position_size': 0, 'timestamp': 1766938440}] +2025-12-29 00:15:24,047 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:15:24,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:15:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:15:29,350 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:15:29,453 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:15:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:15:32,513 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=861.47, pending_signals=2 +2025-12-29 00:15:32,515 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'open_long', 'trigger_price': 861.37, 'position_size': 0.08, 'timestamp': 1766938440}, {'type': 'close_short', 'trigger_price': 861.37, 'position_size': 0, 'timestamp': 1766938440}] +2025-12-29 00:15:34,048 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:15:34,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:15:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:15:39,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:15:39,468 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:15:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:15:42,846 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=861.46, pending_signals=2 +2025-12-29 00:15:42,848 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'open_long', 'trigger_price': 861.37, 'position_size': 0.08, 'timestamp': 1766938440}, {'type': 'close_short', 'trigger_price': 861.37, 'position_size': 0, 'timestamp': 1766938440}] +2025-12-29 00:15:44,787 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:15:45,215 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:15:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:15:52,514 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=861.46, pending_signals=2 +2025-12-29 00:15:52,517 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'open_long', 'trigger_price': 861.37, 'position_size': 0.08, 'timestamp': 1766938440}, {'type': 'close_short', 'trigger_price': 861.37, 'position_size': 0, 'timestamp': 1766938440}] +2025-12-29 00:16:19,175 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=5m, limit=500 +2025-12-29 00:16:19,476 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:16:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:16:20,533 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=5m, limit=5 +2025-12-29 00:16:20,740 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:16:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:16:21,418 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=500 +2025-12-29 00:16:21,707 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:16:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:16:22,740 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:16:22,845 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:16:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:16:24,051 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:16:24,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:16:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:16:24,739 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:16:24,740 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:16:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:16:26,059 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:16:26,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:16:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:16:26,746 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:16:26,747 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:16:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:16:28,041 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:16:28,146 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:16:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:16:28,750 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:16:28,751 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:16:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:16:30,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:16:30,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:16:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:16:30,750 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:16:30,750 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:16:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:16:32,062 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:16:32,063 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:16:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:16:32,750 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:16:32,750 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:16:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:16:34,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:16:34,157 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:16:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:16:34,751 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:16:34,752 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:16:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:16:36,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:16:36,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:16:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:16:36,747 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:16:36,748 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:16:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:16:38,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:16:38,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:16:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:16:38,751 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:16:38,751 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:16:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:16:40,055 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:16:40,202 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:16:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:16:40,740 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:16:40,741 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:16:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:16:42,046 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:16:42,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:16:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:16:42,753 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:16:42,754 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:16:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:16:44,062 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:16:44,062 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:16:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:16:44,750 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:16:44,751 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:16:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:16:46,063 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:16:46,281 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:16:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:16:46,747 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:16:46,748 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:16:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:16:48,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:16:48,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:16:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:16:48,737 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:16:48,738 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:16:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:16:50,062 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:16:50,063 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:16:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:16:50,751 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:16:50,751 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:16:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:16:52,055 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:16:52,158 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:16:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:16:52,740 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:16:52,741 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:16:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:16:54,049 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:16:54,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:16:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:16:54,746 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:16:54,747 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:16:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:16:56,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:16:56,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:16:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:16:56,747 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:16:56,748 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:16:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:16:58,051 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:16:58,238 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:16:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:16:58,748 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:16:58,748 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:16:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:00,055 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:00,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:00,747 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:00,747 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:02,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:02,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:02,742 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:02,743 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:04,066 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:04,171 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:04,753 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:04,753 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:06,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:06,059 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:06,742 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:06,743 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:08,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:08,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:08,738 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:08,739 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:10,051 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:10,155 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:10,754 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:10,755 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:12,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:12,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:12,748 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:12,749 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:14,048 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:14,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:14,749 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:14,750 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:16,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:16,162 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:16,742 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:16,742 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:18,057 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:18,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:18,743 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:18,744 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:20,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:20,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:20,747 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:20,748 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:22,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:22,156 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:22,750 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:22,751 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:24,062 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:24,062 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:24,742 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:24,742 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:26,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:26,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:26,746 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:26,747 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:28,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:28,160 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:28,740 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:28,741 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:30,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:30,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:30,747 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:30,748 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:32,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:32,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:32,741 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:32,741 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:34,061 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:34,233 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:34,748 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:34,748 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:36,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:36,059 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:36,742 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:36,743 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:38,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:38,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:38,741 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:38,741 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:40,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:40,264 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:40,739 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:40,740 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:42,062 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:42,063 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:42,748 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:42,749 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:44,065 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:44,065 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:44,753 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:44,753 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:46,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:46,162 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:46,741 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:46,742 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:48,065 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:48,066 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:48,755 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:48,755 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:50,045 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:50,046 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:50,745 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:50,745 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:52,061 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:52,264 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:52,749 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:52,749 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:54,051 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:54,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:54,738 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:54,739 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:56,057 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:56,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:56,746 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:56,747 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:58,051 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:58,154 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:17:58,753 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:17:58,754 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:17:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:00,059 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:00,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:00,743 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:00,743 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:02,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:02,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:02,741 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:02,742 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:04,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:04,155 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:04,746 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:04,747 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:06,059 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:06,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:06,743 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:06,744 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:08,051 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:08,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:08,740 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:08,740 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:10,063 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:10,170 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:10,752 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:10,752 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:12,057 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:12,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:12,742 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:12,743 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:14,093 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:14,094 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:14,743 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:14,743 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:16,059 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:16,234 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:16,742 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:16,742 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:18,055 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:18,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:18,757 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:18,757 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:20,696 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:20,697 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:21,260 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:21,367 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:22,105 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:22,106 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:22,742 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:22,743 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:24,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:24,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:24,742 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:24,743 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:26,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:26,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:26,738 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:26,841 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:28,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:28,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:28,740 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:28,741 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:30,061 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:30,062 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:30,748 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:30,749 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:32,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:32,218 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:32,741 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:32,741 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:34,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:34,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:34,753 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:34,753 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:36,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:36,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:36,753 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:36,754 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:38,061 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:38,243 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:38,740 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:38,740 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:40,049 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:40,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:40,755 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:40,756 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:42,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:42,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:42,744 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:42,744 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:44,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:44,157 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:44,747 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:44,747 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:46,047 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:46,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:46,745 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:46,745 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:48,064 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:48,065 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:48,754 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:48,755 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:50,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:50,166 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:50,748 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:50,748 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:52,057 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:52,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:52,740 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:52,741 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:54,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:54,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:54,744 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:54,744 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:56,061 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:56,167 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:56,748 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:56,749 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:58,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:58,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:18:58,743 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:18:58,743 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:18:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:00,046 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:00,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:00,743 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:00,743 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:02,062 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:02,168 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:02,747 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:02,747 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:04,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:04,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:04,739 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:04,739 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:06,046 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:06,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:06,738 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:06,739 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:08,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:08,211 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:08,739 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:08,740 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:10,045 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:10,045 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:10,739 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:10,739 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:12,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:12,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:12,739 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:12,739 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:14,046 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:14,152 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:14,739 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:14,739 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:16,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:16,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:16,740 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:16,740 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:18,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:18,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:18,739 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:18,740 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:20,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:20,163 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:20,740 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:20,741 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:22,046 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:22,046 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:22,739 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:22,739 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:24,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:24,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:24,740 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:24,740 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:26,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:26,157 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:26,739 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:26,739 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:28,048 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:28,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:28,739 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:28,739 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:30,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:30,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:30,741 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:30,741 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:32,048 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:32,163 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:32,739 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:32,739 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:34,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:34,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:34,739 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:34,739 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:36,055 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:36,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:36,740 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:36,740 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:38,044 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:38,148 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:38,739 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:38,740 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:40,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:40,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:40,739 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:40,740 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:42,049 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:42,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:42,744 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:42,745 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:44,055 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:44,164 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:44,740 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:44,740 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:46,047 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:46,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:46,741 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:46,742 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:48,045 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:48,045 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:48,740 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:48,741 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:50,055 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:50,159 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:50,740 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:50,740 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:52,042 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:52,043 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:52,740 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:52,740 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:54,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:54,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:54,740 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:54,740 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:56,042 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:56,147 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:56,741 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:56,742 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:58,048 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:58,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:19:58,740 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:19:58,741 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:19:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:00,049 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:00,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:00,741 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:00,742 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:02,041 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:02,146 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:02,740 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:02,741 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:04,048 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:04,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:04,740 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:04,741 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:06,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:06,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:06,740 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:06,740 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:08,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:08,157 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:08,743 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:08,743 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:10,042 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:10,043 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:10,741 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:10,741 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:12,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:12,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:12,740 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:12,740 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:14,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:14,166 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:14,740 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:14,741 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:16,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:16,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:16,741 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:16,741 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:18,048 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:18,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:18,741 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:18,742 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:20,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:20,157 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:20,740 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:20,741 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:22,055 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:22,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:22,742 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:22,742 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:24,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:24,061 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:24,743 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:24,744 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:26,046 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:26,150 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:26,741 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:26,742 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:28,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:28,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:28,741 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:28,741 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:30,048 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:30,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:30,741 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:30,742 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:32,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:32,154 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:32,743 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:32,743 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:34,047 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:34,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:34,742 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:34,742 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:36,046 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:36,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:36,742 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:36,742 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:38,045 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:38,151 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:38,742 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:38,742 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:40,916 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:40,916 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:40,921 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:40,922 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:42,044 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:42,045 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:47,964 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=5m, limit=500 +2025-12-29 00:20:48,204 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:49,238 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=5m, limit=5 +2025-12-29 00:20:49,343 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:49,347 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=500 +2025-12-29 00:20:49,663 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:50,993 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:51,202 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:51,675 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:51,676 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:52,989 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:52,990 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:53,680 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:53,680 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:54,648 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=5m, limit=500 +2025-12-29 00:20:54,650 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:55,417 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=500 +2025-12-29 00:20:55,589 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:56,931 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:57,036 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:57,633 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:57,635 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:58,936 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:58,937 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:20:59,621 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:20:59,622 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:20:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:00,943 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:00,944 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:01,625 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:01,625 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:02,944 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:03,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:03,626 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:03,626 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:04,941 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:04,941 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:05,629 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:05,630 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:06,935 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:06,936 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:07,622 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:07,623 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:08,929 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:09,034 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:09,626 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:09,627 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:10,937 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:10,937 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:12,445 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:12,446 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:12,959 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:12,960 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:17,907 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=5m, limit=500 +2025-12-29 00:21:17,909 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:18,828 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=500 +2025-12-29 00:21:19,131 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:20,164 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:20,269 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:21,161 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:21,161 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:22,163 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:22,163 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:23,159 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:23,160 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:24,472 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:24,473 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:25,160 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:25,160 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:25,517 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=5m, limit=500 +2025-12-29 00:21:25,519 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:26,558 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=5m, limit=5 +2025-12-29 00:21:26,558 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:27,865 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=5m, limit=5 +2025-12-29 00:21:27,866 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:28,468 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=500 +2025-12-29 00:21:28,988 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:30,342 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:30,446 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:31,028 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:31,028 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:32,334 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:32,334 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:33,026 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:33,026 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:34,336 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:34,336 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:35,028 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:35,028 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:36,334 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:36,444 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:37,027 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:37,027 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:38,330 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:38,330 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:39,026 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:39,027 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:40,331 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:40,331 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:41,038 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:41,039 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:42,331 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:42,437 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:43,028 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:43,029 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:44,331 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:44,331 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:45,027 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:45,028 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:46,345 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:46,345 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:47,027 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:47,027 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:48,338 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:48,443 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:49,029 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:49,029 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:50,339 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:50,340 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:51,031 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:51,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:52,343 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:52,343 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:53,030 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:53,031 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:54,332 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:54,436 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:55,031 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:55,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:56,333 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:56,333 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:57,027 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:57,028 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:58,331 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:58,332 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:21:59,027 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:21:59,028 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:21:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:00,339 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:00,445 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:01,030 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:01,030 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:02,343 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:02,343 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:03,027 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:03,028 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:04,335 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:04,336 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:05,029 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:05,029 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:06,335 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:06,441 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:07,028 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:07,028 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:08,333 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:08,333 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:09,029 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:09,030 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:10,344 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:10,345 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:11,029 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:11,029 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:12,338 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:12,445 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:13,027 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:13,027 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:14,330 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:14,330 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:15,028 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:15,028 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:16,346 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:16,346 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:17,028 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:17,028 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:18,335 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:18,438 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:19,029 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:19,029 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:20,344 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:20,345 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:21,028 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:21,029 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:22,344 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:22,344 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:23,027 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:23,028 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:24,343 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:24,450 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:25,029 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:25,029 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:26,333 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:26,333 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:27,028 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:27,029 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:28,337 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:28,338 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:29,029 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:29,029 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:30,333 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:30,653 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:31,029 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:31,029 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:32,337 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:32,338 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:33,032 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:33,033 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:34,343 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:34,344 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:35,032 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:35,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:36,336 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:36,441 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:37,031 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:37,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:38,339 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:38,339 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:39,029 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:39,029 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:40,332 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:40,332 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:41,029 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:41,030 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:42,338 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:42,443 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:42,497 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87861.4, pending_signals=1 +2025-12-29 00:22:42,508 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87861.4, 'position_size': 0, 'timestamp': 1766938920}] +2025-12-29 00:22:42,516 - app.services.trading_executor - INFO - Strategy 2 signal executed: close_long @ 87861.4 +2025-12-29 00:22:43,030 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:43,030 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:44,344 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:44,344 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:45,029 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:45,030 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:46,338 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:46,339 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:47,027 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:47,027 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:48,345 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:48,452 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:49,031 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:49,031 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:50,336 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:50,337 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:51,028 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:51,028 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:52,330 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:52,330 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:52,397 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87861.4, pending_signals=1 +2025-12-29 00:22:52,406 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87861.4, 'position_size': 0, 'timestamp': 1766938920}] +2025-12-29 00:22:53,029 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:53,030 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:54,333 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:54,438 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:55,030 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:55,030 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:56,335 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:56,335 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:57,030 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:57,030 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:58,345 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:58,345 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:22:59,031 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:22:59,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:22:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:00,336 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:00,442 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:01,028 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:01,029 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:02,346 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:02,346 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:02,715 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87861.4, pending_signals=2 +2025-12-29 00:23:02,717 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87861.4, 'position_size': 0, 'timestamp': 1766938920}, {'type': 'open_short', 'trigger_price': 87861.4, 'position_size': 0.08, 'timestamp': 1766938920}] +2025-12-29 00:23:02,726 - app.services.trading_executor - INFO - Strategy 2 signal executed: open_short @ 87861.4 +2025-12-29 00:23:03,030 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:03,031 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:04,330 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:04,331 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:05,030 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:05,031 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:06,341 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:06,445 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:07,030 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:07,031 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:08,334 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:08,335 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:09,030 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:09,031 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:10,336 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:10,336 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:11,031 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:11,031 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:12,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:12,400 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87861.4, pending_signals=2 +2025-12-29 00:23:12,402 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87861.4, 'position_size': 0, 'timestamp': 1766938920}, {'type': 'open_short', 'trigger_price': 87861.4, 'position_size': 0.08, 'timestamp': 1766938920}] +2025-12-29 00:23:12,574 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:13,028 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:13,029 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:14,367 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:14,368 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:15,033 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:15,034 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:16,343 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:16,343 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:17,030 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:17,030 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:18,339 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:18,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:19,027 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:19,028 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:20,340 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:20,341 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:21,030 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:21,031 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:22,345 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:22,346 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:22,506 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87850.0, pending_signals=2 +2025-12-29 00:23:22,516 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87861.4, 'position_size': 0, 'timestamp': 1766938920}, {'type': 'open_short', 'trigger_price': 87861.4, 'position_size': 0.08, 'timestamp': 1766938920}] +2025-12-29 00:23:22,589 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2950.67, pending_signals=1 +2025-12-29 00:23:22,591 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2950.67, 'position_size': 0, 'timestamp': 1766938980}] +2025-12-29 00:23:23,030 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:23,030 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:24,338 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:24,444 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:25,031 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:25,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:26,335 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:26,336 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:27,031 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:27,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:28,348 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:28,349 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:29,032 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:29,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:30,340 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:30,444 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:31,029 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:31,030 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:32,347 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:32,347 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:32,405 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87850.0, pending_signals=2 +2025-12-29 00:23:32,415 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87861.4, 'position_size': 0, 'timestamp': 1766938920}, {'type': 'open_short', 'trigger_price': 87861.4, 'position_size': 0.08, 'timestamp': 1766938920}] +2025-12-29 00:23:32,488 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2950.67, pending_signals=1 +2025-12-29 00:23:32,490 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2950.67, 'position_size': 0, 'timestamp': 1766938980}] +2025-12-29 00:23:33,028 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:33,028 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:34,334 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:34,334 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:35,032 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:35,033 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:36,332 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:36,434 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:37,030 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:37,031 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:38,333 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:38,333 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:39,031 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:39,031 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:40,343 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:40,344 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:41,031 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:41,031 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:42,338 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:42,441 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:42,781 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2950.01, pending_signals=1 +2025-12-29 00:23:42,798 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87846.57, pending_signals=2 +2025-12-29 00:23:42,799 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2950.01, 'position_size': 0, 'timestamp': 1766938980}] +2025-12-29 00:23:42,819 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87861.4, 'position_size': 0, 'timestamp': 1766938920}, {'type': 'open_short', 'trigger_price': 87861.4, 'position_size': 0.08, 'timestamp': 1766938920}] +2025-12-29 00:23:43,033 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:43,034 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:44,337 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:44,338 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:45,031 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:45,031 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:46,333 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:46,333 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:47,032 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:47,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:48,339 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:48,444 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:49,027 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:49,028 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:50,338 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:50,339 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:51,026 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:51,027 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:52,337 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:52,337 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:52,406 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87846.57, pending_signals=2 +2025-12-29 00:23:52,416 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87861.4, 'position_size': 0, 'timestamp': 1766938920}, {'type': 'open_short', 'trigger_price': 87861.4, 'position_size': 0.08, 'timestamp': 1766938920}] +2025-12-29 00:23:52,491 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2950.01, pending_signals=1 +2025-12-29 00:23:52,494 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2950.01, 'position_size': 0, 'timestamp': 1766938980}] +2025-12-29 00:23:53,031 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:53,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:54,334 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:54,441 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:55,032 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:55,033 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:56,339 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:56,339 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:57,029 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:57,030 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:58,346 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:58,347 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:23:59,029 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:23:59,030 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:23:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:24:00,351 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:24:00,455 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:24:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:24:01,031 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:24:01,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:24:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:24:02,344 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:24:02,345 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:24:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:24:02,768 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2949.41, pending_signals=2 +2025-12-29 00:24:02,770 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2949.4, 'position_size': 0, 'timestamp': 1766938980}] +2025-12-29 00:24:03,029 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:24:03,030 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:24:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:24:04,337 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:24:04,338 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:24:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:24:05,032 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:24:05,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:24:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:24:06,348 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:24:06,506 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:24:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:24:07,027 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:24:07,028 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:24:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:24:08,348 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:24:08,348 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:24:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:24:09,032 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:24:09,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:24:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:24:10,336 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:24:10,337 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:24:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:24:11,031 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:24:11,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:24:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:24:12,341 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:24:12,496 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2949.41, pending_signals=2 +2025-12-29 00:24:12,499 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2949.4, 'position_size': 0, 'timestamp': 1766938980}] +2025-12-29 00:24:12,567 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:24:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:24:13,037 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:24:13,037 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:24:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:24:14,348 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:24:14,349 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:24:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:24:15,033 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:24:15,033 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:24:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:24:16,465 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:24:16,466 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:24:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:24:17,031 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:24:17,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:24:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:24:18,339 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:24:18,447 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:24:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:24:19,031 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:24:19,031 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:24:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:24:20,331 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:24:20,332 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:24:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:24:21,032 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:24:21,033 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:24:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:24:22,350 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 00:24:22,351 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:24:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:24:22,599 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2949.0, pending_signals=2 +2025-12-29 00:24:22,601 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2949.4, 'position_size': 0, 'timestamp': 1766938980}, {'type': 'open_short', 'trigger_price': 2949.4, 'position_size': 0.08, 'timestamp': 1766938980}] +2025-12-29 00:24:22,612 - app.services.trading_executor - INFO - Strategy 1 signal executed: open_short @ 2949.4 +2025-12-29 00:24:22,695 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:24:22] "GET /api/dashboard/summary?_t=1766939062681 HTTP/1.1" 200 - +2025-12-29 00:24:22,782 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:24:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766939062681 HTTP/1.1" 200 - +2025-12-29 00:24:25,367 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=54, strategy_id=1, cfg={'exchange_id': 'bitget', 'api_key': 'bg_8...b659', 'secret_key': '3b7e...b239', 'passphrase': 'xuji...u123', 'credential_id': 3}, err=Bitget HTTP 400: {"code":"45115","msg":"The price you enter should be a multiple of 0.01{1}","requestTime":1766939065487,"data":null} +2025-12-29 00:24:29,536 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:24:29] "GET /api/dashboard/summary?_t=1766939069522 HTTP/1.1" 200 - +2025-12-29 00:24:29,847 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:24:29] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766939069522 HTTP/1.1" 200 - +2025-12-29 00:24:32,495 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2949.0, pending_signals=2 +2025-12-29 00:24:32,508 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2949.4, 'position_size': 0, 'timestamp': 1766938980}, {'type': 'open_short', 'trigger_price': 2949.4, 'position_size': 0.08, 'timestamp': 1766938980}] +2025-12-29 00:24:42,655 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2947.2, pending_signals=2 +2025-12-29 00:24:42,665 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2949.4, 'position_size': 0, 'timestamp': 1766938980}, {'type': 'open_short', 'trigger_price': 2949.4, 'position_size': 0.08, 'timestamp': 1766938980}] +2025-12-29 00:24:52,503 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2947.2, pending_signals=2 +2025-12-29 00:24:52,513 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2949.4, 'position_size': 0, 'timestamp': 1766938980}, {'type': 'open_short', 'trigger_price': 2949.4, 'position_size': 0.08, 'timestamp': 1766938980}] +2025-12-29 00:25:03,024 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=862.49, pending_signals=2 +2025-12-29 00:25:03,026 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 862.51, 'position_size': 0, 'timestamp': 1766939040}, {'type': 'open_short', 'trigger_price': 862.51, 'position_size': 0.08, 'timestamp': 1766939040}] +2025-12-29 00:25:03,034 - app.services.trading_executor - INFO - Strategy 9 signal executed: open_short @ 862.51 +2025-12-29 00:25:05,352 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=55, strategy_id=9, cfg={'exchange_id': 'binance', 'api_key': '9E46...x6ec', 'secret_key': 'I5uD...ykZh'}, err=Binance HTTP 400: {"code":-1111,"msg":"Precision is over the maximum defined for this asset."} | debug: symbol=BNBUSDT side=SELL qty_req=0.023188136949136823 qty_norm=0.023 price_req=862.682502 price_norm=862.60 +2025-12-29 00:25:06,073 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=55, strategy_id=9, cfg={'exchange_id': 'binance', 'api_key': '9E46...x6ec', 'secret_key': 'I5uD...ykZh'}, err=Binance HTTP 400: {"code":-1111,"msg":"Precision is over the maximum defined for this asset."} | debug: symbol=BNBUSDT side=SELL qty_req=0.023188136949136823 qty_norm=0.023 +2025-12-29 00:25:12,642 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=862.49, pending_signals=2 +2025-12-29 00:25:12,644 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 862.51, 'position_size': 0, 'timestamp': 1766939040}, {'type': 'open_short', 'trigger_price': 862.51, 'position_size': 0.08, 'timestamp': 1766939040}] +2025-12-29 00:25:22,745 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=861.75, pending_signals=2 +2025-12-29 00:25:22,747 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 862.51, 'position_size': 0, 'timestamp': 1766939040}, {'type': 'open_short', 'trigger_price': 862.51, 'position_size': 0.08, 'timestamp': 1766939040}] +2025-12-29 00:25:32,644 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=861.75, pending_signals=2 +2025-12-29 00:25:32,647 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 862.51, 'position_size': 0, 'timestamp': 1766939040}, {'type': 'open_short', 'trigger_price': 862.51, 'position_size': 0.08, 'timestamp': 1766939040}] +2025-12-29 00:25:42,750 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=861.91, pending_signals=2 +2025-12-29 00:25:42,752 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 862.51, 'position_size': 0, 'timestamp': 1766939040}, {'type': 'open_short', 'trigger_price': 862.51, 'position_size': 0.08, 'timestamp': 1766939040}] +2025-12-29 00:25:52,647 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=861.91, pending_signals=2 +2025-12-29 00:25:52,649 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 862.51, 'position_size': 0, 'timestamp': 1766939040}, {'type': 'open_short', 'trigger_price': 862.51, 'position_size': 0.08, 'timestamp': 1766939040}] +2025-12-29 00:28:23,645 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-29 00:28:23,649 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-29 00:28:24,050 - app.services.strategy - INFO - Found 3 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}, {'id': 9, 'strategy_type': 'IndicatorStrategy'}] +2025-12-29 00:28:24,050 - app - INFO - Restoring 3 running strategies... +2025-12-29 00:28:24,050 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-29 00:28:24,050 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-29 00:28:24,051 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-29 00:28:24,051 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-29 00:28:24,051 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-29 00:28:24,052 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-29 00:28:24,052 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-29 00:28:24,052 - app.services.trading_executor - INFO - Strategy 9 loop starting +2025-12-29 00:28:24,052 - app.services.trading_executor - INFO - Strategy 9 started +2025-12-29 00:28:24,053 - app - INFO - [OK] IndicatorStrategy 9 restored +2025-12-29 00:28:24,053 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-29 00:28:24,053 - app - INFO - Strategy restore completed: 3/3 restored +2025-12-29 00:28:24,060 - app.services.trading_executor - INFO - Strategy 9 derivatives trading; normalize market_type to: swap +2025-12-29 00:28:24,081 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-29 00:28:24,081 - werkzeug - INFO - Press CTRL+C to quit +2025-12-29 00:28:27,833 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=1, position=-1, entry_price=2947.08, highest=2949.0 +2025-12-29 00:28:28,017 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2025-12-29 00:28:28,139 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:28:28] "GET /api/dashboard/summary?_t=1766939307413 HTTP/1.1" 200 - +2025-12-29 00:28:28,140 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=1, position=-1, entry_price=87796.3, highest=87850.0 +2025-12-29 00:28:28,160 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2025-12-29 00:28:28,163 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:28:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766939307413 HTTP/1.1" 200 - +2025-12-29 00:28:28,356 - app.services.trading_executor - INFO - ็ญ–็•ฅ 9 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-29 00:28:28,380 - app.services.trading_executor - INFO - Strategy 9 initialized; pending_signals=0 +2025-12-29 00:28:33,247 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:28:33] "DELETE /api/dashboard/pendingOrders/51 HTTP/1.1" 200 - +2025-12-29 00:28:33,686 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:28:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766939313355 HTTP/1.1" 200 - +2025-12-29 00:29:04,982 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:29:04] "GET /api/dashboard/summary?_t=1766939344966 HTTP/1.1" 200 - +2025-12-29 00:29:05,296 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:29:05] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766939344966 HTTP/1.1" 200 - +2025-12-29 00:29:09,132 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:29:09] "DELETE /api/dashboard/pendingOrders/55 HTTP/1.1" 200 - +2025-12-29 00:29:09,396 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:29:09] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766939349207 HTTP/1.1" 200 - +2025-12-29 00:29:58,133 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:29:58] "GET /api/strategies?_t=1766939398124 HTTP/1.1" 200 - +2025-12-29 00:29:59,435 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:29:59] "GET /api/strategies/equityCurve?id=2&_t=1766939399102 HTTP/1.1" 200 - +2025-12-29 00:29:59,446 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:29:59] "GET /api/strategies/equityCurve?id=2&_t=1766939399102 HTTP/1.1" 200 - +2025-12-29 00:29:59,456 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:29:59] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766939399102 HTTP/1.1" 200 - +2025-12-29 00:29:59,586 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:29:59] "GET /api/strategies/positions?id=2&_t=1766939399106 HTTP/1.1" 200 - +2025-12-29 00:30:02,088 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:02] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766939402082 HTTP/1.1" 200 - +2025-12-29 00:30:04,523 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:04] "GET /api/strategies/positions?id=2&_t=1766939404104 HTTP/1.1" 200 - +2025-12-29 00:30:04,680 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:04] "GET /api/strategies/equityCurve?id=1&_t=1766939404615 HTTP/1.1" 200 - +2025-12-29 00:30:04,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:04] "GET /api/strategies/equityCurve?id=1&_t=1766939404615 HTTP/1.1" 200 - +2025-12-29 00:30:04,928 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:04] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766939404615 HTTP/1.1" 200 - +2025-12-29 00:30:05,041 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:05] "GET /api/strategies/positions?id=1&_t=1766939404616 HTTP/1.1" 200 - +2025-12-29 00:30:07,621 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:07] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939407615 HTTP/1.1" 200 - +2025-12-29 00:30:10,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:10] "GET /api/strategies/positions?id=1&_t=1766939409630 HTTP/1.1" 200 - +2025-12-29 00:30:10,181 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:10] "GET /api/strategies/trades?id=1&_t=1766939409860 HTTP/1.1" 200 - +2025-12-29 00:30:10,619 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:10] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939410610 HTTP/1.1" 200 - +2025-12-29 00:30:13,928 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:13] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939413611 HTTP/1.1" 200 - +2025-12-29 00:30:14,070 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:14] "GET /api/strategies/equityCurve?id=2&_t=1766939413741 HTTP/1.1" 200 - +2025-12-29 00:30:14,075 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:14] "GET /api/strategies/equityCurve?id=2&_t=1766939413741 HTTP/1.1" 200 - +2025-12-29 00:30:14,079 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:14] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766939413741 HTTP/1.1" 200 - +2025-12-29 00:30:14,279 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:14] "GET /api/strategies/positions?id=2&_t=1766939413742 HTTP/1.1" 200 - +2025-12-29 00:30:14,283 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:14] "GET /api/strategies/trades?id=2&_t=1766939413742 HTTP/1.1" 200 - +2025-12-29 00:30:17,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:17] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766939416739 HTTP/1.1" 200 - +2025-12-29 00:30:17,325 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:17] "GET /api/strategies/equityCurve?id=1&_t=1766939417053 HTTP/1.1" 200 - +2025-12-29 00:30:17,374 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:17] "GET /api/strategies/equityCurve?id=1&_t=1766939417053 HTTP/1.1" 200 - +2025-12-29 00:30:17,377 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:17] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766939417053 HTTP/1.1" 200 - +2025-12-29 00:30:17,579 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:17] "GET /api/strategies/positions?id=1&_t=1766939417054 HTTP/1.1" 200 - +2025-12-29 00:30:17,583 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:17] "GET /api/strategies/trades?id=1&_t=1766939417054 HTTP/1.1" 200 - +2025-12-29 00:30:20,379 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:20] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939420063 HTTP/1.1" 200 - +2025-12-29 00:30:22,184 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:22] "GET /api/strategies/positions?id=1&_t=1766939422069 HTTP/1.1" 200 - +2025-12-29 00:30:23,368 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:23] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939423053 HTTP/1.1" 200 - +2025-12-29 00:30:26,067 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:26] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939426060 HTTP/1.1" 200 - +2025-12-29 00:30:27,688 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:27] "GET /api/strategies/positions?id=1&_t=1766939427055 HTTP/1.1" 200 - +2025-12-29 00:30:29,066 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:29] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939429060 HTTP/1.1" 200 - +2025-12-29 00:30:32,383 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:32] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939432064 HTTP/1.1" 200 - +2025-12-29 00:30:32,500 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:32] "GET /api/strategies/positions?id=1&_t=1766939432065 HTTP/1.1" 200 - +2025-12-29 00:30:35,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:35] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939435050 HTTP/1.1" 200 - +2025-12-29 00:30:37,567 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:37] "GET /api/strategies/positions?id=1&_t=1766939437062 HTTP/1.1" 200 - +2025-12-29 00:30:38,064 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:38] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939438058 HTTP/1.1" 200 - +2025-12-29 00:30:41,368 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:41] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939441053 HTTP/1.1" 200 - +2025-12-29 00:30:42,185 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:42] "GET /api/strategies/positions?id=1&_t=1766939442067 HTTP/1.1" 200 - +2025-12-29 00:30:44,374 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:44] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939444052 HTTP/1.1" 200 - +2025-12-29 00:30:47,067 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:47] "GET /api/strategies/equityCurve?id=1&_t=1766939447057 HTTP/1.1" 200 - +2025-12-29 00:30:47,390 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:47] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939447057 HTTP/1.1" 200 - +2025-12-29 00:30:47,633 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:47] "GET /api/strategies/positions?id=1&_t=1766939447057 HTTP/1.1" 200 - +2025-12-29 00:30:50,373 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:50] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939450050 HTTP/1.1" 200 - +2025-12-29 00:30:52,524 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:52] "GET /api/strategies/positions?id=1&_t=1766939452054 HTTP/1.1" 200 - +2025-12-29 00:30:53,367 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:53] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939453049 HTTP/1.1" 200 - +2025-12-29 00:30:56,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:56] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939456050 HTTP/1.1" 200 - +2025-12-29 00:30:57,481 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:57] "GET /api/strategies/positions?id=1&_t=1766939457054 HTTP/1.1" 200 - +2025-12-29 00:30:59,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:30:59] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939459050 HTTP/1.1" 200 - +2025-12-29 00:31:02,369 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:31:02] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939462049 HTTP/1.1" 200 - +2025-12-29 00:31:02,484 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:31:02] "GET /api/strategies/positions?id=1&_t=1766939462053 HTTP/1.1" 200 - +2025-12-29 00:31:05,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:31:05] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939465049 HTTP/1.1" 200 - +2025-12-29 00:31:07,482 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:31:07] "GET /api/strategies/positions?id=1&_t=1766939467054 HTTP/1.1" 200 - +2025-12-29 00:31:08,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:31:08] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939468050 HTTP/1.1" 200 - +2025-12-29 00:31:08,360 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87813.13, pending_signals=1 +2025-12-29 00:31:08,369 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87813.13, 'position_size': 0, 'timestamp': 1766939460}] +2025-12-29 00:31:08,376 - app.services.trading_executor - INFO - Strategy 2 signal executed: close_short @ 87813.13 +2025-12-29 00:31:11,364 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:31:11] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939471050 HTTP/1.1" 200 - +2025-12-29 00:31:12,172 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:31:12] "GET /api/strategies/positions?id=1&_t=1766939472054 HTTP/1.1" 200 - +2025-12-29 00:31:14,372 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:31:14] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939474050 HTTP/1.1" 200 - +2025-12-29 00:31:17,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:31:17] "GET /api/strategies/equityCurve?id=1&_t=1766939477050 HTTP/1.1" 200 - +2025-12-29 00:31:17,369 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:31:17] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939477050 HTTP/1.1" 200 - +2025-12-29 00:31:17,481 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:31:17] "GET /api/strategies/positions?id=1&_t=1766939477055 HTTP/1.1" 200 - +2025-12-29 00:31:18,262 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87813.13, pending_signals=1 +2025-12-29 00:31:18,264 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87813.13, 'position_size': 0, 'timestamp': 1766939460}] +2025-12-29 00:31:20,368 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:31:20] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939480049 HTTP/1.1" 200 - +2025-12-29 00:31:22,259 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:31:22] "GET /api/strategies/positions?id=1&_t=1766939482054 HTTP/1.1" 200 - +2025-12-29 00:31:23,360 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:31:23] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939483050 HTTP/1.1" 200 - +2025-12-29 00:31:26,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:31:26] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939486050 HTTP/1.1" 200 - +2025-12-29 00:31:27,604 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:31:27] "GET /api/strategies/positions?id=1&_t=1766939487054 HTTP/1.1" 200 - +2025-12-29 00:31:28,526 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87812.1, pending_signals=2 +2025-12-29 00:31:28,529 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87813.12, 'position_size': 0, 'timestamp': 1766939400}] +2025-12-29 00:31:29,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:31:29] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939489049 HTTP/1.1" 200 - +2025-12-29 00:31:32,370 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:31:32] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939492050 HTTP/1.1" 200 - +2025-12-29 00:31:32,594 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:31:32] "GET /api/strategies/positions?id=1&_t=1766939492053 HTTP/1.1" 200 - +2025-12-29 00:31:35,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:31:35] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939495050 HTTP/1.1" 200 - +2025-12-29 00:31:37,562 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:31:37] "GET /api/strategies/positions?id=1&_t=1766939497054 HTTP/1.1" 200 - +2025-12-29 00:31:38,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:31:38] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939498050 HTTP/1.1" 200 - +2025-12-29 00:31:38,265 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87812.1, pending_signals=2 +2025-12-29 00:31:38,268 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87813.12, 'position_size': 0, 'timestamp': 1766939400}] +2025-12-29 00:31:41,368 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:31:41] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939501049 HTTP/1.1" 200 - +2025-12-29 00:31:42,269 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:31:42] "GET /api/strategies/positions?id=1&_t=1766939502054 HTTP/1.1" 200 - +2025-12-29 00:31:44,360 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:31:44] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939504050 HTTP/1.1" 200 - +2025-12-29 00:31:47,069 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:31:47] "GET /api/strategies/equityCurve?id=1&_t=1766939507050 HTTP/1.1" 200 - +2025-12-29 00:31:47,383 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:31:47] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939507050 HTTP/1.1" 200 - +2025-12-29 00:31:47,567 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:31:47] "GET /api/strategies/positions?id=1&_t=1766939507054 HTTP/1.1" 200 - +2025-12-29 00:31:48,371 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87812.01, pending_signals=2 +2025-12-29 00:31:48,374 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87813.12, 'position_size': 0, 'timestamp': 1766939400}] +2025-12-29 00:31:50,364 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:31:50] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939510049 HTTP/1.1" 200 - +2025-12-29 00:31:52,259 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:31:52] "GET /api/strategies/positions?id=1&_t=1766939512055 HTTP/1.1" 200 - +2025-12-29 00:31:53,364 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:31:53] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939513049 HTTP/1.1" 200 - +2025-12-29 00:31:56,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:31:56] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939516049 HTTP/1.1" 200 - +2025-12-29 00:31:57,483 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:31:57] "GET /api/strategies/positions?id=1&_t=1766939517054 HTTP/1.1" 200 - +2025-12-29 00:31:58,268 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87812.01, pending_signals=2 +2025-12-29 00:31:58,270 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87813.12, 'position_size': 0, 'timestamp': 1766939400}] +2025-12-29 00:31:59,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:31:59] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939519049 HTTP/1.1" 200 - +2025-12-29 00:32:02,368 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:32:02] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939522049 HTTP/1.1" 200 - +2025-12-29 00:32:02,479 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:32:02] "GET /api/strategies/positions?id=1&_t=1766939522054 HTTP/1.1" 200 - +2025-12-29 00:32:05,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:32:05] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939525049 HTTP/1.1" 200 - +2025-12-29 00:32:07,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:32:07] "GET /api/strategies/positions?id=1&_t=1766939527054 HTTP/1.1" 200 - +2025-12-29 00:32:08,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:32:08] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939528050 HTTP/1.1" 200 - +2025-12-29 00:32:11,357 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:32:11] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939531049 HTTP/1.1" 200 - +2025-12-29 00:32:12,231 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:32:12] "GET /api/strategies/positions?id=1&_t=1766939532054 HTTP/1.1" 200 - +2025-12-29 00:32:14,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:32:14] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939534049 HTTP/1.1" 200 - +2025-12-29 00:32:17,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:32:17] "GET /api/strategies/equityCurve?id=1&_t=1766939537049 HTTP/1.1" 200 - +2025-12-29 00:32:17,360 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:32:17] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939537050 HTTP/1.1" 200 - +2025-12-29 00:32:17,481 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:32:17] "GET /api/strategies/positions?id=1&_t=1766939537053 HTTP/1.1" 200 - +2025-12-29 00:32:20,365 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:32:20] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939540049 HTTP/1.1" 200 - +2025-12-29 00:32:22,170 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:32:22] "GET /api/strategies/positions?id=1&_t=1766939542053 HTTP/1.1" 200 - +2025-12-29 00:32:23,371 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:32:23] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939543050 HTTP/1.1" 200 - +2025-12-29 00:32:26,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:32:26] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939546049 HTTP/1.1" 200 - +2025-12-29 00:32:27,476 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:32:27] "GET /api/strategies/positions?id=1&_t=1766939547054 HTTP/1.1" 200 - +2025-12-29 00:32:29,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:32:29] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939549049 HTTP/1.1" 200 - +2025-12-29 00:32:32,372 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:32:32] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939552050 HTTP/1.1" 200 - +2025-12-29 00:32:32,568 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:32:32] "GET /api/strategies/positions?id=1&_t=1766939552055 HTTP/1.1" 200 - +2025-12-29 00:32:35,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:32:35] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939555050 HTTP/1.1" 200 - +2025-12-29 00:32:37,588 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:32:37] "GET /api/strategies/positions?id=1&_t=1766939557054 HTTP/1.1" 200 - +2025-12-29 00:32:38,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:32:38] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939558050 HTTP/1.1" 200 - +2025-12-29 00:32:41,371 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:32:41] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939561050 HTTP/1.1" 200 - +2025-12-29 00:32:42,169 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:32:42] "GET /api/strategies/positions?id=1&_t=1766939562053 HTTP/1.1" 200 - +2025-12-29 00:32:44,370 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:32:44] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939564050 HTTP/1.1" 200 - +2025-12-29 00:32:47,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:32:47] "GET /api/strategies/equityCurve?id=1&_t=1766939567049 HTTP/1.1" 200 - +2025-12-29 00:32:47,361 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:32:47] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939567049 HTTP/1.1" 200 - +2025-12-29 00:32:47,473 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:32:47] "GET /api/strategies/positions?id=1&_t=1766939567054 HTTP/1.1" 200 - +2025-12-29 00:32:50,371 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:32:50] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939570050 HTTP/1.1" 200 - +2025-12-29 00:32:52,173 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:32:52] "GET /api/strategies/positions?id=1&_t=1766939572054 HTTP/1.1" 200 - +2025-12-29 00:32:53,359 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:32:53] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939573049 HTTP/1.1" 200 - +2025-12-29 00:32:56,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:32:56] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939576049 HTTP/1.1" 200 - +2025-12-29 00:32:57,481 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:32:57] "GET /api/strategies/positions?id=1&_t=1766939577054 HTTP/1.1" 200 - +2025-12-29 00:32:59,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:32:59] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939579050 HTTP/1.1" 200 - +2025-12-29 00:33:02,357 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:33:02] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939582050 HTTP/1.1" 200 - +2025-12-29 00:33:02,475 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:33:02] "GET /api/strategies/positions?id=1&_t=1766939582054 HTTP/1.1" 200 - +2025-12-29 00:33:05,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:33:05] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939585049 HTTP/1.1" 200 - +2025-12-29 00:33:07,552 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:33:07] "GET /api/strategies/positions?id=1&_t=1766939587055 HTTP/1.1" 200 - +2025-12-29 00:33:08,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:33:08] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939588049 HTTP/1.1" 200 - +2025-12-29 00:33:11,360 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:33:11] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939591049 HTTP/1.1" 200 - +2025-12-29 00:33:12,173 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:33:12] "GET /api/strategies/positions?id=1&_t=1766939592055 HTTP/1.1" 200 - +2025-12-29 00:33:14,360 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:33:14] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939594049 HTTP/1.1" 200 - +2025-12-29 00:33:17,059 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:33:17] "GET /api/strategies/equityCurve?id=1&_t=1766939597049 HTTP/1.1" 200 - +2025-12-29 00:33:17,372 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:33:17] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939597050 HTTP/1.1" 200 - +2025-12-29 00:33:17,564 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:33:17] "GET /api/strategies/positions?id=1&_t=1766939597053 HTTP/1.1" 200 - +2025-12-29 00:33:20,359 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:33:20] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939600049 HTTP/1.1" 200 - +2025-12-29 00:33:22,172 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:33:22] "GET /api/strategies/positions?id=1&_t=1766939602054 HTTP/1.1" 200 - +2025-12-29 00:33:23,367 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:33:23] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939603049 HTTP/1.1" 200 - +2025-12-29 00:33:26,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:33:26] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939606049 HTTP/1.1" 200 - +2025-12-29 00:33:27,479 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:33:27] "GET /api/strategies/positions?id=1&_t=1766939607055 HTTP/1.1" 200 - +2025-12-29 00:33:29,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:33:29] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939609049 HTTP/1.1" 200 - +2025-12-29 00:33:32,359 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:33:32] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939612049 HTTP/1.1" 200 - +2025-12-29 00:33:32,476 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:33:32] "GET /api/strategies/positions?id=1&_t=1766939612054 HTTP/1.1" 200 - +2025-12-29 00:33:35,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:33:35] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939615049 HTTP/1.1" 200 - +2025-12-29 00:33:37,489 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:33:37] "GET /api/strategies/positions?id=1&_t=1766939617054 HTTP/1.1" 200 - +2025-12-29 00:33:38,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:33:38] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939618049 HTTP/1.1" 200 - +2025-12-29 00:33:41,370 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:33:41] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939621049 HTTP/1.1" 200 - +2025-12-29 00:33:42,246 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:33:42] "GET /api/strategies/positions?id=1&_t=1766939622054 HTTP/1.1" 200 - +2025-12-29 00:33:44,368 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:33:44] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939624049 HTTP/1.1" 200 - +2025-12-29 00:33:47,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:33:47] "GET /api/strategies/equityCurve?id=1&_t=1766939627049 HTTP/1.1" 200 - +2025-12-29 00:33:47,359 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:33:47] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939627049 HTTP/1.1" 200 - +2025-12-29 00:33:47,473 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:33:47] "GET /api/strategies/positions?id=1&_t=1766939627055 HTTP/1.1" 200 - +2025-12-29 00:33:50,360 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:33:50] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939630049 HTTP/1.1" 200 - +2025-12-29 00:33:52,174 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:33:52] "GET /api/strategies/positions?id=1&_t=1766939632054 HTTP/1.1" 200 - +2025-12-29 00:33:53,365 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:33:53] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939633050 HTTP/1.1" 200 - +2025-12-29 00:33:56,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:33:56] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939636049 HTTP/1.1" 200 - +2025-12-29 00:33:57,482 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:33:57] "GET /api/strategies/positions?id=1&_t=1766939637054 HTTP/1.1" 200 - +2025-12-29 00:33:59,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:33:59] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939639049 HTTP/1.1" 200 - +2025-12-29 00:34:02,368 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:34:02] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939642049 HTTP/1.1" 200 - +2025-12-29 00:34:02,478 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:34:02] "GET /api/strategies/positions?id=1&_t=1766939642053 HTTP/1.1" 200 - +2025-12-29 00:34:05,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:34:05] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939645050 HTTP/1.1" 200 - +2025-12-29 00:34:07,476 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:34:07] "GET /api/strategies/positions?id=1&_t=1766939647055 HTTP/1.1" 200 - +2025-12-29 00:34:08,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:34:08] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939648050 HTTP/1.1" 200 - +2025-12-29 00:34:11,373 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:34:11] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939651049 HTTP/1.1" 200 - +2025-12-29 00:34:12,225 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:34:12] "GET /api/strategies/positions?id=1&_t=1766939652054 HTTP/1.1" 200 - +2025-12-29 00:34:14,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:34:14] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939654050 HTTP/1.1" 200 - +2025-12-29 00:34:17,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:34:17] "GET /api/strategies/equityCurve?id=1&_t=1766939657050 HTTP/1.1" 200 - +2025-12-29 00:34:17,367 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:34:17] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939657051 HTTP/1.1" 200 - +2025-12-29 00:34:17,482 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:34:17] "GET /api/strategies/positions?id=1&_t=1766939657053 HTTP/1.1" 200 - +2025-12-29 00:34:20,369 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:34:20] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939660049 HTTP/1.1" 200 - +2025-12-29 00:34:22,172 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:34:22] "GET /api/strategies/positions?id=1&_t=1766939662055 HTTP/1.1" 200 - +2025-12-29 00:34:23,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:34:23] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939663050 HTTP/1.1" 200 - +2025-12-29 00:34:26,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:34:26] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939666050 HTTP/1.1" 200 - +2025-12-29 00:34:27,480 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:34:27] "GET /api/strategies/positions?id=1&_t=1766939667054 HTTP/1.1" 200 - +2025-12-29 00:34:29,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:34:29] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939669050 HTTP/1.1" 200 - +2025-12-29 00:34:32,366 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:34:32] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939672049 HTTP/1.1" 200 - +2025-12-29 00:34:32,479 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:34:32] "GET /api/strategies/positions?id=1&_t=1766939672053 HTTP/1.1" 200 - +2025-12-29 00:34:35,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:34:35] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939675050 HTTP/1.1" 200 - +2025-12-29 00:34:37,512 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:34:37] "GET /api/strategies/positions?id=1&_t=1766939677054 HTTP/1.1" 200 - +2025-12-29 00:34:38,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:34:38] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939678049 HTTP/1.1" 200 - +2025-12-29 00:34:41,365 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:34:41] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939681050 HTTP/1.1" 200 - +2025-12-29 00:34:42,172 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:34:42] "GET /api/strategies/positions?id=1&_t=1766939682054 HTTP/1.1" 200 - +2025-12-29 00:34:44,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:34:44] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939684049 HTTP/1.1" 200 - +2025-12-29 00:34:47,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:34:47] "GET /api/strategies/equityCurve?id=1&_t=1766939687049 HTTP/1.1" 200 - +2025-12-29 00:34:47,361 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:34:47] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939687050 HTTP/1.1" 200 - +2025-12-29 00:34:48,836 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:34:48] "GET /api/strategies/positions?id=1&_t=1766939687053 HTTP/1.1" 200 - +2025-12-29 00:34:50,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:34:50] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939690049 HTTP/1.1" 200 - +2025-12-29 00:34:52,170 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:34:52] "GET /api/strategies/positions?id=1&_t=1766939692054 HTTP/1.1" 200 - +2025-12-29 00:34:53,356 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:34:53] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939693049 HTTP/1.1" 200 - +2025-12-29 00:34:56,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:34:56] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939696049 HTTP/1.1" 200 - +2025-12-29 00:34:57,593 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:34:57] "GET /api/strategies/positions?id=1&_t=1766939697054 HTTP/1.1" 200 - +2025-12-29 00:34:59,059 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:34:59] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939699050 HTTP/1.1" 200 - +2025-12-29 00:35:02,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:02] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939702049 HTTP/1.1" 200 - +2025-12-29 00:35:02,477 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:02] "GET /api/strategies/positions?id=1&_t=1766939702054 HTTP/1.1" 200 - +2025-12-29 00:35:05,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:05] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939705049 HTTP/1.1" 200 - +2025-12-29 00:35:07,543 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:07] "GET /api/strategies/positions?id=1&_t=1766939707054 HTTP/1.1" 200 - +2025-12-29 00:35:08,077 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:08] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939708049 HTTP/1.1" 200 - +2025-12-29 00:35:11,361 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:11] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939711050 HTTP/1.1" 200 - +2025-12-29 00:35:12,169 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:12] "GET /api/strategies/positions?id=1&_t=1766939712055 HTTP/1.1" 200 - +2025-12-29 00:35:15,773 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-29 00:35:15,786 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-29 00:35:16,218 - app.services.strategy - INFO - Found 3 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}, {'id': 9, 'strategy_type': 'IndicatorStrategy'}] +2025-12-29 00:35:16,218 - app - INFO - Restoring 3 running strategies... +2025-12-29 00:35:16,218 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-29 00:35:16,218 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-29 00:35:16,218 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-29 00:35:16,219 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-29 00:35:16,219 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-29 00:35:16,219 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-29 00:35:16,219 - app.services.trading_executor - INFO - Strategy 9 loop starting +2025-12-29 00:35:16,219 - app.services.trading_executor - INFO - Strategy 9 started +2025-12-29 00:35:16,219 - app - INFO - [OK] IndicatorStrategy 9 restored +2025-12-29 00:35:16,219 - app - INFO - Strategy restore completed: 3/3 restored +2025-12-29 00:35:16,219 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-29 00:35:16,227 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-29 00:35:16,229 - app.services.trading_executor - INFO - Strategy 9 derivatives trading; normalize market_type to: swap +2025-12-29 00:35:16,240 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-29 00:35:16,240 - werkzeug - INFO - Press CTRL+C to quit +2025-12-29 00:35:17,120 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:17] "GET /api/strategies/equityCurve?id=1&_t=1766939717049 HTTP/1.1" 200 - +2025-12-29 00:35:17,124 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:17] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939717050 HTTP/1.1" 200 - +2025-12-29 00:35:20,189 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=1, position=-1, entry_price=2947.08, highest=2949.0 +2025-12-29 00:35:20,302 - app.services.trading_executor - INFO - ็ญ–็•ฅ 9 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-29 00:35:20,303 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2025-12-29 00:35:20,325 - app.services.trading_executor - INFO - Strategy 9 initialized; pending_signals=0 +2025-12-29 00:35:20,328 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-29 00:35:20,345 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2025-12-29 00:35:20,413 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:20] "GET /api/strategies/positions?id=1&_t=1766939717053 HTTP/1.1" 200 - +2025-12-29 00:35:20,418 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:20] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939720049 HTTP/1.1" 200 - +2025-12-29 00:35:22,479 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:22] "GET /api/strategies/positions?id=1&_t=1766939722054 HTTP/1.1" 200 - +2025-12-29 00:35:22,942 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:22] "GET /api/strategies/equityCurve?id=2&_t=1766939722932 HTTP/1.1" 200 - +2025-12-29 00:35:23,263 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:23] "GET /api/strategies/equityCurve?id=2&_t=1766939722932 HTTP/1.1" 200 - +2025-12-29 00:35:23,268 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:23] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766939722932 HTTP/1.1" 200 - +2025-12-29 00:35:23,275 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:23] "GET /api/strategies/positions?id=2&_t=1766939722933 HTTP/1.1" 200 - +2025-12-29 00:35:23,279 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:23] "GET /api/strategies/trades?id=2&_t=1766939722933 HTTP/1.1" 200 - +2025-12-29 00:35:24,462 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:24] "GET /api/strategies/equityCurve?id=1&_t=1766939724139 HTTP/1.1" 200 - +2025-12-29 00:35:24,466 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:24] "GET /api/strategies/equityCurve?id=1&_t=1766939724139 HTTP/1.1" 200 - +2025-12-29 00:35:24,469 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:24] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766939724139 HTTP/1.1" 200 - +2025-12-29 00:35:24,668 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:24] "GET /api/strategies/positions?id=1&_t=1766939724140 HTTP/1.1" 200 - +2025-12-29 00:35:24,672 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:24] "GET /api/strategies/trades?id=1&_t=1766939724140 HTTP/1.1" 200 - +2025-12-29 00:35:27,141 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:27] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939727134 HTTP/1.1" 200 - +2025-12-29 00:35:29,571 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:29] "GET /api/strategies/positions?id=1&_t=1766939729140 HTTP/1.1" 200 - +2025-12-29 00:35:30,142 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:30] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939730135 HTTP/1.1" 200 - +2025-12-29 00:35:33,463 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:33] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939733147 HTTP/1.1" 200 - +2025-12-29 00:35:34,271 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:34] "GET /api/strategies/positions?id=1&_t=1766939734144 HTTP/1.1" 200 - +2025-12-29 00:35:36,456 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:36] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939736142 HTTP/1.1" 200 - +2025-12-29 00:35:36,722 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:36] "GET /api/dashboard/summary?_t=1766939736649 HTTP/1.1" 200 - +2025-12-29 00:35:36,981 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:36] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766939736649 HTTP/1.1" 200 - +2025-12-29 00:35:47,657 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:47] "GET /api/strategies?_t=1766939747646 HTTP/1.1" 200 - +2025-12-29 00:35:48,807 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:48] "GET /api/strategies/equityCurve?id=2&_t=1766939748478 HTTP/1.1" 200 - +2025-12-29 00:35:48,814 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:48] "GET /api/strategies/equityCurve?id=2&_t=1766939748478 HTTP/1.1" 200 - +2025-12-29 00:35:48,819 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:48] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766939748478 HTTP/1.1" 200 - +2025-12-29 00:35:48,826 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:48] "GET /api/strategies/positions?id=2&_t=1766939748480 HTTP/1.1" 200 - +2025-12-29 00:35:49,646 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:49] "GET /api/strategies/trades?id=2&_t=1766939749638 HTTP/1.1" 200 - +2025-12-29 00:35:51,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:51] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766939751472 HTTP/1.1" 200 - +2025-12-29 00:35:53,495 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:53] "GET /api/strategies/positions?id=2&_t=1766939753486 HTTP/1.1" 200 - +2025-12-29 00:35:54,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:54] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766939754471 HTTP/1.1" 200 - +2025-12-29 00:35:54,886 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:54] "GET /api/strategies?_t=1766939754563 HTTP/1.1" 200 - +2025-12-29 00:35:55,040 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:55] "GET /api/strategies?_t=1766939754782 HTTP/1.1" 200 - +2025-12-29 00:35:55,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:55] "GET /api/strategies/equityCurve?id=2&_t=1766939755889 HTTP/1.1" 200 - +2025-12-29 00:35:56,204 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:56] "GET /api/strategies/equityCurve?id=2&_t=1766939755889 HTTP/1.1" 200 - +2025-12-29 00:35:56,208 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:56] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766939755889 HTTP/1.1" 200 - +2025-12-29 00:35:56,211 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:56] "GET /api/strategies/positions?id=2&_t=1766939755892 HTTP/1.1" 200 - +2025-12-29 00:35:57,581 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:57] "GET /api/strategies/trades?id=2&_t=1766939757272 HTTP/1.1" 200 - +2025-12-29 00:35:58,888 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:58] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766939758880 HTTP/1.1" 200 - +2025-12-29 00:35:59,546 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:59] "GET /api/dashboard/summary?_t=1766939759229 HTTP/1.1" 200 - +2025-12-29 00:35:59,552 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:35:59] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766939759229 HTTP/1.1" 200 - +2025-12-29 00:36:19,902 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:36:19] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1766939779891 HTTP/1.1" 200 - +2025-12-29 00:36:58,915 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:36:58] "GET /api/strategies?_t=1766939818593 HTTP/1.1" 200 - +2025-12-29 00:36:59,525 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:36:59] "GET /api/strategies/equityCurve?id=2&_t=1766939819513 HTTP/1.1" 200 - +2025-12-29 00:36:59,832 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:36:59] "GET /api/strategies/equityCurve?id=2&_t=1766939819513 HTTP/1.1" 200 - +2025-12-29 00:36:59,837 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:36:59] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766939819513 HTTP/1.1" 200 - +2025-12-29 00:36:59,845 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:36:59] "GET /api/strategies/positions?id=2&_t=1766939819515 HTTP/1.1" 200 - +2025-12-29 00:37:01,241 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:37:01] "GET /api/strategies/equityCurve?id=1&_t=1766939820920 HTTP/1.1" 200 - +2025-12-29 00:37:01,245 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:37:01] "GET /api/strategies/equityCurve?id=1&_t=1766939820920 HTTP/1.1" 200 - +2025-12-29 00:37:01,248 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:37:01] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766939820920 HTTP/1.1" 200 - +2025-12-29 00:37:01,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:37:01] "GET /api/strategies/positions?id=1&_t=1766939820920 HTTP/1.1" 200 - +2025-12-29 00:37:03,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:37:03] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939823916 HTTP/1.1" 200 - +2025-12-29 00:37:06,351 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:37:06] "GET /api/strategies/positions?id=1&_t=1766939825921 HTTP/1.1" 200 - +2025-12-29 00:37:06,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:37:06] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939826916 HTTP/1.1" 200 - +2025-12-29 00:37:10,235 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:37:10] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939829919 HTTP/1.1" 200 - +2025-12-29 00:37:11,030 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:37:11] "GET /api/strategies/positions?id=1&_t=1766939830920 HTTP/1.1" 200 - +2025-12-29 00:37:13,235 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:37:13] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939832915 HTTP/1.1" 200 - +2025-12-29 00:37:15,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:37:15] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939835915 HTTP/1.1" 200 - +2025-12-29 00:37:16,346 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:37:16] "GET /api/strategies/positions?id=1&_t=1766939835921 HTTP/1.1" 200 - +2025-12-29 00:37:19,228 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:37:19] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766939838916 HTTP/1.1" 200 - +2025-12-29 00:37:20,613 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:37:20] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 00:37:20,948 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:37:20] "GET /api/market/config?_t=1766939840590 HTTP/1.1" 200 - +2025-12-29 00:37:21,268 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-29 00:37:21,268 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-29 00:37:21,268 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-29 00:37:21,268 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-29 00:37:21,268 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-29 00:37:22,382 - app.data_sources.base - WARNING - Warning: 00700 data is delayed (434242s) +2025-12-29 00:37:22,392 - app.data_sources.base - WARNING - Warning: 600519 data is delayed (261442s) +2025-12-29 00:37:22,426 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (214642s) +2025-12-29 00:37:22,523 - app.data_sources.base - WARNING - Warning: 300475 data is delayed (261443s) +2025-12-29 00:37:22,878 - app.data_sources.base - WARNING - Warning: 000858 data is delayed (261443s) +2025-12-29 00:37:22,880 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:37:22] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 00:37:22,885 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:37:22] "GET /api/dashboard/summary?_t=1766939841020 HTTP/1.1" 200 - +2025-12-29 00:37:22,891 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:37:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766939841020 HTTP/1.1" 200 - +2025-12-29 00:37:22,895 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:37:22] "GET /api/market/types?_t=1766939841031 HTTP/1.1" 200 - +2025-12-29 00:41:59,389 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:41:59] "GET /api/strategies?_t=1766940119370 HTTP/1.1" 200 - +2025-12-29 00:42:00,650 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:00] "GET /api/strategies/equityCurve?id=2&_t=1766940120295 HTTP/1.1" 200 - +2025-12-29 00:42:00,659 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:00] "GET /api/strategies/equityCurve?id=2&_t=1766940120295 HTTP/1.1" 200 - +2025-12-29 00:42:00,677 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:00] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766940120295 HTTP/1.1" 200 - +2025-12-29 00:42:00,701 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:00] "GET /api/strategies/positions?id=2&_t=1766940120298 HTTP/1.1" 200 - +2025-12-29 00:42:01,585 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:01] "GET /api/strategies/trades?id=2&_t=1766940121578 HTTP/1.1" 200 - +2025-12-29 00:42:03,599 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:03] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766940123287 HTTP/1.1" 200 - +2025-12-29 00:42:03,867 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:03] "GET /api/strategies/equityCurve?id=1&_t=1766940123566 HTTP/1.1" 200 - +2025-12-29 00:42:03,884 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:03] "GET /api/strategies/equityCurve?id=1&_t=1766940123566 HTTP/1.1" 200 - +2025-12-29 00:42:03,888 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:03] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766940123566 HTTP/1.1" 200 - +2025-12-29 00:42:04,071 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:04] "GET /api/strategies/positions?id=1&_t=1766940123567 HTTP/1.1" 200 - +2025-12-29 00:42:04,076 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:04] "GET /api/strategies/trades?id=1&_t=1766940123567 HTTP/1.1" 200 - +2025-12-29 00:42:06,917 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:06] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766940126561 HTTP/1.1" 200 - +2025-12-29 00:42:08,685 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:08] "GET /api/strategies/positions?id=1&_t=1766940128567 HTTP/1.1" 200 - +2025-12-29 00:42:09,873 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:09] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766940129561 HTTP/1.1" 200 - +2025-12-29 00:42:12,568 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:12] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766940132560 HTTP/1.1" 200 - +2025-12-29 00:42:13,997 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:13] "GET /api/strategies/positions?id=1&_t=1766940133567 HTTP/1.1" 200 - +2025-12-29 00:42:15,567 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:15] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766940135561 HTTP/1.1" 200 - +2025-12-29 00:42:18,882 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:18] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766940138560 HTTP/1.1" 200 - +2025-12-29 00:42:18,994 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:18] "GET /api/strategies/positions?id=1&_t=1766940138567 HTTP/1.1" 200 - +2025-12-29 00:42:21,571 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:21] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766940141560 HTTP/1.1" 200 - +2025-12-29 00:42:22,600 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:22] "GET /api/strategies/equityCurve?id=9&_t=1766940142273 HTTP/1.1" 200 - +2025-12-29 00:42:22,606 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:22] "GET /api/strategies/equityCurve?id=9&_t=1766940142273 HTTP/1.1" 200 - +2025-12-29 00:42:22,611 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:22] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766940142273 HTTP/1.1" 200 - +2025-12-29 00:42:22,619 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:22] "GET /api/strategies/positions?id=9&_t=1766940142274 HTTP/1.1" 200 - +2025-12-29 00:42:22,626 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:22] "GET /api/strategies/trades?id=9&_t=1766940142274 HTTP/1.1" 200 - +2025-12-29 00:42:25,279 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:25] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766940145270 HTTP/1.1" 200 - +2025-12-29 00:42:25,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:25] "GET /api/strategies/equityCurve?id=2&_t=1766940145480 HTTP/1.1" 200 - +2025-12-29 00:42:25,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:25] "GET /api/strategies/equityCurve?id=2&_t=1766940145480 HTTP/1.1" 200 - +2025-12-29 00:42:25,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:25] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766940145480 HTTP/1.1" 200 - +2025-12-29 00:42:25,806 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:25] "GET /api/strategies/positions?id=2&_t=1766940145481 HTTP/1.1" 200 - +2025-12-29 00:42:25,811 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:25] "GET /api/strategies/trades?id=2&_t=1766940145481 HTTP/1.1" 200 - +2025-12-29 00:42:27,873 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:27] "GET /api/strategies/equityCurve?id=1&_t=1766940147861 HTTP/1.1" 200 - +2025-12-29 00:42:28,181 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:28] "GET /api/strategies/equityCurve?id=1&_t=1766940147861 HTTP/1.1" 200 - +2025-12-29 00:42:28,185 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:28] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766940147861 HTTP/1.1" 200 - +2025-12-29 00:42:28,298 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:28] "GET /api/strategies/positions?id=1&_t=1766940147862 HTTP/1.1" 200 - +2025-12-29 00:42:28,303 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:28] "GET /api/strategies/trades?id=1&_t=1766940147862 HTTP/1.1" 200 - +2025-12-29 00:42:31,179 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:31] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766940150857 HTTP/1.1" 200 - +2025-12-29 00:42:32,981 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:32] "GET /api/strategies/positions?id=1&_t=1766940152862 HTTP/1.1" 200 - +2025-12-29 00:42:34,177 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:34] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766940153857 HTTP/1.1" 200 - +2025-12-29 00:42:36,863 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:36] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766940156857 HTTP/1.1" 200 - +2025-12-29 00:42:38,290 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:38] "GET /api/strategies/positions?id=1&_t=1766940157862 HTTP/1.1" 200 - +2025-12-29 00:42:39,864 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:39] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766940159858 HTTP/1.1" 200 - +2025-12-29 00:42:41,696 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:41] "GET /api/dashboard/summary?_t=1766940161683 HTTP/1.1" 200 - +2025-12-29 00:42:41,802 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:41] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766940161683 HTTP/1.1" 200 - +2025-12-29 00:42:42,882 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:42] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766940162858 HTTP/1.1" 200 - +2025-12-29 00:42:42,997 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:42] "GET /api/strategies/positions?id=1&_t=1766940162862 HTTP/1.1" 200 - +2025-12-29 00:42:45,864 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:45] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766940165857 HTTP/1.1" 200 - +2025-12-29 00:42:46,861 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:46] "GET /api/strategies/equityCurve?id=2&_t=1766940166849 HTTP/1.1" 200 - +2025-12-29 00:42:47,164 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:47] "GET /api/strategies/equityCurve?id=2&_t=1766940166849 HTTP/1.1" 200 - +2025-12-29 00:42:47,168 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:47] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766940166849 HTTP/1.1" 200 - +2025-12-29 00:42:47,173 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:47] "GET /api/strategies/positions?id=2&_t=1766940166850 HTTP/1.1" 200 - +2025-12-29 00:42:47,178 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:47] "GET /api/strategies/trades?id=2&_t=1766940166850 HTTP/1.1" 200 - +2025-12-29 00:42:48,317 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:48] "GET /api/strategies/equityCurve?id=9&_t=1766940167997 HTTP/1.1" 200 - +2025-12-29 00:42:48,322 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:48] "GET /api/strategies/equityCurve?id=9&_t=1766940167997 HTTP/1.1" 200 - +2025-12-29 00:42:48,325 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:48] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766940167997 HTTP/1.1" 200 - +2025-12-29 00:42:48,330 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:48] "GET /api/strategies/positions?id=9&_t=1766940167999 HTTP/1.1" 200 - +2025-12-29 00:42:48,334 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:48] "GET /api/strategies/trades?id=9&_t=1766940167999 HTTP/1.1" 200 - +2025-12-29 00:42:49,251 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:49] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 00:42:49,607 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:49] "GET /api/market/config?_t=1766940169227 HTTP/1.1" 200 - +2025-12-29 00:42:50,060 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (214970s) +2025-12-29 00:42:50,728 - app.data_sources.base - WARNING - Warning: 300475 data is delayed (261771s) +2025-12-29 00:42:50,821 - app.data_sources.base - WARNING - Warning: 000858 data is delayed (261771s) +2025-12-29 00:42:50,967 - app.data_sources.base - WARNING - Warning: 600519 data is delayed (261771s) +2025-12-29 00:42:51,359 - app.data_sources.base - WARNING - Warning: 00700 data is delayed (434571s) +2025-12-29 00:42:51,888 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:51] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 00:42:51,891 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:51] "GET /api/market/types?_t=1766940169627 HTTP/1.1" 200 - +2025-12-29 00:42:51,894 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:51] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 00:42:51,898 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:51] "GET /api/market/types?_t=1766940170477 HTTP/1.1" 200 - +2025-12-29 00:42:51,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:51] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 00:42:52,229 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-29 00:42:52,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:42:53,553 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 00:42:53,656 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:42:54,857 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 00:42:54,857 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:42:55,554 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 00:42:55,555 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:42:56,863 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 00:42:56,864 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:42:57,553 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 00:42:57,553 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:42:58,871 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 00:42:58,872 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:42:59,553 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 00:42:59,554 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:42:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:43:00,863 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 00:43:00,864 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:43:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:43:00,913 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1H, limit=500 +2025-12-29 00:43:01,273 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:43:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:43:02,306 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1H, limit=5 +2025-12-29 00:43:02,705 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:43:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:43:03,621 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1H, limit=5 +2025-12-29 00:43:03,622 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:43:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:43:04,311 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1H, limit=5 +2025-12-29 00:43:04,311 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:43:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:43:05,627 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1H, limit=5 +2025-12-29 00:43:05,627 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:43:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:43:06,308 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1H, limit=5 +2025-12-29 00:43:06,308 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:43:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:43:07,325 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=15m, limit=500 +2025-12-29 00:43:07,535 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:43:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:43:08,578 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=15m, limit=5 +2025-12-29 00:43:08,757 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:43:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:43:09,879 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=15m, limit=5 +2025-12-29 00:43:09,879 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:43:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:43:10,584 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=15m, limit=5 +2025-12-29 00:43:10,586 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:43:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:43:11,879 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=15m, limit=5 +2025-12-29 00:43:11,879 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:43:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:43:12,152 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=30m, limit=500 +2025-12-29 00:43:12,366 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:43:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:43:13,383 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=30m, limit=5 +2025-12-29 00:43:13,541 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:43:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:43:14,696 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=30m, limit=5 +2025-12-29 00:43:14,697 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:43:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:43:15,385 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=30m, limit=5 +2025-12-29 00:43:15,386 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:43:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:43:16,689 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=30m, limit=5 +2025-12-29 00:43:16,690 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:43:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 00:43:16,770 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:43:16] "GET /api/dashboard/summary?_t=1766940196441 HTTP/1.1" 200 - +2025-12-29 00:43:16,777 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:43:16] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766940196441 HTTP/1.1" 200 - +2025-12-29 00:43:33,481 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:43:33] "GET /api/dashboard/summary?_t=1766940213471 HTTP/1.1" 200 - +2025-12-29 00:43:33,724 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:43:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766940213471 HTTP/1.1" 200 - +2025-12-29 00:43:33,729 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:43:33] "GET /api/dashboard/summary?_t=1766940213519 HTTP/1.1" 200 - +2025-12-29 00:43:33,735 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:43:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766940213519 HTTP/1.1" 200 - +2025-12-29 00:44:02,569 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:44:02] "GET /api/strategies?_t=1766940242556 HTTP/1.1" 200 - +2025-12-29 00:44:04,252 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:44:04] "GET /api/dashboard/summary?_t=1766940244239 HTTP/1.1" 200 - +2025-12-29 00:44:04,263 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:44:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766940244239 HTTP/1.1" 200 - +2025-12-29 00:44:06,843 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:44:06] "GET /api/strategies?_t=1766940246521 HTTP/1.1" 200 - +2025-12-29 00:44:08,173 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:44:08] "GET /api/strategies/equityCurve?id=9&_t=1766940248153 HTTP/1.1" 200 - +2025-12-29 00:44:08,526 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:44:08] "GET /api/strategies/equityCurve?id=9&_t=1766940248153 HTTP/1.1" 200 - +2025-12-29 00:44:08,535 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:44:08] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766940248153 HTTP/1.1" 200 - +2025-12-29 00:44:08,544 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:44:08] "GET /api/strategies/positions?id=9&_t=1766940248156 HTTP/1.1" 200 - +2025-12-29 00:44:09,731 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:44:09] "GET /api/dashboard/summary?_t=1766940249405 HTTP/1.1" 200 - +2025-12-29 00:44:09,739 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 00:44:09] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766940249405 HTTP/1.1" 200 - +2025-12-29 00:46:40,758 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=863.94, pending_signals=1 +2025-12-29 00:46:40,760 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 863.94, 'position_size': 0, 'timestamp': 1766940360}] +2025-12-29 00:46:50,657 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=863.94, pending_signals=1 +2025-12-29 00:46:50,659 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 863.94, 'position_size': 0, 'timestamp': 1766940360}] +2025-12-29 00:47:00,763 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=863.74, pending_signals=1 +2025-12-29 00:47:00,765 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 863.74, 'position_size': 0, 'timestamp': 1766940420}] +2025-12-29 00:47:10,663 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=863.74, pending_signals=1 +2025-12-29 00:47:10,664 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 863.74, 'position_size': 0, 'timestamp': 1766940420}] +2025-12-29 00:47:21,005 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=863.66, pending_signals=2 +2025-12-29 00:47:21,007 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 863.74, 'position_size': 0, 'timestamp': 1766940360}] +2025-12-29 00:47:30,665 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=863.66, pending_signals=2 +2025-12-29 00:47:30,667 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 863.74, 'position_size': 0, 'timestamp': 1766940360}] +2025-12-29 00:47:40,775 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=863.92, pending_signals=2 +2025-12-29 00:47:40,777 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'open_long', 'trigger_price': 863.74, 'position_size': 0.08, 'timestamp': 1766940360}, {'type': 'close_short', 'trigger_price': 863.74, 'position_size': 0, 'timestamp': 1766940360}] +2025-12-29 00:47:40,785 - app.services.trading_executor - INFO - Strategy 9 signal executed: open_long @ 863.74 +2025-12-29 00:47:42,767 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=57, strategy_id=9, cfg={'exchange_id': 'binance', 'api_key': '9E46...x6ec', 'secret_key': 'I5uD...ykZh'}, err=Binance HTTP 400: {"code":-1111,"msg":"Precision is over the maximum defined for this asset."} | debug: symbol=BNBUSDT side=BUY qty_req=0.023155116122907358 qty_norm=0.023 price_req=863.567252 price_norm=863.50 +2025-12-29 00:47:43,320 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=57, strategy_id=9, cfg={'exchange_id': 'binance', 'api_key': '9E46...x6ec', 'secret_key': 'I5uD...ykZh'}, err=Binance HTTP 400: {"code":-1111,"msg":"Precision is over the maximum defined for this asset."} | debug: symbol=BNBUSDT side=BUY qty_req=0.023155116122907358 qty_norm=0.023 +2025-12-29 00:47:50,667 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=863.92, pending_signals=2 +2025-12-29 00:47:50,669 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'open_long', 'trigger_price': 863.74, 'position_size': 0.08, 'timestamp': 1766940360}, {'type': 'close_short', 'trigger_price': 863.74, 'position_size': 0, 'timestamp': 1766940360}] +2025-12-29 01:05:00,778 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2943.89, pending_signals=1 +2025-12-29 01:05:00,786 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2943.89, 'position_size': 0, 'timestamp': 1766941500}] +2025-12-29 01:05:00,794 - app.services.trading_executor - INFO - Strategy 1 signal executed: close_short @ 2943.89 +2025-12-29 01:05:03,306 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=58, strategy_id=1, cfg={'exchange_id': 'bitget', 'api_key': 'bg_8...b659', 'secret_key': '3b7e...b239', 'passphrase': 'xuji...u123', 'credential_id': 3}, err=Bitget HTTP 400: {"code":"45115","msg":"The price you enter should be a multiple of 0.01{1}","requestTime":1766941503498,"data":null} +2025-12-29 01:05:10,680 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2943.89, pending_signals=1 +2025-12-29 01:05:10,683 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2943.89, 'position_size': 0, 'timestamp': 1766941500}] +2025-12-29 01:05:20,951 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2943.89, pending_signals=2 +2025-12-29 01:05:20,953 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 2943.89, 'position_size': 0.08, 'timestamp': 1766941440}, {'type': 'close_short', 'trigger_price': 2943.89, 'position_size': 0, 'timestamp': 1766941440}] +2025-12-29 01:05:20,960 - app.services.trading_executor - INFO - Strategy 1 signal executed: open_long @ 2943.89 +2025-12-29 01:05:23,434 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=59, strategy_id=1, cfg={'exchange_id': 'bitget', 'api_key': 'bg_8...b659', 'secret_key': '3b7e...b239', 'passphrase': 'xuji...u123', 'credential_id': 3}, err=Bitget HTTP 400: {"code":"45115","msg":"The price you enter should be a multiple of 0.01{1}","requestTime":1766941523629,"data":null} +2025-12-29 01:05:30,683 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2943.89, pending_signals=2 +2025-12-29 01:05:30,692 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 2943.89, 'position_size': 0.08, 'timestamp': 1766941440}, {'type': 'close_short', 'trigger_price': 2943.89, 'position_size': 0, 'timestamp': 1766941440}] +2025-12-29 01:05:40,785 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2943.89, pending_signals=2 +2025-12-29 01:05:40,793 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 2943.89, 'position_size': 0.08, 'timestamp': 1766941440}, {'type': 'close_short', 'trigger_price': 2943.89, 'position_size': 0, 'timestamp': 1766941440}] +2025-12-29 01:05:50,686 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2943.89, pending_signals=2 +2025-12-29 01:05:50,695 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 2943.89, 'position_size': 0.08, 'timestamp': 1766941440}, {'type': 'close_short', 'trigger_price': 2943.89, 'position_size': 0, 'timestamp': 1766941440}] +2025-12-29 01:09:01,188 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=863.37, pending_signals=1 +2025-12-29 01:09:01,190 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 863.37, 'position_size': 0, 'timestamp': 1766941740}] +2025-12-29 01:09:11,088 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=863.37, pending_signals=1 +2025-12-29 01:09:11,090 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 863.37, 'position_size': 0, 'timestamp': 1766941740}] +2025-12-29 01:09:21,403 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=863.6, pending_signals=2 +2025-12-29 01:09:21,406 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 863.38, 'position_size': 0, 'timestamp': 1766941680}] +2025-12-29 01:09:31,091 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=863.6, pending_signals=2 +2025-12-29 01:09:31,093 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 863.38, 'position_size': 0, 'timestamp': 1766941680}] +2025-12-29 01:09:41,197 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=863.61, pending_signals=2 +2025-12-29 01:09:41,199 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 863.38, 'position_size': 0, 'timestamp': 1766941680}] +2025-12-29 01:09:51,094 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=863.61, pending_signals=2 +2025-12-29 01:09:51,096 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 863.38, 'position_size': 0, 'timestamp': 1766941680}] +2025-12-29 01:10:49,033 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-29 01:10:49,040 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-29 01:10:49,522 - app.services.strategy - INFO - Found 3 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}, {'id': 9, 'strategy_type': 'IndicatorStrategy'}] +2025-12-29 01:10:49,522 - app - INFO - Restoring 3 running strategies... +2025-12-29 01:10:49,523 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-29 01:10:49,523 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-29 01:10:49,523 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-29 01:10:49,523 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-29 01:10:49,524 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-29 01:10:49,524 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-29 01:10:49,524 - app.services.trading_executor - INFO - Strategy 9 loop starting +2025-12-29 01:10:49,524 - app.services.trading_executor - INFO - Strategy 9 started +2025-12-29 01:10:49,524 - app - INFO - [OK] IndicatorStrategy 9 restored +2025-12-29 01:10:49,524 - app - INFO - Strategy restore completed: 3/3 restored +2025-12-29 01:10:49,528 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-29 01:10:49,529 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-29 01:10:49,529 - app.services.trading_executor - INFO - Strategy 9 derivatives trading; normalize market_type to: swap +2025-12-29 01:10:49,580 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-29 01:10:49,581 - werkzeug - INFO - Press CTRL+C to quit +2025-12-29 01:10:53,278 - app.services.trading_executor - INFO - ็ญ–็•ฅ 9 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-29 01:10:53,297 - app.services.trading_executor - INFO - Strategy 9 initialized; pending_signals=0 +2025-12-29 01:10:53,438 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-29 01:10:53,465 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2025-12-29 01:10:53,510 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=1, position=1, entry_price=2942.6, highest=2948.88 +2025-12-29 01:10:53,528 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2025-12-29 01:10:57,238 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:10:57] "GET /api/dashboard/summary?_t=1766941856925 HTTP/1.1" 200 - +2025-12-29 01:10:57,244 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:10:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766941856925 HTTP/1.1" 200 - +2025-12-29 01:11:53,447 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:11:53] "GET /api/strategies?_t=1766941913435 HTTP/1.1" 200 - +2025-12-29 01:11:54,976 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:11:54] "GET /api/strategies/equityCurve?id=2&_t=1766941914645 HTTP/1.1" 200 - +2025-12-29 01:11:54,980 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:11:54] "GET /api/strategies/equityCurve?id=2&_t=1766941914645 HTTP/1.1" 200 - +2025-12-29 01:11:54,985 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:11:54] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766941914645 HTTP/1.1" 200 - +2025-12-29 01:11:54,990 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:11:54] "GET /api/strategies/positions?id=2&_t=1766941914649 HTTP/1.1" 200 - +2025-12-29 01:11:56,695 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:11:56] "GET /api/strategies/equityCurve?id=2&_t=1766941916686 HTTP/1.1" 200 - +2025-12-29 01:11:57,003 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:11:57] "GET /api/strategies/equityCurve?id=2&_t=1766941916686 HTTP/1.1" 200 - +2025-12-29 01:11:57,006 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:11:57] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766941916686 HTTP/1.1" 200 - +2025-12-29 01:11:57,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:11:57] "GET /api/strategies/equityCurve?id=2&_t=1766941917487 HTTP/1.1" 200 - +2025-12-29 01:11:57,805 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:11:57] "GET /api/strategies/equityCurve?id=2&_t=1766941917487 HTTP/1.1" 200 - +2025-12-29 01:11:57,808 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:11:57] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766941917487 HTTP/1.1" 200 - +2025-12-29 01:11:59,205 - app.services.trading_executor - INFO - Strategy 2 stopped +2025-12-29 01:11:59,214 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:11:59] "POST /api/strategies/stop?id=2 HTTP/1.1" 200 - +2025-12-29 01:11:59,542 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:11:59] "GET /api/strategies?_t=1766941919227 HTTP/1.1" 200 - +2025-12-29 01:11:59,803 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:11:59] "GET /api/strategies/positions?id=2&_t=1766941919641 HTTP/1.1" 200 - +2025-12-29 01:11:59,855 - app.services.trading_executor - INFO - Strategy 2 stopped +2025-12-29 01:11:59,856 - app.services.trading_executor - INFO - Strategy 2 loop exited +2025-12-29 01:12:00,212 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:00] "GET /api/strategies/equityCurve?id=2&_t=1766941920197 HTTP/1.1" 200 - +2025-12-29 01:12:00,525 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:00] "GET /api/strategies/equityCurve?id=2&_t=1766941920197 HTTP/1.1" 200 - +2025-12-29 01:12:00,533 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:00] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766941920197 HTTP/1.1" 200 - +2025-12-29 01:12:01,636 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:01] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 01:12:01,641 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:01] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 01:12:01,648 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:01] "GET /api/credentials/list?user_id=1&_t=1766941921318 HTTP/1.1" 200 - +2025-12-29 01:12:01,656 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:01] "GET /api/strategies/equityCurve?id=2&_t=1766941921336 HTTP/1.1" 200 - +2025-12-29 01:12:01,660 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:01] "GET /api/strategies/equityCurve?id=2&_t=1766941921336 HTTP/1.1" 200 - +2025-12-29 01:12:01,665 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:01] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766941921336 HTTP/1.1" 200 - +2025-12-29 01:12:02,144 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:02] "GET /api/credentials/get?id=2&user_id=1&_t=1766941921824 HTTP/1.1" 200 - +2025-12-29 01:12:04,334 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:04] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766941924321 HTTP/1.1" 200 - +2025-12-29 01:12:04,965 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:04] "GET /api/strategies/positions?id=2&_t=1766941924640 HTTP/1.1" 200 - +2025-12-29 01:12:07,329 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:07] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766941927322 HTTP/1.1" 200 - +2025-12-29 01:12:09,956 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:09] "GET /api/strategies/positions?id=2&_t=1766941929642 HTTP/1.1" 200 - +2025-12-29 01:12:10,328 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:10] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766941930321 HTTP/1.1" 200 - +2025-12-29 01:12:13,638 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:13] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766941933321 HTTP/1.1" 200 - +2025-12-29 01:12:14,650 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:14] "GET /api/strategies/positions?id=2&_t=1766941934641 HTTP/1.1" 200 - +2025-12-29 01:12:16,637 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:16] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766941936322 HTTP/1.1" 200 - +2025-12-29 01:12:19,331 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:19] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766941939322 HTTP/1.1" 200 - +2025-12-29 01:12:19,951 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:19] "GET /api/strategies/positions?id=2&_t=1766941939641 HTTP/1.1" 200 - +2025-12-29 01:12:22,327 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:22] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766941942321 HTTP/1.1" 200 - +2025-12-29 01:12:24,952 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:24] "GET /api/strategies/positions?id=2&_t=1766941944641 HTTP/1.1" 200 - +2025-12-29 01:12:25,335 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:25] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766941945327 HTTP/1.1" 200 - +2025-12-29 01:12:28,633 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:28] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766941948321 HTTP/1.1" 200 - +2025-12-29 01:12:29,649 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:29] "GET /api/strategies/positions?id=2&_t=1766941949641 HTTP/1.1" 200 - +2025-12-29 01:12:31,643 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:31] "GET /api/strategies/equityCurve?id=2&_t=1766941951321 HTTP/1.1" 200 - +2025-12-29 01:12:31,647 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:31] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766941951322 HTTP/1.1" 200 - +2025-12-29 01:12:34,328 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:34] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766941954321 HTTP/1.1" 200 - +2025-12-29 01:12:34,957 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:34] "GET /api/strategies/positions?id=2&_t=1766941954641 HTTP/1.1" 200 - +2025-12-29 01:12:37,329 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766941957322 HTTP/1.1" 200 - +2025-12-29 01:12:39,959 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:39] "GET /api/strategies/positions?id=2&_t=1766941959641 HTTP/1.1" 200 - +2025-12-29 01:12:40,326 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:40] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766941960320 HTTP/1.1" 200 - +2025-12-29 01:12:43,643 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:43] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766941963321 HTTP/1.1" 200 - +2025-12-29 01:12:44,650 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:44] "GET /api/strategies/positions?id=2&_t=1766941964641 HTTP/1.1" 200 - +2025-12-29 01:12:46,631 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:46] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766941966321 HTTP/1.1" 200 - +2025-12-29 01:12:49,329 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:49] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766941969321 HTTP/1.1" 200 - +2025-12-29 01:12:49,965 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:49] "GET /api/strategies/positions?id=2&_t=1766941969641 HTTP/1.1" 200 - +2025-12-29 01:12:52,328 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:52] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766941972321 HTTP/1.1" 200 - +2025-12-29 01:12:54,956 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:54] "GET /api/strategies/positions?id=2&_t=1766941974641 HTTP/1.1" 200 - +2025-12-29 01:12:55,332 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:55] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766941975321 HTTP/1.1" 200 - +2025-12-29 01:12:58,633 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:58] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766941978321 HTTP/1.1" 200 - +2025-12-29 01:12:59,649 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:12:59] "GET /api/strategies/positions?id=2&_t=1766941979641 HTTP/1.1" 200 - +2025-12-29 01:13:01,642 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:13:01] "GET /api/strategies/equityCurve?id=2&_t=1766941981321 HTTP/1.1" 200 - +2025-12-29 01:13:01,645 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:13:01] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766941981321 HTTP/1.1" 200 - +2025-12-29 01:13:04,328 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:13:04] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766941984321 HTTP/1.1" 200 - +2025-12-29 01:13:04,959 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:13:04] "GET /api/strategies/positions?id=2&_t=1766941984641 HTTP/1.1" 200 - +2025-12-29 01:13:07,326 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:13:07] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766941987320 HTTP/1.1" 200 - +2025-12-29 01:13:09,958 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:13:09] "GET /api/strategies/positions?id=2&_t=1766941989642 HTTP/1.1" 200 - +2025-12-29 01:13:10,483 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:13:10] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766941990476 HTTP/1.1" 200 - +2025-12-29 01:13:13,786 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:13:13] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766941993475 HTTP/1.1" 200 - +2025-12-29 01:13:15,497 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:13:15] "GET /api/strategies/positions?id=2&_t=1766941995484 HTTP/1.1" 200 - +2025-12-29 01:13:16,786 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:13:16] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766941996473 HTTP/1.1" 200 - +2025-12-29 01:13:19,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:13:19] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766941999474 HTTP/1.1" 200 - +2025-12-29 01:13:20,803 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:13:20] "GET /api/strategies/positions?id=2&_t=1766942000477 HTTP/1.1" 200 - +2025-12-29 01:13:22,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:13:22] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942002474 HTTP/1.1" 200 - +2025-12-29 01:13:25,803 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:13:25] "GET /api/strategies/positions?id=2&_t=1766942005473 HTTP/1.1" 200 - +2025-12-29 01:13:25,808 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:13:25] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942005474 HTTP/1.1" 200 - +2025-12-29 01:13:28,484 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:13:28] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942008473 HTTP/1.1" 200 - +2025-12-29 01:13:30,976 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:13:30] "GET /api/strategies/positions?id=2&_t=1766942010475 HTTP/1.1" 200 - +2025-12-29 01:13:31,492 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:13:31] "GET /api/strategies/equityCurve?id=2&_t=1766942011483 HTTP/1.1" 200 - +2025-12-29 01:13:31,804 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:13:31] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942011484 HTTP/1.1" 200 - +2025-12-29 01:13:34,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:13:34] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942014471 HTTP/1.1" 200 - +2025-12-29 01:13:35,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:13:35] "GET /api/strategies/positions?id=2&_t=1766942015473 HTTP/1.1" 200 - +2025-12-29 01:13:37,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:13:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942017485 HTTP/1.1" 200 - +2025-12-29 01:13:40,499 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:13:40] "GET /api/strategies/positions?id=2&_t=1766942020483 HTTP/1.1" 200 - +2025-12-29 01:13:40,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:13:40] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942020483 HTTP/1.1" 200 - +2025-12-29 01:13:43,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:13:43] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942023473 HTTP/1.1" 200 - +2025-12-29 01:13:45,493 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:13:45] "GET /api/strategies/positions?id=2&_t=1766942025485 HTTP/1.1" 200 - +2025-12-29 01:13:46,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:13:46] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942026482 HTTP/1.1" 200 - +2025-12-29 01:13:49,494 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:13:49] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942029485 HTTP/1.1" 200 - +2025-12-29 01:13:50,824 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:13:50] "GET /api/strategies/positions?id=2&_t=1766942030477 HTTP/1.1" 200 - +2025-12-29 01:13:52,479 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:13:52] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942032471 HTTP/1.1" 200 - +2025-12-29 01:13:55,786 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:13:55] "GET /api/strategies/positions?id=2&_t=1766942035470 HTTP/1.1" 200 - +2025-12-29 01:13:55,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:13:55] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942035470 HTTP/1.1" 200 - +2025-12-29 01:13:58,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:13:58] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942038480 HTTP/1.1" 200 - +2025-12-29 01:14:00,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:14:00] "GET /api/strategies/positions?id=2&_t=1766942040480 HTTP/1.1" 200 - +2025-12-29 01:14:01,482 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:14:01] "GET /api/strategies/equityCurve?id=2&_t=1766942041473 HTTP/1.1" 200 - +2025-12-29 01:14:01,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:14:01] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942041474 HTTP/1.1" 200 - +2025-12-29 01:14:04,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:14:04] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942044479 HTTP/1.1" 200 - +2025-12-29 01:14:05,489 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:14:05] "GET /api/strategies/positions?id=2&_t=1766942045480 HTTP/1.1" 200 - +2025-12-29 01:14:07,785 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:14:07] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942047470 HTTP/1.1" 200 - +2025-12-29 01:14:31,484 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:14:31] "GET /api/strategies/equityCurve?id=2&_t=1766942071476 HTTP/1.1" 200 - +2025-12-29 01:14:37,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:14:37] "GET /api/strategies/positions?id=2&_t=1766942077474 HTTP/1.1" 200 - +2025-12-29 01:14:37,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:14:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942077475 HTTP/1.1" 200 - +2025-12-29 01:15:01,484 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:15:01] "GET /api/strategies/equityCurve?id=2&_t=1766942101475 HTTP/1.1" 200 - +2025-12-29 01:15:37,804 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:15:37] "GET /api/strategies/positions?id=2&_t=1766942137477 HTTP/1.1" 200 - +2025-12-29 01:15:37,810 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:15:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942137478 HTTP/1.1" 200 - +2025-12-29 01:15:37,815 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:15:37] "GET /api/strategies/equityCurve?id=2&_t=1766942137478 HTTP/1.1" 200 - +2025-12-29 01:16:37,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:16:37] "GET /api/strategies/positions?id=2&_t=1766942197476 HTTP/1.1" 200 - +2025-12-29 01:16:37,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:16:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942197477 HTTP/1.1" 200 - +2025-12-29 01:16:37,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:16:37] "GET /api/strategies/equityCurve?id=2&_t=1766942197478 HTTP/1.1" 200 - +2025-12-29 01:17:34,257 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:17:34] "GET /api/strategies/positions?id=2&_t=1766942253918 HTTP/1.1" 200 - +2025-12-29 01:17:34,260 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:17:34] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942253929 HTTP/1.1" 200 - +2025-12-29 01:17:34,264 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:17:34] "GET /api/strategies/equityCurve?id=2&_t=1766942253930 HTTP/1.1" 200 - +2025-12-29 01:17:34,520 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:17:34] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942254321 HTTP/1.1" 200 - +2025-12-29 01:17:34,651 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:17:34] "GET /api/strategies/positions?id=2&_t=1766942254641 HTTP/1.1" 200 - +2025-12-29 01:17:37,632 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:17:37] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942257321 HTTP/1.1" 200 - +2025-12-29 01:17:39,652 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:17:39] "GET /api/strategies/positions?id=2&_t=1766942259641 HTTP/1.1" 200 - +2025-12-29 01:17:40,179 - app.routes.strategy - INFO - Testing connection: exchange_id=okx +2025-12-29 01:17:40,179 - app.routes.strategy - INFO - API Key: 4cd9c... (len=36) +2025-12-29 01:17:40,179 - app.routes.strategy - INFO - Secret Key: 2B295... (len=32) +2025-12-29 01:17:43,245 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:17:43] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-29 01:17:43,249 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:17:43] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942260321 HTTP/1.1" 200 - +2025-12-29 01:17:43,327 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:17:43] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942263321 HTTP/1.1" 200 - +2025-12-29 01:17:44,552 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:17:44] "PUT /api/strategies/update?id=2 HTTP/1.1" 200 - +2025-12-29 01:17:44,813 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:17:44] "GET /api/strategies?_t=1766942264597 HTTP/1.1" 200 - +2025-12-29 01:17:44,919 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:17:44] "GET /api/strategies/positions?id=2&_t=1766942264642 HTTP/1.1" 200 - +2025-12-29 01:17:46,210 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-29 01:17:46,210 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-29 01:17:46,211 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:17:46] "POST /api/strategies/start?id=2 HTTP/1.1" 200 - +2025-12-29 01:17:46,212 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-29 01:17:46,376 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-29 01:17:46,395 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2025-12-29 01:17:46,569 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:17:46] "GET /api/strategies?_t=1766942266250 HTTP/1.1" 200 - +2025-12-29 01:17:46,650 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:17:46] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942266323 HTTP/1.1" 200 - +2025-12-29 01:17:48,243 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:17:48] "GET /api/strategies/equityCurve?id=1&_t=1766942268226 HTTP/1.1" 200 - +2025-12-29 01:17:48,549 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:17:48] "GET /api/strategies/equityCurve?id=1&_t=1766942268226 HTTP/1.1" 200 - +2025-12-29 01:17:48,554 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:17:48] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766942268226 HTTP/1.1" 200 - +2025-12-29 01:17:48,673 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:17:48] "GET /api/strategies/positions?id=1&_t=1766942268232 HTTP/1.1" 200 - +2025-12-29 01:17:49,957 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:17:49] "GET /api/strategies/equityCurve?id=2&_t=1766942269624 HTTP/1.1" 200 - +2025-12-29 01:17:49,962 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:17:49] "GET /api/strategies/equityCurve?id=2&_t=1766942269624 HTTP/1.1" 200 - +2025-12-29 01:17:49,969 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:17:49] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942269624 HTTP/1.1" 200 - +2025-12-29 01:17:49,975 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:17:49] "GET /api/strategies/positions?id=2&_t=1766942269632 HTTP/1.1" 200 - +2025-12-29 01:17:50,763 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:17:50] "GET /api/strategies/equityCurve?id=9&_t=1766942270748 HTTP/1.1" 200 - +2025-12-29 01:17:51,076 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:17:51] "GET /api/strategies/equityCurve?id=9&_t=1766942270748 HTTP/1.1" 200 - +2025-12-29 01:17:51,079 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:17:51] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766942270748 HTTP/1.1" 200 - +2025-12-29 01:17:51,082 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:17:51] "GET /api/strategies/positions?id=9&_t=1766942270754 HTTP/1.1" 200 - +2025-12-29 01:17:53,696 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:17:53] "GET /api/dashboard/summary?_t=1766942273362 HTTP/1.1" 200 - +2025-12-29 01:17:53,727 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:17:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766942273362 HTTP/1.1" 200 - +2025-12-29 01:18:26,890 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:26] "GET /api/dashboard/summary?_t=1766942306870 HTTP/1.1" 200 - +2025-12-29 01:18:27,186 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766942306870 HTTP/1.1" 200 - +2025-12-29 01:18:29,266 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:29] "GET /api/strategies?_t=1766942308951 HTTP/1.1" 200 - +2025-12-29 01:18:30,463 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:30] "GET /api/strategies/equityCurve?id=2&_t=1766942310285 HTTP/1.1" 200 - +2025-12-29 01:18:30,778 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:30] "GET /api/strategies/equityCurve?id=2&_t=1766942310285 HTTP/1.1" 200 - +2025-12-29 01:18:30,781 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:30] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942310285 HTTP/1.1" 200 - +2025-12-29 01:18:30,784 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:30] "GET /api/strategies/positions?id=2&_t=1766942310287 HTTP/1.1" 200 - +2025-12-29 01:18:33,121 - app.services.trading_executor - INFO - Strategy 2 stopped +2025-12-29 01:18:33,132 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:33] "POST /api/strategies/stop?id=2 HTTP/1.1" 200 - +2025-12-29 01:18:33,368 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:33] "GET /api/strategies?_t=1766942313143 HTTP/1.1" 200 - +2025-12-29 01:18:33,456 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:33] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942313271 HTTP/1.1" 200 - +2025-12-29 01:18:33,519 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=864.98, pending_signals=1 +2025-12-29 01:18:33,522 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 864.98, 'position_size': 0, 'timestamp': 1766942280}] +2025-12-29 01:18:33,613 - app.services.trading_executor - INFO - Strategy 2 stopped +2025-12-29 01:18:33,614 - app.services.trading_executor - INFO - Strategy 2 loop exited +2025-12-29 01:18:33,985 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:33] "GET /api/strategies/equityCurve?id=2&_t=1766942313972 HTTP/1.1" 200 - +2025-12-29 01:18:34,290 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:34] "GET /api/strategies/equityCurve?id=2&_t=1766942313973 HTTP/1.1" 200 - +2025-12-29 01:18:34,294 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:34] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942313973 HTTP/1.1" 200 - +2025-12-29 01:18:34,944 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:34] "GET /api/strategies/equityCurve?id=2&_t=1766942314623 HTTP/1.1" 200 - +2025-12-29 01:18:34,948 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:34] "GET /api/strategies/equityCurve?id=2&_t=1766942314623 HTTP/1.1" 200 - +2025-12-29 01:18:34,952 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:34] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942314623 HTTP/1.1" 200 - +2025-12-29 01:18:35,214 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:35] "GET /api/strategies/equityCurve?id=2&_t=1766942315181 HTTP/1.1" 200 - +2025-12-29 01:18:35,505 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:35] "GET /api/strategies/equityCurve?id=2&_t=1766942315181 HTTP/1.1" 200 - +2025-12-29 01:18:35,509 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:35] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942315181 HTTP/1.1" 200 - +2025-12-29 01:18:35,512 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:35] "GET /api/strategies/positions?id=2&_t=1766942315280 HTTP/1.1" 200 - +2025-12-29 01:18:35,840 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:35] "GET /api/strategies/equityCurve?id=2&_t=1766942315828 HTTP/1.1" 200 - +2025-12-29 01:18:36,144 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:36] "GET /api/strategies/equityCurve?id=2&_t=1766942315828 HTTP/1.1" 200 - +2025-12-29 01:18:36,149 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:36] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942315828 HTTP/1.1" 200 - +2025-12-29 01:18:36,838 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:36] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 01:18:36,847 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:36] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 01:18:36,856 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:36] "GET /api/credentials/list?user_id=1&_t=1766942316516 HTTP/1.1" 200 - +2025-12-29 01:18:36,867 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:36] "GET /api/strategies/equityCurve?id=2&_t=1766942316532 HTTP/1.1" 200 - +2025-12-29 01:18:36,880 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:36] "GET /api/strategies/equityCurve?id=2&_t=1766942316532 HTTP/1.1" 200 - +2025-12-29 01:18:36,889 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:36] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942316532 HTTP/1.1" 200 - +2025-12-29 01:18:37,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:37] "GET /api/credentials/get?id=2&user_id=1&_t=1766942317044 HTTP/1.1" 200 - +2025-12-29 01:18:39,528 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:39] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942319519 HTTP/1.1" 200 - +2025-12-29 01:18:40,602 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:40] "GET /api/strategies/positions?id=2&_t=1766942320281 HTTP/1.1" 200 - +2025-12-29 01:18:42,526 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:42] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942322518 HTTP/1.1" 200 - +2025-12-29 01:18:43,401 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=864.98, pending_signals=1 +2025-12-29 01:18:43,403 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 864.98, 'position_size': 0, 'timestamp': 1766942280}] +2025-12-29 01:18:45,600 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:45] "GET /api/strategies/positions?id=2&_t=1766942325280 HTTP/1.1" 200 - +2025-12-29 01:18:45,833 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:45] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942325519 HTTP/1.1" 200 - +2025-12-29 01:18:48,529 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:48] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942328520 HTTP/1.1" 200 - +2025-12-29 01:18:50,599 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:50] "GET /api/strategies/positions?id=2&_t=1766942330281 HTTP/1.1" 200 - +2025-12-29 01:18:51,526 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:51] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942331519 HTTP/1.1" 200 - +2025-12-29 01:18:53,721 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=864.92, pending_signals=1 +2025-12-29 01:18:53,724 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 864.91, 'position_size': 0, 'timestamp': 1766942280}] +2025-12-29 01:18:54,838 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:54] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942334518 HTTP/1.1" 200 - +2025-12-29 01:18:55,287 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:55] "GET /api/strategies/positions?id=2&_t=1766942335280 HTTP/1.1" 200 - +2025-12-29 01:18:57,828 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:18:57] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942337520 HTTP/1.1" 200 - +2025-12-29 01:19:00,287 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:19:00] "GET /api/strategies/positions?id=2&_t=1766942340279 HTTP/1.1" 200 - +2025-12-29 01:19:00,834 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:19:00] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942340518 HTTP/1.1" 200 - +2025-12-29 01:19:03,403 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=864.92, pending_signals=2 +2025-12-29 01:19:03,405 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'open_long', 'trigger_price': 864.91, 'position_size': 0.08, 'timestamp': 1766942280}, {'type': 'close_short', 'trigger_price': 864.91, 'position_size': 0, 'timestamp': 1766942280}] +2025-12-29 01:19:03,413 - app.services.trading_executor - INFO - Strategy 9 signal executed: open_long @ 864.91 +2025-12-29 01:19:03,528 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:19:03] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942343519 HTTP/1.1" 200 - +2025-12-29 01:19:05,189 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=60, strategy_id=9, cfg={'exchange_id': 'binance', 'api_key': '9E46...x6ec', 'secret_key': 'I5uD...ykZh'}, err=Binance HTTP 400: {"code":-1111,"msg":"Precision is over the maximum defined for this asset."} | debug: symbol=BNBUSDT side=BUY qty_req=0.023123793227040966 qty_norm=0.023 price_req=864.737018 price_norm=864.70 +2025-12-29 01:19:05,594 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:19:05] "GET /api/strategies/positions?id=2&_t=1766942345281 HTTP/1.1" 200 - +2025-12-29 01:19:05,748 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=60, strategy_id=9, cfg={'exchange_id': 'binance', 'api_key': '9E46...x6ec', 'secret_key': 'I5uD...ykZh'}, err=Binance HTTP 400: {"code":-1111,"msg":"Precision is over the maximum defined for this asset."} | debug: symbol=BNBUSDT side=BUY qty_req=0.023123793227040966 qty_norm=0.023 +2025-12-29 01:19:06,526 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:19:06] "GET /api/strategies/equityCurve?id=2&_t=1766942346519 HTTP/1.1" 200 - +2025-12-29 01:19:06,834 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:19:06] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942346519 HTTP/1.1" 200 - +2025-12-29 01:19:09,835 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:19:09] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942349520 HTTP/1.1" 200 - +2025-12-29 01:19:10,288 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:19:10] "GET /api/strategies/positions?id=2&_t=1766942350280 HTTP/1.1" 200 - +2025-12-29 01:19:12,832 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:19:12] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942352518 HTTP/1.1" 200 - +2025-12-29 01:19:13,603 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=864.92, pending_signals=2 +2025-12-29 01:19:13,605 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'open_long', 'trigger_price': 864.91, 'position_size': 0.08, 'timestamp': 1766942280}, {'type': 'close_short', 'trigger_price': 864.91, 'position_size': 0, 'timestamp': 1766942280}] +2025-12-29 01:19:15,287 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:19:15] "GET /api/strategies/positions?id=2&_t=1766942355280 HTTP/1.1" 200 - +2025-12-29 01:19:15,827 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:19:15] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942355518 HTTP/1.1" 200 - +2025-12-29 01:19:18,526 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:19:18] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942358520 HTTP/1.1" 200 - +2025-12-29 01:19:20,591 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:19:20] "GET /api/strategies/positions?id=2&_t=1766942360280 HTTP/1.1" 200 - +2025-12-29 01:19:21,526 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:19:21] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942361519 HTTP/1.1" 200 - +2025-12-29 01:19:23,408 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=864.92, pending_signals=2 +2025-12-29 01:19:23,410 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'open_long', 'trigger_price': 864.91, 'position_size': 0.08, 'timestamp': 1766942280}, {'type': 'close_short', 'trigger_price': 864.91, 'position_size': 0, 'timestamp': 1766942280}] +2025-12-29 01:19:24,841 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:19:24] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942364519 HTTP/1.1" 200 - +2025-12-29 01:19:25,286 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:19:25] "GET /api/strategies/positions?id=2&_t=1766942365279 HTTP/1.1" 200 - +2025-12-29 01:19:27,827 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:19:27] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942367519 HTTP/1.1" 200 - +2025-12-29 01:19:30,287 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:19:30] "GET /api/strategies/positions?id=2&_t=1766942370279 HTTP/1.1" 200 - +2025-12-29 01:19:30,836 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:19:30] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942370519 HTTP/1.1" 200 - +2025-12-29 01:19:33,511 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=864.94, pending_signals=2 +2025-12-29 01:19:33,513 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'open_long', 'trigger_price': 864.91, 'position_size': 0.08, 'timestamp': 1766942280}, {'type': 'close_short', 'trigger_price': 864.91, 'position_size': 0, 'timestamp': 1766942280}] +2025-12-29 01:19:33,528 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:19:33] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766942373519 HTTP/1.1" 200 - +2025-12-29 01:19:34,436 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-29 01:19:34,437 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-29 01:19:34,437 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:19:34] "POST /api/strategies/start?id=2 HTTP/1.1" 200 - +2025-12-29 01:19:34,438 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-29 01:19:34,607 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:19:34] "GET /api/strategies?_t=1766942374481 HTTP/1.1" 200 - +2025-12-29 01:19:34,641 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-29 01:19:34,663 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2025-12-29 01:19:35,287 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:19:35] "GET /api/strategies/positions?id=2&_t=1766942375280 HTTP/1.1" 200 - +2025-12-29 01:19:35,892 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:19:35] "GET /api/dashboard/summary?_t=1766942375574 HTTP/1.1" 200 - +2025-12-29 01:19:35,898 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:19:35] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766942375574 HTTP/1.1" 200 - +2025-12-29 01:19:43,412 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=864.94, pending_signals=2 +2025-12-29 01:19:43,415 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'open_long', 'trigger_price': 864.91, 'position_size': 0.08, 'timestamp': 1766942280}, {'type': 'close_short', 'trigger_price': 864.91, 'position_size': 0, 'timestamp': 1766942280}] +2025-12-29 01:19:53,634 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=864.79, pending_signals=2 +2025-12-29 01:19:53,636 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 864.92, 'position_size': 0, 'timestamp': 1766942280}] +2025-12-29 01:20:14,789 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87892.69, pending_signals=1 +2025-12-29 01:20:14,791 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87892.69, 'position_size': 0, 'timestamp': 1766942400}] +2025-12-29 01:20:24,691 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87892.69, pending_signals=1 +2025-12-29 01:20:24,693 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87892.69, 'position_size': 0, 'timestamp': 1766942400}] +2025-12-29 01:20:35,004 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87892.69, pending_signals=2 +2025-12-29 01:20:35,006 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87892.68, 'position_size': 0, 'timestamp': 1766942340}] +2025-12-29 01:20:44,693 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87892.69, pending_signals=2 +2025-12-29 01:20:44,696 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87892.68, 'position_size': 0, 'timestamp': 1766942340}] +2025-12-29 01:20:54,799 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87892.69, pending_signals=2 +2025-12-29 01:20:54,802 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87892.68, 'position_size': 0, 'timestamp': 1766942340}] +2025-12-29 01:21:02,252 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:21:02] "GET /api/dashboard/summary?_t=1766942461926 HTTP/1.1" 200 - +2025-12-29 01:21:02,258 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:21:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766942461926 HTTP/1.1" 200 - +2025-12-29 01:22:36,150 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:22:36] "GET /api/dashboard/summary?_t=1766942556136 HTTP/1.1" 200 - +2025-12-29 01:22:36,346 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:22:36] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766942556136 HTTP/1.1" 200 - +2025-12-29 01:22:36,394 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:22:36] "GET /api/dashboard/summary?_t=1766942556210 HTTP/1.1" 200 - +2025-12-29 01:22:36,403 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:22:36] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766942556210 HTTP/1.1" 200 - +2025-12-29 01:22:51,560 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:22:51] "GET /api/dashboard/summary?_t=1766942571549 HTTP/1.1" 200 - +2025-12-29 01:22:51,573 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:22:51] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766942571549 HTTP/1.1" 200 - +2025-12-29 01:22:51,638 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:22:51] "GET /api/dashboard/summary?_t=1766942571613 HTTP/1.1" 200 - +2025-12-29 01:22:51,939 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:22:51] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766942571613 HTTP/1.1" 200 - +2025-12-29 01:24:54,833 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87922.61, pending_signals=1 +2025-12-29 01:24:54,835 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87922.61, 'position_size': 0, 'timestamp': 1766942640}] +2025-12-29 01:24:59,030 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:24:59] "GET /api/dashboard/summary?_t=1766942698703 HTTP/1.1" 200 - +2025-12-29 01:24:59,038 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:24:59] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766942698703 HTTP/1.1" 200 - +2025-12-29 01:25:02,307 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:25:02] "GET /api/dashboard/summary?_t=1766942702293 HTTP/1.1" 200 - +2025-12-29 01:25:02,616 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:25:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766942702293 HTTP/1.1" 200 - +2025-12-29 01:25:04,746 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87922.61, pending_signals=1 +2025-12-29 01:25:04,748 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87922.61, 'position_size': 0, 'timestamp': 1766942700}] +2025-12-29 01:25:35,090 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87908.02, pending_signals=2 +2025-12-29 01:25:35,092 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87922.62, 'position_size': 0, 'timestamp': 1766942640}] +2025-12-29 01:25:44,752 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87908.02, pending_signals=2 +2025-12-29 01:25:44,754 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87922.62, 'position_size': 0, 'timestamp': 1766942640}] +2025-12-29 01:25:54,855 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87901.14, pending_signals=2 +2025-12-29 01:25:54,857 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87922.62, 'position_size': 0, 'timestamp': 1766942640}] +2025-12-29 01:26:23,589 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:26:23] "GET /api/dashboard/summary?_t=1766942783261 HTTP/1.1" 200 - +2025-12-29 01:26:23,597 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:26:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766942783261 HTTP/1.1" 200 - +2025-12-29 01:31:35,168 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87872.69, pending_signals=1 +2025-12-29 01:31:35,172 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87872.68, 'position_size': 0, 'timestamp': 1766943060}] +2025-12-29 01:31:44,810 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87872.69, pending_signals=1 +2025-12-29 01:31:44,812 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87872.69, 'position_size': 0, 'timestamp': 1766943060}] +2025-12-29 01:31:53,840 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=864.39, pending_signals=1 +2025-12-29 01:31:53,844 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 864.39, 'position_size': 0, 'timestamp': 1766943060}] +2025-12-29 01:31:54,909 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87872.69, pending_signals=1 +2025-12-29 01:31:54,911 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87872.69, 'position_size': 0, 'timestamp': 1766943060}] +2025-12-29 01:32:03,542 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=864.39, pending_signals=2 +2025-12-29 01:32:03,545 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 864.39, 'position_size': 0, 'timestamp': 1766943060}, {'type': 'open_short', 'trigger_price': 864.39, 'position_size': 0.08, 'timestamp': 1766943060}] +2025-12-29 01:32:03,557 - app.services.trading_executor - INFO - Strategy 9 signal executed: open_short @ 864.39 +2025-12-29 01:32:04,511 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:04] "GET /api/dashboard/summary?_t=1766943124197 HTTP/1.1" 200 - +2025-12-29 01:32:04,516 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766943124197 HTTP/1.1" 200 - +2025-12-29 01:32:04,836 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87872.69, pending_signals=2 +2025-12-29 01:32:04,840 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87872.68, 'position_size': 0, 'timestamp': 1766943060}] +2025-12-29 01:32:05,681 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=61, strategy_id=9, cfg={'exchange_id': 'binance', 'api_key': '9E46...x6ec', 'secret_key': 'I5uD...ykZh'}, err=Binance HTTP 400: {"code":-1111,"msg":"Precision is over the maximum defined for this asset."} | debug: symbol=BNBUSDT side=SELL qty_req=0.023137704045627552 qty_norm=0.023 price_req=864.562878 price_norm=864.50 +2025-12-29 01:32:06,365 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=61, strategy_id=9, cfg={'exchange_id': 'binance', 'api_key': '9E46...x6ec', 'secret_key': 'I5uD...ykZh'}, err=Binance HTTP 400: {"code":-1111,"msg":"Precision is over the maximum defined for this asset."} | debug: symbol=BNBUSDT side=SELL qty_req=0.023137704045627552 qty_norm=0.023 +2025-12-29 01:32:06,568 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:06] "GET /api/market/types?_t=1766943126561 HTTP/1.1" 200 - +2025-12-29 01:32:06,880 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:06] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 01:32:06,886 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:06] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 01:32:07,208 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-29 01:32:07,336 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:32:08,382 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 01:32:08,489 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:32:09,690 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 01:32:09,690 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:32:11,011 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 01:32:11,011 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:32:11,693 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 01:32:11,693 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:32:12,382 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 01:32:12,383 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:32:13,643 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=864.46, pending_signals=2 +2025-12-29 01:32:13,645 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 864.39, 'position_size': 0, 'timestamp': 1766943060}] +2025-12-29 01:32:13,680 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 01:32:13,680 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:32:14,379 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 01:32:14,380 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:32:14,915 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87872.69, pending_signals=2 +2025-12-29 01:32:14,917 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87872.68, 'position_size': 0, 'timestamp': 1766943060}] +2025-12-29 01:32:15,689 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 01:32:15,689 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:32:15,893 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=500 +2025-12-29 01:32:16,135 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:32:17,163 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:32:17,267 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:32:18,478 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:32:18,478 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:32:19,161 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:32:19,161 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:32:20,465 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:32:20,466 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:32:21,161 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:32:21,162 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:32:22,468 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:32:22,572 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:32:22,725 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:22] "GET /api/strategies?_t=1766943142479 HTTP/1.1" 200 - +2025-12-29 01:32:23,554 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=864.46, pending_signals=2 +2025-12-29 01:32:23,558 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 864.39, 'position_size': 0, 'timestamp': 1766943060}] +2025-12-29 01:32:23,722 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:23] "GET /api/strategies/equityCurve?id=2&_t=1766943143707 HTTP/1.1" 200 - +2025-12-29 01:32:24,034 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:24] "GET /api/strategies/equityCurve?id=2&_t=1766943143707 HTTP/1.1" 200 - +2025-12-29 01:32:24,038 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:24] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943143707 HTTP/1.1" 200 - +2025-12-29 01:32:24,044 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:24] "GET /api/strategies/positions?id=2&_t=1766943143710 HTTP/1.1" 200 - +2025-12-29 01:32:24,814 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87872.69, pending_signals=2 +2025-12-29 01:32:24,816 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87872.68, 'position_size': 0, 'timestamp': 1766943060}] +2025-12-29 01:32:25,198 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:25] "GET /api/strategies/trades?id=2&_t=1766943144877 HTTP/1.1" 200 - +2025-12-29 01:32:26,711 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:26] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943146698 HTTP/1.1" 200 - +2025-12-29 01:32:29,024 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:29] "GET /api/strategies/positions?id=2&_t=1766943148704 HTTP/1.1" 200 - +2025-12-29 01:32:29,705 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:29] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943149698 HTTP/1.1" 200 - +2025-12-29 01:32:33,010 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:33] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943152698 HTTP/1.1" 200 - +2025-12-29 01:32:33,650 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=864.07, pending_signals=2 +2025-12-29 01:32:33,653 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 864.39, 'position_size': 0, 'timestamp': 1766943060}, {'type': 'open_short', 'trigger_price': 864.39, 'position_size': 0.08, 'timestamp': 1766943060}] +2025-12-29 01:32:33,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:33] "GET /api/strategies/positions?id=2&_t=1766943153704 HTTP/1.1" 200 - +2025-12-29 01:32:35,098 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87846.32, pending_signals=2 +2025-12-29 01:32:35,100 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87872.69, 'position_size': 0, 'timestamp': 1766943060}, {'type': 'open_short', 'trigger_price': 87872.69, 'position_size': 0.08, 'timestamp': 1766943060}] +2025-12-29 01:32:35,112 - app.services.trading_executor - INFO - Strategy 2 signal executed: open_short @ 87872.69 +2025-12-29 01:32:36,011 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:36] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943155698 HTTP/1.1" 200 - +2025-12-29 01:32:38,706 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:38] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943158698 HTTP/1.1" 200 - +2025-12-29 01:32:39,021 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:39] "GET /api/strategies/positions?id=2&_t=1766943158704 HTTP/1.1" 200 - +2025-12-29 01:32:42,014 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:42] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943161698 HTTP/1.1" 200 - +2025-12-29 01:32:43,544 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=864.07, pending_signals=2 +2025-12-29 01:32:43,546 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 864.39, 'position_size': 0, 'timestamp': 1766943060}, {'type': 'open_short', 'trigger_price': 864.39, 'position_size': 0.08, 'timestamp': 1766943060}] +2025-12-29 01:32:43,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:43] "GET /api/strategies/positions?id=2&_t=1766943163705 HTTP/1.1" 200 - +2025-12-29 01:32:44,817 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87846.32, pending_signals=2 +2025-12-29 01:32:44,819 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87872.69, 'position_size': 0, 'timestamp': 1766943060}, {'type': 'open_short', 'trigger_price': 87872.69, 'position_size': 0.08, 'timestamp': 1766943060}] +2025-12-29 01:32:45,014 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:45] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943164698 HTTP/1.1" 200 - +2025-12-29 01:32:47,705 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:47] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943167698 HTTP/1.1" 200 - +2025-12-29 01:32:49,022 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:49] "GET /api/strategies/positions?id=2&_t=1766943168704 HTTP/1.1" 200 - +2025-12-29 01:32:50,707 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:50] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943170699 HTTP/1.1" 200 - +2025-12-29 01:32:53,761 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=863.93, pending_signals=2 +2025-12-29 01:32:53,763 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 864.35, 'position_size': 0, 'timestamp': 1766943060}, {'type': 'open_short', 'trigger_price': 864.35, 'position_size': 0.08, 'timestamp': 1766943060}] +2025-12-29 01:32:54,016 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:54] "GET /api/strategies/equityCurve?id=2&_t=1766943173699 HTTP/1.1" 200 - +2025-12-29 01:32:54,019 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:54] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943173700 HTTP/1.1" 200 - +2025-12-29 01:32:54,131 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:54] "GET /api/strategies/positions?id=2&_t=1766943173704 HTTP/1.1" 200 - +2025-12-29 01:32:54,921 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87836.16, pending_signals=2 +2025-12-29 01:32:54,930 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87872.69, 'position_size': 0, 'timestamp': 1766943060}, {'type': 'open_short', 'trigger_price': 87872.69, 'position_size': 0.08, 'timestamp': 1766943060}] +2025-12-29 01:32:56,705 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:56] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943176698 HTTP/1.1" 200 - +2025-12-29 01:32:59,140 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:59] "GET /api/strategies/positions?id=2&_t=1766943178705 HTTP/1.1" 200 - +2025-12-29 01:32:59,706 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:32:59] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943179698 HTTP/1.1" 200 - +2025-12-29 01:33:03,017 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:33:03] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943182699 HTTP/1.1" 200 - +2025-12-29 01:33:03,887 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:33:03] "GET /api/strategies/positions?id=2&_t=1766943183705 HTTP/1.1" 200 - +2025-12-29 01:33:06,016 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:33:06] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943185698 HTTP/1.1" 200 - +2025-12-29 01:33:08,704 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:33:08] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943188698 HTTP/1.1" 200 - +2025-12-29 01:33:09,129 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:33:09] "GET /api/strategies/positions?id=2&_t=1766943188704 HTTP/1.1" 200 - +2025-12-29 01:33:11,707 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:33:11] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943191699 HTTP/1.1" 200 - +2025-12-29 01:33:14,131 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:33:14] "GET /api/strategies/positions?id=2&_t=1766943193704 HTTP/1.1" 200 - +2025-12-29 01:33:14,705 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:33:14] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943194698 HTTP/1.1" 200 - +2025-12-29 01:33:18,015 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:33:18] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943197698 HTTP/1.1" 200 - +2025-12-29 01:33:18,820 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:33:18] "GET /api/strategies/positions?id=2&_t=1766943198704 HTTP/1.1" 200 - +2025-12-29 01:33:21,011 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:33:21] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943200697 HTTP/1.1" 200 - +2025-12-29 01:33:23,706 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:33:23] "GET /api/strategies/equityCurve?id=2&_t=1766943203698 HTTP/1.1" 200 - +2025-12-29 01:33:24,015 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:33:24] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943203698 HTTP/1.1" 200 - +2025-12-29 01:33:24,127 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:33:24] "GET /api/strategies/positions?id=2&_t=1766943203704 HTTP/1.1" 200 - +2025-12-29 01:33:27,020 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:33:27] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943206697 HTTP/1.1" 200 - +2025-12-29 01:33:28,817 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:33:28] "GET /api/strategies/positions?id=2&_t=1766943208705 HTTP/1.1" 200 - +2025-12-29 01:33:30,017 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:33:30] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943209697 HTTP/1.1" 200 - +2025-12-29 01:33:32,704 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:33:32] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943212697 HTTP/1.1" 200 - +2025-12-29 01:33:34,135 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:33:34] "GET /api/strategies/positions?id=2&_t=1766943213705 HTTP/1.1" 200 - +2025-12-29 01:33:35,709 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:33:35] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943215698 HTTP/1.1" 200 - +2025-12-29 01:33:39,009 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:33:39] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943218698 HTTP/1.1" 200 - +2025-12-29 01:33:39,122 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:33:39] "GET /api/strategies/positions?id=2&_t=1766943218705 HTTP/1.1" 200 - +2025-12-29 01:33:41,705 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:33:41] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943221699 HTTP/1.1" 200 - +2025-12-29 01:33:44,120 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:33:44] "GET /api/strategies/positions?id=2&_t=1766943223705 HTTP/1.1" 200 - +2025-12-29 01:33:44,705 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:33:44] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943224698 HTTP/1.1" 200 - +2025-12-29 01:33:48,019 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:33:48] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943227698 HTTP/1.1" 200 - +2025-12-29 01:33:48,817 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:33:48] "GET /api/strategies/positions?id=2&_t=1766943228705 HTTP/1.1" 200 - +2025-12-29 01:33:51,008 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:33:51] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943230699 HTTP/1.1" 200 - +2025-12-29 01:33:53,707 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:33:53] "GET /api/strategies/equityCurve?id=2&_t=1766943233699 HTTP/1.1" 200 - +2025-12-29 01:33:54,013 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:33:54] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943233699 HTTP/1.1" 200 - +2025-12-29 01:33:54,107 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2947.51, pending_signals=1 +2025-12-29 01:33:54,117 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2947.51, 'position_size': 0, 'timestamp': 1766943180}] +2025-12-29 01:33:54,123 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:33:54] "GET /api/strategies/positions?id=2&_t=1766943233706 HTTP/1.1" 200 - +2025-12-29 01:33:54,141 - app.services.trading_executor - INFO - Strategy 1 signal executed: close_long @ 2947.51 +2025-12-29 01:33:56,732 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=63, strategy_id=1, cfg={'exchange_id': 'bitget', 'api_key': 'bg_8...b659', 'secret_key': '3b7e...b239', 'passphrase': 'xuji...u123', 'credential_id': 3}, err=Bitget HTTP 400: {"code":"45115","msg":"The price you enter should be a multiple of 0.01{1}","requestTime":1766943236975,"data":null} +2025-12-29 01:33:57,016 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:33:57] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943236698 HTTP/1.1" 200 - +2025-12-29 01:33:58,818 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:33:58] "GET /api/strategies/positions?id=2&_t=1766943238704 HTTP/1.1" 200 - +2025-12-29 01:34:00,009 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:34:00] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943239698 HTTP/1.1" 200 - +2025-12-29 01:34:02,706 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:34:02] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943242698 HTTP/1.1" 200 - +2025-12-29 01:34:03,798 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2947.51, pending_signals=2 +2025-12-29 01:34:03,800 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2947.51, 'position_size': 0, 'timestamp': 1766943180}, {'type': 'open_short', 'trigger_price': 2947.51, 'position_size': 0.08, 'timestamp': 1766943180}] +2025-12-29 01:34:03,808 - app.services.trading_executor - INFO - Strategy 1 signal executed: open_short @ 2947.51 +2025-12-29 01:34:04,209 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:34:04] "GET /api/strategies/positions?id=2&_t=1766943243705 HTTP/1.1" 200 - +2025-12-29 01:34:05,710 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:34:05] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943245698 HTTP/1.1" 200 - +2025-12-29 01:34:06,782 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=64, strategy_id=1, cfg={'exchange_id': 'bitget', 'api_key': 'bg_8...b659', 'secret_key': '3b7e...b239', 'passphrase': 'xuji...u123', 'credential_id': 3}, err=Bitget HTTP 400: {"code":"45115","msg":"The price you enter should be a multiple of 0.01{1}","requestTime":1766943247023,"data":null} +2025-12-29 01:34:09,016 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:34:09] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943248698 HTTP/1.1" 200 - +2025-12-29 01:34:09,126 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:34:09] "GET /api/strategies/positions?id=2&_t=1766943248705 HTTP/1.1" 200 - +2025-12-29 01:34:11,707 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:34:11] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943251698 HTTP/1.1" 200 - +2025-12-29 01:34:13,898 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2947.37, pending_signals=2 +2025-12-29 01:34:13,907 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2947.51, 'position_size': 0, 'timestamp': 1766943180}, {'type': 'open_short', 'trigger_price': 2947.51, 'position_size': 0.08, 'timestamp': 1766943180}] +2025-12-29 01:34:14,128 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:34:14] "GET /api/strategies/positions?id=2&_t=1766943253705 HTTP/1.1" 200 - +2025-12-29 01:34:14,704 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:34:14] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943254698 HTTP/1.1" 200 - +2025-12-29 01:34:18,022 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:34:18] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943257698 HTTP/1.1" 200 - +2025-12-29 01:34:18,821 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:34:18] "GET /api/strategies/positions?id=2&_t=1766943258705 HTTP/1.1" 200 - +2025-12-29 01:34:21,020 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:34:21] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943260698 HTTP/1.1" 200 - +2025-12-29 01:34:23,705 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:34:23] "GET /api/strategies/equityCurve?id=2&_t=1766943263698 HTTP/1.1" 200 - +2025-12-29 01:34:23,799 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2947.37, pending_signals=2 +2025-12-29 01:34:23,808 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2947.51, 'position_size': 0, 'timestamp': 1766943180}, {'type': 'open_short', 'trigger_price': 2947.51, 'position_size': 0.08, 'timestamp': 1766943180}] +2025-12-29 01:34:26,835 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-29 01:34:26,840 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-29 01:34:27,245 - app.services.strategy - INFO - Found 3 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}, {'id': 9, 'strategy_type': 'IndicatorStrategy'}] +2025-12-29 01:34:27,245 - app - INFO - Restoring 3 running strategies... +2025-12-29 01:34:27,246 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-29 01:34:27,246 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-29 01:34:27,246 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-29 01:34:27,246 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-29 01:34:27,246 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-29 01:34:27,246 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-29 01:34:27,247 - app.services.trading_executor - INFO - Strategy 9 loop starting +2025-12-29 01:34:27,247 - app.services.trading_executor - INFO - Strategy 9 started +2025-12-29 01:34:27,247 - app - INFO - [OK] IndicatorStrategy 9 restored +2025-12-29 01:34:27,247 - app - INFO - Strategy restore completed: 3/3 restored +2025-12-29 01:34:27,247 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-29 01:34:27,250 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-29 01:34:27,263 - app.services.trading_executor - INFO - Strategy 9 derivatives trading; normalize market_type to: swap +2025-12-29 01:34:27,276 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-29 01:34:27,276 - werkzeug - INFO - Press CTRL+C to quit +2025-12-29 01:34:31,434 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=1, position=-1, entry_price=87788.3, highest=87836.16 +2025-12-29 01:34:31,438 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=1, position=-1, entry_price=2945.85, highest=2947.37 +2025-12-29 01:34:31,453 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2025-12-29 01:34:31,471 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=2 +2025-12-29 01:34:31,471 - app.services.trading_executor - INFO - Initial signals: [{'type': 'close_long', 'trigger_price': 2947.51, 'position_size': 0, 'timestamp': 1766943180}, {'type': 'open_short', 'trigger_price': 2947.51, 'position_size': 0.08, 'timestamp': 1766943180}] +2025-12-29 01:34:31,549 - app.services.trading_executor - INFO - ็ญ–็•ฅ 9 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-29 01:34:31,568 - app.services.trading_executor - INFO - Strategy 9 initialized; pending_signals=0 +2025-12-29 01:34:32,098 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:34:32] "GET /api/strategies/positions?id=2&_t=1766943268704 HTTP/1.1" 200 - +2025-12-29 01:34:32,103 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:34:32] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943269698 HTTP/1.1" 200 - +2025-12-29 01:34:32,110 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:34:32] "GET /api/strategies?_t=1766943269768 HTTP/1.1" 200 - +2025-12-29 01:34:32,188 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2947.66, pending_signals=2 +2025-12-29 01:34:32,199 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2947.51, 'position_size': 0, 'timestamp': 1766943180}] +2025-12-29 01:34:33,577 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:34:33] "GET /api/strategies/equityCurve?id=2&_t=1766943273249 HTTP/1.1" 200 - +2025-12-29 01:34:33,581 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:34:33] "GET /api/strategies/equityCurve?id=2&_t=1766943273249 HTTP/1.1" 200 - +2025-12-29 01:34:33,585 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:34:33] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943273249 HTTP/1.1" 200 - +2025-12-29 01:34:33,698 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:34:33] "GET /api/strategies/positions?id=2&_t=1766943273251 HTTP/1.1" 200 - +2025-12-29 01:34:36,249 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:34:36] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943276243 HTTP/1.1" 200 - +2025-12-29 01:34:37,928 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:34:37] "GET /api/strategies/trades?id=2&_t=1766943277607 HTTP/1.1" 200 - +2025-12-29 01:34:38,365 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:34:38] "GET /api/strategies/positions?id=2&_t=1766943278248 HTTP/1.1" 200 - +2025-12-29 01:34:39,564 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:34:39] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943279243 HTTP/1.1" 200 - +2025-12-29 01:34:41,510 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2947.66, pending_signals=2 +2025-12-29 01:34:41,533 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2947.51, 'position_size': 0, 'timestamp': 1766943180}] +2025-12-29 01:34:42,250 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:34:42] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943282243 HTTP/1.1" 200 - +2025-12-29 01:34:43,680 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:34:43] "GET /api/strategies/positions?id=2&_t=1766943283247 HTTP/1.1" 200 - +2025-12-29 01:34:45,249 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:34:45] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943285243 HTTP/1.1" 200 - +2025-12-29 01:34:48,570 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:34:48] "GET /api/dashboard/summary?_t=1766943288257 HTTP/1.1" 200 - +2025-12-29 01:34:48,577 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:34:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766943288257 HTTP/1.1" 200 - +2025-12-29 01:34:51,616 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2947.09, pending_signals=2 +2025-12-29 01:34:51,625 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2947.51, 'position_size': 0, 'timestamp': 1766943180}, {'type': 'open_short', 'trigger_price': 2947.51, 'position_size': 0.08, 'timestamp': 1766943180}] +2025-12-29 01:34:58,065 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:34:58] "GET /api/dashboard/summary?_t=1766943298049 HTTP/1.1" 200 - +2025-12-29 01:34:58,366 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:34:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766943298049 HTTP/1.1" 200 - +2025-12-29 01:39:54,563 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:39:54] "GET /api/dashboard/summary?_t=1766943594240 HTTP/1.1" 200 - +2025-12-29 01:39:54,575 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:39:54] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766943594240 HTTP/1.1" 200 - +2025-12-29 01:42:11,789 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=864.63, pending_signals=1 +2025-12-29 01:42:11,792 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 864.63, 'position_size': 0, 'timestamp': 1766943720}] +2025-12-29 01:42:21,690 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=864.63, pending_signals=1 +2025-12-29 01:42:21,692 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 864.63, 'position_size': 0, 'timestamp': 1766943720}] +2025-12-29 01:42:31,959 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=864.27, pending_signals=2 +2025-12-29 01:42:31,961 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 864.59, 'position_size': 0, 'timestamp': 1766943660}] +2025-12-29 01:42:41,695 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=864.27, pending_signals=2 +2025-12-29 01:42:41,697 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 864.59, 'position_size': 0, 'timestamp': 1766943660}] +2025-12-29 01:42:51,897 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=864.27, pending_signals=2 +2025-12-29 01:42:51,899 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 864.59, 'position_size': 0, 'timestamp': 1766943660}] +2025-12-29 01:43:19,319 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:19] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 01:43:19,327 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:19] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 01:43:19,331 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:19] "GET /api/market/types?_t=1766943798992 HTTP/1.1" 200 - +2025-12-29 01:43:19,564 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-29 01:43:19,736 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:43:20,024 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:20] "GET /api/strategies?_t=1766943800013 HTTP/1.1" 200 - +2025-12-29 01:43:21,919 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:21] "GET /api/strategies/equityCurve?id=2&_t=1766943801501 HTTP/1.1" 200 - +2025-12-29 01:43:21,923 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:21] "GET /api/strategies/equityCurve?id=2&_t=1766943801501 HTTP/1.1" 200 - +2025-12-29 01:43:21,928 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:21] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943801501 HTTP/1.1" 200 - +2025-12-29 01:43:22,041 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:22] "GET /api/strategies/positions?id=2&_t=1766943801502 HTTP/1.1" 200 - +2025-12-29 01:43:23,037 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:23] "GET /api/strategies/equityCurve?id=2&_t=1766943803029 HTTP/1.1" 200 - +2025-12-29 01:43:23,345 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:23] "GET /api/strategies/equityCurve?id=2&_t=1766943803029 HTTP/1.1" 200 - +2025-12-29 01:43:23,348 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:23] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943803029 HTTP/1.1" 200 - +2025-12-29 01:43:24,447 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:24] "GET /api/strategies/trades?id=2&_t=1766943804136 HTTP/1.1" 200 - +2025-12-29 01:43:26,034 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:26] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943806028 HTTP/1.1" 200 - +2025-12-29 01:43:26,928 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:26] "GET /api/strategies/positions?id=2&_t=1766943806500 HTTP/1.1" 200 - +2025-12-29 01:43:29,036 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:29] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943809027 HTTP/1.1" 200 - +2025-12-29 01:43:31,941 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:31] "GET /api/strategies/positions?id=2&_t=1766943811499 HTTP/1.1" 200 - +2025-12-29 01:43:32,082 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:32] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943812027 HTTP/1.1" 200 - +2025-12-29 01:43:33,294 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:33] "GET /api/dashboard/summary?_t=1766943813281 HTTP/1.1" 200 - +2025-12-29 01:43:33,599 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766943813281 HTTP/1.1" 200 - +2025-12-29 01:43:34,770 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:34] "GET /api/strategies?_t=1766943814452 HTTP/1.1" 200 - +2025-12-29 01:43:36,225 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:36] "GET /api/strategies/equityCurve?id=2&_t=1766943816214 HTTP/1.1" 200 - +2025-12-29 01:43:36,530 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:36] "GET /api/strategies/equityCurve?id=2&_t=1766943816214 HTTP/1.1" 200 - +2025-12-29 01:43:36,533 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:36] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943816214 HTTP/1.1" 200 - +2025-12-29 01:43:36,643 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:36] "GET /api/strategies/positions?id=2&_t=1766943816216 HTTP/1.1" 200 - +2025-12-29 01:43:39,449 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:39] "GET /api/market/types?_t=1766943818956 HTTP/1.1" 200 - +2025-12-29 01:43:39,452 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:39] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 01:43:39,456 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:39] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 01:43:39,535 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:39] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943819479 HTTP/1.1" 200 - +2025-12-29 01:43:39,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:39] "GET /api/strategies?_t=1766943819483 HTTP/1.1" 200 - +2025-12-29 01:43:41,076 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:41] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 01:43:41,389 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:41] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 01:43:41,405 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:41] "GET /api/market/types?_t=1766943821064 HTTP/1.1" 200 - +2025-12-29 01:43:41,431 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-29 01:43:41,435 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:43:42,013 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:42] "GET /api/strategies/positions?id=2&_t=1766943821481 HTTP/1.1" 200 - +2025-12-29 01:43:42,685 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:42] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943822480 HTTP/1.1" 200 - +2025-12-29 01:43:43,002 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 01:43:43,103 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:43:43,836 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 01:43:43,837 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:43:44,103 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=500 +2025-12-29 01:43:44,263 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:43:45,293 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:43:45,397 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:43:45,810 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:45] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943825494 HTTP/1.1" 200 - +2025-12-29 01:43:46,291 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:43:46,291 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:43:46,907 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:46] "GET /api/strategies/positions?id=2&_t=1766943826478 HTTP/1.1" 200 - +2025-12-29 01:43:47,290 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:43:47,291 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:43:48,603 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:43:48,604 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:43:48,732 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:48] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943828393 HTTP/1.1" 200 - +2025-12-29 01:43:49,483 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:43:49,483 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:43:50,370 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:50] "GET /api/strategies/trades?id=2&_t=1766943830050 HTTP/1.1" 200 - +2025-12-29 01:43:50,633 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:43:50,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:43:51,219 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:51] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943831208 HTTP/1.1" 200 - +2025-12-29 01:43:51,636 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:51] "GET /api/strategies/positions?id=2&_t=1766943831213 HTTP/1.1" 200 - +2025-12-29 01:43:51,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:43:51,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:43:52,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:43:52,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:43:53,475 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:43:53,476 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:43:54,517 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:54] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943834207 HTTP/1.1" 200 - +2025-12-29 01:43:54,768 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:43:54,769 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:43:55,478 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:43:55,479 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:43:56,644 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:56] "GET /api/strategies/positions?id=2&_t=1766943836212 HTTP/1.1" 200 - +2025-12-29 01:43:56,780 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:43:56,883 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:43:57,217 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:57] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943837207 HTTP/1.1" 200 - +2025-12-29 01:43:57,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:43:57,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:43:58,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:43:58,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:43:59,608 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:43:59,608 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:43:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:00,298 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:00,300 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:00,917 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:00] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943840474 HTTP/1.1" 200 - +2025-12-29 01:44:01,290 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:01,291 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:01,912 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:01] "GET /api/strategies/positions?id=2&_t=1766943841484 HTTP/1.1" 200 - +2025-12-29 01:44:02,290 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:02,391 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:03,607 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:03,608 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:03,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:03] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943843479 HTTP/1.1" 200 - +2025-12-29 01:44:04,325 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:04,326 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:05,603 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:05,604 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:06,293 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:06,294 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:06,803 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:06] "GET /api/strategies/equityCurve?id=2&_t=1766943846472 HTTP/1.1" 200 - +2025-12-29 01:44:06,809 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:06] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943846473 HTTP/1.1" 200 - +2025-12-29 01:44:06,928 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:06] "GET /api/strategies/positions?id=2&_t=1766943846474 HTTP/1.1" 200 - +2025-12-29 01:44:07,490 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:07,594 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:08,786 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:08,787 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:09,272 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:09] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943849207 HTTP/1.1" 200 - +2025-12-29 01:44:09,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:09,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:10,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:10,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:11,630 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:11] "GET /api/strategies/positions?id=2&_t=1766943851213 HTTP/1.1" 200 - +2025-12-29 01:44:11,956 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:11,956 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:12,217 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:12] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766943852207 HTTP/1.1" 200 - +2025-12-29 01:44:12,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:13,074 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:13,122 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:13] "GET /api/strategies/equityCurve?id=9&_t=1766943853110 HTTP/1.1" 200 - +2025-12-29 01:44:13,440 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:13] "GET /api/strategies/equityCurve?id=9&_t=1766943853110 HTTP/1.1" 200 - +2025-12-29 01:44:13,445 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:13] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766943853110 HTTP/1.1" 200 - +2025-12-29 01:44:13,450 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:13] "GET /api/strategies/positions?id=9&_t=1766943853111 HTTP/1.1" 200 - +2025-12-29 01:44:13,455 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:13] "GET /api/strategies/trades?id=9&_t=1766943853111 HTTP/1.1" 200 - +2025-12-29 01:44:13,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:13,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:14,479 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:14,480 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:14,918 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:14] "GET /api/strategies/equityCurve?id=1&_t=1766943854591 HTTP/1.1" 200 - +2025-12-29 01:44:14,924 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:14] "GET /api/strategies/equityCurve?id=1&_t=1766943854591 HTTP/1.1" 200 - +2025-12-29 01:44:14,929 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:14] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766943854591 HTTP/1.1" 200 - +2025-12-29 01:44:15,042 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:15] "GET /api/strategies/positions?id=1&_t=1766943854592 HTTP/1.1" 200 - +2025-12-29 01:44:15,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:15] "GET /api/strategies/trades?id=1&_t=1766943854592 HTTP/1.1" 200 - +2025-12-29 01:44:15,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:15,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:16,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:16,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:17,482 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:17,483 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:17,900 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:17] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766943857588 HTTP/1.1" 200 - +2025-12-29 01:44:18,489 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:18,668 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:19,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:19,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:20,018 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:20] "GET /api/strategies/positions?id=1&_t=1766943859592 HTTP/1.1" 200 - +2025-12-29 01:44:20,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:20,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:20,905 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:20] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766943860587 HTTP/1.1" 200 - +2025-12-29 01:44:21,488 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:21,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:22,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:22,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:23,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:23,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:23,900 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:23] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766943863587 HTTP/1.1" 200 - +2025-12-29 01:44:24,488 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:24,592 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:25,025 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:25] "GET /api/strategies/positions?id=1&_t=1766943864591 HTTP/1.1" 200 - +2025-12-29 01:44:25,483 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:25,483 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:26,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:26,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:26,905 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:26] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766943866587 HTTP/1.1" 200 - +2025-12-29 01:44:27,479 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:27,480 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:28,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:28,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:29,476 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:29,477 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:29,896 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:29] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766943869587 HTTP/1.1" 200 - +2025-12-29 01:44:30,011 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:30] "GET /api/strategies/positions?id=1&_t=1766943869591 HTTP/1.1" 200 - +2025-12-29 01:44:30,489 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:30,591 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:31,809 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:31,809 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:32,489 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:32,490 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:32,906 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:32] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766943872587 HTTP/1.1" 200 - +2025-12-29 01:44:33,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:33,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:34,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:34,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:35,015 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:35] "GET /api/strategies/positions?id=1&_t=1766943874592 HTTP/1.1" 200 - +2025-12-29 01:44:35,483 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:35,483 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:35,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:35] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766943875587 HTTP/1.1" 200 - +2025-12-29 01:44:36,482 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:36,583 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:37,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:37,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:38,480 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:38,481 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:38,900 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:38] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766943878587 HTTP/1.1" 200 - +2025-12-29 01:44:39,480 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:39,480 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:40,011 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:40] "GET /api/strategies/positions?id=1&_t=1766943879592 HTTP/1.1" 200 - +2025-12-29 01:44:40,479 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:40,479 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:41,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:41,890 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:41,897 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:41] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766943881587 HTTP/1.1" 200 - +2025-12-29 01:44:42,476 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:42,477 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:43,785 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:43,786 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:44,478 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:44,479 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:44,927 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:44] "GET /api/strategies/equityCurve?id=1&_t=1766943884588 HTTP/1.1" 200 - +2025-12-29 01:44:44,930 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:44] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766943884588 HTTP/1.1" 200 - +2025-12-29 01:44:45,040 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:45] "GET /api/strategies/positions?id=1&_t=1766943884592 HTTP/1.1" 200 - +2025-12-29 01:44:45,475 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:45,476 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:46,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:46,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:47,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:47,589 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:47,905 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:47] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766943887587 HTTP/1.1" 200 - +2025-12-29 01:44:48,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:48,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:49,481 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:49,481 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:50,013 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:50] "GET /api/strategies/positions?id=1&_t=1766943889592 HTTP/1.1" 200 - +2025-12-29 01:44:50,481 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:50,482 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:50,898 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:50] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766943890588 HTTP/1.1" 200 - +2025-12-29 01:44:51,479 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:51,480 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:52,782 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:52,884 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:53,490 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:53,490 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:53,907 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:53] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766943893587 HTTP/1.1" 200 - +2025-12-29 01:44:54,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:54,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:55,011 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:55] "GET /api/strategies/positions?id=1&_t=1766943894593 HTTP/1.1" 200 - +2025-12-29 01:44:55,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:55,484 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:56,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:56,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:56,900 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:56] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766943896587 HTTP/1.1" 200 - +2025-12-29 01:44:57,481 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:57,482 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:58,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:58,893 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:59,481 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:44:59,482 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:44:59,900 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:44:59] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766943899588 HTTP/1.1" 200 - +2025-12-29 01:45:00,016 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:45:00] "GET /api/strategies/positions?id=1&_t=1766943899592 HTTP/1.1" 200 - +2025-12-29 01:45:00,478 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:45:00,479 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:45:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:45:01,787 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:45:01,788 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:45:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:45:02,488 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:45:02,489 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:45:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:45:02,907 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:45:02] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766943902587 HTTP/1.1" 200 - +2025-12-29 01:45:03,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:45:03,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:45:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:45:04,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:45:04,893 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:45:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:45:05,012 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:45:05] "GET /api/strategies/positions?id=1&_t=1766943904591 HTTP/1.1" 200 - +2025-12-29 01:45:05,482 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:45:05,483 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:45:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:45:05,899 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:45:05] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766943905588 HTTP/1.1" 200 - +2025-12-29 01:45:06,223 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:45:06] "GET /api/dashboard/summary?_t=1766943906207 HTTP/1.1" 200 - +2025-12-29 01:45:06,526 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:45:06] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766943906207 HTTP/1.1" 200 - +2025-12-29 01:45:06,801 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:45:06,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:45:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:45:37,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:45:37,893 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:45:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:46:37,489 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:46:37,592 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:46:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:47:37,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:47:37,900 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:47:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:48:35,461 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-29 01:48:35,467 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-29 01:48:35,870 - app.services.strategy - INFO - Found 3 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}, {'id': 9, 'strategy_type': 'IndicatorStrategy'}] +2025-12-29 01:48:35,870 - app - INFO - Restoring 3 running strategies... +2025-12-29 01:48:35,870 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-29 01:48:35,870 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-29 01:48:35,871 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-29 01:48:35,871 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-29 01:48:35,871 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-29 01:48:35,871 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-29 01:48:35,871 - app.services.trading_executor - INFO - Strategy 9 loop starting +2025-12-29 01:48:35,871 - app.services.trading_executor - INFO - Strategy 9 started +2025-12-29 01:48:35,872 - app - INFO - [OK] IndicatorStrategy 9 restored +2025-12-29 01:48:35,872 - app - INFO - Strategy restore completed: 3/3 restored +2025-12-29 01:48:35,872 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-29 01:48:35,872 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-29 01:48:35,882 - app.services.trading_executor - INFO - Strategy 9 derivatives trading; normalize market_type to: swap +2025-12-29 01:48:35,899 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-29 01:48:35,899 - werkzeug - INFO - Press CTRL+C to quit +2025-12-29 01:48:37,479 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:48:40,161 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=1, position=-1, entry_price=87788.3, highest=87836.16 +2025-12-29 01:48:40,183 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2025-12-29 01:48:40,184 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=1, position=-1, entry_price=2945.85, highest=2948.54 +2025-12-29 01:48:40,203 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2025-12-29 01:48:40,234 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:48:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:48:40,240 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:48:40] "GET /api/dashboard/summary?_t=1766944119182 HTTP/1.1" 200 - +2025-12-29 01:48:40,246 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:48:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766944119182 HTTP/1.1" 200 - +2025-12-29 01:48:40,284 - app.services.trading_executor - INFO - ็ญ–็•ฅ 9 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-29 01:48:40,305 - app.services.trading_executor - INFO - Strategy 9 initialized; pending_signals=0 +2025-12-29 01:48:48,182 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:48:48] "GET /api/strategies?_t=1766944127873 HTTP/1.1" 200 - +2025-12-29 01:48:49,355 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:48:49] "GET /api/strategies/equityCurve?id=1&_t=1766944129342 HTTP/1.1" 200 - +2025-12-29 01:48:49,665 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:48:49] "GET /api/strategies/equityCurve?id=1&_t=1766944129342 HTTP/1.1" 200 - +2025-12-29 01:48:49,667 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:48:49] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766944129342 HTTP/1.1" 200 - +2025-12-29 01:48:49,779 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:48:49] "GET /api/strategies/positions?id=1&_t=1766944129344 HTTP/1.1" 200 - +2025-12-29 01:48:50,787 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:48:50] "GET /api/strategies/equityCurve?id=2&_t=1766944130471 HTTP/1.1" 200 - +2025-12-29 01:48:50,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:48:50] "GET /api/strategies/equityCurve?id=2&_t=1766944130471 HTTP/1.1" 200 - +2025-12-29 01:48:50,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:48:50] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766944130471 HTTP/1.1" 200 - +2025-12-29 01:48:50,907 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:48:50] "GET /api/strategies/positions?id=2&_t=1766944130472 HTTP/1.1" 200 - +2025-12-29 01:48:51,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:48:51] "GET /api/strategies/equityCurve?id=9&_t=1766944131915 HTTP/1.1" 200 - +2025-12-29 01:48:52,236 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:48:52] "GET /api/strategies/equityCurve?id=9&_t=1766944131915 HTTP/1.1" 200 - +2025-12-29 01:48:52,239 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:48:52] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766944131915 HTTP/1.1" 200 - +2025-12-29 01:48:52,242 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:48:52] "GET /api/strategies/positions?id=9&_t=1766944131915 HTTP/1.1" 200 - +2025-12-29 01:48:53,668 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:48:53] "GET /api/strategies/equityCurve?id=1&_t=1766944133338 HTTP/1.1" 200 - +2025-12-29 01:48:53,673 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:48:53] "GET /api/strategies/equityCurve?id=1&_t=1766944133338 HTTP/1.1" 200 - +2025-12-29 01:48:53,677 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:48:53] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766944133338 HTTP/1.1" 200 - +2025-12-29 01:48:53,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:48:53] "GET /api/strategies/positions?id=1&_t=1766944133339 HTTP/1.1" 200 - +2025-12-29 01:48:55,030 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:48:55] "GET /api/strategies/trades?id=1&_t=1766944135022 HTTP/1.1" 200 - +2025-12-29 01:48:56,659 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:48:56] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766944136334 HTTP/1.1" 200 - +2025-12-29 01:48:58,458 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:48:58] "GET /api/strategies/positions?id=1&_t=1766944138339 HTTP/1.1" 200 - +2025-12-29 01:48:59,648 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:48:59] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766944139334 HTTP/1.1" 200 - +2025-12-29 01:48:59,909 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:48:59] "GET /api/strategies/equityCurve?id=2&_t=1766944139576 HTTP/1.1" 200 - +2025-12-29 01:48:59,916 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:48:59] "GET /api/strategies/equityCurve?id=2&_t=1766944139576 HTTP/1.1" 200 - +2025-12-29 01:48:59,922 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:48:59] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766944139576 HTTP/1.1" 200 - +2025-12-29 01:49:00,041 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:00] "GET /api/strategies/positions?id=2&_t=1766944139577 HTTP/1.1" 200 - +2025-12-29 01:49:00,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:00] "GET /api/strategies/trades?id=2&_t=1766944139577 HTTP/1.1" 200 - +2025-12-29 01:49:00,855 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:00] "GET /api/strategies/equityCurve?id=1&_t=1766944140843 HTTP/1.1" 200 - +2025-12-29 01:49:01,157 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:01] "GET /api/strategies/equityCurve?id=1&_t=1766944140843 HTTP/1.1" 200 - +2025-12-29 01:49:01,161 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:01] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766944140843 HTTP/1.1" 200 - +2025-12-29 01:49:01,274 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:01] "GET /api/strategies/positions?id=1&_t=1766944140844 HTTP/1.1" 200 - +2025-12-29 01:49:01,278 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:01] "GET /api/strategies/trades?id=1&_t=1766944140844 HTTP/1.1" 200 - +2025-12-29 01:49:02,671 - app.services.trading_executor - INFO - Strategy 1 stopped +2025-12-29 01:49:02,682 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:02] "POST /api/strategies/stop?id=1 HTTP/1.1" 200 - +2025-12-29 01:49:02,917 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:02] "GET /api/strategies?_t=1766944142841 HTTP/1.1" 200 - +2025-12-29 01:49:03,406 - app.services.trading_executor - INFO - Strategy 1 stopped +2025-12-29 01:49:03,406 - app.services.trading_executor - INFO - Strategy 1 loop exited +2025-12-29 01:49:03,847 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:03] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766944143839 HTTP/1.1" 200 - +2025-12-29 01:49:05,312 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:05] "GET /api/strategies/equityCurve?id=1&_t=1766944144816 HTTP/1.1" 200 - +2025-12-29 01:49:05,316 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:05] "GET /api/strategies/equityCurve?id=1&_t=1766944144816 HTTP/1.1" 200 - +2025-12-29 01:49:05,321 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:05] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766944144816 HTTP/1.1" 200 - +2025-12-29 01:49:05,511 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:05] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 01:49:05,863 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:05] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 01:49:05,869 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:05] "GET /api/credentials/list?user_id=1&_t=1766944145504 HTTP/1.1" 200 - +2025-12-29 01:49:05,877 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:05] "GET /api/strategies/equityCurve?id=1&_t=1766944145522 HTTP/1.1" 200 - +2025-12-29 01:49:05,882 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:05] "GET /api/strategies/equityCurve?id=1&_t=1766944145522 HTTP/1.1" 200 - +2025-12-29 01:49:05,887 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:05] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766944145522 HTTP/1.1" 200 - +2025-12-29 01:49:06,294 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:06] "GET /api/strategies/positions?id=1&_t=1766944145844 HTTP/1.1" 200 - +2025-12-29 01:49:06,298 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:06] "GET /api/credentials/get?id=3&user_id=1&_t=1766944145967 HTTP/1.1" 200 - +2025-12-29 01:49:08,816 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:08] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766944148507 HTTP/1.1" 200 - +2025-12-29 01:49:10,962 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:10] "GET /api/strategies/positions?id=1&_t=1766944150844 HTTP/1.1" 200 - +2025-12-29 01:49:11,815 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:11] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766944151506 HTTP/1.1" 200 - +2025-12-29 01:49:14,517 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:14] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766944154510 HTTP/1.1" 200 - +2025-12-29 01:49:16,270 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:16] "GET /api/strategies/positions?id=1&_t=1766944155844 HTTP/1.1" 200 - +2025-12-29 01:49:17,513 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:17] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766944157507 HTTP/1.1" 200 - +2025-12-29 01:49:20,828 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:20] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766944160506 HTTP/1.1" 200 - +2025-12-29 01:49:21,187 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:21] "GET /api/strategies/positions?id=1&_t=1766944160843 HTTP/1.1" 200 - +2025-12-29 01:49:23,513 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:23] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766944163507 HTTP/1.1" 200 - +2025-12-29 01:49:26,271 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:26] "GET /api/strategies/positions?id=1&_t=1766944165844 HTTP/1.1" 200 - +2025-12-29 01:49:26,514 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:26] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766944166507 HTTP/1.1" 200 - +2025-12-29 01:49:29,819 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:29] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766944169507 HTTP/1.1" 200 - +2025-12-29 01:49:30,965 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:30] "GET /api/strategies/positions?id=1&_t=1766944170844 HTTP/1.1" 200 - +2025-12-29 01:49:32,818 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:32] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766944172506 HTTP/1.1" 200 - +2025-12-29 01:49:35,513 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:35] "GET /api/strategies/equityCurve?id=1&_t=1766944175506 HTTP/1.1" 200 - +2025-12-29 01:49:35,827 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:35] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766944175506 HTTP/1.1" 200 - +2025-12-29 01:49:36,293 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:36] "GET /api/strategies/positions?id=1&_t=1766944175864 HTTP/1.1" 200 - +2025-12-29 01:49:37,480 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:49:37,584 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:49:38,817 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:38] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766944178506 HTTP/1.1" 200 - +2025-12-29 01:49:41,603 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:41] "GET /api/strategies/positions?id=1&_t=1766944181483 HTTP/1.1" 200 - +2025-12-29 01:49:42,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:42] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766944182480 HTTP/1.1" 200 - +2025-12-29 01:49:45,642 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:45] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766944185479 HTTP/1.1" 200 - +2025-12-29 01:49:46,916 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:46] "GET /api/strategies/positions?id=1&_t=1766944186474 HTTP/1.1" 200 - +2025-12-29 01:49:48,481 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:48] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766944188473 HTTP/1.1" 200 - +2025-12-29 01:49:51,786 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:51] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766944191470 HTTP/1.1" 200 - +2025-12-29 01:49:51,902 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:51] "GET /api/strategies/positions?id=1&_t=1766944191471 HTTP/1.1" 200 - +2025-12-29 01:49:51,910 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:49:52,014 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:49:52,293 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:49:52,293 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:49:53,810 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:49:53,811 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:49:53,819 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:53] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766944193506 HTTP/1.1" 200 - +2025-12-29 01:49:54,478 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:49:54,478 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:49:55,826 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:49:55,827 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:49:56,263 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:56] "GET /api/strategies/positions?id=1&_t=1766944195844 HTTP/1.1" 200 - +2025-12-29 01:49:56,481 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:49:56,482 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:49:56,822 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:56] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766944196507 HTTP/1.1" 200 - +2025-12-29 01:49:57,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:49:57,586 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:49:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:49:58,624 - app.routes.strategy - INFO - Testing connection: exchange_id=bitget +2025-12-29 01:49:58,624 - app.routes.strategy - INFO - API Key: bg_87... (len=35) +2025-12-29 01:49:58,624 - app.routes.strategy - INFO - Secret Key: 3b7ee... (len=64) +2025-12-29 01:50:00,496 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:00] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-29 01:50:00,498 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:00,499 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:00,501 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:00,502 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:00,508 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:00] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766944199507 HTTP/1.1" 200 - +2025-12-29 01:50:00,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:00,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:01,265 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:01] "GET /api/strategies/positions?id=1&_t=1766944200843 HTTP/1.1" 200 - +2025-12-29 01:50:01,426 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:01] "PUT /api/strategies/update?id=1 HTTP/1.1" 200 - +2025-12-29 01:50:01,778 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:01] "GET /api/strategies?_t=1766944201466 HTTP/1.1" 200 - +2025-12-29 01:50:01,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:01,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:02,480 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:02,480 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:02,821 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:02] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766944202506 HTTP/1.1" 200 - +2025-12-29 01:50:03,445 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-29 01:50:03,446 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-29 01:50:03,446 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:03] "POST /api/strategies/start?id=1 HTTP/1.1" 200 - +2025-12-29 01:50:03,448 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-29 01:50:03,615 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=1, position=-1, entry_price=2945.85, highest=2948.54 +2025-12-29 01:50:03,652 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2025-12-29 01:50:03,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:03,901 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:03,907 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:03] "GET /api/strategies?_t=1766944203482 HTTP/1.1" 200 - +2025-12-29 01:50:04,491 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:04,492 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:05,336 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:05] "GET /api/dashboard/summary?_t=1766944205012 HTTP/1.1" 200 - +2025-12-29 01:50:05,344 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:05] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766944205013 HTTP/1.1" 200 - +2025-12-29 01:50:05,593 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:05,594 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:06,520 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:06,521 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:07,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:07,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:08,478 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:08,479 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:09,751 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:09] "GET /api/dashboard/summary?_t=1766944209433 HTTP/1.1" 200 - +2025-12-29 01:50:09,756 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:09] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766944209433 HTTP/1.1" 200 - +2025-12-29 01:50:09,810 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:09,915 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:10,495 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:10,496 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:11,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:11,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:12,480 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:12,481 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:13,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:13,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:14,490 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:14,490 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:15,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:15,901 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:16,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:16,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:17,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:17,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:18,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:18,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:19,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:19,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:20,482 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:20,483 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:21,785 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:21,887 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:22,489 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:22,489 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:23,659 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:23] "GET /api/dashboard/summary?_t=1766944223333 HTTP/1.1" 200 - +2025-12-29 01:50:23,663 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766944223333 HTTP/1.1" 200 - +2025-12-29 01:50:23,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:23,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:24,489 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:24,489 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:25,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:25,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:26,511 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:26,511 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:27,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:27,893 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:28,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:28] "GET /api/strategies?_t=1766944227964 HTTP/1.1" 200 - +2025-12-29 01:50:28,480 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:28,481 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:29,759 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:29] "GET /api/strategies/equityCurve?id=9&_t=1766944229396 HTTP/1.1" 200 - +2025-12-29 01:50:29,763 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:29] "GET /api/strategies/equityCurve?id=9&_t=1766944229396 HTTP/1.1" 200 - +2025-12-29 01:50:29,766 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:29] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766944229396 HTTP/1.1" 200 - +2025-12-29 01:50:29,770 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:29] "GET /api/strategies/positions?id=9&_t=1766944229398 HTTP/1.1" 200 - +2025-12-29 01:50:29,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:29,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:30,313 - app.services.trading_executor - INFO - Strategy 9 stopped +2025-12-29 01:50:30,323 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:30] "POST /api/strategies/stop?id=9 HTTP/1.1" 200 - +2025-12-29 01:50:30,334 - app.services.trading_executor - INFO - Strategy 9 stopped +2025-12-29 01:50:30,334 - app.services.trading_executor - INFO - Strategy 9 loop exited +2025-12-29 01:50:30,648 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:30] "GET /api/strategies?_t=1766944230334 HTTP/1.1" 200 - +2025-12-29 01:50:30,786 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:30,786 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:31,129 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:31] "GET /api/strategies/equityCurve?id=9&_t=1766944231120 HTTP/1.1" 200 - +2025-12-29 01:50:31,436 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:31] "GET /api/strategies/equityCurve?id=9&_t=1766944231120 HTTP/1.1" 200 - +2025-12-29 01:50:31,440 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:31] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766944231120 HTTP/1.1" 200 - +2025-12-29 01:50:31,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:31,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:32,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:32] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 01:50:32,159 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:32] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 01:50:32,170 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:32] "GET /api/credentials/list?user_id=1&_t=1766944231834 HTTP/1.1" 200 - +2025-12-29 01:50:32,182 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:32] "GET /api/strategies/equityCurve?id=9&_t=1766944231849 HTTP/1.1" 200 - +2025-12-29 01:50:32,193 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:32] "GET /api/strategies/equityCurve?id=9&_t=1766944231849 HTTP/1.1" 200 - +2025-12-29 01:50:32,205 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:32] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766944231849 HTTP/1.1" 200 - +2025-12-29 01:50:32,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:32,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:33,481 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:33,584 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:34,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:34] "GET /api/strategies/positions?id=9&_t=1766944234396 HTTP/1.1" 200 - +2025-12-29 01:50:34,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:34,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:34,965 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:34] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766944234836 HTTP/1.1" 200 - +2025-12-29 01:50:35,482 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:35,482 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:36,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:36,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:37,480 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:37,481 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:38,147 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:38] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766944237839 HTTP/1.1" 200 - +2025-12-29 01:50:38,476 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:38,476 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:39,705 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:39] "GET /api/strategies/positions?id=9&_t=1766944239395 HTTP/1.1" 200 - +2025-12-29 01:50:39,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:39,907 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:40,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:40,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:41,159 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:41] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766944240836 HTTP/1.1" 200 - +2025-12-29 01:50:41,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:41,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:42,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:42,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:43,480 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:43,480 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:44,149 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:44] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766944243837 HTTP/1.1" 200 - +2025-12-29 01:50:44,413 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:44] "GET /api/strategies/positions?id=9&_t=1766944244395 HTTP/1.1" 200 - +2025-12-29 01:50:44,707 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:44,708 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:45,478 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:45,589 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:46,785 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:46,785 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:47,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:47] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766944246837 HTTP/1.1" 200 - +2025-12-29 01:50:47,488 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:47,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:48,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:48,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:49,402 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:49] "GET /api/strategies/positions?id=9&_t=1766944249394 HTTP/1.1" 200 - +2025-12-29 01:50:49,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:49,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:50,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:50] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766944249837 HTTP/1.1" 200 - +2025-12-29 01:50:50,480 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:50,481 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:51,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:50:51,895 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:50:52,845 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:52] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766944252836 HTTP/1.1" 200 - +2025-12-29 01:50:54,716 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:54] "GET /api/strategies/positions?id=9&_t=1766944254394 HTTP/1.1" 200 - +2025-12-29 01:50:55,166 - app.routes.strategy - INFO - Testing connection: exchange_id=binance +2025-12-29 01:50:55,166 - app.routes.strategy - INFO - API Key: 9E46G... (len=64) +2025-12-29 01:50:55,167 - app.routes.strategy - INFO - Secret Key: I5uDy... (len=64) +2025-12-29 01:50:57,114 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:57] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-29 01:50:57,119 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:57] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766944255836 HTTP/1.1" 200 - +2025-12-29 01:50:58,519 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:58] "PUT /api/strategies/update?id=9 HTTP/1.1" 200 - +2025-12-29 01:50:58,780 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:58] "GET /api/strategies?_t=1766944258548 HTTP/1.1" 200 - +2025-12-29 01:50:58,870 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:58] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766944258836 HTTP/1.1" 200 - +2025-12-29 01:50:59,403 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:50:59] "GET /api/strategies/positions?id=9&_t=1766944259395 HTTP/1.1" 200 - +2025-12-29 01:51:00,574 - app.services.trading_executor - INFO - Strategy 9 loop starting +2025-12-29 01:51:00,574 - app.services.trading_executor - INFO - Strategy 9 started +2025-12-29 01:51:00,575 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:51:00] "POST /api/strategies/start?id=9 HTTP/1.1" 200 - +2025-12-29 01:51:00,577 - app.services.trading_executor - INFO - Strategy 9 derivatives trading; normalize market_type to: swap +2025-12-29 01:51:00,787 - app.services.trading_executor - INFO - ็ญ–็•ฅ 9 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-29 01:51:00,808 - app.services.trading_executor - INFO - Strategy 9 initialized; pending_signals=0 +2025-12-29 01:51:00,819 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:51:00] "GET /api/strategies?_t=1766944260607 HTTP/1.1" 200 - +2025-12-29 01:51:01,705 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:51:01] "GET /api/dashboard/summary?_t=1766944261693 HTTP/1.1" 200 - +2025-12-29 01:51:02,022 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:51:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766944261693 HTTP/1.1" 200 - +2025-12-29 01:51:03,505 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:51:03] "GET /api/dashboard/summary?_t=1766944263177 HTTP/1.1" 200 - +2025-12-29 01:51:03,515 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:51:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766944263177 HTTP/1.1" 200 - +2025-12-29 01:51:37,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:51:37,588 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:51:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:52:37,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:52:37,895 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:52:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:53:37,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:53:37,590 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:53:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:53:40,956 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=863.29, pending_signals=1 +2025-12-29 01:53:40,959 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 863.29, 'position_size': 0, 'timestamp': 1766944380}] +2025-12-29 01:53:50,852 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=863.29, pending_signals=1 +2025-12-29 01:53:50,854 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 863.29, 'position_size': 0, 'timestamp': 1766944380}] +2025-12-29 01:54:01,070 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=863.14, pending_signals=2 +2025-12-29 01:54:01,072 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 863.27, 'position_size': 0, 'timestamp': 1766944380}, {'type': 'open_short', 'trigger_price': 863.27, 'position_size': 0.08, 'timestamp': 1766944380}] +2025-12-29 01:54:01,080 - app.services.trading_executor - INFO - Strategy 9 signal executed: open_short @ 863.27 +2025-12-29 01:54:02,978 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=65, strategy_id=9, cfg={'exchange_id': 'binance', 'api_key': '9E46...x6ec', 'secret_key': 'I5uD...ykZh'}, err=Binance HTTP 400: {"code":-1111,"msg":"Precision is over the maximum defined for this asset."} | debug: symbol=BNBUSDT side=SELL qty_req=0.11583861364347192 qty_norm=0.115 price_req=863.442654 price_norm=863.40 +2025-12-29 01:54:03,523 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=65, strategy_id=9, cfg={'exchange_id': 'binance', 'api_key': '9E46...x6ec', 'secret_key': 'I5uD...ykZh'}, err=Order notional is below MIN_NOTIONAL. symbol=BNBUSDT side=SELL qty=0.115 markPrice=863.72743896 notional=99.32865548040 minNotional=100 +2025-12-29 01:54:07,261 - app.services.pending_order_worker - INFO - live notify: pending_id=65, strategy_id=9, ok=browser,email,telegram fail=- +2025-12-29 01:54:10,857 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=863.14, pending_signals=2 +2025-12-29 01:54:10,859 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 863.27, 'position_size': 0, 'timestamp': 1766944380}, {'type': 'open_short', 'trigger_price': 863.27, 'position_size': 0.08, 'timestamp': 1766944380}] +2025-12-29 01:54:20,960 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=863.2, pending_signals=2 +2025-12-29 01:54:20,962 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 863.27, 'position_size': 0, 'timestamp': 1766944380}, {'type': 'open_short', 'trigger_price': 863.27, 'position_size': 0.08, 'timestamp': 1766944380}] +2025-12-29 01:54:30,858 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=863.2, pending_signals=2 +2025-12-29 01:54:30,860 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 863.27, 'position_size': 0, 'timestamp': 1766944380}, {'type': 'open_short', 'trigger_price': 863.27, 'position_size': 0.08, 'timestamp': 1766944380}] +2025-12-29 01:54:37,786 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:54:37,957 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:54:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:54:40,608 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:54:40] "GET /api/dashboard/summary?_t=1766944480595 HTTP/1.1" 200 - +2025-12-29 01:54:40,924 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:54:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766944480595 HTTP/1.1" 200 - +2025-12-29 01:54:40,977 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=863.34, pending_signals=2 +2025-12-29 01:54:40,979 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 863.27, 'position_size': 0, 'timestamp': 1766944380}] +2025-12-29 01:54:50,861 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=863.34, pending_signals=2 +2025-12-29 01:54:50,862 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 863.27, 'position_size': 0, 'timestamp': 1766944380}] +2025-12-29 01:54:56,258 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:54:56] "GET /api/strategies?_t=1766944495939 HTTP/1.1" 200 - +2025-12-29 01:54:57,145 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:54:57] "GET /api/strategies/equityCurve?id=2&_t=1766944497128 HTTP/1.1" 200 - +2025-12-29 01:54:57,446 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:54:57] "GET /api/strategies/equityCurve?id=2&_t=1766944497128 HTTP/1.1" 200 - +2025-12-29 01:54:57,450 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:54:57] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766944497128 HTTP/1.1" 200 - +2025-12-29 01:54:57,567 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:54:57] "GET /api/strategies/positions?id=2&_t=1766944497131 HTTP/1.1" 200 - +2025-12-29 01:54:57,823 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:54:57] "GET /api/strategies/equityCurve?id=9&_t=1766944497480 HTTP/1.1" 200 - +2025-12-29 01:54:57,827 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:54:57] "GET /api/strategies/equityCurve?id=9&_t=1766944497480 HTTP/1.1" 200 - +2025-12-29 01:54:57,831 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:54:57] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766944497480 HTTP/1.1" 200 - +2025-12-29 01:54:57,836 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:54:57] "GET /api/strategies/positions?id=9&_t=1766944497481 HTTP/1.1" 200 - +2025-12-29 01:55:00,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:00] "GET /api/strategies/notifications?id=9&since_id=3&limit=50&_t=1766944500477 HTTP/1.1" 200 - +2025-12-29 01:55:01,071 - app.services.trading_executor - INFO - Strategy 9 stopped +2025-12-29 01:55:01,081 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:01] "POST /api/strategies/stop?id=9 HTTP/1.1" 200 - +2025-12-29 01:55:01,106 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:01] "GET /api/strategies?_t=1766944501096 HTTP/1.1" 200 - +2025-12-29 01:55:01,427 - app.services.trading_executor - INFO - Strategy 9 stopped +2025-12-29 01:55:01,427 - app.services.trading_executor - INFO - Strategy 9 loop exited +2025-12-29 01:55:01,968 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:01] "GET /api/strategies/equityCurve?id=9&_t=1766944501629 HTTP/1.1" 200 - +2025-12-29 01:55:01,974 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:01] "GET /api/strategies/equityCurve?id=9&_t=1766944501629 HTTP/1.1" 200 - +2025-12-29 01:55:01,978 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:01] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766944501629 HTTP/1.1" 200 - +2025-12-29 01:55:02,288 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:02] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 01:55:02,596 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:02] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 01:55:02,604 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:02] "GET /api/credentials/list?user_id=1&_t=1766944502276 HTTP/1.1" 200 - +2025-12-29 01:55:02,631 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:02] "GET /api/strategies/equityCurve?id=9&_t=1766944502302 HTTP/1.1" 200 - +2025-12-29 01:55:02,642 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:02] "GET /api/strategies/equityCurve?id=9&_t=1766944502302 HTTP/1.1" 200 - +2025-12-29 01:55:02,649 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:02] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766944502302 HTTP/1.1" 200 - +2025-12-29 01:55:02,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:02] "GET /api/strategies/positions?id=9&_t=1766944502481 HTTP/1.1" 200 - +2025-12-29 01:55:05,607 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:05] "GET /api/strategies/notifications?id=9&since_id=3&limit=50&_t=1766944505281 HTTP/1.1" 200 - +2025-12-29 01:55:07,489 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:07] "GET /api/strategies/positions?id=9&_t=1766944507481 HTTP/1.1" 200 - +2025-12-29 01:55:08,599 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:08] "GET /api/strategies/notifications?id=9&since_id=3&limit=50&_t=1766944508280 HTTP/1.1" 200 - +2025-12-29 01:55:11,288 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:11] "GET /api/strategies/notifications?id=9&since_id=3&limit=50&_t=1766944511279 HTTP/1.1" 200 - +2025-12-29 01:55:12,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:12] "GET /api/strategies/positions?id=9&_t=1766944512481 HTTP/1.1" 200 - +2025-12-29 01:55:14,289 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:14] "GET /api/strategies/notifications?id=9&since_id=3&limit=50&_t=1766944514279 HTTP/1.1" 200 - +2025-12-29 01:55:17,599 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:17] "GET /api/strategies/notifications?id=9&since_id=3&limit=50&_t=1766944517279 HTTP/1.1" 200 - +2025-12-29 01:55:17,806 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:17] "GET /api/strategies/positions?id=9&_t=1766944517481 HTTP/1.1" 200 - +2025-12-29 01:55:20,287 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:20] "GET /api/strategies/notifications?id=9&since_id=3&limit=50&_t=1766944520279 HTTP/1.1" 200 - +2025-12-29 01:55:20,623 - app.routes.strategy - INFO - Testing connection: exchange_id=binance +2025-12-29 01:55:20,623 - app.routes.strategy - INFO - API Key: 9E46G... (len=64) +2025-12-29 01:55:20,623 - app.routes.strategy - INFO - Secret Key: I5uDy... (len=64) +2025-12-29 01:55:22,544 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:22] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2025-12-29 01:55:22,549 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:22] "GET /api/strategies/positions?id=9&_t=1766944522480 HTTP/1.1" 200 - +2025-12-29 01:55:23,590 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:23] "GET /api/strategies/notifications?id=9&since_id=3&limit=50&_t=1766944523280 HTTP/1.1" 200 - +2025-12-29 01:55:23,737 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:23] "PUT /api/strategies/update?id=9 HTTP/1.1" 200 - +2025-12-29 01:55:23,858 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:23] "GET /api/strategies?_t=1766944523772 HTTP/1.1" 200 - +2025-12-29 01:55:25,112 - app.services.trading_executor - INFO - Strategy 9 loop starting +2025-12-29 01:55:25,112 - app.services.trading_executor - INFO - Strategy 9 started +2025-12-29 01:55:25,113 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:25] "POST /api/strategies/start?id=9 HTTP/1.1" 200 - +2025-12-29 01:55:25,114 - app.services.trading_executor - INFO - Strategy 9 derivatives trading; normalize market_type to: swap +2025-12-29 01:55:25,276 - app.services.trading_executor - INFO - ็ญ–็•ฅ 9 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-29 01:55:25,294 - app.services.trading_executor - INFO - Strategy 9 initialized; pending_signals=1 +2025-12-29 01:55:25,294 - app.services.trading_executor - INFO - Initial signals: [{'type': 'close_short', 'trigger_price': 864.4, 'position_size': 0, 'timestamp': 1766944500}] +2025-12-29 01:55:25,414 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=864.4, pending_signals=1 +2025-12-29 01:55:25,417 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 864.4, 'position_size': 0, 'timestamp': 1766944500}] +2025-12-29 01:55:25,460 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:25] "GET /api/strategies?_t=1766944525147 HTTP/1.1" 200 - +2025-12-29 01:55:26,287 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:26] "GET /api/strategies/notifications?id=9&since_id=3&limit=50&_t=1766944526280 HTTP/1.1" 200 - +2025-12-29 01:55:26,861 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:26] "GET /api/dashboard/summary?_t=1766944526545 HTTP/1.1" 200 - +2025-12-29 01:55:26,868 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:26] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766944526545 HTTP/1.1" 200 - +2025-12-29 01:55:28,115 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:28] "GET /api/dashboard/summary?_t=1766944528101 HTTP/1.1" 200 - +2025-12-29 01:55:28,460 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766944528101 HTTP/1.1" 200 - +2025-12-29 01:55:34,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:34] "DELETE /api/dashboard/pendingOrders/65 HTTP/1.1" 200 - +2025-12-29 01:55:34,746 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766944534559 HTTP/1.1" 200 - +2025-12-29 01:55:35,318 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=864.4, pending_signals=1 +2025-12-29 01:55:35,320 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 864.4, 'position_size': 0, 'timestamp': 1766944500}] +2025-12-29 01:55:36,812 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:36] "DELETE /api/dashboard/pendingOrders/61 HTTP/1.1" 200 - +2025-12-29 01:55:37,214 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766944536889 HTTP/1.1" 200 - +2025-12-29 01:55:37,494 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:55:37,594 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:55:38,828 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:38] "DELETE /api/dashboard/pendingOrders/60 HTTP/1.1" 200 - +2025-12-29 01:55:39,087 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:39] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766944538906 HTTP/1.1" 200 - +2025-12-29 01:55:40,995 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:40] "DELETE /api/dashboard/pendingOrders/57 HTTP/1.1" 200 - +2025-12-29 01:55:41,394 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:41] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766944541070 HTTP/1.1" 200 - +2025-12-29 01:55:45,280 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:45] "GET /api/dashboard/summary?_t=1766944545271 HTTP/1.1" 200 - +2025-12-29 01:55:45,418 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=864.94, pending_signals=1 +2025-12-29 01:55:45,420 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 864.94, 'position_size': 0, 'timestamp': 1766944500}] +2025-12-29 01:55:45,584 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:55:45] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766944545271 HTTP/1.1" 200 - +2025-12-29 01:55:55,316 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=864.94, pending_signals=1 +2025-12-29 01:55:55,318 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 864.94, 'position_size': 0, 'timestamp': 1766944500}] +2025-12-29 01:56:05,419 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=864.94, pending_signals=2 +2025-12-29 01:56:05,421 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'open_long', 'trigger_price': 864.4, 'position_size': 0.08, 'timestamp': 1766944500}, {'type': 'close_short', 'trigger_price': 864.4, 'position_size': 0, 'timestamp': 1766944500}] +2025-12-29 01:56:05,429 - app.services.trading_executor - INFO - Strategy 9 signal executed: open_long @ 864.4 +2025-12-29 01:56:08,308 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=66, strategy_id=9, cfg={'exchange_id': 'binance', 'api_key': '9E46...x6ec', 'secret_key': 'I5uD...ykZh'}, err=Binance HTTP 400: {"code":-1111,"msg":"Precision is over the maximum defined for this asset."} | debug: symbol=BNBUSDT side=BUY qty_req=0.17353077279037482 qty_norm=0.173 price_req=864.22712 price_norm=864.20 +2025-12-29 01:56:09,422 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=66, strategy_id=9, cfg={'exchange_id': 'binance', 'api_key': '9E46...x6ec', 'secret_key': 'I5uD...ykZh'}, err=Binance HTTP 400: {"code":-1111,"msg":"Precision is over the maximum defined for this asset."} | debug: symbol=BNBUSDT side=BUY qty_req=0.17353077279037482 qty_norm=0.173 base_url=https://fapi.binance.com stepSize=0.001 quantityPrecision=3 minNotional=100 markPrice=865.53 notional=149.73669 +2025-12-29 01:56:13,009 - app.services.pending_order_worker - INFO - live notify: pending_id=66, strategy_id=9, ok=browser,email,telegram fail=- +2025-12-29 01:56:15,320 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=864.94, pending_signals=2 +2025-12-29 01:56:15,322 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'open_long', 'trigger_price': 864.4, 'position_size': 0.08, 'timestamp': 1766944500}, {'type': 'close_short', 'trigger_price': 864.4, 'position_size': 0, 'timestamp': 1766944500}] +2025-12-29 01:56:18,593 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:56:18] "GET /api/dashboard/summary?_t=1766944578280 HTTP/1.1" 200 - +2025-12-29 01:56:18,599 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:56:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766944578280 HTTP/1.1" 200 - +2025-12-29 01:56:25,632 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=864.64, pending_signals=2 +2025-12-29 01:56:25,633 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 864.94, 'position_size': 0, 'timestamp': 1766944500}] +2025-12-29 01:56:35,324 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=864.64, pending_signals=2 +2025-12-29 01:56:35,326 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 864.94, 'position_size': 0, 'timestamp': 1766944500}] +2025-12-29 01:56:37,477 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:56:37,585 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:56:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:56:45,426 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=864.48, pending_signals=2 +2025-12-29 01:56:45,428 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 864.94, 'position_size': 0, 'timestamp': 1766944500}] +2025-12-29 01:56:55,326 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=864.48, pending_signals=2 +2025-12-29 01:56:55,328 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 864.94, 'position_size': 0, 'timestamp': 1766944500}] +2025-12-29 01:57:37,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:57:37,901 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:57:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:58:37,490 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:58:37,594 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:58:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 01:59:37,786 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 01:59:37,887 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 01:59:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:00:28,236 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:00:28] "GET /api/dashboard/summary?_t=1766944828221 HTTP/1.1" 200 - +2025-12-29 02:00:28,552 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:00:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766944828221 HTTP/1.1" 200 - +2025-12-29 02:00:37,785 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:00:37,887 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:00:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:01:37,481 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:01:37,583 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:01:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:02:37,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:02:37,891 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:02:42,881 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:42] "GET /api/dashboard/summary?_t=1766944962861 HTTP/1.1" 200 - +2025-12-29 02:02:43,191 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766944962861 HTTP/1.1" 200 - +2025-12-29 02:02:46,112 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:46] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 02:02:46,122 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:46] "GET /api/market/types?_t=1766944965779 HTTP/1.1" 200 - +2025-12-29 02:02:46,132 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:46] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 02:02:46,360 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-29 02:02:46,474 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:02:46,482 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:46] "GET /api/strategies?_t=1766944966250 HTTP/1.1" 200 - +2025-12-29 02:02:47,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:47] "GET /api/strategies/equityCurve?id=2&_t=1766944967043 HTTP/1.1" 200 - +2025-12-29 02:02:47,377 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:47] "GET /api/strategies/equityCurve?id=2&_t=1766944967043 HTTP/1.1" 200 - +2025-12-29 02:02:47,382 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:47] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766944967043 HTTP/1.1" 200 - +2025-12-29 02:02:47,496 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:47] "GET /api/strategies/positions?id=2&_t=1766944967045 HTTP/1.1" 200 - +2025-12-29 02:02:47,805 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:02:47,907 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:02:48,376 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:48] "GET /api/strategies/trades?id=2&_t=1766944968063 HTTP/1.1" 200 - +2025-12-29 02:02:48,643 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:02:48,643 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:02:49,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:02:49,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:02:49,824 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:49] "GET /api/strategies/equityCurve?id=1&_t=1766944969500 HTTP/1.1" 200 - +2025-12-29 02:02:49,830 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:49] "GET /api/strategies/equityCurve?id=1&_t=1766944969500 HTTP/1.1" 200 - +2025-12-29 02:02:49,835 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:49] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766944969500 HTTP/1.1" 200 - +2025-12-29 02:02:49,953 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:49] "GET /api/strategies/positions?id=1&_t=1766944969501 HTTP/1.1" 200 - +2025-12-29 02:02:49,958 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:49] "GET /api/strategies/trades?id=1&_t=1766944969501 HTTP/1.1" 200 - +2025-12-29 02:02:50,488 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:02:50,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:02:51,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:02:51,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:02:52,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:02:52,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:02:52,808 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:52] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766944972496 HTTP/1.1" 200 - +2025-12-29 02:02:53,124 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:53] "GET /api/strategies/equityCurve?id=2&_t=1766944973112 HTTP/1.1" 200 - +2025-12-29 02:02:53,437 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:53] "GET /api/strategies/equityCurve?id=2&_t=1766944973112 HTTP/1.1" 200 - +2025-12-29 02:02:53,440 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:53] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766944973112 HTTP/1.1" 200 - +2025-12-29 02:02:53,550 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:53] "GET /api/strategies/positions?id=2&_t=1766944973113 HTTP/1.1" 200 - +2025-12-29 02:02:53,555 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:53] "GET /api/strategies/trades?id=2&_t=1766944973113 HTTP/1.1" 200 - +2025-12-29 02:02:53,805 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:02:53,805 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:02:54,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:02:54,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:02:55,489 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:02:55,489 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:02:56,198 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:56] "GET /api/strategies/equityCurve?id=9&_t=1766944975875 HTTP/1.1" 200 - +2025-12-29 02:02:56,204 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:56] "GET /api/strategies/equityCurve?id=9&_t=1766944975875 HTTP/1.1" 200 - +2025-12-29 02:02:56,210 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:56] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766944975875 HTTP/1.1" 200 - +2025-12-29 02:02:56,215 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:56] "GET /api/strategies/positions?id=9&_t=1766944975876 HTTP/1.1" 200 - +2025-12-29 02:02:56,223 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:56] "GET /api/strategies/trades?id=9&_t=1766944975876 HTTP/1.1" 200 - +2025-12-29 02:02:56,491 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:02:56,491 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:02:57,360 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:57] "GET /api/dashboard/summary?_t=1766944977034 HTTP/1.1" 200 - +2025-12-29 02:02:57,366 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766944977034 HTTP/1.1" 200 - +2025-12-29 02:02:57,621 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:02:57,621 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:02:58,621 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:02:58,621 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:02:59,801 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:02:59,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:02:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:00,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:00,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:01,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:01,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:02,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:02,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:03,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:03,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:04,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:04,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:05,485 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=864.66, pending_signals=1 +2025-12-29 02:03:05,488 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 864.66, 'position_size': 0, 'timestamp': 1766944980}] +2025-12-29 02:03:05,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:05,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:06,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:06,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:07,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:07,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:08,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:08,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:12,336 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-29 02:03:12,340 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-29 02:03:12,759 - app.services.strategy - INFO - Found 3 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}, {'id': 9, 'strategy_type': 'IndicatorStrategy'}] +2025-12-29 02:03:12,759 - app - INFO - Restoring 3 running strategies... +2025-12-29 02:03:12,760 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-29 02:03:12,760 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-29 02:03:12,760 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-29 02:03:12,760 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-29 02:03:12,760 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-29 02:03:12,761 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-29 02:03:12,761 - app.services.trading_executor - INFO - Strategy 9 loop starting +2025-12-29 02:03:12,761 - app.services.trading_executor - INFO - Strategy 9 started +2025-12-29 02:03:12,761 - app - INFO - [OK] IndicatorStrategy 9 restored +2025-12-29 02:03:12,761 - app - INFO - Strategy restore completed: 3/3 restored +2025-12-29 02:03:12,761 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-29 02:03:12,762 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-29 02:03:12,772 - app.services.trading_executor - INFO - Strategy 9 derivatives trading; normalize market_type to: swap +2025-12-29 02:03:12,784 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-29 02:03:12,784 - werkzeug - INFO - Press CTRL+C to quit +2025-12-29 02:03:13,500 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:16,998 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=1, position=-1, entry_price=2945.85, highest=2948.54 +2025-12-29 02:03:17,018 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2025-12-29 02:03:17,099 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:17,101 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:17,102 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:17,104 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:17,104 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:17,106 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:17,106 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:17,279 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=1, position=-1, entry_price=87788.3, highest=87836.16 +2025-12-29 02:03:17,282 - app.services.trading_executor - INFO - ็ญ–็•ฅ 9 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-29 02:03:17,297 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2025-12-29 02:03:17,314 - app.services.trading_executor - INFO - Strategy 9 initialized; pending_signals=2 +2025-12-29 02:03:17,314 - app.services.trading_executor - INFO - Initial signals: [{'type': 'close_long', 'trigger_price': 864.82, 'position_size': 0, 'timestamp': 1766944920}, {'type': 'open_short', 'trigger_price': 864.82, 'position_size': 0.08, 'timestamp': 1766944920}] +2025-12-29 02:03:17,462 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=864.64, pending_signals=2 +2025-12-29 02:03:17,465 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 864.82, 'position_size': 0, 'timestamp': 1766944920}, {'type': 'open_short', 'trigger_price': 864.82, 'position_size': 0.08, 'timestamp': 1766944920}] +2025-12-29 02:03:17,472 - app.services.trading_executor - INFO - Strategy 9 signal executed: open_short @ 864.82 +2025-12-29 02:03:17,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:17,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:18,513 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:18,514 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:19,215 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=67, strategy_id=9, cfg={'exchange_id': 'binance', 'api_key': '9E46...x6ec', 'secret_key': 'I5uD...ykZh'}, err=Binance HTTP 400: {"code":-4061,"msg":"Order's position side does not match user's setting."} | debug: symbol=BNBUSDT side=SELL qty_req=0.17344649753705974 qty_norm=0.17 price_req=864.992964 price_norm=864.990 +2025-12-29 02:03:19,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:19,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:20,364 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=67, strategy_id=9, cfg={'exchange_id': 'binance', 'api_key': '9E46...x6ec', 'secret_key': 'I5uD...ykZh'}, err=Binance HTTP 400: {"code":-4061,"msg":"Order's position side does not match user's setting."} | debug: symbol=BNBUSDT side=SELL qty_req=0.17344649753705974 qty_norm=0.17 base_url=https://fapi.binance.com filtersSymbol=BNBUSDT contractType=PERPETUAL stepSize=0.01 quantityPrecision=2 minNotional=5 markPrice=865.16245096 notional=147.0776166632 +2025-12-29 02:03:20,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:20,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:21,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:21,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:22,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:22,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:23,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:23,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:23,799 - app.services.pending_order_worker - INFO - live notify: pending_id=67, strategy_id=9, ok=browser,email,telegram fail=- +2025-12-29 02:03:24,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:24,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:25,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:25,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:26,488 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:26,489 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:27,352 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=864.64, pending_signals=2 +2025-12-29 02:03:27,355 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 864.82, 'position_size': 0, 'timestamp': 1766944920}, {'type': 'open_short', 'trigger_price': 864.82, 'position_size': 0.08, 'timestamp': 1766944920}] +2025-12-29 02:03:27,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:27,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:28,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:28,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:29,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:29,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:30,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:30,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:31,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:31,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:32,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:32,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:33,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:33,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:34,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:34,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:35,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:35,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:36,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:36,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:37,463 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=864.45, pending_signals=2 +2025-12-29 02:03:37,466 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 864.82, 'position_size': 0, 'timestamp': 1766944920}, {'type': 'open_short', 'trigger_price': 864.82, 'position_size': 0.08, 'timestamp': 1766944920}] +2025-12-29 02:03:37,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:03:37,896 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:37,899 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:37,900 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:38,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:38,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:39,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:39,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:40,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:40,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:41,802 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:41,802 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:42,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:42,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:43,801 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:43,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:44,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:44,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:45,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:45,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:46,491 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:46,491 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:47,361 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=864.45, pending_signals=2 +2025-12-29 02:03:47,364 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 864.82, 'position_size': 0, 'timestamp': 1766944920}, {'type': 'open_short', 'trigger_price': 864.82, 'position_size': 0.08, 'timestamp': 1766944920}] +2025-12-29 02:03:47,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:47,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:48,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:48,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:49,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:49,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:50,489 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:50,490 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:51,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:51,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:52,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:52,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:53,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:53,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:54,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:54,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:55,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:55,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:56,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:56,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:57,463 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=863.8, pending_signals=2 +2025-12-29 02:03:57,491 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 864.82, 'position_size': 0, 'timestamp': 1766944920}, {'type': 'open_short', 'trigger_price': 864.82, 'position_size': 0.08, 'timestamp': 1766944920}] +2025-12-29 02:03:57,803 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:57,803 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:58,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:58,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:03:59,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:03:59,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:03:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:00,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:00,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:01,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:01,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:02,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:02,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:03,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:03,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:04,488 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:04,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:05,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:05,788 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:06,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:06,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:07,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:07,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:08,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:08,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:09,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:09,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:10,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:10,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:11,786 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:11,787 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:12,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:12,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:13,801 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:13,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:14,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:14,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:15,787 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:15,788 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:16,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:16,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:17,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:17,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:18,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:18,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:19,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:19,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:20,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:20,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:21,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:21,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:24,919 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-29 02:04:24,922 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-29 02:04:25,307 - app.services.strategy - INFO - Found 3 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}, {'id': 9, 'strategy_type': 'IndicatorStrategy'}] +2025-12-29 02:04:25,308 - app - INFO - Restoring 3 running strategies... +2025-12-29 02:04:25,308 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-29 02:04:25,308 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-29 02:04:25,308 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-29 02:04:25,309 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-29 02:04:25,309 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-29 02:04:25,309 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-29 02:04:25,309 - app.services.trading_executor - INFO - Strategy 9 loop starting +2025-12-29 02:04:25,309 - app.services.trading_executor - INFO - Strategy 9 started +2025-12-29 02:04:25,309 - app - INFO - [OK] IndicatorStrategy 9 restored +2025-12-29 02:04:25,310 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-29 02:04:25,310 - app - INFO - Strategy restore completed: 3/3 restored +2025-12-29 02:04:25,310 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-29 02:04:25,324 - app.services.trading_executor - INFO - Strategy 9 derivatives trading; normalize market_type to: swap +2025-12-29 02:04:25,338 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-29 02:04:25,339 - werkzeug - INFO - Press CTRL+C to quit +2025-12-29 02:04:25,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:29,881 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=1, position=-1, entry_price=2945.85, highest=2948.54 +2025-12-29 02:04:29,902 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2025-12-29 02:04:29,983 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:29,996 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=1, position=-1, entry_price=87788.3, highest=87836.16 +2025-12-29 02:04:29,997 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:30,000 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:30,001 - app.services.trading_executor - INFO - ็ญ–็•ฅ 9 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-29 02:04:30,031 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2025-12-29 02:04:30,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:30,060 - app.services.trading_executor - INFO - Strategy 9 initialized; pending_signals=0 +2025-12-29 02:04:30,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:30,131 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:30] "GET /api/dashboard/summary?_t=1766945068387 HTTP/1.1" 200 - +2025-12-29 02:04:30,142 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766945068387 HTTP/1.1" 200 - +2025-12-29 02:04:30,146 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:30,147 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:30,310 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:30,311 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:30,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:30,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:31,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:31,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:32,787 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:32,788 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:33,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:33,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:34,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:34,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:35,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:35,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:36,786 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:36,787 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:37,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:37,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:37,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:04:37,900 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:38,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:38,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:39,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:39,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:40,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:40,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:41,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:41,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:42,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:42,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:43,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:43,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:44,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:44,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:45,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:45,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:46,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:46,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:47,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:47,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:48,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:48,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:49,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:49,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:50,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:50,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:51,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:51,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:52,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:52,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:53,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:53,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:54,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:54,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:55,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:55,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:56,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:56,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:57,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:57,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:58,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:58,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:04:59,062 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:59] "GET /api/dashboard/summary?_t=1766945098821 HTTP/1.1" 200 - +2025-12-29 02:04:59,142 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:59] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766945098821 HTTP/1.1" 200 - +2025-12-29 02:04:59,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:04:59,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:04:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:00,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:00,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:01,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:01,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:02,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:02,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:03,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:03,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:04,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:04,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:05,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:05,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:06,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:06,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:07,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:07,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:08,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:08,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:09,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:09,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:10,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:10,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:11,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:11,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:12,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:12,788 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:13,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:13,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:14,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:14,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:15,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:15,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:16,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:16,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:17,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:17,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:18,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:18,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:19,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:19,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:20,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:20,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:21,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:21,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:22,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:22,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:23,488 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:23,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:24,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:24,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:25,500 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:25,501 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:26,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:26,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:27,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:27,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:28,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:28,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:29,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:29,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:30,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:30,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:31,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:31,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:32,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:32,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:33,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:33,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:34,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:34,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:35,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:35,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:36,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:36,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:37,477 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:05:37,579 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:37,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:37,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:38,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:38,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:39,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:39,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:40,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:40,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:41,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:41,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:42,785 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:42,786 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:43,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:43,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:44,786 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:44,787 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:45,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:45,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:46,787 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:46,788 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:47,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:47,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:48,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:48,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:49,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:49,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:50,801 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:50,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:51,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:51,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:52,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:52,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:53,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:53,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:54,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:54,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:55,492 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:55,493 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:56,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:56,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:57,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:57,484 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:58,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:58,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:05:59,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:05:59,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:05:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:00,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:00,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:01,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:01,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:02,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:02,788 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:03,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:03,484 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:04,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:04,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:05,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:05,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:06,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:06,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:07,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:07,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:08,786 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:08,787 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:09,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:09,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:10,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:10,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:11,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:11,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:12,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:12,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:13,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:13,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:14,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:14,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:15,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:15,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:16,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:16,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:17,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:17,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:18,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:18,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:19,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:19,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:20,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:20,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:21,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:21,484 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:22,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:22,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:23,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:23,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:24,802 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:24,802 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:25,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:25,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:26,786 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:26,787 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:27,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:27,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:28,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:28,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:29,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:29,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:30,803 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:30,803 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:31,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:31,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:32,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:32,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:33,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:33,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:34,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:34,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:35,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:35,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:36,802 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:36,803 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:37,476 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:06:37,578 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:37,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:37,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:38,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:38,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:39,489 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:39,490 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:40,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:40,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:41,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:41,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:42,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:42,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:43,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:43,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:44,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:44,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:45,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:45,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:46,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:46,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:47,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:47,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:48,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:48,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:49,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:49,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:50,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:50,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:51,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:51,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:52,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:52,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:53,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:53,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:54,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:54,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:55,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:55,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:56,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:56,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:57,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:57,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:58,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:58,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:06:59,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:06:59,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:06:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:00,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:00,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:01,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:01,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:02,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:02,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:03,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:03,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:04,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:04,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:05,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:05,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:06,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:06,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:07,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:07,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:08,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:08,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:09,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:09,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:10,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:10,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:11,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:11,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:12,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:12,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:13,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:13,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:14,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:14,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:15,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:15,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:16,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:16,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:17,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:17,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:18,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:18,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:19,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:19,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:20,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:20,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:21,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:21,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:22,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:22,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:23,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:23,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:24,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:24,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:25,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:25,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:26,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:26,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:27,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:27,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:28,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:28,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:29,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:29,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:30,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:30,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:31,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:31,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:32,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:32,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:33,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:33,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:34,787 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:34,788 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:35,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:35,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:36,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:36,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:37,480 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:07:37,581 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:37,801 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:37,802 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:38,786 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:38,787 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:39,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:39,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:40,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:40,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:41,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:41,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:42,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:42,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:43,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:43,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:44,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:44,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:45,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:45,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:46,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:46,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:47,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:47,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:48,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:48,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:49,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:49,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:50,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:50,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:51,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:51,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:52,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:52,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:53,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:53,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:54,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:54,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:55,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:55,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:56,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:56,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:57,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:57,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:58,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:58,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:07:59,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:07:59,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:07:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:00,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:00,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:01,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:01,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:02,801 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:02,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:03,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:03,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:04,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:04,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:05,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:05,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:06,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:06,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:07,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:07,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:08,786 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:08,787 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:09,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:09,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:10,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:10,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:11,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:11,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:12,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:12,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:13,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:13,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:14,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:14,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:15,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:15,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:16,801 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:16,802 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:17,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:17,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:18,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:18,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:19,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:19,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:20,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:20,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:21,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:21,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:22,787 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:22,787 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:23,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:23,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:24,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:24,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:25,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:25,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:26,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:26,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:27,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:27,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:28,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:28,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:29,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:29,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:30,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:30,788 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:31,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:31,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:32,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:32,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:33,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:33,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:34,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:34,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:35,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:35,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:36,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:36,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:37,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:08:37,589 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:37,805 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:37,805 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:38,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:38,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:39,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:39,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:40,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:40,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:41,488 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:41,489 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:42,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:42,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:43,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:43,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:44,801 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:44,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:45,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:45,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:46,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:46,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:47,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:47,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:48,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:48,788 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:49,489 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:49,489 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:50,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:50,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:51,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:51,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:52,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:52,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:53,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:53,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:54,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:54,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:55,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:55,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:56,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:56,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:57,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:57,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:58,801 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:58,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:08:59,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:08:59,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:08:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:00,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:00,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:01,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:01,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:02,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:02,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:03,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:03,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:04,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:04,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:05,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:05,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:06,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:06,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:07,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:07,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:08,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:08,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:09,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:09,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:10,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:10,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:11,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:11,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:12,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:12,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:13,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:13,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:14,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:14,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:15,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:15,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:18,795 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-29 02:09:18,800 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-29 02:09:19,230 - app.services.strategy - INFO - Found 3 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}, {'id': 9, 'strategy_type': 'IndicatorStrategy'}] +2025-12-29 02:09:19,230 - app - INFO - Restoring 3 running strategies... +2025-12-29 02:09:19,231 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-29 02:09:19,231 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-29 02:09:19,231 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-29 02:09:19,231 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-29 02:09:19,231 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-29 02:09:19,231 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-29 02:09:19,231 - app.services.trading_executor - INFO - Strategy 9 loop starting +2025-12-29 02:09:19,231 - app.services.trading_executor - INFO - Strategy 9 started +2025-12-29 02:09:19,232 - app - INFO - [OK] IndicatorStrategy 9 restored +2025-12-29 02:09:19,232 - app - INFO - Strategy restore completed: 3/3 restored +2025-12-29 02:09:19,232 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-29 02:09:19,232 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-29 02:09:19,242 - app.services.trading_executor - INFO - Strategy 9 derivatives trading; normalize market_type to: swap +2025-12-29 02:09:19,259 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-29 02:09:19,259 - werkzeug - INFO - Press CTRL+C to quit +2025-12-29 02:09:19,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:23,272 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=1, position=-1, entry_price=87788.3, highest=87836.16 +2025-12-29 02:09:23,290 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2025-12-29 02:09:23,290 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=1, position=-1, entry_price=2945.85, highest=2948.54 +2025-12-29 02:09:23,308 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2025-12-29 02:09:23,349 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:23,351 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:23,351 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:23,353 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:23,353 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:23,355 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:23,355 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:23,407 - app.services.trading_executor - INFO - ็ญ–็•ฅ 9 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-29 02:09:23,426 - app.services.trading_executor - INFO - Strategy 9 initialized; pending_signals=0 +2025-12-29 02:09:23,801 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:23,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:24,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:24,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:25,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:25,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:26,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:26,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:27,521 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:27] "GET /api/dashboard/summary?_t=1766945367187 HTTP/1.1" 200 - +2025-12-29 02:09:27,532 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766945367187 HTTP/1.1" 200 - +2025-12-29 02:09:27,770 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:27,771 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:28,492 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:28,492 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:29,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:29,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:30,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:30,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:31,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:31,788 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:31,998 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:31] "DELETE /api/dashboard/pendingOrders/67 HTTP/1.1" 200 - +2025-12-29 02:09:32,092 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766945372076 HTTP/1.1" 200 - +2025-12-29 02:09:32,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:32,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:33,489 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:33,490 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:34,176 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:34] "DELETE /api/dashboard/pendingOrders/66 HTTP/1.1" 200 - +2025-12-29 02:09:34,425 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766945374247 HTTP/1.1" 200 - +2025-12-29 02:09:34,562 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:34,563 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:35,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:35,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:36,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:36,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:37,036 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:37] "GET /api/dashboard/summary?_t=1766945376717 HTTP/1.1" 200 - +2025-12-29 02:09:37,043 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766945376717 HTTP/1.1" 200 - +2025-12-29 02:09:37,489 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:09:37,592 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:37,806 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:37,806 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:38,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:38,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:39,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:39,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:40,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:40,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:41,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:41,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:42,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:42,788 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:43,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:43,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:44,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:44,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:45,488 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:45,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:46,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:46,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:47,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:47,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:48,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:48,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:49,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:49,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:50,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:50,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:51,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:51,484 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:52,801 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:52,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:53,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:53,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:54,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:54,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:55,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:55,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:56,404 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:56] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 02:09:56,569 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:56] "GET /api/market/config?_t=1766945396387 HTTP/1.1" 200 - +2025-12-29 02:09:56,860 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-29 02:09:56,860 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-29 02:09:56,860 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-29 02:09:56,860 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-29 02:09:56,860 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-29 02:09:57,607 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (220198s) +2025-12-29 02:09:57,939 - app.data_sources.base - WARNING - Warning: 000858 data is delayed (266998s) +2025-12-29 02:09:57,956 - app.data_sources.base - WARNING - Warning: 300475 data is delayed (266998s) +2025-12-29 02:09:57,972 - app.data_sources.base - WARNING - Warning: 600519 data is delayed (266998s) +2025-12-29 02:09:58,293 - app.data_sources.base - WARNING - Warning: 00700 data is delayed (439798s) +2025-12-29 02:09:58,294 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:58] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 02:09:58,298 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:58,298 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:58,301 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:58] "GET /api/market/types?_t=1766945396583 HTTP/1.1" 200 - +2025-12-29 02:09:58,303 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:58,304 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:58,308 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:58] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 02:09:58,316 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:58] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 02:09:58,623 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:58] "GET /api/market/types?_t=1766945397679 HTTP/1.1" 200 - +2025-12-29 02:09:58,630 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-29 02:09:58,924 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:58,927 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:58,928 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:59,866 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:09:59,867 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:09:59,907 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:59] "GET /api/dashboard/summary?_t=1766945399585 HTTP/1.1" 200 - +2025-12-29 02:09:59,918 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:09:59] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766945399586 HTTP/1.1" 200 - +2025-12-29 02:10:00,490 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:00,490 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:01,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:01,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:02,490 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:02,491 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:03,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:03,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:04,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:04,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:05,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:05,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:06,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:06,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:07,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:07,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:08,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:08,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:09,803 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:09,803 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:10,393 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:10] "GET /api/strategies?_t=1766945410379 HTTP/1.1" 200 - +2025-12-29 02:10:10,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:10,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:11,488 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:11,489 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:12,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:12,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:13,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:13,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:14,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:14,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:15,230 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:15] "GET /api/strategies/equityCurve?id=1&_t=1766945415217 HTTP/1.1" 200 - +2025-12-29 02:10:15,720 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:15] "GET /api/strategies/equityCurve?id=1&_t=1766945415217 HTTP/1.1" 200 - +2025-12-29 02:10:15,727 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:15] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766945415217 HTTP/1.1" 200 - +2025-12-29 02:10:15,846 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:15] "GET /api/strategies/positions?id=1&_t=1766945415219 HTTP/1.1" 200 - +2025-12-29 02:10:15,850 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:15,851 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:16,810 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:16,810 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:17,524 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:17,524 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:17,955 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:17] "GET /api/strategies/trades?id=1&_t=1766945417640 HTTP/1.1" 200 - +2025-12-29 02:10:18,216 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:18] "GET /api/strategies/notifications?id=1&since_id=2&limit=50&_t=1766945418208 HTTP/1.1" 200 - +2025-12-29 02:10:18,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:18,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:19,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:19,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:20,650 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:20] "GET /api/strategies/positions?id=1&_t=1766945420214 HTTP/1.1" 200 - +2025-12-29 02:10:20,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:20,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:21,115 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:21] "GET /api/strategies/equityCurve?id=2&_t=1766945421102 HTTP/1.1" 200 - +2025-12-29 02:10:21,419 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:21] "GET /api/strategies/equityCurve?id=2&_t=1766945421102 HTTP/1.1" 200 - +2025-12-29 02:10:21,423 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:21] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766945421102 HTTP/1.1" 200 - +2025-12-29 02:10:21,533 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:21] "GET /api/strategies/positions?id=2&_t=1766945421104 HTTP/1.1" 200 - +2025-12-29 02:10:21,537 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:21] "GET /api/strategies/trades?id=2&_t=1766945421104 HTTP/1.1" 200 - +2025-12-29 02:10:21,801 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:21,802 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:22,801 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:22,802 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:23,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:23,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:24,415 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:24] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766945424099 HTTP/1.1" 200 - +2025-12-29 02:10:24,679 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:24,679 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:25,489 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:25,490 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:26,527 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:26] "GET /api/strategies/positions?id=2&_t=1766945426104 HTTP/1.1" 200 - +2025-12-29 02:10:26,677 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:26,678 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:26,837 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:26] "GET /api/strategies/equityCurve?id=9&_t=1766945426827 HTTP/1.1" 200 - +2025-12-29 02:10:27,148 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:27] "GET /api/strategies/equityCurve?id=9&_t=1766945426827 HTTP/1.1" 200 - +2025-12-29 02:10:27,153 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:27] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766945426827 HTTP/1.1" 200 - +2025-12-29 02:10:27,156 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:27] "GET /api/strategies/positions?id=9&_t=1766945426828 HTTP/1.1" 200 - +2025-12-29 02:10:27,160 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:27] "GET /api/strategies/trades?id=9&_t=1766945426828 HTTP/1.1" 200 - +2025-12-29 02:10:27,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:27,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:28,160 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:28] "GET /api/strategies/equityCurve?id=2&_t=1766945428150 HTTP/1.1" 200 - +2025-12-29 02:10:28,471 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:28] "GET /api/strategies/equityCurve?id=2&_t=1766945428150 HTTP/1.1" 200 - +2025-12-29 02:10:28,474 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:28] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766945428150 HTTP/1.1" 200 - +2025-12-29 02:10:28,586 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:28] "GET /api/strategies/positions?id=2&_t=1766945428151 HTTP/1.1" 200 - +2025-12-29 02:10:28,592 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:28] "GET /api/strategies/trades?id=2&_t=1766945428151 HTTP/1.1" 200 - +2025-12-29 02:10:28,847 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:28,848 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:29,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:29,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:30,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:30,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:31,495 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:31,495 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:32,491 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:32,492 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:33,866 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:33,867 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:33,912 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:33] "GET /api/strategies?_t=1766945433595 HTTP/1.1" 200 - +2025-12-29 02:10:34,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:34,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:35,859 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:35,861 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:35,998 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:35] "GET /api/market/types?_t=1766945435682 HTTP/1.1" 200 - +2025-12-29 02:10:36,004 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:36] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 02:10:36,013 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:36] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 02:10:36,120 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-29 02:10:36,122 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:36,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:36,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:37,472 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:37,473 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:37,534 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:37] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 02:10:37,542 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:37] "GET /api/market/config?_t=1766945437202 HTTP/1.1" 200 - +2025-12-29 02:10:37,732 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:37,733 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:37,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:10:37,978 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:37,983 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 02:10:37,988 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:37] "GET /api/market/types?_t=1766945437561 HTTP/1.1" 200 - +2025-12-29 02:10:38,494 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:38,495 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:39,597 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:39] "GET /api/dashboard/summary?_t=1766945439280 HTTP/1.1" 200 - +2025-12-29 02:10:39,605 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:39] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766945439280 HTTP/1.1" 200 - +2025-12-29 02:10:39,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:39,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:40,489 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:40,490 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:41,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:41,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:42,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:42,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:43,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:43,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:44,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:44,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:45,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:45,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:46,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:46,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:47,802 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:47,802 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:48,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:48,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:49,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:49,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:50,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:50,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:51,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:51,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:52,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:52,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:53,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:53,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:54,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:54,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:55,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:55,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:56,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:56,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:57,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:57,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:58,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:58,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:10:59,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:10:59,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:10:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:00,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:00,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:01,786 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:01,787 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:02,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:02,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:03,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:03,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:04,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:04,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:05,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:05,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:06,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:06,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:07,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:07,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:08,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:08,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:09,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:09,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:10,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:10,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:11,802 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:11,803 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:12,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:12,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:13,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:13,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:14,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:14,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:15,787 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:15,787 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:16,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:16,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:17,802 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:17,803 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:18,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:18,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:19,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:19,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:20,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:20,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:21,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:21,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:22,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:22,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:23,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:23,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:24,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:24,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:25,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:25,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:26,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:26,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:27,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:27,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:28,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:28,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:29,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:29,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:30,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:30,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:31,802 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:31,802 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:32,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:32,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:33,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:33,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:34,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:34,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:35,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:35,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:36,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:36,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:37,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:37,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:37,801 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:11:37,902 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:38,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:38,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:39,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:39,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:40,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:40,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:41,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:41,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:42,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:42,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:43,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:43,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:44,492 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:44,493 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:45,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:45,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:46,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:46,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:47,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:47,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:48,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:48,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:49,801 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:49,802 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:50,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:50,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:51,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:51,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:52,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:52,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:53,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:53,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:54,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:54,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:55,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:55,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:56,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:56,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:57,801 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:57,802 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:58,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:58,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:11:59,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:11:59,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:11:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:00,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:00,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:01,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:01,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:02,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:02,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:03,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:03,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:04,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:04,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:05,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:05,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:06,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:06,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:07,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:07,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:08,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:08,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:09,804 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:09,805 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:10,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:10,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:11,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:11,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:12,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:12,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:13,802 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:13,802 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:14,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:14,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:15,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:15,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:16,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:16,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:17,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:17,788 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:18,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:18,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:19,801 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:19,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:20,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:20,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:21,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:21,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:22,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:22,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:23,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:23,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:24,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:24,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:25,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:25,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:26,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:26,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:27,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:27,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:28,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:28,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:29,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:29,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:30,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:30,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:31,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:31,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:32,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:32,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:33,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:33,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:34,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:34,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:35,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:35,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:36,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:36,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:37,784 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:12:37,886 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:37,888 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:37,889 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:38,488 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:38,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:39,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:39,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:40,496 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:40,497 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:41,801 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:41,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:42,488 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:42,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:43,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:43,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:44,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:44,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:45,807 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:45,808 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:46,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:46,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:47,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:47,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:48,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:48,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:49,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:49,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:50,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:50,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:51,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:51,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:52,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:52,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:53,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:53,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:54,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:54,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:55,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:55,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:56,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:56,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:57,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:57,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:58,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:58,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:12:59,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:12:59,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:12:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:00,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:00,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:01,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:01,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:02,492 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:02,494 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:03,511 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87712.89, pending_signals=1 +2025-12-29 02:13:03,520 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87712.89, 'position_size': 0, 'timestamp': 1766945580}] +2025-12-29 02:13:03,528 - app.services.trading_executor - INFO - Strategy 2 signal executed: close_short @ 87712.89 +2025-12-29 02:13:03,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:03,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:04,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:04,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:05,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:05,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:06,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:06,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:07,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:07,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:08,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:08,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:09,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:09,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:10,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:10,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:11,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:11,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:12,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:12,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:13,417 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87712.89, pending_signals=1 +2025-12-29 02:13:13,427 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87712.89, 'position_size': 0, 'timestamp': 1766945580}] +2025-12-29 02:13:13,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:13,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:14,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:14,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:15,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:15,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:16,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:16,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:17,216 - app.services.pending_order_worker - INFO - live notify: pending_id=68, strategy_id=2, ok=browser,email,telegram fail=- +2025-12-29 02:13:17,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:17,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:18,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:18,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:19,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:19,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:20,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:20,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:21,802 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:21,802 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:22,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:22,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:23,630 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87705.46, pending_signals=2 +2025-12-29 02:13:23,632 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87712.89, 'position_size': 0, 'timestamp': 1766945520}] +2025-12-29 02:13:23,785 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:23,786 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:24,492 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:24,493 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:25,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:25,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:26,490 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:26,491 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:27,787 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:27,788 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:28,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:28,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:29,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:29,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:30,301 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:30] "GET /api/dashboard/summary?_t=1766945610284 HTTP/1.1" 200 - +2025-12-29 02:13:30,601 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766945610284 HTTP/1.1" 200 - +2025-12-29 02:13:30,813 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:30,814 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:31,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:31,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:32,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:32,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:33,415 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87705.46, pending_signals=2 +2025-12-29 02:13:33,417 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87712.89, 'position_size': 0, 'timestamp': 1766945520}] +2025-12-29 02:13:33,801 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:33,802 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:34,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:34,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:35,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:35,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:36,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:36,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:37,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:13:37,892 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:37,894 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:37,895 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:38,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:38,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:39,264 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:39] "GET /api/strategies?_t=1766945618940 HTTP/1.1" 200 - +2025-12-29 02:13:39,525 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:39,526 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:40,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:40,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:41,115 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:41] "GET /api/strategies/equityCurve?id=2&_t=1766945620737 HTTP/1.1" 200 - +2025-12-29 02:13:41,119 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:41] "GET /api/strategies/equityCurve?id=2&_t=1766945620737 HTTP/1.1" 200 - +2025-12-29 02:13:41,122 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:41] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766945620737 HTTP/1.1" 200 - +2025-12-29 02:13:41,128 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:41] "GET /api/strategies/positions?id=2&_t=1766945620739 HTTP/1.1" 200 - +2025-12-29 02:13:41,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:41,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:42,597 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:42] "GET /api/strategies/trades?id=2&_t=1766945622273 HTTP/1.1" 200 - +2025-12-29 02:13:42,943 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:42,944 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:43,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:43,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:43,522 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87705.46, pending_signals=2 +2025-12-29 02:13:43,524 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87712.89, 'position_size': 0, 'timestamp': 1766945520}] +2025-12-29 02:13:44,041 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:44] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945623730 HTTP/1.1" 200 - +2025-12-29 02:13:44,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:44,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:45,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:45,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:46,044 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:46] "GET /api/strategies/positions?id=2&_t=1766945625735 HTTP/1.1" 200 - +2025-12-29 02:13:46,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:46,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:47,040 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:47] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945626731 HTTP/1.1" 200 - +2025-12-29 02:13:47,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:47,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:48,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:48,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:49,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:49,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:50,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:50] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945629731 HTTP/1.1" 200 - +2025-12-29 02:13:50,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:50,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:51,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:51] "GET /api/strategies/positions?id=2&_t=1766945630735 HTTP/1.1" 200 - +2025-12-29 02:13:51,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:51,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:52,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:52,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:53,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:53] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945632730 HTTP/1.1" 200 - +2025-12-29 02:13:53,418 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87705.46, pending_signals=2 +2025-12-29 02:13:53,420 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87712.89, 'position_size': 0, 'timestamp': 1766945520}] +2025-12-29 02:13:53,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:53,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:54,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:54,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:55,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:55,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:56,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:56] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945635731 HTTP/1.1" 200 - +2025-12-29 02:13:56,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:56] "GET /api/strategies/positions?id=2&_t=1766945635735 HTTP/1.1" 200 - +2025-12-29 02:13:56,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:56,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:57,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:57,788 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:58,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:58,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:13:59,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:59] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945638731 HTTP/1.1" 200 - +2025-12-29 02:13:59,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:13:59,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:13:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:00,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:00,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:01,061 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:01] "GET /api/strategies/positions?id=2&_t=1766945640735 HTTP/1.1" 200 - +2025-12-29 02:14:01,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:01,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:02,039 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:02] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945641730 HTTP/1.1" 200 - +2025-12-29 02:14:02,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:02,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:03,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:03,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:04,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:04,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:05,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:05] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945644730 HTTP/1.1" 200 - +2025-12-29 02:14:05,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:05,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:06,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:06] "GET /api/strategies/positions?id=2&_t=1766945645735 HTTP/1.1" 200 - +2025-12-29 02:14:06,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:06,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:07,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:07,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:08,043 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:08] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945647731 HTTP/1.1" 200 - +2025-12-29 02:14:08,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:08,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:09,802 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:09,802 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:10,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:10,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:11,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:11] "GET /api/strategies/equityCurve?id=2&_t=1766945650731 HTTP/1.1" 200 - +2025-12-29 02:14:11,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:11] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945650732 HTTP/1.1" 200 - +2025-12-29 02:14:11,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:11] "GET /api/strategies/positions?id=2&_t=1766945650748 HTTP/1.1" 200 - +2025-12-29 02:14:11,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:11,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:12,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:12,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:13,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:13,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:14,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:14] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945653730 HTTP/1.1" 200 - +2025-12-29 02:14:14,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:14,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:15,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:15,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:16,046 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:16] "GET /api/strategies/positions?id=2&_t=1766945655736 HTTP/1.1" 200 - +2025-12-29 02:14:16,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:16,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:17,046 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:17] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945656731 HTTP/1.1" 200 - +2025-12-29 02:14:17,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:17,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:18,786 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:18,787 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:19,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:19,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:20,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:20] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945659730 HTTP/1.1" 200 - +2025-12-29 02:14:20,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:20,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:21,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:21] "GET /api/strategies/positions?id=2&_t=1766945660736 HTTP/1.1" 200 - +2025-12-29 02:14:21,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:21,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:22,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:22,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:23,044 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:23] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945662730 HTTP/1.1" 200 - +2025-12-29 02:14:23,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:23,586 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:24,801 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:24,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:25,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:25,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:26,040 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:26] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945665731 HTTP/1.1" 200 - +2025-12-29 02:14:26,046 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:26] "GET /api/strategies/positions?id=2&_t=1766945665736 HTTP/1.1" 200 - +2025-12-29 02:14:26,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:26,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:27,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:27,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:28,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:28,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:29,040 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:29] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945668730 HTTP/1.1" 200 - +2025-12-29 02:14:29,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:29,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:30,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:30,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:31,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:31] "GET /api/strategies/positions?id=2&_t=1766945670736 HTTP/1.1" 200 - +2025-12-29 02:14:31,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:31,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:32,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:32] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945671731 HTTP/1.1" 200 - +2025-12-29 02:14:32,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:32,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:33,802 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:33,803 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:34,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:34,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:35,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:35] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945674731 HTTP/1.1" 200 - +2025-12-29 02:14:35,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:35,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:36,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:36] "GET /api/strategies/positions?id=2&_t=1766945675736 HTTP/1.1" 200 - +2025-12-29 02:14:36,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:36,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:37,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:14:37,891 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:37,893 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:37,894 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:38,043 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:38] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945677730 HTTP/1.1" 200 - +2025-12-29 02:14:38,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:38,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:39,804 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:39,805 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:40,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:40,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:41,043 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:41] "GET /api/strategies/equityCurve?id=2&_t=1766945680731 HTTP/1.1" 200 - +2025-12-29 02:14:41,046 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:41] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945680731 HTTP/1.1" 200 - +2025-12-29 02:14:41,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:41] "GET /api/strategies/positions?id=2&_t=1766945680735 HTTP/1.1" 200 - +2025-12-29 02:14:41,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:41,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:42,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:42,788 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:43,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:43,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:44,044 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:44] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945683731 HTTP/1.1" 200 - +2025-12-29 02:14:44,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:44,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:45,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:45,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:46,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:46] "GET /api/strategies/positions?id=2&_t=1766945685735 HTTP/1.1" 200 - +2025-12-29 02:14:46,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:46,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:47,045 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:47] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945686731 HTTP/1.1" 200 - +2025-12-29 02:14:47,497 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:47,497 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:48,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:48,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:49,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:49,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:50,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:50] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945689730 HTTP/1.1" 200 - +2025-12-29 02:14:50,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:50,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:51,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:51] "GET /api/strategies/positions?id=2&_t=1766945690736 HTTP/1.1" 200 - +2025-12-29 02:14:51,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:51,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:52,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:52,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:53,043 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:53] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945692731 HTTP/1.1" 200 - +2025-12-29 02:14:53,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:53,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:54,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:54,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:55,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:55,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:56,045 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:56] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945695731 HTTP/1.1" 200 - +2025-12-29 02:14:56,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:56] "GET /api/strategies/positions?id=2&_t=1766945695735 HTTP/1.1" 200 - +2025-12-29 02:14:56,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:56,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:57,786 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:57,786 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:58,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:58,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:14:59,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:59] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945698731 HTTP/1.1" 200 - +2025-12-29 02:14:59,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:14:59,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:14:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:00,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:00,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:01,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:01] "GET /api/strategies/positions?id=2&_t=1766945700736 HTTP/1.1" 200 - +2025-12-29 02:15:01,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:01,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:02,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:02] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945701731 HTTP/1.1" 200 - +2025-12-29 02:15:02,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:02,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:03,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:03,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:04,496 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:04,496 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:05,042 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:05] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945704730 HTTP/1.1" 200 - +2025-12-29 02:15:05,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:05,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:06,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:06] "GET /api/strategies/positions?id=2&_t=1766945705735 HTTP/1.1" 200 - +2025-12-29 02:15:06,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:06,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:07,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:07,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:08,041 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:08] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945707730 HTTP/1.1" 200 - +2025-12-29 02:15:08,488 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:08,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:09,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:09,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:10,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:10,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:11,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:11] "GET /api/strategies/equityCurve?id=2&_t=1766945710731 HTTP/1.1" 200 - +2025-12-29 02:15:11,059 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:11] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945710731 HTTP/1.1" 200 - +2025-12-29 02:15:11,062 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:11] "GET /api/strategies/positions?id=2&_t=1766945710736 HTTP/1.1" 200 - +2025-12-29 02:15:11,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:11,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:12,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:12,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:13,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:13,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:14,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:14] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945713731 HTTP/1.1" 200 - +2025-12-29 02:15:14,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:14,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:15,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:15,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:16,046 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:16] "GET /api/strategies/positions?id=2&_t=1766945715736 HTTP/1.1" 200 - +2025-12-29 02:15:16,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:16,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:17,045 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:17] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945716731 HTTP/1.1" 200 - +2025-12-29 02:15:17,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:17,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:18,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:18,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:19,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:19,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:20,041 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:20] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945719730 HTTP/1.1" 200 - +2025-12-29 02:15:20,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:20,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:21,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:21] "GET /api/strategies/positions?id=2&_t=1766945720735 HTTP/1.1" 200 - +2025-12-29 02:15:21,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:21,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:22,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:22,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:23,038 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:23] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945722731 HTTP/1.1" 200 - +2025-12-29 02:15:23,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:23,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:24,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:24,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:25,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:25,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:26,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:26] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945725730 HTTP/1.1" 200 - +2025-12-29 02:15:26,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:26] "GET /api/strategies/positions?id=2&_t=1766945725745 HTTP/1.1" 200 - +2025-12-29 02:15:26,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:26,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:27,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:27,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:28,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:28,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:29,040 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:29] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945728731 HTTP/1.1" 200 - +2025-12-29 02:15:29,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:29,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:30,953 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:30,954 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:31,045 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:31] "GET /api/strategies/positions?id=2&_t=1766945730736 HTTP/1.1" 200 - +2025-12-29 02:15:31,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:31,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:32,046 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:32] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945731731 HTTP/1.1" 200 - +2025-12-29 02:15:32,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:32,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:33,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:33,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:34,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:34,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:35,041 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:35] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945734731 HTTP/1.1" 200 - +2025-12-29 02:15:35,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:35,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:36,044 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:36] "GET /api/strategies/positions?id=2&_t=1766945735735 HTTP/1.1" 200 - +2025-12-29 02:15:36,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:36,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:37,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:15:37,892 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:37,895 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:37,895 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:38,039 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:38] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945737731 HTTP/1.1" 200 - +2025-12-29 02:15:38,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:38,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:39,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:39,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:40,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:40,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:41,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:41] "GET /api/strategies/equityCurve?id=2&_t=1766945740731 HTTP/1.1" 200 - +2025-12-29 02:15:41,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:41] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945740731 HTTP/1.1" 200 - +2025-12-29 02:15:41,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:41] "GET /api/strategies/positions?id=2&_t=1766945740735 HTTP/1.1" 200 - +2025-12-29 02:15:41,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:41,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:42,810 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:42,811 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:43,488 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:43,489 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:44,042 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:44] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945743731 HTTP/1.1" 200 - +2025-12-29 02:15:44,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:44,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:45,802 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:45,802 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:46,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:46] "GET /api/strategies/positions?id=2&_t=1766945745735 HTTP/1.1" 200 - +2025-12-29 02:15:46,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:46,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:47,042 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:47] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945746730 HTTP/1.1" 200 - +2025-12-29 02:15:47,488 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:47,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:48,785 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:48,786 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:49,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:49,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:50,045 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:50] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945749731 HTTP/1.1" 200 - +2025-12-29 02:15:50,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:50,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:51,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:51] "GET /api/strategies/positions?id=2&_t=1766945750736 HTTP/1.1" 200 - +2025-12-29 02:15:51,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:51,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:52,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:52,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:53,041 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:53] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945752731 HTTP/1.1" 200 - +2025-12-29 02:15:53,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:53,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:54,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:54,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:55,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:55,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:56,039 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:56] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945755731 HTTP/1.1" 200 - +2025-12-29 02:15:56,045 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:56] "GET /api/strategies/positions?id=2&_t=1766945755736 HTTP/1.1" 200 - +2025-12-29 02:15:56,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:56,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:57,803 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:57,803 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:58,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:58,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:15:59,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:59] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945758731 HTTP/1.1" 200 - +2025-12-29 02:15:59,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:15:59,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:15:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:00,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:00,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:01,043 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:01] "GET /api/strategies/positions?id=2&_t=1766945760735 HTTP/1.1" 200 - +2025-12-29 02:16:01,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:01,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:02,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:02] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945761731 HTTP/1.1" 200 - +2025-12-29 02:16:02,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:02,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:03,536 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87538.97, pending_signals=1 +2025-12-29 02:16:03,538 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87538.97, 'position_size': 0, 'timestamp': 1766945760}] +2025-12-29 02:16:03,787 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:03,787 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:04,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:04,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:05,040 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:05] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945764730 HTTP/1.1" 200 - +2025-12-29 02:16:05,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:05,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:06,044 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:06] "GET /api/strategies/positions?id=2&_t=1766945765735 HTTP/1.1" 200 - +2025-12-29 02:16:06,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:06,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:07,786 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:07,787 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:08,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:08] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945767732 HTTP/1.1" 200 - +2025-12-29 02:16:08,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:08,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:09,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:09,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:10,499 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:10,499 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:11,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:11] "GET /api/strategies/equityCurve?id=2&_t=1766945770731 HTTP/1.1" 200 - +2025-12-29 02:16:11,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:11] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945770731 HTTP/1.1" 200 - +2025-12-29 02:16:11,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:11] "GET /api/strategies/positions?id=2&_t=1766945770735 HTTP/1.1" 200 - +2025-12-29 02:16:11,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:11,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:12,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:12,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:13,439 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87538.97, pending_signals=1 +2025-12-29 02:16:13,441 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87538.97, 'position_size': 0, 'timestamp': 1766945760}] +2025-12-29 02:16:13,499 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:13,499 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:14,044 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:14] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945773730 HTTP/1.1" 200 - +2025-12-29 02:16:14,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:14,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:15,808 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:15,808 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:16,059 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:16] "GET /api/strategies/positions?id=2&_t=1766945775735 HTTP/1.1" 200 - +2025-12-29 02:16:16,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:16,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:17,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:17] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945776731 HTTP/1.1" 200 - +2025-12-29 02:16:17,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:17,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:18,801 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:18,802 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:19,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:19,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:20,045 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:20] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945779731 HTTP/1.1" 200 - +2025-12-29 02:16:20,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:20,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:21,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:21] "GET /api/strategies/positions?id=2&_t=1766945780735 HTTP/1.1" 200 - +2025-12-29 02:16:21,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:21,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:22,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:22,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:23,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:23] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945782731 HTTP/1.1" 200 - +2025-12-29 02:16:23,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:23,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:23,679 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87576.6, pending_signals=2 +2025-12-29 02:16:23,681 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87526.13, 'position_size': 0, 'timestamp': 1766945700}] +2025-12-29 02:16:24,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:24,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:25,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:25,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:26,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:26] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945785730 HTTP/1.1" 200 - +2025-12-29 02:16:26,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:26] "GET /api/strategies/positions?id=2&_t=1766945785735 HTTP/1.1" 200 - +2025-12-29 02:16:26,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:26,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:27,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:27,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:28,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:28,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:29,038 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:29] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945788730 HTTP/1.1" 200 - +2025-12-29 02:16:29,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:29,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:30,811 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:30,811 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:31,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:31] "GET /api/strategies/positions?id=2&_t=1766945790735 HTTP/1.1" 200 - +2025-12-29 02:16:31,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:31,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:32,041 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:32] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945791731 HTTP/1.1" 200 - +2025-12-29 02:16:32,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:32,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:33,443 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87576.6, pending_signals=2 +2025-12-29 02:16:33,446 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87526.13, 'position_size': 0, 'timestamp': 1766945700}] +2025-12-29 02:16:33,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:33,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:34,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:34,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:35,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:35] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945794730 HTTP/1.1" 200 - +2025-12-29 02:16:35,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:35,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:36,046 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:36] "GET /api/strategies/positions?id=2&_t=1766945795736 HTTP/1.1" 200 - +2025-12-29 02:16:36,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:36,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:37,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:16:37,892 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:37,895 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:37,895 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:38,040 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:38] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945797730 HTTP/1.1" 200 - +2025-12-29 02:16:38,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:38,484 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:39,801 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:39,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:40,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:40,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:41,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:41] "GET /api/strategies/equityCurve?id=2&_t=1766945800730 HTTP/1.1" 200 - +2025-12-29 02:16:41,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:41] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945800731 HTTP/1.1" 200 - +2025-12-29 02:16:41,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:41] "GET /api/strategies/positions?id=2&_t=1766945800749 HTTP/1.1" 200 - +2025-12-29 02:16:41,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:41,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:42,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:42,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:43,498 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:43,498 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:43,546 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87591.19, pending_signals=2 +2025-12-29 02:16:43,549 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87526.13, 'position_size': 0, 'timestamp': 1766945700}] +2025-12-29 02:16:44,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:44] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945803731 HTTP/1.1" 200 - +2025-12-29 02:16:44,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:44,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:45,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:45,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:46,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:46] "GET /api/strategies/positions?id=2&_t=1766945805736 HTTP/1.1" 200 - +2025-12-29 02:16:46,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:46,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:47,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:47] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945806731 HTTP/1.1" 200 - +2025-12-29 02:16:47,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:47,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:48,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:48,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:49,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:49,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:50,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:50] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945809730 HTTP/1.1" 200 - +2025-12-29 02:16:50,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:50,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:51,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:51] "GET /api/strategies/positions?id=2&_t=1766945810736 HTTP/1.1" 200 - +2025-12-29 02:16:51,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:51,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:52,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:52,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:53,039 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:53] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945812730 HTTP/1.1" 200 - +2025-12-29 02:16:53,446 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87591.19, pending_signals=2 +2025-12-29 02:16:53,448 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87526.13, 'position_size': 0, 'timestamp': 1766945700}] +2025-12-29 02:16:53,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:53,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:54,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:54,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:55,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:55,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:56,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:56] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945815730 HTTP/1.1" 200 - +2025-12-29 02:16:56,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:56] "GET /api/strategies/positions?id=2&_t=1766945815749 HTTP/1.1" 200 - +2025-12-29 02:16:56,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:56,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:57,802 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:57,802 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:58,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:58,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:16:59,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:59] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945818730 HTTP/1.1" 200 - +2025-12-29 02:16:59,488 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:16:59,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:16:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:00,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:00,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:01,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:01] "GET /api/strategies/positions?id=2&_t=1766945820735 HTTP/1.1" 200 - +2025-12-29 02:17:01,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:01,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:02,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:02] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945821730 HTTP/1.1" 200 - +2025-12-29 02:17:02,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:02,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:03,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:03,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:04,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:04,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:05,042 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:05] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945824730 HTTP/1.1" 200 - +2025-12-29 02:17:05,500 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:05,501 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:06,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:06] "GET /api/strategies/positions?id=2&_t=1766945825735 HTTP/1.1" 200 - +2025-12-29 02:17:06,488 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:06,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:07,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:07,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:08,045 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:08] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945827731 HTTP/1.1" 200 - +2025-12-29 02:17:08,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:08,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:09,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:09,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:10,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:10,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:11,046 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:11] "GET /api/strategies/equityCurve?id=2&_t=1766945830731 HTTP/1.1" 200 - +2025-12-29 02:17:11,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:11] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945830731 HTTP/1.1" 200 - +2025-12-29 02:17:11,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:11] "GET /api/strategies/positions?id=2&_t=1766945830735 HTTP/1.1" 200 - +2025-12-29 02:17:11,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:11,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:12,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:12,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:13,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:13,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:14,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:14] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945833730 HTTP/1.1" 200 - +2025-12-29 02:17:14,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:14,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:15,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:15,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:16,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:16] "GET /api/strategies/positions?id=2&_t=1766945835735 HTTP/1.1" 200 - +2025-12-29 02:17:16,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:16,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:17,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:17] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945836731 HTTP/1.1" 200 - +2025-12-29 02:17:17,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:17,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:18,807 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:18,808 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:19,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:19,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:20,037 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:20] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945839730 HTTP/1.1" 200 - +2025-12-29 02:17:20,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:20,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:21,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:21] "GET /api/strategies/positions?id=2&_t=1766945840735 HTTP/1.1" 200 - +2025-12-29 02:17:21,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:21,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:22,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:22,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:23,046 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:23] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945842730 HTTP/1.1" 200 - +2025-12-29 02:17:23,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:23,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:24,802 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:24,803 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:25,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:25,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:26,043 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:26] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945845731 HTTP/1.1" 200 - +2025-12-29 02:17:26,059 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:26] "GET /api/strategies/positions?id=2&_t=1766945845743 HTTP/1.1" 200 - +2025-12-29 02:17:26,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:26,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:27,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:27,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:28,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:28,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:29,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:29] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945848730 HTTP/1.1" 200 - +2025-12-29 02:17:29,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:29,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:30,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:30,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:31,043 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:31] "GET /api/strategies/positions?id=2&_t=1766945850735 HTTP/1.1" 200 - +2025-12-29 02:17:31,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:31,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:32,039 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:32] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945851730 HTTP/1.1" 200 - +2025-12-29 02:17:32,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:32,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:33,787 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:33,788 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:34,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:34,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:35,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:35] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945854731 HTTP/1.1" 200 - +2025-12-29 02:17:35,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:35,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:36,044 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:36] "GET /api/strategies/positions?id=2&_t=1766945855735 HTTP/1.1" 200 - +2025-12-29 02:17:36,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:36,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:37,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:37,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:37,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:17:37,901 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:38,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:38] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945857730 HTTP/1.1" 200 - +2025-12-29 02:17:38,498 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:38,498 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:39,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:39,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:40,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:40,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:41,042 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:41] "GET /api/strategies/equityCurve?id=2&_t=1766945860730 HTTP/1.1" 200 - +2025-12-29 02:17:41,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:41] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945860731 HTTP/1.1" 200 - +2025-12-29 02:17:41,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:41] "GET /api/strategies/positions?id=2&_t=1766945860736 HTTP/1.1" 200 - +2025-12-29 02:17:41,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:41,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:42,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:42,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:43,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:43,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:44,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:44] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945863731 HTTP/1.1" 200 - +2025-12-29 02:17:44,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:44,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:45,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:45,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:46,059 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:46] "GET /api/strategies/positions?id=2&_t=1766945865736 HTTP/1.1" 200 - +2025-12-29 02:17:46,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:46,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:47,043 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:47] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945866730 HTTP/1.1" 200 - +2025-12-29 02:17:47,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:47,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:48,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:48,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:49,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:49,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:50,045 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:50] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945869731 HTTP/1.1" 200 - +2025-12-29 02:17:50,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:50,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:51,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:51] "GET /api/strategies/positions?id=2&_t=1766945870735 HTTP/1.1" 200 - +2025-12-29 02:17:51,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:51,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:52,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:52,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:53,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:53] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945872731 HTTP/1.1" 200 - +2025-12-29 02:17:53,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:53,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:54,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:54,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:55,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:55,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:56,040 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:56] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945875731 HTTP/1.1" 200 - +2025-12-29 02:17:56,046 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:56] "GET /api/strategies/positions?id=2&_t=1766945875736 HTTP/1.1" 200 - +2025-12-29 02:17:56,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:56,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:57,801 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:57,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:58,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:58,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:17:59,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:59] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945878731 HTTP/1.1" 200 - +2025-12-29 02:17:59,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:17:59,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:17:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:00,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:00,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:01,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:01] "GET /api/strategies/positions?id=2&_t=1766945880735 HTTP/1.1" 200 - +2025-12-29 02:18:01,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:01,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:02,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:02] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945881731 HTTP/1.1" 200 - +2025-12-29 02:18:02,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:02,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:03,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:03,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:04,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:04,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:05,045 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:05] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945884731 HTTP/1.1" 200 - +2025-12-29 02:18:05,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:05,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:06,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:06] "GET /api/strategies/positions?id=2&_t=1766945885735 HTTP/1.1" 200 - +2025-12-29 02:18:06,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:06,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:07,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:07,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:08,046 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:08] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945887731 HTTP/1.1" 200 - +2025-12-29 02:18:08,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:08,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:09,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:09,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:10,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:10,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:11,045 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:11] "GET /api/strategies/equityCurve?id=2&_t=1766945890731 HTTP/1.1" 200 - +2025-12-29 02:18:11,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:11] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945890731 HTTP/1.1" 200 - +2025-12-29 02:18:11,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:11] "GET /api/strategies/positions?id=2&_t=1766945890735 HTTP/1.1" 200 - +2025-12-29 02:18:11,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:11,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:12,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:12,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:13,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:13,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:14,042 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:14] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945893731 HTTP/1.1" 200 - +2025-12-29 02:18:14,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:14,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:15,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:15,788 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:16,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:16] "GET /api/strategies/positions?id=2&_t=1766945895736 HTTP/1.1" 200 - +2025-12-29 02:18:16,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:16,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:17,042 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:17] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945896731 HTTP/1.1" 200 - +2025-12-29 02:18:17,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:17,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:18,801 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:18,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:19,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:19,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:20,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:20] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945899731 HTTP/1.1" 200 - +2025-12-29 02:18:20,488 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:20,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:21,043 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:21] "GET /api/strategies/positions?id=2&_t=1766945900735 HTTP/1.1" 200 - +2025-12-29 02:18:21,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:21,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:22,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:22,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:23,040 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:23] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945902730 HTTP/1.1" 200 - +2025-12-29 02:18:23,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:23,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:24,802 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:24,802 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:25,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:25,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:26,045 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:26] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945905731 HTTP/1.1" 200 - +2025-12-29 02:18:26,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:26] "GET /api/strategies/positions?id=2&_t=1766945905736 HTTP/1.1" 200 - +2025-12-29 02:18:26,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:26,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:27,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:27,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:28,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:28,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:29,044 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:29] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945908731 HTTP/1.1" 200 - +2025-12-29 02:18:29,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:29,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:30,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:30,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:31,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:31] "GET /api/strategies/positions?id=2&_t=1766945910736 HTTP/1.1" 200 - +2025-12-29 02:18:31,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:31,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:32,041 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:32] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945911730 HTTP/1.1" 200 - +2025-12-29 02:18:32,494 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:32,495 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:33,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:33,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:34,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:34,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:35,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:35] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945914730 HTTP/1.1" 200 - +2025-12-29 02:18:35,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:35,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:36,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:36] "GET /api/strategies/positions?id=2&_t=1766945915735 HTTP/1.1" 200 - +2025-12-29 02:18:36,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:36,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:37,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:18:37,893 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:37,896 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:37,897 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:38,043 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:38] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945917730 HTTP/1.1" 200 - +2025-12-29 02:18:38,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:38,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:39,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:39,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:40,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:40,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:41,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:41] "GET /api/strategies/equityCurve?id=2&_t=1766945920731 HTTP/1.1" 200 - +2025-12-29 02:18:41,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:41] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945920732 HTTP/1.1" 200 - +2025-12-29 02:18:41,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:41] "GET /api/strategies/positions?id=2&_t=1766945920735 HTTP/1.1" 200 - +2025-12-29 02:18:41,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:41,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:42,801 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:42,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:43,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:43,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:44,046 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:44] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945923731 HTTP/1.1" 200 - +2025-12-29 02:18:44,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:44,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:45,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:45,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:46,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:46] "GET /api/strategies/positions?id=2&_t=1766945925736 HTTP/1.1" 200 - +2025-12-29 02:18:46,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:46,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:47,040 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:47] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945926731 HTTP/1.1" 200 - +2025-12-29 02:18:47,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:47,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:48,787 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:48,787 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:49,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:49,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:50,039 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:50] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945929730 HTTP/1.1" 200 - +2025-12-29 02:18:50,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:50,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:51,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:51] "GET /api/strategies/positions?id=2&_t=1766945930736 HTTP/1.1" 200 - +2025-12-29 02:18:51,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:51,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:52,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:52,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:53,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:53] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945932731 HTTP/1.1" 200 - +2025-12-29 02:18:53,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:53,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:54,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:54,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:55,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:55,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:56,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:56] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945935731 HTTP/1.1" 200 - +2025-12-29 02:18:56,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:56] "GET /api/strategies/positions?id=2&_t=1766945935735 HTTP/1.1" 200 - +2025-12-29 02:18:56,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:56,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:57,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:57,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:58,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:58,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:18:59,045 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:59] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945938731 HTTP/1.1" 200 - +2025-12-29 02:18:59,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:18:59,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:18:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:00,802 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:00,803 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:01,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:01] "GET /api/strategies/positions?id=2&_t=1766945940736 HTTP/1.1" 200 - +2025-12-29 02:19:01,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:01,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:02,045 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:02] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945941731 HTTP/1.1" 200 - +2025-12-29 02:19:02,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:02,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:03,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:03,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:04,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:04,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:05,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:05] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945944731 HTTP/1.1" 200 - +2025-12-29 02:19:05,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:05,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:06,046 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:06] "GET /api/strategies/positions?id=2&_t=1766945945736 HTTP/1.1" 200 - +2025-12-29 02:19:06,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:06,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:07,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:07,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:08,040 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:08] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945947731 HTTP/1.1" 200 - +2025-12-29 02:19:08,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:08,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:09,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:09,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:10,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:10,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:11,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:11] "GET /api/strategies/equityCurve?id=2&_t=1766945950731 HTTP/1.1" 200 - +2025-12-29 02:19:11,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:11] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945950731 HTTP/1.1" 200 - +2025-12-29 02:19:11,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:11] "GET /api/strategies/positions?id=2&_t=1766945950735 HTTP/1.1" 200 - +2025-12-29 02:19:11,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:11,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:12,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:12,788 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:13,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:13,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:14,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:14] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945953731 HTTP/1.1" 200 - +2025-12-29 02:19:14,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:14,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:15,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:15,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:16,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:16] "GET /api/strategies/positions?id=2&_t=1766945955735 HTTP/1.1" 200 - +2025-12-29 02:19:16,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:16,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:17,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:17] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945956731 HTTP/1.1" 200 - +2025-12-29 02:19:17,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:17,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:18,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:18,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:19,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:19,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:20,044 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:20] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945959730 HTTP/1.1" 200 - +2025-12-29 02:19:20,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:20,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:21,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:21] "GET /api/strategies/positions?id=2&_t=1766945960735 HTTP/1.1" 200 - +2025-12-29 02:19:21,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:21,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:22,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:22,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:23,040 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:23] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945962730 HTTP/1.1" 200 - +2025-12-29 02:19:23,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:23,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:24,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:24,898 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:25,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:25,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:26,043 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:26] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945965731 HTTP/1.1" 200 - +2025-12-29 02:19:26,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:26] "GET /api/strategies/positions?id=2&_t=1766945965735 HTTP/1.1" 200 - +2025-12-29 02:19:26,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:26,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:27,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:27,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:28,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:28,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:29,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:29] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945968731 HTTP/1.1" 200 - +2025-12-29 02:19:29,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:29,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:30,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:30,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:31,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:31] "GET /api/strategies/positions?id=2&_t=1766945970734 HTTP/1.1" 200 - +2025-12-29 02:19:31,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:31,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:32,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:32] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945971731 HTTP/1.1" 200 - +2025-12-29 02:19:32,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:32,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:33,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:33,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:34,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:34,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:35,043 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:35] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945974730 HTTP/1.1" 200 - +2025-12-29 02:19:35,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:35,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:36,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:36] "GET /api/strategies/positions?id=2&_t=1766945975736 HTTP/1.1" 200 - +2025-12-29 02:19:36,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:36,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:37,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:37,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:37,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:19:37,901 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:38,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:38] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945977731 HTTP/1.1" 200 - +2025-12-29 02:19:38,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:38,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:39,806 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:39,807 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:40,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:40,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:41,046 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:41] "GET /api/strategies/equityCurve?id=2&_t=1766945980730 HTTP/1.1" 200 - +2025-12-29 02:19:41,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:41] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945980731 HTTP/1.1" 200 - +2025-12-29 02:19:41,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:41] "GET /api/strategies/positions?id=2&_t=1766945980735 HTTP/1.1" 200 - +2025-12-29 02:19:41,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:41,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:42,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:42,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:43,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:43,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:44,042 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:44] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945983731 HTTP/1.1" 200 - +2025-12-29 02:19:44,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:44,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:45,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:45,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:46,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:46] "GET /api/strategies/positions?id=2&_t=1766945985735 HTTP/1.1" 200 - +2025-12-29 02:19:46,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:46,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:47,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:47] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945986730 HTTP/1.1" 200 - +2025-12-29 02:19:47,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:47,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:48,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:48,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:49,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:49,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:50,042 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:50] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945989730 HTTP/1.1" 200 - +2025-12-29 02:19:50,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:50,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:51,044 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:51] "GET /api/strategies/positions?id=2&_t=1766945990736 HTTP/1.1" 200 - +2025-12-29 02:19:51,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:51,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:52,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:52,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:53,041 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:53] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945992730 HTTP/1.1" 200 - +2025-12-29 02:19:53,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:53,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:54,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:54,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:55,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:55,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:56,046 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:56] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945995731 HTTP/1.1" 200 - +2025-12-29 02:19:56,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:56] "GET /api/strategies/positions?id=2&_t=1766945995736 HTTP/1.1" 200 - +2025-12-29 02:19:56,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:56,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:57,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:57,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:58,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:58,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:19:59,041 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:59] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766945998730 HTTP/1.1" 200 - +2025-12-29 02:19:59,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:19:59,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:19:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:00,801 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:00,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:01,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:01] "GET /api/strategies/positions?id=2&_t=1766946000735 HTTP/1.1" 200 - +2025-12-29 02:20:01,504 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:01,504 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:02,044 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:02] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946001730 HTTP/1.1" 200 - +2025-12-29 02:20:02,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:02,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:03,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:03,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:04,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:04,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:05,046 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:05] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946004730 HTTP/1.1" 200 - +2025-12-29 02:20:05,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:05,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:06,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:06] "GET /api/strategies/positions?id=2&_t=1766946005736 HTTP/1.1" 200 - +2025-12-29 02:20:06,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:06,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:07,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:07,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:08,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:08] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946007731 HTTP/1.1" 200 - +2025-12-29 02:20:08,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:08,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:09,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:09,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:10,488 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:10,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:11,044 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:11] "GET /api/strategies/equityCurve?id=2&_t=1766946010730 HTTP/1.1" 200 - +2025-12-29 02:20:11,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:11] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946010731 HTTP/1.1" 200 - +2025-12-29 02:20:11,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:11] "GET /api/strategies/positions?id=2&_t=1766946010735 HTTP/1.1" 200 - +2025-12-29 02:20:11,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:11,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:12,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:12,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:13,500 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:13,500 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:14,042 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:14] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946013731 HTTP/1.1" 200 - +2025-12-29 02:20:14,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:14,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:15,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:15,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:16,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:16] "GET /api/strategies/positions?id=2&_t=1766946015735 HTTP/1.1" 200 - +2025-12-29 02:20:16,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:16,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:17,045 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:17] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946016731 HTTP/1.1" 200 - +2025-12-29 02:20:17,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:17,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:18,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:18,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:19,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:19,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:20,044 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:20] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946019731 HTTP/1.1" 200 - +2025-12-29 02:20:20,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:20,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:21,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:21] "GET /api/strategies/positions?id=2&_t=1766946020737 HTTP/1.1" 200 - +2025-12-29 02:20:21,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:21,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:22,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:22,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:23,044 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:23] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946022731 HTTP/1.1" 200 - +2025-12-29 02:20:23,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:23,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:24,787 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:24,787 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:25,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:25,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:26,041 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:26] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946025731 HTTP/1.1" 200 - +2025-12-29 02:20:26,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:26] "GET /api/strategies/positions?id=2&_t=1766946025735 HTTP/1.1" 200 - +2025-12-29 02:20:26,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:26,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:27,787 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:27,788 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:28,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:28,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:29,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:29] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946028736 HTTP/1.1" 200 - +2025-12-29 02:20:29,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:29,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:30,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:30,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:31,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:31] "GET /api/strategies/positions?id=2&_t=1766946030735 HTTP/1.1" 200 - +2025-12-29 02:20:31,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:31,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:32,066 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:32] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946031730 HTTP/1.1" 200 - +2025-12-29 02:20:32,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:32,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:33,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:33,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:34,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:34,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:35,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:35] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946034730 HTTP/1.1" 200 - +2025-12-29 02:20:35,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:35,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:36,044 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:36] "GET /api/strategies/positions?id=2&_t=1766946035735 HTTP/1.1" 200 - +2025-12-29 02:20:36,499 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:36,500 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:37,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:37,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:37,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:20:37,901 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:38,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:38] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946037731 HTTP/1.1" 200 - +2025-12-29 02:20:38,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:38,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:39,822 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:39,823 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:40,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:40,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:41,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:41] "GET /api/strategies/equityCurve?id=2&_t=1766946040731 HTTP/1.1" 200 - +2025-12-29 02:20:41,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:41] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946040731 HTTP/1.1" 200 - +2025-12-29 02:20:41,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:41] "GET /api/strategies/positions?id=2&_t=1766946040736 HTTP/1.1" 200 - +2025-12-29 02:20:41,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:41,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:42,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:42,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:43,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:43,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:44,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:44] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946043730 HTTP/1.1" 200 - +2025-12-29 02:20:44,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:44,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:45,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:45,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:46,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:46] "GET /api/strategies/positions?id=2&_t=1766946045736 HTTP/1.1" 200 - +2025-12-29 02:20:46,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:46,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:47,039 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:47] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946046731 HTTP/1.1" 200 - +2025-12-29 02:20:47,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:47,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:48,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:48,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:49,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:49,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:50,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:50] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946049731 HTTP/1.1" 200 - +2025-12-29 02:20:50,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:50,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:51,059 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:51] "GET /api/strategies/positions?id=2&_t=1766946050735 HTTP/1.1" 200 - +2025-12-29 02:20:51,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:51,484 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:52,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:52,788 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:53,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:53] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946052731 HTTP/1.1" 200 - +2025-12-29 02:20:53,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:53,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:54,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:54,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:55,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:55,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:56,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:56] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946055731 HTTP/1.1" 200 - +2025-12-29 02:20:56,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:56] "GET /api/strategies/positions?id=2&_t=1766946055735 HTTP/1.1" 200 - +2025-12-29 02:20:56,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:56,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:57,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:57,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:58,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:58,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:20:59,045 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:59] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946058731 HTTP/1.1" 200 - +2025-12-29 02:20:59,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:20:59,484 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:20:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:00,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:00,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:01,043 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:01] "GET /api/strategies/positions?id=2&_t=1766946060735 HTTP/1.1" 200 - +2025-12-29 02:21:01,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:01,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:02,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:02] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946061740 HTTP/1.1" 200 - +2025-12-29 02:21:02,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:02,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:03,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:03,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:04,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:04,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:05,040 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:05] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946064731 HTTP/1.1" 200 - +2025-12-29 02:21:05,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:05,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:06,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:06] "GET /api/strategies/positions?id=2&_t=1766946065735 HTTP/1.1" 200 - +2025-12-29 02:21:06,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:06,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:07,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:07,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:08,042 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:08] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946067731 HTTP/1.1" 200 - +2025-12-29 02:21:08,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:08,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:09,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:09,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:10,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:10,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:11,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:11] "GET /api/strategies/equityCurve?id=2&_t=1766946070730 HTTP/1.1" 200 - +2025-12-29 02:21:11,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:11] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946070731 HTTP/1.1" 200 - +2025-12-29 02:21:11,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:11] "GET /api/strategies/positions?id=2&_t=1766946070735 HTTP/1.1" 200 - +2025-12-29 02:21:11,488 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:11,489 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:12,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:12,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:13,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:13,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:14,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:14] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946073731 HTTP/1.1" 200 - +2025-12-29 02:21:14,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:14,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:15,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:15,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:16,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:16] "GET /api/strategies/positions?id=2&_t=1766946075736 HTTP/1.1" 200 - +2025-12-29 02:21:16,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:16,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:17,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:17] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946076731 HTTP/1.1" 200 - +2025-12-29 02:21:17,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:17,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:18,801 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:18,802 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:19,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:19,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:20,042 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:20] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946079730 HTTP/1.1" 200 - +2025-12-29 02:21:20,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:20,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:21,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:21] "GET /api/strategies/positions?id=2&_t=1766946080735 HTTP/1.1" 200 - +2025-12-29 02:21:21,488 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:21,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:22,802 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:22,803 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:23,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:23] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946082731 HTTP/1.1" 200 - +2025-12-29 02:21:23,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:23,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:24,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:24,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:25,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:25,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:26,039 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:26] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946085731 HTTP/1.1" 200 - +2025-12-29 02:21:26,046 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:26] "GET /api/strategies/positions?id=2&_t=1766946085735 HTTP/1.1" 200 - +2025-12-29 02:21:26,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:26,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:27,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:27,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:28,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:28,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:29,042 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:29] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946088730 HTTP/1.1" 200 - +2025-12-29 02:21:29,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:29,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:30,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:30,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:31,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:31] "GET /api/strategies/positions?id=2&_t=1766946090735 HTTP/1.1" 200 - +2025-12-29 02:21:31,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:31,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:32,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:32] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946091731 HTTP/1.1" 200 - +2025-12-29 02:21:32,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:32,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:33,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:33,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:34,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:34,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:35,043 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:35] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946094731 HTTP/1.1" 200 - +2025-12-29 02:21:35,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:35,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:36,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:36] "GET /api/strategies/positions?id=2&_t=1766946095735 HTTP/1.1" 200 - +2025-12-29 02:21:36,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:36,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:37,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:21:37,891 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:37,893 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:37,894 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:38,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:38] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946097731 HTTP/1.1" 200 - +2025-12-29 02:21:38,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:38,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:39,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:39,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:40,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:40,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:41,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:41] "GET /api/strategies/equityCurve?id=2&_t=1766946100731 HTTP/1.1" 200 - +2025-12-29 02:21:41,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:41] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946100731 HTTP/1.1" 200 - +2025-12-29 02:21:41,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:41] "GET /api/strategies/positions?id=2&_t=1766946100735 HTTP/1.1" 200 - +2025-12-29 02:21:41,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:41,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:42,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:42,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:43,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:43,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:44,045 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:44] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946103731 HTTP/1.1" 200 - +2025-12-29 02:21:44,494 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:44,494 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:45,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:45,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:46,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:46] "GET /api/strategies/positions?id=2&_t=1766946105735 HTTP/1.1" 200 - +2025-12-29 02:21:46,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:46,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:47,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:47] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946106731 HTTP/1.1" 200 - +2025-12-29 02:21:47,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:47,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:48,801 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:48,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:49,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:49,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:50,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:50] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946109730 HTTP/1.1" 200 - +2025-12-29 02:21:50,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:50,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:51,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:51] "GET /api/strategies/positions?id=2&_t=1766946110736 HTTP/1.1" 200 - +2025-12-29 02:21:51,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:51,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:52,809 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:52,809 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:53,045 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:53] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946112731 HTTP/1.1" 200 - +2025-12-29 02:21:53,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:53,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:54,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:54,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:55,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:55,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:56,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:56] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946115730 HTTP/1.1" 200 - +2025-12-29 02:21:56,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:56] "GET /api/strategies/positions?id=2&_t=1766946115735 HTTP/1.1" 200 - +2025-12-29 02:21:56,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:56,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:57,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:57,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:58,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:58,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:21:59,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:59] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946118731 HTTP/1.1" 200 - +2025-12-29 02:21:59,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:21:59,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:21:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:00,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:00,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:01,044 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:01] "GET /api/strategies/positions?id=2&_t=1766946120736 HTTP/1.1" 200 - +2025-12-29 02:22:01,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:01,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:02,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:02] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946121742 HTTP/1.1" 200 - +2025-12-29 02:22:02,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:02,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:03,682 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87677.02, pending_signals=1 +2025-12-29 02:22:03,686 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87677.02, 'position_size': 0, 'timestamp': 1766946120}] +2025-12-29 02:22:03,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:03,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:04,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:04,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:05,043 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:05] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946124731 HTTP/1.1" 200 - +2025-12-29 02:22:05,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:05,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:06,059 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:06] "GET /api/strategies/positions?id=2&_t=1766946125736 HTTP/1.1" 200 - +2025-12-29 02:22:06,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:06,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:07,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:07,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:08,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:08] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946127739 HTTP/1.1" 200 - +2025-12-29 02:22:08,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:08,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:09,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:09,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:10,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:10,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:11,043 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:11] "GET /api/strategies/equityCurve?id=2&_t=1766946130731 HTTP/1.1" 200 - +2025-12-29 02:22:11,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:11] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946130731 HTTP/1.1" 200 - +2025-12-29 02:22:11,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:11] "GET /api/strategies/positions?id=2&_t=1766946130736 HTTP/1.1" 200 - +2025-12-29 02:22:11,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:11,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:12,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:12,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:13,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:13,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:13,582 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87677.02, pending_signals=1 +2025-12-29 02:22:13,584 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87677.02, 'position_size': 0, 'timestamp': 1766946120}] +2025-12-29 02:22:14,045 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:14] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946133731 HTTP/1.1" 200 - +2025-12-29 02:22:14,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:14,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:15,801 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:15,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:16,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:16] "GET /api/strategies/positions?id=2&_t=1766946135736 HTTP/1.1" 200 - +2025-12-29 02:22:16,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:16,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:17,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:17] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946136731 HTTP/1.1" 200 - +2025-12-29 02:22:17,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:17,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:18,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:18,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:19,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:19,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:20,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:20] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946139730 HTTP/1.1" 200 - +2025-12-29 02:22:20,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:20,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:21,046 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:21] "GET /api/strategies/positions?id=2&_t=1766946140735 HTTP/1.1" 200 - +2025-12-29 02:22:21,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:21,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:22,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:22,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:23,038 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:23] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946142730 HTTP/1.1" 200 - +2025-12-29 02:22:23,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:23,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:23,797 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87679.0, pending_signals=2 +2025-12-29 02:22:23,799 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 87677.01, 'position_size': 0.08, 'timestamp': 1766946060}, {'type': 'close_short', 'trigger_price': 87677.01, 'position_size': 0, 'timestamp': 1766946060}] +2025-12-29 02:22:23,808 - app.services.trading_executor - INFO - Strategy 2 signal executed: open_long @ 87677.01 +2025-12-29 02:22:24,801 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:24,802 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:25,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:25,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:26,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:26] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946145731 HTTP/1.1" 200 - +2025-12-29 02:22:26,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:26] "GET /api/strategies/positions?id=2&_t=1766946145735 HTTP/1.1" 200 - +2025-12-29 02:22:26,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:26,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:27,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:27,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:28,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:28,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:29,045 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:29] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946148731 HTTP/1.1" 200 - +2025-12-29 02:22:29,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:29,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:30,802 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:30,802 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:31,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:31] "GET /api/strategies/positions?id=2&_t=1766946150735 HTTP/1.1" 200 - +2025-12-29 02:22:31,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:31,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:32,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:32] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946151731 HTTP/1.1" 200 - +2025-12-29 02:22:32,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:32,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:33,595 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87679.0, pending_signals=2 +2025-12-29 02:22:33,600 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 87677.01, 'position_size': 0.08, 'timestamp': 1766946060}, {'type': 'close_short', 'trigger_price': 87677.01, 'position_size': 0, 'timestamp': 1766946060}] +2025-12-29 02:22:33,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:33,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:34,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:34,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:35,044 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:35] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946154731 HTTP/1.1" 200 - +2025-12-29 02:22:35,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:35,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:36,150 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:36] "GET /api/strategies/positions?id=2&_t=1766946155735 HTTP/1.1" 200 - +2025-12-29 02:22:36,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:36,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:37,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:37,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:37,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:22:37,902 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:38,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:38] "GET /api/strategies/notifications?id=2&since_id=6&limit=50&_t=1766946157731 HTTP/1.1" 200 - +2025-12-29 02:22:38,413 - app.services.pending_order_worker - INFO - live notify: pending_id=69, strategy_id=2, ok=browser,email,telegram fail=- +2025-12-29 02:22:38,488 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:38,489 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:39,892 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:39,892 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:40,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:40,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:41,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:41] "GET /api/strategies/equityCurve?id=2&_t=1766946160732 HTTP/1.1" 200 - +2025-12-29 02:22:41,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:41] "GET /api/strategies/notifications?id=2&since_id=7&limit=50&_t=1766946160732 HTTP/1.1" 200 - +2025-12-29 02:22:41,167 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:41] "GET /api/strategies/positions?id=2&_t=1766946160735 HTTP/1.1" 200 - +2025-12-29 02:22:41,489 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:41,490 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:42,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:42,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:43,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:43,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:43,684 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87665.86, pending_signals=2 +2025-12-29 02:22:43,693 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87677.01, 'position_size': 0, 'timestamp': 1766946060}] +2025-12-29 02:22:44,041 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:44] "GET /api/strategies/notifications?id=2&since_id=7&limit=50&_t=1766946163730 HTTP/1.1" 200 - +2025-12-29 02:22:44,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:44,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:45,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:45,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:46,155 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:46] "GET /api/strategies/positions?id=2&_t=1766946165736 HTTP/1.1" 200 - +2025-12-29 02:22:46,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:46,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:47,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:47] "GET /api/strategies/notifications?id=2&since_id=7&limit=50&_t=1766946166730 HTTP/1.1" 200 - +2025-12-29 02:22:47,489 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:47,489 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:48,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:48,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:49,490 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:49,490 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:50,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:50] "GET /api/strategies/notifications?id=2&since_id=7&limit=50&_t=1766946169730 HTTP/1.1" 200 - +2025-12-29 02:22:50,439 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:50] "GET /api/strategies?_t=1766946170428 HTTP/1.1" 200 - +2025-12-29 02:22:50,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:50,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:51,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:51,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:52,554 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:52] "GET /api/dashboard/summary?_t=1766946172234 HTTP/1.1" 200 - +2025-12-29 02:22:52,564 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766946172234 HTTP/1.1" 200 - +2025-12-29 02:22:52,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:52,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:53,492 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:53,492 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:53,596 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87665.86, pending_signals=2 +2025-12-29 02:22:53,614 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87677.01, 'position_size': 0, 'timestamp': 1766946060}] +2025-12-29 02:22:54,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:54,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:55,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:55,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:56,592 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:56] "GET /api/dashboard/summary?_t=1766946176277 HTTP/1.1" 200 - +2025-12-29 02:22:56,597 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:56] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766946176277 HTTP/1.1" 200 - +2025-12-29 02:22:56,819 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:56,820 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:57,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:57,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:58,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:58,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:22:59,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:22:59,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:22:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:00,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:00,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:01,489 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:01,489 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:02,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:02,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:03,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:03,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:04,786 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:04,786 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:05,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:05,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:06,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:06,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:07,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:07,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:08,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:08,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:09,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:09,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:10,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:10,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:11,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:11,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:12,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:12,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:13,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:13,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:14,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:14,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:15,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:15,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:16,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:16,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:17,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:17,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:18,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:18,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:19,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:19,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:20,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:20,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:21,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:21,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:22,787 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:22,787 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:23,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:23,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:24,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:24,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:25,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:25,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:26,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:26,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:27,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:27,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:28,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:28,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:29,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:29,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:30,803 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:30,804 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:31,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:31,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:32,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:32,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:33,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:33,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:34,801 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:34,802 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:35,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:35,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:36,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:36,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:37,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:37,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:37,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:23:37,897 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:38,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:38,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:39,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:39,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:40,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:40,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:41,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:41,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:42,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:42,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:43,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:43,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:44,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:44,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:45,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:45,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:46,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:46,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:47,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:47,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:48,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:48,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:49,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:49,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:50,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:50,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:51,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:51,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:52,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:52,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:53,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:53,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:54,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:54,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:55,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:55,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:56,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:56,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:57,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:57,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:58,801 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:58,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:23:59,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:23:59,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:23:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:00,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:00,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:01,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:01,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:02,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:02,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:03,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:03,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:04,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:04,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:05,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:05,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:06,787 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:06,787 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:07,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:07,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:08,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:08,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:09,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:09,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:10,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:10,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:11,495 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:11,496 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:12,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:12,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:13,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:13,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:14,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:14,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:15,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:15,484 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:16,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:16,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:17,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:17,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:18,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:18,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:19,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:19,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:20,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:20,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:21,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:21,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:22,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:22,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:23,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:23,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:24,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:24,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:25,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:25,586 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:26,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:26,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:27,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:27,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:28,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:28,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:29,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:29,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:30,803 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:30,803 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:31,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:31,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:32,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:32,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:33,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:33,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:34,803 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:34,803 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:35,490 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:35,491 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:36,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:36,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:37,482 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:24:37,583 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:37,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:37,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:38,809 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:38,810 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:39,509 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:39,510 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:40,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:40,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:41,500 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:41,500 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:42,808 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:42,809 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:43,531 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:43,531 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:45,787 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:45,788 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:46,491 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:46,491 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:47,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:47,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:49,488 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:49,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:50,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:50,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:52,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:52,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:54,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:54,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:55,501 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:55,502 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:56,809 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:56,810 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:57,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:57,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:58,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:58,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:24:59,500 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:24:59,501 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:24:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:00,806 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:00,807 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:01,499 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:01,500 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:03,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:03,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:04,490 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:04,491 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:05,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:05,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:06,501 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:06,501 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:07,070 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:07,171 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:07,332 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:07,333 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:08,289 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:08,290 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:08,782 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:08,782 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:09,290 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:09,290 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:09,808 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:09,808 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:10,290 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:10,290 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:10,806 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:10,807 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:11,292 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:11,292 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:12,604 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:12,706 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:12,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:12,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:13,290 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:13,290 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:14,599 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:14,600 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:14,784 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:14,785 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:15,290 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:15,290 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:15,816 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:15,816 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:16,290 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:16,290 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:16,809 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:16,809 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:17,291 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:17,292 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:17,810 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:17,811 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:18,290 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:18,392 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:19,595 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:19,596 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:19,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:19,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:20,290 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:20,290 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:20,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:20,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:21,291 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:21,291 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:21,811 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:21,811 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:22,291 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:22,292 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:22,810 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:22,811 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:23,290 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:23,291 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:23,809 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:23,810 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:24,290 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:24,392 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:24,763 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=5m, limit=500 +2025-12-29 02:25:24,880 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:25,475 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:25,475 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:26,227 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=5m, limit=5 +2025-12-29 02:25:26,330 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:26,339 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=500 +2025-12-29 02:25:26,341 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:26,506 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:26,506 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:27,677 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:27,678 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:28,364 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:28,365 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:28,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:28,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:29,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:29,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:30,680 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:30,787 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:30,807 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:30,807 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:31,364 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:31,364 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:31,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:31,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:32,364 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:32,365 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:32,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:32,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:33,399 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:33,400 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:33,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:33,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:34,364 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:34,365 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:34,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:34,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:35,371 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:35,372 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:35,807 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:35,808 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:36,364 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:36,465 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:36,805 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:36,806 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:37,365 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:37,365 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:37,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:37,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:38,367 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:38,367 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:38,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:38,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:39,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:39,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:39,932 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:39,933 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:40,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:40,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:40,805 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:40,806 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:41,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:41,891 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:41,893 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:41,893 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:42,478 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:42,479 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:42,801 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:42,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:43,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:43,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:43,801 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:43,802 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:44,786 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:44,786 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:44,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:44,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:45,497 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:45,497 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:45,802 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:45,802 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:46,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:46,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:46,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:46,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:47,475 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:47,575 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:47,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:47,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:48,667 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:48,669 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:49,373 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:49,373 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:49,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:49,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:50,370 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:50,371 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:51,671 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:51,672 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:51,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:51,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:52,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:52,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:52,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:52,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:53,364 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:53,468 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:54,334 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:54,335 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:54,599 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:54,599 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:54,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:54,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:55,477 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:55,478 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:55,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:55,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:56,476 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:56,477 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:56,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:56,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:57,475 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:57,475 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:57,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:57,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:58,482 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:58,583 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:58,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:58,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:59,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:25:59,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:25:59,802 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:25:59,803 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:25:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:00,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:00,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:00,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:00,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:01,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:01,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:01,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:01,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:02,483 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:02,484 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:02,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:02,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:03,787 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:03,892 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:03,894 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:03,895 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:04,488 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:04,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:04,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:04,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:05,674 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:05,675 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:06,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:06,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:06,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:06,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:07,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:07,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:08,674 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:08,674 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:08,784 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:08,785 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:09,370 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:09,473 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:09,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:09,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:10,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:10,364 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:11,673 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:11,674 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:11,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:11,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:12,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:12,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:12,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:12,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:13,365 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:13,366 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:14,666 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:14,771 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:14,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:14,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:15,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:15,364 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:16,673 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:16,674 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:16,784 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:16,784 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:17,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:17,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:17,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:17,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:18,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:18,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:18,810 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:18,811 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:19,364 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:19,365 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:20,676 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:20,877 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:20,879 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:20,880 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:21,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:21,364 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:21,803 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:21,804 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:22,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:22,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:22,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:22,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:23,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:23,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:23,808 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:23,808 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:24,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:24,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:25,671 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:25,672 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:25,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:25,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:26,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:26,466 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:26,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:26,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:27,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:27,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:28,672 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:28,672 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:28,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:28,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:29,364 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:29,365 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:30,672 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:30,673 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:30,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:30,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:31,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:31,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:32,668 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:32,770 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:32,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:32,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:33,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:33,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:33,804 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:33,805 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:34,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:34,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:34,807 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:34,807 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:35,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:35,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:35,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:35,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:36,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:36,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:36,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:36,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:37,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:37,364 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:37,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:37,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:38,365 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:38,469 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:39,669 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:39,670 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:39,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:39,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:40,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:40,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:40,807 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:40,807 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:41,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:41,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:42,672 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:42,672 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:42,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:42,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:43,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:43,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:43,807 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:43,807 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:44,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:44,463 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:44,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:44,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:45,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:45,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:45,802 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:45,802 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:46,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:46,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:47,666 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:47,667 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:47,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:47,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:48,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:48,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:48,811 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:48,811 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:49,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:49,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:49,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:49,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:50,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:50,463 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:51,669 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:51,669 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:51,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:51,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:52,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:52,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:52,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:52,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:53,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:53,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:53,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:53,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:54,364 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:54,364 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:55,665 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:55,767 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:55,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:55,788 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:56,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:56,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:56,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:56,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:57,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:57,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:57,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:57,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:58,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:58,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:58,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:26:58,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:26:59,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:26:59,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:26:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:00,672 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:00,672 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:00,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:27:00,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:01,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:01,468 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:01,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:27:01,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:02,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:02,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:03,674 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:03,675 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:03,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:27:03,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:04,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:04,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:04,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:27:04,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:05,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:05,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:06,679 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:06,780 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:07,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:07,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:08,671 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:08,671 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:09,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:09,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:10,679 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:10,680 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:11,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:11,364 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:12,672 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:12,774 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:13,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:13,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:14,668 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:14,668 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:15,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:15,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:16,675 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:16,676 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:17,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:17,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:18,676 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:18,776 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:19,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:19,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:20,669 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:20,670 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:21,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:21,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:22,676 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:22,677 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:23,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:23,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:24,677 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:24,785 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:25,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:25,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:26,674 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:26,675 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:27,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:27,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:28,669 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:28,669 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:29,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:29,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:30,672 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:30,774 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:31,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:31,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:32,670 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:32,671 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:33,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:33,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:34,673 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:34,673 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:35,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:35,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:36,669 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:36,771 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:37,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:37,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:37,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:27:37,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:38,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:38,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:39,664 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:39,665 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:40,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:40,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:41,663 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:41,663 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:42,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:42,478 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:43,606 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2936.74, pending_signals=1 +2025-12-29 02:27:43,615 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2936.74, 'position_size': 0, 'timestamp': 1766946420}] +2025-12-29 02:27:43,626 - app.services.trading_executor - INFO - Strategy 1 signal executed: close_short @ 2936.74 +2025-12-29 02:27:43,679 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:43,680 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:43,888 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=863.32, pending_signals=1 +2025-12-29 02:27:43,890 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 863.32, 'position_size': 0, 'timestamp': 1766946420}] +2025-12-29 02:27:44,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:44,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:45,667 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:45,668 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:45,726 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=70, strategy_id=1, cfg={'exchange_id': 'bitget', 'api_key': 'bg_8...b659', 'secret_key': '3b7e...b239', 'passphrase': 'xuji...u123', 'credential_id': 3}, err=Bitget HTTP 400: {"code":"45115","msg":"The price you enter should be a multiple of 0.01{1}","requestTime":1766946466060,"data":null} +2025-12-29 02:27:46,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:46,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:47,677 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:47,779 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:48,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:48,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:49,673 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:49,673 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:50,081 - app.services.pending_order_worker - INFO - live notify: pending_id=70, strategy_id=1, ok=browser,telegram,email fail=- +2025-12-29 02:27:50,364 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:50,365 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:51,679 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:51,679 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:52,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:52,364 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:53,508 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2936.74, pending_signals=1 +2025-12-29 02:27:53,510 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2936.74, 'position_size': 0, 'timestamp': 1766946420}] +2025-12-29 02:27:53,664 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:53,769 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:53,792 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=863.32, pending_signals=1 +2025-12-29 02:27:53,794 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 863.32, 'position_size': 0, 'timestamp': 1766946420}] +2025-12-29 02:27:54,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:54,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:55,670 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:55,671 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:56,368 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:56,369 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:57,667 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:57,668 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:58,365 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:58,365 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:27:59,676 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:27:59,777 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:27:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:00,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:00,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:01,678 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:01,678 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:01,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:01] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 02:28:02,005 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:02] "GET /api/market/types?_t=1766946481690 HTTP/1.1" 200 - +2025-12-29 02:28:02,013 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:02] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 02:28:02,017 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-29 02:28:02,138 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:03,170 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:03,170 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:03,626 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2936.75, pending_signals=1 +2025-12-29 02:28:03,629 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2936.75, 'position_size': 0, 'timestamp': 1766946480}] +2025-12-29 02:28:03,896 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=863.46, pending_signals=1 +2025-12-29 02:28:03,900 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 863.46, 'position_size': 0, 'timestamp': 1766946480}] +2025-12-29 02:28:04,068 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=500 +2025-12-29 02:28:04,183 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:05,309 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:05,410 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:06,521 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:06,521 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:07,212 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:07,212 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:08,068 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:08,068 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:08,479 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:08,479 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:08,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:08,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:09,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:09,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:09,803 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:09,804 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:10,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:10,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:10,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:10,902 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:10,910 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:10] "GET /api/dashboard/summary?_t=1766946490581 HTTP/1.1" 200 - +2025-12-29 02:28:10,918 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766946490581 HTTP/1.1" 200 - +2025-12-29 02:28:11,491 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:11,492 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:11,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:11,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:12,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:12,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:12,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:12,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:13,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:13,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:13,513 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2936.75, pending_signals=1 +2025-12-29 02:28:13,516 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2936.75, 'position_size': 0, 'timestamp': 1766946480}] +2025-12-29 02:28:13,794 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=863.46, pending_signals=1 +2025-12-29 02:28:13,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:13,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:13,796 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 863.46, 'position_size': 0, 'timestamp': 1766946480}] +2025-12-29 02:28:14,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:14,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:14,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:14,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:15,474 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:15,474 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:15,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:15,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:16,478 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:16,677 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:16,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:16,788 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:17,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:17,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:17,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:17,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:18,477 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:18,477 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:18,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:18,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:18,958 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:18] "GET /api/dashboard/summary?_t=1766946498635 HTTP/1.1" 200 - +2025-12-29 02:28:18,963 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766946498635 HTTP/1.1" 200 - +2025-12-29 02:28:19,479 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:19,480 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:19,786 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:19,787 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:20,476 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:20,477 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:20,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:20,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:21,479 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:21,479 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:21,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:21,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:22,481 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:22,688 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:22,804 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:22,805 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:23,776 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2936.75, pending_signals=2 +2025-12-29 02:28:23,778 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 2936.75, 'position_size': 0.08, 'timestamp': 1766946420}, {'type': 'close_short', 'trigger_price': 2936.75, 'position_size': 0, 'timestamp': 1766946420}] +2025-12-29 02:28:23,785 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:23,785 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:23,787 - app.services.trading_executor - INFO - Strategy 1 signal executed: open_long @ 2936.75 +2025-12-29 02:28:23,787 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:23,788 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:24,007 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=862.82, pending_signals=2 +2025-12-29 02:28:24,009 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 863.35, 'position_size': 0, 'timestamp': 1766946420}] +2025-12-29 02:28:24,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:24,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:24,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:24,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:25,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:25,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:25,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:25,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:26,004 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=71, strategy_id=1, cfg={'exchange_id': 'bitget', 'api_key': 'bg_8...b659', 'secret_key': '3b7e...b239', 'passphrase': 'xuji...u123', 'credential_id': 3}, err=Bitget HTTP 400: {"code":"45115","msg":"The price you enter should be a multiple of 0.01{1}","requestTime":1766946506341,"data":null} +2025-12-29 02:28:26,489 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:26,490 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:26,802 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:26,802 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:27,262 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:27] "GET /api/dashboard/summary?_t=1766946506934 HTTP/1.1" 200 - +2025-12-29 02:28:27,270 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766946506934 HTTP/1.1" 200 - +2025-12-29 02:28:27,505 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:27,506 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:27,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:27,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:28,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:28,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:28,803 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:28,909 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:29,699 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:29] "GET /api/dashboard/summary?_t=1766946509386 HTTP/1.1" 200 - +2025-12-29 02:28:29,706 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:29] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766946509386 HTTP/1.1" 200 - +2025-12-29 02:28:29,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:29,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:29,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:29,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:30,185 - app.services.pending_order_worker - INFO - live notify: pending_id=71, strategy_id=1, ok=browser,telegram,email fail=- +2025-12-29 02:28:30,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:30,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:30,816 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:30,817 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:31,474 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:31,474 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:31,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:31,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:32,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:32,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:32,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:32,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:33,519 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2936.75, pending_signals=2 +2025-12-29 02:28:33,535 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 2936.75, 'position_size': 0.08, 'timestamp': 1766946420}, {'type': 'close_short', 'trigger_price': 2936.75, 'position_size': 0, 'timestamp': 1766946420}] +2025-12-29 02:28:33,816 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=862.82, pending_signals=2 +2025-12-29 02:28:33,816 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:33,817 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:33,820 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 863.35, 'position_size': 0, 'timestamp': 1766946420}] +2025-12-29 02:28:34,211 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:34,312 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:34,899 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:34,900 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:35,215 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:35,216 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:35,809 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:35,810 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:36,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:36,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:36,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:36,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:37,786 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:37,786 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:37,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:37,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:38,476 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:38,477 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:38,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:38,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:39,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:39,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:39,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:39,900 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:40,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:40,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:40,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:40,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:41,477 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:41,478 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:41,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:41,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:42,212 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:42,213 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:42,807 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:42,808 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:43,212 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:43,213 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:43,629 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2936.75, pending_signals=2 +2025-12-29 02:28:43,642 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 2936.75, 'position_size': 0.08, 'timestamp': 1766946420}, {'type': 'close_short', 'trigger_price': 2936.75, 'position_size': 0, 'timestamp': 1766946420}] +2025-12-29 02:28:43,809 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:43,810 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:43,953 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=862.64, pending_signals=2 +2025-12-29 02:28:43,957 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 863.35, 'position_size': 0, 'timestamp': 1766946420}] +2025-12-29 02:28:44,212 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:44,213 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:45,527 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:45,627 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:45,776 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:45,776 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:46,212 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:46,212 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:47,516 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:47,516 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:47,780 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:47,780 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:48,212 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:48,212 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:48,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:48,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:49,212 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:49,212 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:49,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:49,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:50,213 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:50,214 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:50,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:50,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:51,211 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:51,313 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:51,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:51,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:52,211 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:52,212 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:52,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:52,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:53,213 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:53,214 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:53,519 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2936.75, pending_signals=2 +2025-12-29 02:28:53,531 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 2936.75, 'position_size': 0.08, 'timestamp': 1766946420}, {'type': 'close_short', 'trigger_price': 2936.75, 'position_size': 0, 'timestamp': 1766946420}] +2025-12-29 02:28:53,811 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:53,813 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:53,851 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=862.64, pending_signals=2 +2025-12-29 02:28:53,855 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_short', 'trigger_price': 863.35, 'position_size': 0, 'timestamp': 1766946420}] +2025-12-29 02:28:54,211 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:54,212 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:54,807 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:54,807 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:55,213 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:55,214 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:55,809 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:55,810 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:56,213 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:56,214 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:57,524 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:57,625 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:57,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:57,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:58,212 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:58,212 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:58,803 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:28:58,804 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:28:59,212 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:28:59,212 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:28:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:00,514 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:00,515 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:00,777 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:00,778 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:01,212 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:01,213 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:02,522 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:02,523 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:02,784 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:02,784 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:03,212 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:03,319 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:04,520 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:04,521 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:04,783 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:04,784 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:05,213 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:05,214 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:05,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:05,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:06,211 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:06,211 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:06,807 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:06,808 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:07,212 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:07,212 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:08,520 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:08,623 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:08,783 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:08,783 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:09,213 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:09,214 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:09,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:09,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:10,215 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:10,215 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:10,810 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:10,810 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:11,212 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:11,213 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:12,526 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:12,527 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:12,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:12,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:13,212 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:13,212 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:13,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:13,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:14,212 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:14,312 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:15,522 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:15,523 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:15,787 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:15,787 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:16,508 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:16,509 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:17,515 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:17,516 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:18,016 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:18,016 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:18,213 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:18,213 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:19,523 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:19,723 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:19,783 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:19,784 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:20,219 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:20,219 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:21,531 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:21,532 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:21,781 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:21,781 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:22,212 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:22,213 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:22,804 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:22,805 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:23,474 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:23,475 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:23,813 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:23,814 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:24,214 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:24,215 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:25,561 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:25,661 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:25,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:25,896 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:26,214 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:26,214 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:26,802 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:26,802 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:27,489 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:27,489 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:27,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:27,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:28,817 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:28,818 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:28,820 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:28,820 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:29,481 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:29,481 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:30,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:30,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:30,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:30,897 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:31,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:31,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:31,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:31,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:32,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:32,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:32,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:32,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:33,491 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:33,492 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:33,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:33,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:35,025 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:35,026 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:35,479 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:35,480 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:35,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:35,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:36,497 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:36,498 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:36,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:36,899 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:37,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:37,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:37,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:37,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:38,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:38,484 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:38,813 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:38,814 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:39,476 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:39,477 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:39,802 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:39,802 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:40,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:40,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:40,809 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:40,810 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:41,490 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:41,491 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:41,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:41,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:42,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:42,893 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:43,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:43,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:43,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:43,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:44,806 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:44,807 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:46,002 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:46,004 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:46,313 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:46,315 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:46,803 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:46,804 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:47,499 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:47,501 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:47,807 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:47,809 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:48,836 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:48,944 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:48,962 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:48,964 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:49,504 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:49,506 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:49,820 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:49,823 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:50,818 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:50,820 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:50,829 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:50,831 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:51,507 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:51,509 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:51,826 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:51,827 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:52,812 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:52,814 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:52,827 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:52,829 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:53,499 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:53,500 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:54,825 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:54,827 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:54,835 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:54,944 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:55,543 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:55,545 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:56,817 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:56,818 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:56,824 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:56,825 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:57,483 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:57,484 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:58,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:29:58,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:58,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:58,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:29:59,482 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:29:59,482 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:29:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:00,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:30:00,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:00,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:30:01,193 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:01,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:30:01,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:01,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:30:01,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:02,787 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:30:02,787 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:03,477 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:30:03,477 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:03,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:30:03,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:04,797 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:30:04,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:04,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:30:04,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:05,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:30:05,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:05,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:30:05,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:06,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:30:06,894 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:07,479 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:30:07,479 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:07,783 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:30:07,784 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:08,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:30:08,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:08,809 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:30:08,810 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:09,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:30:09,484 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:09,804 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:30:09,804 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:10,482 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:30:10,483 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:10,802 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:30:10,802 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:11,476 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:30:11,477 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:12,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:30:12,892 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:12,894 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:30:12,895 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:13,476 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:30:13,476 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:14,800 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:30:14,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:14,802 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:30:14,802 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:15,478 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:30:15,478 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:16,786 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:30:16,787 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:16,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:30:16,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:17,488 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:30:17,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:17,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:30:17,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:18,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:30:18,897 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:18,899 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:30:18,899 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:19,482 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:30:19,483 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:20,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:30:20,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:20,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:30:20,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:21,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:30:21,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:21,809 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:30:21,809 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:22,483 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:30:22,483 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:22,805 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:30:22,806 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:23,479 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:30:23,480 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:24,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:30:25,099 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:25,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:30:25,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:26,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:30:26,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:37,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:30:37,484 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:30:37,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:30:37,892 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:30:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:31:37,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:31:37,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:31:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:31:37,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:31:37,902 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:31:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:32:37,488 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:32:37,489 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:32:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:32:37,802 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:32:37,906 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:32:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:32:46,602 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:32:46,706 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:32:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:32:47,218 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2025-12-29 02:32:47,219 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:32:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:32:48,412 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:32:48] "GET /api/dashboard/summary?_t=1766946768086 HTTP/1.1" 200 - +2025-12-29 02:32:48,419 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:32:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766946768086 HTTP/1.1" 200 - +2025-12-29 02:32:51,880 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:32:51] "GET /api/market/types?_t=1766946771871 HTTP/1.1" 200 - +2025-12-29 02:32:52,202 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:32:52] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 02:32:52,216 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:32:52] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 02:32:52,555 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-29 02:32:52,558 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:32:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:32:53,665 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:32:53,666 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:32:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:32:54,549 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1D, limit=500 +2025-12-29 02:32:54,669 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:32:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:32:55,703 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1D, limit=5 +2025-12-29 02:32:55,804 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:32:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:32:56,360 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1m, limit=500 +2025-12-29 02:32:56,477 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:32:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:32:57,520 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1m, limit=5 +2025-12-29 02:32:57,621 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:32:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:32:58,824 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1m, limit=5 +2025-12-29 02:32:58,824 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:32:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:32:59,520 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1m, limit=5 +2025-12-29 02:32:59,521 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:32:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:33:00,821 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1m, limit=5 +2025-12-29 02:33:00,821 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:33:01,535 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1m, limit=5 +2025-12-29 02:33:01,536 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:33:02,825 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1m, limit=5 +2025-12-29 02:33:02,927 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:33:03,520 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1m, limit=5 +2025-12-29 02:33:03,521 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:33:04,834 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1m, limit=5 +2025-12-29 02:33:04,835 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:33:05,522 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1m, limit=5 +2025-12-29 02:33:05,523 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:33:06,830 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1m, limit=5 +2025-12-29 02:33:06,831 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:33:07,518 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1m, limit=5 +2025-12-29 02:33:07,519 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:33:08,823 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1m, limit=5 +2025-12-29 02:33:08,922 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:33:09,524 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1m, limit=5 +2025-12-29 02:33:09,524 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:33:10,834 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1m, limit=5 +2025-12-29 02:33:10,834 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:33:11,518 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1m, limit=5 +2025-12-29 02:33:11,518 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:33:12,824 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1m, limit=5 +2025-12-29 02:33:12,824 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:33:13,518 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1m, limit=5 +2025-12-29 02:33:13,519 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:33:14,149 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:14] "GET /api/dashboard/summary?_t=1766946793831 HTTP/1.1" 200 - +2025-12-29 02:33:14,158 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766946793831 HTTP/1.1" 200 - +2025-12-29 02:33:21,145 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:21] "GET /api/strategies?_t=1766946801134 HTTP/1.1" 200 - +2025-12-29 02:33:22,350 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:22] "GET /api/strategies/equityCurve?id=9&_t=1766946802026 HTTP/1.1" 200 - +2025-12-29 02:33:22,358 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:22] "GET /api/strategies/equityCurve?id=9&_t=1766946802026 HTTP/1.1" 200 - +2025-12-29 02:33:22,366 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:22] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766946802026 HTTP/1.1" 200 - +2025-12-29 02:33:22,375 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:22] "GET /api/strategies/positions?id=9&_t=1766946802028 HTTP/1.1" 200 - +2025-12-29 02:33:23,366 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:23] "GET /api/strategies/trades?id=9&_t=1766946803357 HTTP/1.1" 200 - +2025-12-29 02:33:25,335 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:25] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946805018 HTTP/1.1" 200 - +2025-12-29 02:33:27,036 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:27] "GET /api/strategies/positions?id=9&_t=1766946807025 HTTP/1.1" 200 - +2025-12-29 02:33:28,342 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:28] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946808018 HTTP/1.1" 200 - +2025-12-29 02:33:31,028 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:31] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946811018 HTTP/1.1" 200 - +2025-12-29 02:33:32,341 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:32] "GET /api/strategies/positions?id=9&_t=1766946812025 HTTP/1.1" 200 - +2025-12-29 02:33:34,028 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:34] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946814019 HTTP/1.1" 200 - +2025-12-29 02:33:37,332 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:37] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946817019 HTTP/1.1" 200 - +2025-12-29 02:33:37,335 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:37] "GET /api/strategies/positions?id=9&_t=1766946817023 HTTP/1.1" 200 - +2025-12-29 02:33:37,598 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:33:37,598 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:33:40,024 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:40] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946820018 HTTP/1.1" 200 - +2025-12-29 02:33:42,345 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:42] "GET /api/strategies/positions?id=9&_t=1766946822025 HTTP/1.1" 200 - +2025-12-29 02:33:43,037 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:43] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946823031 HTTP/1.1" 200 - +2025-12-29 02:33:46,334 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:46] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946826019 HTTP/1.1" 200 - +2025-12-29 02:33:47,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:47] "GET /api/strategies/positions?id=9&_t=1766946827024 HTTP/1.1" 200 - +2025-12-29 02:33:49,332 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:49] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946829019 HTTP/1.1" 200 - +2025-12-29 02:33:52,027 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:52] "GET /api/strategies/equityCurve?id=9&_t=1766946832019 HTTP/1.1" 200 - +2025-12-29 02:33:52,338 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:52] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946832019 HTTP/1.1" 200 - +2025-12-29 02:33:52,342 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:52] "GET /api/strategies/positions?id=9&_t=1766946832023 HTTP/1.1" 200 - +2025-12-29 02:33:55,334 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:55] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946835019 HTTP/1.1" 200 - +2025-12-29 02:33:57,031 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:57] "GET /api/strategies/positions?id=9&_t=1766946837024 HTTP/1.1" 200 - +2025-12-29 02:33:58,330 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:33:58] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946838018 HTTP/1.1" 200 - +2025-12-29 02:34:01,025 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:34:01] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946841019 HTTP/1.1" 200 - +2025-12-29 02:34:02,338 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:34:02] "GET /api/strategies/positions?id=9&_t=1766946842024 HTTP/1.1" 200 - +2025-12-29 02:34:04,027 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:34:04] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946844018 HTTP/1.1" 200 - +2025-12-29 02:34:07,330 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:34:07] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946847018 HTTP/1.1" 200 - +2025-12-29 02:34:07,336 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:34:07] "GET /api/strategies/positions?id=9&_t=1766946847024 HTTP/1.1" 200 - +2025-12-29 02:34:10,025 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:34:10] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946850019 HTTP/1.1" 200 - +2025-12-29 02:34:12,341 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:34:12] "GET /api/strategies/positions?id=9&_t=1766946852024 HTTP/1.1" 200 - +2025-12-29 02:34:13,025 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:34:13] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946853018 HTTP/1.1" 200 - +2025-12-29 02:34:16,333 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:34:16] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946856019 HTTP/1.1" 200 - +2025-12-29 02:34:17,031 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:34:17] "GET /api/strategies/positions?id=9&_t=1766946857024 HTTP/1.1" 200 - +2025-12-29 02:34:19,335 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:34:19] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946859019 HTTP/1.1" 200 - +2025-12-29 02:34:22,026 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:34:22] "GET /api/strategies/equityCurve?id=9&_t=1766946862018 HTTP/1.1" 200 - +2025-12-29 02:34:22,331 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:34:22] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946862019 HTTP/1.1" 200 - +2025-12-29 02:34:22,335 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:34:22] "GET /api/strategies/positions?id=9&_t=1766946862024 HTTP/1.1" 200 - +2025-12-29 02:34:25,332 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:34:25] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946865019 HTTP/1.1" 200 - +2025-12-29 02:34:27,033 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:34:27] "GET /api/strategies/positions?id=9&_t=1766946867024 HTTP/1.1" 200 - +2025-12-29 02:34:28,345 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:34:28] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946868019 HTTP/1.1" 200 - +2025-12-29 02:34:31,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:34:31] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946871481 HTTP/1.1" 200 - +2025-12-29 02:34:32,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:34:32] "GET /api/strategies/positions?id=9&_t=1766946872482 HTTP/1.1" 200 - +2025-12-29 02:34:34,482 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:34:34] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946874472 HTTP/1.1" 200 - +2025-12-29 02:34:37,801 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:34:37,905 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:34:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:34:37,911 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:34:37] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946877483 HTTP/1.1" 200 - +2025-12-29 02:34:37,919 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:34:37] "GET /api/strategies/positions?id=9&_t=1766946877484 HTTP/1.1" 200 - +2025-12-29 02:34:40,482 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:34:40] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946880473 HTTP/1.1" 200 - +2025-12-29 02:34:42,785 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:34:42] "GET /api/strategies/positions?id=9&_t=1766946882470 HTTP/1.1" 200 - +2025-12-29 02:34:43,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:34:43] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946883479 HTTP/1.1" 200 - +2025-12-29 02:34:46,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:34:46] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946886475 HTTP/1.1" 200 - +2025-12-29 02:34:47,493 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:34:47] "GET /api/strategies/positions?id=9&_t=1766946887481 HTTP/1.1" 200 - +2025-12-29 02:34:49,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:34:49] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946889475 HTTP/1.1" 200 - +2025-12-29 02:34:52,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:34:52] "GET /api/strategies/equityCurve?id=9&_t=1766946892476 HTTP/1.1" 200 - +2025-12-29 02:34:52,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:34:52] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946892477 HTTP/1.1" 200 - +2025-12-29 02:34:52,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:34:52] "GET /api/strategies/positions?id=9&_t=1766946892478 HTTP/1.1" 200 - +2025-12-29 02:34:55,340 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:34:55] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946895018 HTTP/1.1" 200 - +2025-12-29 02:34:57,492 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:34:57] "GET /api/strategies/positions?id=9&_t=1766946897484 HTTP/1.1" 200 - +2025-12-29 02:34:58,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:34:58] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946898477 HTTP/1.1" 200 - +2025-12-29 02:35:01,541 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:35:01] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946901473 HTTP/1.1" 200 - +2025-12-29 02:35:02,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:35:02] "GET /api/strategies/positions?id=9&_t=1766946902485 HTTP/1.1" 200 - +2025-12-29 02:35:04,489 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:35:04] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946904482 HTTP/1.1" 200 - +2025-12-29 02:35:07,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:35:07] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946907480 HTTP/1.1" 200 - +2025-12-29 02:35:07,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:35:07] "GET /api/strategies/positions?id=9&_t=1766946907481 HTTP/1.1" 200 - +2025-12-29 02:35:10,480 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:35:10] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946910471 HTTP/1.1" 200 - +2025-12-29 02:35:12,787 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:35:12] "GET /api/strategies/positions?id=9&_t=1766946912471 HTTP/1.1" 200 - +2025-12-29 02:35:13,497 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:35:13] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946913485 HTTP/1.1" 200 - +2025-12-29 02:35:16,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:35:16] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946916483 HTTP/1.1" 200 - +2025-12-29 02:35:17,481 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:35:17] "GET /api/strategies/positions?id=9&_t=1766946917475 HTTP/1.1" 200 - +2025-12-29 02:35:19,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:35:19] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946919477 HTTP/1.1" 200 - +2025-12-29 02:35:22,493 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:35:22] "GET /api/strategies/equityCurve?id=9&_t=1766946922471 HTTP/1.1" 200 - +2025-12-29 02:35:22,804 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:35:22] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946922472 HTTP/1.1" 200 - +2025-12-29 02:35:22,807 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:35:22] "GET /api/strategies/positions?id=9&_t=1766946922472 HTTP/1.1" 200 - +2025-12-29 02:35:26,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:35:26] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946925473 HTTP/1.1" 200 - +2025-12-29 02:35:26,967 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:35:26,967 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:35:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:35:28,868 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:35:28,869 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:35:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:35:28,946 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:35:28,947 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:35:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:35:39,009 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 02:35:39,010 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:35:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 02:35:39,668 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:35:39] "GET /api/strategies/positions?id=9&_t=1766946927478 HTTP/1.1" 200 - +2025-12-29 02:35:39,757 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:35:39] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946928484 HTTP/1.1" 200 - +2025-12-29 02:35:39,763 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:35:39] "GET /api/strategies/positions?id=9&_t=1766946932477 HTTP/1.1" 200 - +2025-12-29 02:35:39,768 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:35:39] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946931477 HTTP/1.1" 200 - +2025-12-29 02:35:39,774 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:35:39] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946934470 HTTP/1.1" 200 - +2025-12-29 02:35:45,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:35:45] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946937475 HTTP/1.1" 200 - +2025-12-29 02:35:45,806 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:35:45] "GET /api/strategies/positions?id=9&_t=1766946937477 HTTP/1.1" 200 - +2025-12-29 02:35:45,811 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:35:45] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946940483 HTTP/1.1" 200 - +2025-12-29 02:35:45,818 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:35:45] "GET /api/strategies/positions?id=9&_t=1766946942481 HTTP/1.1" 200 - +2025-12-29 02:35:45,823 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:35:45] "GET /api/strategies/notifications?id=9&since_id=5&limit=50&_t=1766946943477 HTTP/1.1" 200 - +2025-12-29 02:35:48,356 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:35:48] "GET /api/dashboard/summary?_t=1766946948316 HTTP/1.1" 200 - +2025-12-29 02:35:48,364 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:35:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766946948316 HTTP/1.1" 200 - +2025-12-29 02:45:06,104 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:45:06] "GET /api/dashboard/summary?_t=1766947506086 HTTP/1.1" 200 - +2025-12-29 02:45:06,112 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:45:06] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766947506086 HTTP/1.1" 200 - +2025-12-29 02:45:44,124 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=861.9, pending_signals=1 +2025-12-29 02:45:44,126 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 861.9, 'position_size': 0, 'timestamp': 1766947500}] +2025-12-29 02:45:54,027 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=861.9, pending_signals=1 +2025-12-29 02:45:54,030 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 861.9, 'position_size': 0, 'timestamp': 1766947500}] +2025-12-29 02:46:04,118 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=861.8, pending_signals=1 +2025-12-29 02:46:04,120 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 861.8, 'position_size': 0, 'timestamp': 1766947560}] +2025-12-29 02:46:14,021 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=861.8, pending_signals=1 +2025-12-29 02:46:14,024 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 861.8, 'position_size': 0, 'timestamp': 1766947560}] +2025-12-29 02:46:23,903 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2933.38, pending_signals=1 +2025-12-29 02:46:23,915 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2933.38, 'position_size': 0, 'timestamp': 1766947560}] +2025-12-29 02:46:23,927 - app.services.trading_executor - INFO - Strategy 1 signal executed: close_long @ 2933.38 +2025-12-29 02:46:24,097 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87692.68, pending_signals=1 +2025-12-29 02:46:24,108 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87692.67, 'position_size': 0, 'timestamp': 1766947560}] +2025-12-29 02:46:24,117 - app.services.trading_executor - INFO - Strategy 2 signal executed: close_long @ 87692.67 +2025-12-29 02:46:24,290 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=861.55, pending_signals=2 +2025-12-29 02:46:24,292 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 861.83, 'position_size': 0, 'timestamp': 1766947500}, {'type': 'open_short', 'trigger_price': 861.83, 'position_size': 0.08, 'timestamp': 1766947500}] +2025-12-29 02:46:24,300 - app.services.trading_executor - INFO - Strategy 9 signal executed: open_short @ 861.83 +2025-12-29 02:46:25,802 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=72, strategy_id=1, cfg={'exchange_id': 'bitget', 'api_key': 'bg_8...b659', 'secret_key': '3b7e...b239', 'passphrase': 'xuji...u123', 'credential_id': 3}, err=Bitget HTTP 400: {"code":"45115","msg":"The price you enter should be a multiple of 0.01{1}","requestTime":1766947586170,"data":null} +2025-12-29 02:46:30,198 - app.services.pending_order_worker - INFO - live notify: pending_id=72, strategy_id=1, ok=browser,telegram,email fail=- +2025-12-29 02:46:33,709 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2933.38, pending_signals=1 +2025-12-29 02:46:33,713 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2933.38, 'position_size': 0, 'timestamp': 1766947560}] +2025-12-29 02:46:33,835 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87692.68, pending_signals=1 +2025-12-29 02:46:33,850 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87692.68, 'position_size': 0, 'timestamp': 1766947560}] +2025-12-29 02:46:34,051 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=861.55, pending_signals=2 +2025-12-29 02:46:34,054 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 861.83, 'position_size': 0, 'timestamp': 1766947500}, {'type': 'open_short', 'trigger_price': 861.83, 'position_size': 0.08, 'timestamp': 1766947500}] +2025-12-29 02:46:35,181 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:46:35] "GET /api/dashboard/summary?_t=1766947594857 HTTP/1.1" 200 - +2025-12-29 02:46:35,189 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:46:35] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766947594857 HTTP/1.1" 200 - +2025-12-29 02:46:40,834 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:46:40] "GET /api/dashboard/summary?_t=1766947600821 HTTP/1.1" 200 - +2025-12-29 02:46:41,146 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:46:41] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766947600821 HTTP/1.1" 200 - +2025-12-29 02:46:43,357 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:46:43] "GET /api/dashboard/summary?_t=1766947603031 HTTP/1.1" 200 - +2025-12-29 02:46:43,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:46:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766947603031 HTTP/1.1" 200 - +2025-12-29 02:46:43,798 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2932.24, pending_signals=1 +2025-12-29 02:46:43,801 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2932.24, 'position_size': 0, 'timestamp': 1766947560}] +2025-12-29 02:46:43,938 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87668.23, pending_signals=1 +2025-12-29 02:46:43,949 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87668.23, 'position_size': 0, 'timestamp': 1766947560}] +2025-12-29 02:46:44,134 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=861.09, pending_signals=2 +2025-12-29 02:46:44,138 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 861.83, 'position_size': 0, 'timestamp': 1766947500}, {'type': 'open_short', 'trigger_price': 861.83, 'position_size': 0.08, 'timestamp': 1766947500}] +2025-12-29 02:46:46,167 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:46:46] "GET /api/dashboard/summary?_t=1766947606159 HTTP/1.1" 200 - +2025-12-29 02:46:46,476 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:46:46] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766947606159 HTTP/1.1" 200 - +2025-12-29 02:46:50,463 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:46:50] "GET /api/dashboard/summary?_t=1766947610144 HTTP/1.1" 200 - +2025-12-29 02:46:50,468 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:46:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766947610144 HTTP/1.1" 200 - +2025-12-29 02:46:53,696 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2932.24, pending_signals=1 +2025-12-29 02:46:53,698 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2932.24, 'position_size': 0, 'timestamp': 1766947560}] +2025-12-29 02:46:53,838 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87668.23, pending_signals=1 +2025-12-29 02:46:53,848 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87668.23, 'position_size': 0, 'timestamp': 1766947560}] +2025-12-29 02:46:54,033 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=861.09, pending_signals=2 +2025-12-29 02:46:54,036 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 861.83, 'position_size': 0, 'timestamp': 1766947500}, {'type': 'open_short', 'trigger_price': 861.83, 'position_size': 0.08, 'timestamp': 1766947500}] +2025-12-29 02:46:58,632 - app.services.pending_order_worker - INFO - live notify: pending_id=73, strategy_id=2, ok=browser,email,telegram fail=- +2025-12-29 02:47:01,660 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:47:01] "GET /api/dashboard/summary?_t=1766947621641 HTTP/1.1" 200 - +2025-12-29 02:47:01,968 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:47:01] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766947621641 HTTP/1.1" 200 - +2025-12-29 02:47:03,799 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2931.61, pending_signals=2 +2025-12-29 02:47:03,802 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2933.38, 'position_size': 0, 'timestamp': 1766947560}, {'type': 'open_short', 'trigger_price': 2933.38, 'position_size': 0.08, 'timestamp': 1766947560}] +2025-12-29 02:47:03,811 - app.services.trading_executor - INFO - Strategy 1 signal executed: open_short @ 2933.38 +2025-12-29 02:47:03,941 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87662.01, pending_signals=2 +2025-12-29 02:47:03,944 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87692.67, 'position_size': 0, 'timestamp': 1766947560}, {'type': 'open_short', 'trigger_price': 87692.67, 'position_size': 0.08, 'timestamp': 1766947560}] +2025-12-29 02:47:03,954 - app.services.trading_executor - INFO - Strategy 2 signal executed: open_short @ 87692.67 +2025-12-29 02:47:06,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:47:06] "GET /api/dashboard/summary?_t=1766947626472 HTTP/1.1" 200 - +2025-12-29 02:47:06,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:47:06] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766947626472 HTTP/1.1" 200 - +2025-12-29 02:47:09,777 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:47:09] "GET /api/dashboard/summary?_t=1766947629760 HTTP/1.1" 200 - +2025-12-29 02:47:10,082 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:47:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766947629760 HTTP/1.1" 200 - +2025-12-29 02:47:13,698 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2931.61, pending_signals=2 +2025-12-29 02:47:13,700 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2933.38, 'position_size': 0, 'timestamp': 1766947560}, {'type': 'open_short', 'trigger_price': 2933.38, 'position_size': 0.08, 'timestamp': 1766947560}] +2025-12-29 02:47:13,841 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87662.01, pending_signals=2 +2025-12-29 02:47:13,843 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87692.67, 'position_size': 0, 'timestamp': 1766947560}, {'type': 'open_short', 'trigger_price': 87692.67, 'position_size': 0.08, 'timestamp': 1766947560}] +2025-12-29 02:47:15,189 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:47:15] "GET /api/dashboard/summary?_t=1766947634874 HTTP/1.1" 200 - +2025-12-29 02:47:15,195 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:47:15] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766947634874 HTTP/1.1" 200 - +2025-12-29 02:47:15,544 - app.services.pending_order_worker - INFO - live notify: pending_id=74, strategy_id=9, ok=browser,email,telegram fail=- +2025-12-29 02:47:16,189 - app.services.pending_order_worker - INFO - position sync: removed 1 ghost positions for strategy_id=9 +2025-12-29 02:47:18,946 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=75, strategy_id=1, cfg={'exchange_id': 'bitget', 'api_key': 'bg_8...b659', 'secret_key': '3b7e...b239', 'passphrase': 'xuji...u123', 'credential_id': 3}, err=Bitget HTTP 400: {"code":"45115","msg":"The price you enter should be a multiple of 0.01{1}","requestTime":1766947639315,"data":null} +2025-12-29 02:47:23,600 - app.services.pending_order_worker - INFO - live notify: pending_id=75, strategy_id=1, ok=browser,telegram,email fail=- +2025-12-29 02:47:23,939 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2931.81, pending_signals=2 +2025-12-29 02:47:23,959 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2931.62, 'position_size': 0, 'timestamp': 1766947560}] +2025-12-29 02:47:24,087 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87620.08, pending_signals=2 +2025-12-29 02:47:24,091 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87662.0, 'position_size': 0, 'timestamp': 1766947560}, {'type': 'open_short', 'trigger_price': 87662.0, 'position_size': 0.08, 'timestamp': 1766947560}] +2025-12-29 02:47:33,707 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2931.81, pending_signals=2 +2025-12-29 02:47:33,722 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2931.62, 'position_size': 0, 'timestamp': 1766947560}] +2025-12-29 02:47:33,872 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87620.08, pending_signals=2 +2025-12-29 02:47:33,876 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87662.0, 'position_size': 0, 'timestamp': 1766947560}, {'type': 'open_short', 'trigger_price': 87662.0, 'position_size': 0.08, 'timestamp': 1766947560}] +2025-12-29 02:47:43,811 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2932.28, pending_signals=2 +2025-12-29 02:47:43,822 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2931.62, 'position_size': 0, 'timestamp': 1766947560}] +2025-12-29 02:47:43,957 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87632.34, pending_signals=2 +2025-12-29 02:47:43,961 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87662.0, 'position_size': 0, 'timestamp': 1766947560}, {'type': 'open_short', 'trigger_price': 87662.0, 'position_size': 0.08, 'timestamp': 1766947560}] +2025-12-29 02:47:52,998 - app.services.pending_order_worker - INFO - live notify: pending_id=76, strategy_id=2, ok=browser,email,telegram fail=- +2025-12-29 02:47:53,710 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2932.28, pending_signals=2 +2025-12-29 02:47:53,721 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2931.62, 'position_size': 0, 'timestamp': 1766947560}] +2025-12-29 02:47:53,856 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87632.34, pending_signals=2 +2025-12-29 02:47:53,871 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87662.0, 'position_size': 0, 'timestamp': 1766947560}, {'type': 'open_short', 'trigger_price': 87662.0, 'position_size': 0.08, 'timestamp': 1766947560}] +2025-12-29 02:48:01,981 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:48:01] "GET /api/dashboard/summary?_t=1766947681968 HTTP/1.1" 200 - +2025-12-29 02:48:02,291 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:48:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766947681968 HTTP/1.1" 200 - +2025-12-29 02:48:06,171 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:48:06] "GET /api/dashboard/summary?_t=1766947685856 HTTP/1.1" 200 - +2025-12-29 02:48:06,176 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:48:06] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766947685856 HTTP/1.1" 200 - +2025-12-29 02:48:10,172 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:48:10] "GET /api/dashboard/summary?_t=1766947690161 HTTP/1.1" 200 - +2025-12-29 02:48:10,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:48:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766947690161 HTTP/1.1" 200 - +2025-12-29 02:48:12,036 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:48:12] "GET /api/dashboard/summary?_t=1766947691714 HTTP/1.1" 200 - +2025-12-29 02:48:12,041 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:48:12] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766947691714 HTTP/1.1" 200 - +2025-12-29 02:48:13,441 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:48:13] "GET /api/dashboard/summary?_t=1766947693432 HTTP/1.1" 200 - +2025-12-29 02:48:13,749 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 02:48:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766947693432 HTTP/1.1" 200 - +2025-12-29 03:14:37,072 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-29 03:14:37,095 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-29 03:14:37,548 - app.services.strategy - INFO - Found 3 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}, {'id': 9, 'strategy_type': 'IndicatorStrategy'}] +2025-12-29 03:14:37,549 - app - INFO - Restoring 3 running strategies... +2025-12-29 03:14:37,549 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-29 03:14:37,549 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-29 03:14:37,549 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-29 03:14:37,550 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-29 03:14:37,550 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-29 03:14:37,550 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-29 03:14:37,550 - app.services.trading_executor - INFO - Strategy 9 loop starting +2025-12-29 03:14:37,550 - app.services.trading_executor - INFO - Strategy 9 started +2025-12-29 03:14:37,550 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-29 03:14:37,550 - app - INFO - [OK] IndicatorStrategy 9 restored +2025-12-29 03:14:37,551 - app - INFO - Strategy restore completed: 3/3 restored +2025-12-29 03:14:37,554 - app.services.trading_executor - INFO - Strategy 9 derivatives trading; normalize market_type to: swap +2025-12-29 03:14:37,554 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-29 03:14:37,582 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-29 03:14:37,583 - werkzeug - INFO - Press CTRL+C to quit +2025-12-29 03:14:39,394 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:14:39] "GET /api/strategies?_t=1766949279386 HTTP/1.1" 200 - +2025-12-29 03:14:40,682 - app.services.trading_executor - INFO - ็ญ–็•ฅ 9 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-29 03:14:40,702 - app.services.trading_executor - INFO - Strategy 9 initialized; pending_signals=0 +2025-12-29 03:14:41,538 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:14:41] "GET /api/dashboard/summary?_t=1766949280780 HTTP/1.1" 200 - +2025-12-29 03:14:41,544 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:14:41] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766949280780 HTTP/1.1" 200 - +2025-12-29 03:14:41,693 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=1, position=-1, entry_price=2930.39, highest=2934.0 +2025-12-29 03:14:41,722 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2025-12-29 03:14:42,472 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=1, position=-1, entry_price=87577.6, highest=87650.75 +2025-12-29 03:14:42,509 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2025-12-29 03:14:43,149 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:14:43] "GET /api/dashboard/summary?_t=1766949283137 HTTP/1.1" 200 - +2025-12-29 03:14:43,156 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:14:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766949283137 HTTP/1.1" 200 - +2025-12-29 03:14:49,516 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:14:49] "GET /api/dashboard/summary?_t=1766949289490 HTTP/1.1" 200 - +2025-12-29 03:14:49,530 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:14:49] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766949289490 HTTP/1.1" 200 - +2025-12-29 03:14:50,829 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:14:50] "GET /api/dashboard/summary?_t=1766949290511 HTTP/1.1" 200 - +2025-12-29 03:14:50,835 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:14:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766949290511 HTTP/1.1" 200 - +2025-12-29 03:14:54,937 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:14:54] "GET /api/market/types?_t=1766949294927 HTTP/1.1" 200 - +2025-12-29 03:14:55,064 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:14:55] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 03:14:55,263 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:14:55] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 03:14:55,269 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-29 03:14:55,433 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:14:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:14:56,343 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:14:56] "GET /api/strategies?_t=1766949296206 HTTP/1.1" 200 - +2025-12-29 03:14:57,312 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:14:57] "GET /api/strategies/equityCurve?id=9&_t=1766949297292 HTTP/1.1" 200 - +2025-12-29 03:14:57,319 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:14:57] "GET /api/strategies/equityCurve?id=9&_t=1766949297293 HTTP/1.1" 200 - +2025-12-29 03:14:57,326 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:14:57] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766949297293 HTTP/1.1" 200 - +2025-12-29 03:14:57,332 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:14:57] "GET /api/strategies/positions?id=9&_t=1766949297295 HTTP/1.1" 200 - +2025-12-29 03:14:58,446 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:14:58] "GET /api/strategies/trades?id=9&_t=1766949298440 HTTP/1.1" 200 - +2025-12-29 03:15:00,617 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:15:00] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949300297 HTTP/1.1" 200 - +2025-12-29 03:15:00,883 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:15:00] "GET /api/strategies?_t=1766949300641 HTTP/1.1" 200 - +2025-12-29 03:15:01,557 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:15:01] "GET /api/strategies/equityCurve?id=9&_t=1766949301547 HTTP/1.1" 200 - +2025-12-29 03:15:01,866 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:15:01] "GET /api/strategies/equityCurve?id=9&_t=1766949301547 HTTP/1.1" 200 - +2025-12-29 03:15:01,871 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:15:01] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766949301547 HTTP/1.1" 200 - +2025-12-29 03:15:01,875 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:15:01] "GET /api/strategies/positions?id=9&_t=1766949301549 HTTP/1.1" 200 - +2025-12-29 03:15:03,091 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:15:03] "GET /api/strategies/trades?id=9&_t=1766949302780 HTTP/1.1" 200 - +2025-12-29 03:15:04,557 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:15:04] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949304548 HTTP/1.1" 200 - +2025-12-29 03:15:06,870 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:15:06] "GET /api/strategies/positions?id=9&_t=1766949306550 HTTP/1.1" 200 - +2025-12-29 03:15:07,553 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:15:07] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949307546 HTTP/1.1" 200 - +2025-12-29 03:15:10,864 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:15:10] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949310545 HTTP/1.1" 200 - +2025-12-29 03:15:11,555 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:15:11] "GET /api/strategies/positions?id=9&_t=1766949311546 HTTP/1.1" 200 - +2025-12-29 03:15:13,867 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:15:13] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949313552 HTTP/1.1" 200 - +2025-12-29 03:15:16,559 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:15:16] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949316551 HTTP/1.1" 200 - +2025-12-29 03:15:16,871 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:15:16] "GET /api/strategies/positions?id=9&_t=1766949316551 HTTP/1.1" 200 - +2025-12-29 03:15:19,856 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:15:19] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949319540 HTTP/1.1" 200 - +2025-12-29 03:15:21,560 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:15:21] "GET /api/strategies/positions?id=9&_t=1766949321553 HTTP/1.1" 200 - +2025-12-29 03:15:22,864 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:15:22] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949322549 HTTP/1.1" 200 - +2025-12-29 03:15:25,558 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:15:25] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949325551 HTTP/1.1" 200 - +2025-12-29 03:15:26,871 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:15:26] "GET /api/strategies/positions?id=9&_t=1766949326550 HTTP/1.1" 200 - +2025-12-29 03:15:28,548 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:15:28] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949328541 HTTP/1.1" 200 - +2025-12-29 03:15:31,862 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:15:31] "GET /api/strategies/equityCurve?id=9&_t=1766949331541 HTTP/1.1" 200 - +2025-12-29 03:15:31,866 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:15:31] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949331541 HTTP/1.1" 200 - +2025-12-29 03:15:31,869 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:15:31] "GET /api/strategies/positions?id=9&_t=1766949331545 HTTP/1.1" 200 - +2025-12-29 03:15:34,546 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:15:34] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949334540 HTTP/1.1" 200 - +2025-12-29 03:15:36,857 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:15:36] "GET /api/strategies/positions?id=9&_t=1766949336546 HTTP/1.1" 200 - +2025-12-29 03:15:37,547 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:15:37] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949337541 HTTP/1.1" 200 - +2025-12-29 03:15:40,850 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:15:40] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949340541 HTTP/1.1" 200 - +2025-12-29 03:15:41,552 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:15:41] "GET /api/strategies/positions?id=9&_t=1766949341545 HTTP/1.1" 200 - +2025-12-29 03:15:43,856 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:15:43] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949343541 HTTP/1.1" 200 - +2025-12-29 03:15:46,547 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:15:46] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949346540 HTTP/1.1" 200 - +2025-12-29 03:15:46,863 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:15:46] "GET /api/strategies/positions?id=9&_t=1766949346545 HTTP/1.1" 200 - +2025-12-29 03:15:49,858 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:15:49] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949349541 HTTP/1.1" 200 - +2025-12-29 03:15:51,552 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:15:51] "GET /api/strategies/positions?id=9&_t=1766949351545 HTTP/1.1" 200 - +2025-12-29 03:15:52,855 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:15:52] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949352540 HTTP/1.1" 200 - +2025-12-29 03:15:55,547 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:15:55] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949355541 HTTP/1.1" 200 - +2025-12-29 03:15:56,857 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:15:56] "GET /api/strategies/positions?id=9&_t=1766949356546 HTTP/1.1" 200 - +2025-12-29 03:15:58,547 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:15:58] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949358540 HTTP/1.1" 200 - +2025-12-29 03:16:01,856 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:16:01] "GET /api/strategies/equityCurve?id=9&_t=1766949361540 HTTP/1.1" 200 - +2025-12-29 03:16:01,878 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:16:01] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949361540 HTTP/1.1" 200 - +2025-12-29 03:16:01,881 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:16:01] "GET /api/strategies/positions?id=9&_t=1766949361546 HTTP/1.1" 200 - +2025-12-29 03:16:04,547 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:16:04] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949364540 HTTP/1.1" 200 - +2025-12-29 03:16:06,862 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:16:06] "GET /api/strategies/positions?id=9&_t=1766949366545 HTTP/1.1" 200 - +2025-12-29 03:16:07,548 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:16:07] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949367541 HTTP/1.1" 200 - +2025-12-29 03:16:10,850 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:16:10] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949370540 HTTP/1.1" 200 - +2025-12-29 03:16:11,554 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:16:11] "GET /api/strategies/positions?id=9&_t=1766949371545 HTTP/1.1" 200 - +2025-12-29 03:16:13,850 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:16:13] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949373540 HTTP/1.1" 200 - +2025-12-29 03:16:16,548 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:16:16] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949376540 HTTP/1.1" 200 - +2025-12-29 03:16:16,856 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:16:16] "GET /api/strategies/positions?id=9&_t=1766949376545 HTTP/1.1" 200 - +2025-12-29 03:16:19,862 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:16:19] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949379541 HTTP/1.1" 200 - +2025-12-29 03:16:21,552 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:16:21] "GET /api/strategies/positions?id=9&_t=1766949381545 HTTP/1.1" 200 - +2025-12-29 03:16:22,857 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:16:22] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949382541 HTTP/1.1" 200 - +2025-12-29 03:16:25,548 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:16:25] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949385540 HTTP/1.1" 200 - +2025-12-29 03:16:26,864 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:16:26] "GET /api/strategies/positions?id=9&_t=1766949386546 HTTP/1.1" 200 - +2025-12-29 03:16:28,547 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:16:28] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949388540 HTTP/1.1" 200 - +2025-12-29 03:16:31,861 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:16:31] "GET /api/strategies/equityCurve?id=9&_t=1766949391541 HTTP/1.1" 200 - +2025-12-29 03:16:31,864 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:16:31] "GET /api/strategies/positions?id=9&_t=1766949391544 HTTP/1.1" 200 - +2025-12-29 03:16:31,869 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:16:31] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949391541 HTTP/1.1" 200 - +2025-12-29 03:16:34,547 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:16:34] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949394540 HTTP/1.1" 200 - +2025-12-29 03:16:36,854 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:16:36] "GET /api/strategies/positions?id=9&_t=1766949396545 HTTP/1.1" 200 - +2025-12-29 03:16:37,547 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:16:37] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949397541 HTTP/1.1" 200 - +2025-12-29 03:16:40,850 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:16:40] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949400541 HTTP/1.1" 200 - +2025-12-29 03:16:41,553 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:16:41] "GET /api/strategies/positions?id=9&_t=1766949401546 HTTP/1.1" 200 - +2025-12-29 03:16:43,853 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:16:43] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949403541 HTTP/1.1" 200 - +2025-12-29 03:16:46,549 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:16:46] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949406541 HTTP/1.1" 200 - +2025-12-29 03:16:46,869 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:16:46] "GET /api/strategies/positions?id=9&_t=1766949406546 HTTP/1.1" 200 - +2025-12-29 03:16:49,862 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:16:49] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949409540 HTTP/1.1" 200 - +2025-12-29 03:16:51,552 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:16:51] "GET /api/strategies/positions?id=9&_t=1766949411546 HTTP/1.1" 200 - +2025-12-29 03:16:52,861 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:16:52] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949412541 HTTP/1.1" 200 - +2025-12-29 03:16:55,548 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:16:55] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949415541 HTTP/1.1" 200 - +2025-12-29 03:16:56,854 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:16:56] "GET /api/strategies/positions?id=9&_t=1766949416546 HTTP/1.1" 200 - +2025-12-29 03:16:58,546 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:16:58] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949418540 HTTP/1.1" 200 - +2025-12-29 03:17:01,865 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:17:01] "GET /api/strategies/equityCurve?id=9&_t=1766949421540 HTTP/1.1" 200 - +2025-12-29 03:17:01,868 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:17:01] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949421541 HTTP/1.1" 200 - +2025-12-29 03:17:01,871 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:17:01] "GET /api/strategies/positions?id=9&_t=1766949421546 HTTP/1.1" 200 - +2025-12-29 03:17:04,547 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:17:04] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949424540 HTTP/1.1" 200 - +2025-12-29 03:17:06,870 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:17:06] "GET /api/strategies/positions?id=9&_t=1766949426545 HTTP/1.1" 200 - +2025-12-29 03:17:07,547 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:17:07] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949427541 HTTP/1.1" 200 - +2025-12-29 03:17:10,860 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:17:10] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949430540 HTTP/1.1" 200 - +2025-12-29 03:17:11,554 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:17:11] "GET /api/strategies/positions?id=9&_t=1766949431545 HTTP/1.1" 200 - +2025-12-29 03:17:13,852 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:17:13] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949433541 HTTP/1.1" 200 - +2025-12-29 03:17:16,547 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:17:16] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949436541 HTTP/1.1" 200 - +2025-12-29 03:17:16,855 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:17:16] "GET /api/strategies/positions?id=9&_t=1766949436545 HTTP/1.1" 200 - +2025-12-29 03:17:19,856 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:17:19] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949439541 HTTP/1.1" 200 - +2025-12-29 03:17:21,570 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:17:21] "GET /api/strategies/positions?id=9&_t=1766949441545 HTTP/1.1" 200 - +2025-12-29 03:17:22,861 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:17:22] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949442541 HTTP/1.1" 200 - +2025-12-29 03:17:25,547 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:17:25] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949445541 HTTP/1.1" 200 - +2025-12-29 03:17:26,862 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:17:26] "GET /api/strategies/positions?id=9&_t=1766949446545 HTTP/1.1" 200 - +2025-12-29 03:17:28,547 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:17:28] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949448541 HTTP/1.1" 200 - +2025-12-29 03:17:31,855 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:17:31] "GET /api/strategies/equityCurve?id=9&_t=1766949451540 HTTP/1.1" 200 - +2025-12-29 03:17:31,859 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:17:31] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949451541 HTTP/1.1" 200 - +2025-12-29 03:17:31,863 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:17:31] "GET /api/strategies/positions?id=9&_t=1766949451545 HTTP/1.1" 200 - +2025-12-29 03:17:34,549 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:17:34] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949454540 HTTP/1.1" 200 - +2025-12-29 03:17:36,871 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:17:36] "GET /api/strategies/positions?id=9&_t=1766949456546 HTTP/1.1" 200 - +2025-12-29 03:17:37,547 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:17:37] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949457541 HTTP/1.1" 200 - +2025-12-29 03:17:40,857 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:17:40] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949460540 HTTP/1.1" 200 - +2025-12-29 03:17:41,553 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:17:41] "GET /api/strategies/positions?id=9&_t=1766949461545 HTTP/1.1" 200 - +2025-12-29 03:17:43,862 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:17:43] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949463540 HTTP/1.1" 200 - +2025-12-29 03:17:46,547 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:17:46] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949466540 HTTP/1.1" 200 - +2025-12-29 03:17:46,857 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:17:46] "GET /api/strategies/positions?id=9&_t=1766949466544 HTTP/1.1" 200 - +2025-12-29 03:17:49,855 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:17:49] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949469541 HTTP/1.1" 200 - +2025-12-29 03:17:51,553 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:17:51] "GET /api/strategies/positions?id=9&_t=1766949471545 HTTP/1.1" 200 - +2025-12-29 03:17:52,863 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:17:52] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949472541 HTTP/1.1" 200 - +2025-12-29 03:17:55,555 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:17:55] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949475541 HTTP/1.1" 200 - +2025-12-29 03:17:56,865 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:17:56] "GET /api/strategies/positions?id=9&_t=1766949476545 HTTP/1.1" 200 - +2025-12-29 03:17:58,547 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:17:58] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949478541 HTTP/1.1" 200 - +2025-12-29 03:18:01,851 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:01] "GET /api/strategies/equityCurve?id=9&_t=1766949481540 HTTP/1.1" 200 - +2025-12-29 03:18:01,854 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:01] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949481541 HTTP/1.1" 200 - +2025-12-29 03:18:01,857 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:01] "GET /api/strategies/positions?id=9&_t=1766949481546 HTTP/1.1" 200 - +2025-12-29 03:18:04,547 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:04] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949484541 HTTP/1.1" 200 - +2025-12-29 03:18:06,856 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:06] "GET /api/strategies/positions?id=9&_t=1766949486546 HTTP/1.1" 200 - +2025-12-29 03:18:07,547 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:07] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949487541 HTTP/1.1" 200 - +2025-12-29 03:18:10,852 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:10] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949490541 HTTP/1.1" 200 - +2025-12-29 03:18:11,556 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:11] "GET /api/strategies/positions?id=9&_t=1766949491546 HTTP/1.1" 200 - +2025-12-29 03:18:13,848 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:13] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949493540 HTTP/1.1" 200 - +2025-12-29 03:18:16,369 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:16] "GET /api/strategies/equityCurve?id=2&_t=1766949496358 HTTP/1.1" 200 - +2025-12-29 03:18:16,676 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:16] "GET /api/strategies/equityCurve?id=2&_t=1766949496358 HTTP/1.1" 200 - +2025-12-29 03:18:16,679 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:16] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766949496358 HTTP/1.1" 200 - +2025-12-29 03:18:16,788 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:16] "GET /api/strategies/positions?id=2&_t=1766949496358 HTTP/1.1" 200 - +2025-12-29 03:18:16,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:16] "GET /api/strategies/trades?id=2&_t=1766949496358 HTTP/1.1" 200 - +2025-12-29 03:18:17,933 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:17] "GET /api/strategies/equityCurve?id=2&_t=1766949497618 HTTP/1.1" 200 - +2025-12-29 03:18:17,936 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:17] "GET /api/strategies/equityCurve?id=2&_t=1766949497618 HTTP/1.1" 200 - +2025-12-29 03:18:17,939 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:17] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766949497618 HTTP/1.1" 200 - +2025-12-29 03:18:18,807 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:18] "GET /api/strategies/equityCurve?id=2&_t=1766949498798 HTTP/1.1" 200 - +2025-12-29 03:18:19,110 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:19] "GET /api/strategies/equityCurve?id=2&_t=1766949498798 HTTP/1.1" 200 - +2025-12-29 03:18:19,114 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:19] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766949498798 HTTP/1.1" 200 - +2025-12-29 03:18:20,171 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:20] "GET /api/strategies/equityCurve?id=9&_t=1766949499854 HTTP/1.1" 200 - +2025-12-29 03:18:20,176 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:20] "GET /api/strategies/equityCurve?id=9&_t=1766949499854 HTTP/1.1" 200 - +2025-12-29 03:18:20,180 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:20] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766949499854 HTTP/1.1" 200 - +2025-12-29 03:18:20,184 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:20] "GET /api/strategies/positions?id=9&_t=1766949499856 HTTP/1.1" 200 - +2025-12-29 03:18:20,188 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:20] "GET /api/strategies/trades?id=9&_t=1766949499856 HTTP/1.1" 200 - +2025-12-29 03:18:22,857 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:22] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949502851 HTTP/1.1" 200 - +2025-12-29 03:18:25,168 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:25] "GET /api/strategies/positions?id=9&_t=1766949504855 HTTP/1.1" 200 - +2025-12-29 03:18:25,859 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:25] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949505850 HTTP/1.1" 200 - +2025-12-29 03:18:29,253 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:29] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949508863 HTTP/1.1" 200 - +2025-12-29 03:18:29,869 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:29] "GET /api/strategies/positions?id=9&_t=1766949509862 HTTP/1.1" 200 - +2025-12-29 03:18:32,168 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:32] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949511850 HTTP/1.1" 200 - +2025-12-29 03:18:34,860 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:34] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949514850 HTTP/1.1" 200 - +2025-12-29 03:18:35,171 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:35] "GET /api/strategies/positions?id=9&_t=1766949514856 HTTP/1.1" 200 - +2025-12-29 03:18:38,174 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:38] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949517856 HTTP/1.1" 200 - +2025-12-29 03:18:39,867 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:39] "GET /api/strategies/positions?id=9&_t=1766949519857 HTTP/1.1" 200 - +2025-12-29 03:18:41,176 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:41] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949520862 HTTP/1.1" 200 - +2025-12-29 03:18:43,866 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:43] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949523856 HTTP/1.1" 200 - +2025-12-29 03:18:45,176 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:45] "GET /api/strategies/positions?id=9&_t=1766949524861 HTTP/1.1" 200 - +2025-12-29 03:18:46,864 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:46] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949526854 HTTP/1.1" 200 - +2025-12-29 03:18:50,177 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:50] "GET /api/strategies/equityCurve?id=9&_t=1766949529858 HTTP/1.1" 200 - +2025-12-29 03:18:50,181 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:50] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949529859 HTTP/1.1" 200 - +2025-12-29 03:18:50,185 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:50] "GET /api/strategies/positions?id=9&_t=1766949529859 HTTP/1.1" 200 - +2025-12-29 03:18:53,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:53] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949533474 HTTP/1.1" 200 - +2025-12-29 03:18:55,175 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:55] "GET /api/strategies/positions?id=9&_t=1766949534855 HTTP/1.1" 200 - +2025-12-29 03:18:55,856 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:55] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949535850 HTTP/1.1" 200 - +2025-12-29 03:18:59,813 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:18:59] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949539482 HTTP/1.1" 200 - +2025-12-29 03:19:00,489 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:00] "GET /api/strategies/positions?id=9&_t=1766949540481 HTTP/1.1" 200 - +2025-12-29 03:19:02,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:02] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949542477 HTTP/1.1" 200 - +2025-12-29 03:19:05,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:05] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949545475 HTTP/1.1" 200 - +2025-12-29 03:19:05,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:05] "GET /api/strategies/positions?id=9&_t=1766949545477 HTTP/1.1" 200 - +2025-12-29 03:19:08,788 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:08] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949548476 HTTP/1.1" 200 - +2025-12-29 03:19:10,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:10] "GET /api/strategies/positions?id=9&_t=1766949550475 HTTP/1.1" 200 - +2025-12-29 03:19:11,788 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:11] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949551471 HTTP/1.1" 200 - +2025-12-29 03:19:14,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:14] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949554477 HTTP/1.1" 200 - +2025-12-29 03:19:15,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:15] "GET /api/strategies/positions?id=9&_t=1766949555483 HTTP/1.1" 200 - +2025-12-29 03:19:17,484 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:17] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949557475 HTTP/1.1" 200 - +2025-12-29 03:19:20,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:20] "GET /api/strategies/equityCurve?id=9&_t=1766949560471 HTTP/1.1" 200 - +2025-12-29 03:19:20,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:20] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949560472 HTTP/1.1" 200 - +2025-12-29 03:19:20,803 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:20] "GET /api/strategies/positions?id=9&_t=1766949560473 HTTP/1.1" 200 - +2025-12-29 03:19:22,856 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:22] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949562850 HTTP/1.1" 200 - +2025-12-29 03:19:25,178 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:25] "GET /api/strategies/positions?id=9&_t=1766949564855 HTTP/1.1" 200 - +2025-12-29 03:19:25,861 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:25] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949565850 HTTP/1.1" 200 - +2025-12-29 03:19:29,168 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:29] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949568851 HTTP/1.1" 200 - +2025-12-29 03:19:29,863 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:29] "GET /api/strategies/positions?id=9&_t=1766949569856 HTTP/1.1" 200 - +2025-12-29 03:19:31,112 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:31] "GET /api/strategies/equityCurve?id=2&_t=1766949570796 HTTP/1.1" 200 - +2025-12-29 03:19:31,116 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:31] "GET /api/strategies/equityCurve?id=2&_t=1766949570796 HTTP/1.1" 200 - +2025-12-29 03:19:31,119 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:31] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766949570796 HTTP/1.1" 200 - +2025-12-29 03:19:31,229 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:31] "GET /api/strategies/positions?id=2&_t=1766949570797 HTTP/1.1" 200 - +2025-12-29 03:19:31,233 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:31] "GET /api/strategies/trades?id=2&_t=1766949570797 HTTP/1.1" 200 - +2025-12-29 03:19:31,834 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:31] "GET /api/strategies/equityCurve?id=1&_t=1766949571816 HTTP/1.1" 200 - +2025-12-29 03:19:32,138 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:32] "GET /api/strategies/equityCurve?id=1&_t=1766949571816 HTTP/1.1" 200 - +2025-12-29 03:19:32,142 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:32] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766949571816 HTTP/1.1" 200 - +2025-12-29 03:19:32,252 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:32] "GET /api/strategies/positions?id=1&_t=1766949571817 HTTP/1.1" 200 - +2025-12-29 03:19:32,256 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:32] "GET /api/strategies/trades?id=1&_t=1766949571817 HTTP/1.1" 200 - +2025-12-29 03:19:33,245 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:33] "GET /api/strategies/equityCurve?id=9&_t=1766949572919 HTTP/1.1" 200 - +2025-12-29 03:19:33,249 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:33] "GET /api/strategies/equityCurve?id=9&_t=1766949572919 HTTP/1.1" 200 - +2025-12-29 03:19:33,254 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:33] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766949572919 HTTP/1.1" 200 - +2025-12-29 03:19:33,258 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:33] "GET /api/strategies/positions?id=9&_t=1766949572920 HTTP/1.1" 200 - +2025-12-29 03:19:33,264 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:33] "GET /api/strategies/trades?id=9&_t=1766949572920 HTTP/1.1" 200 - +2025-12-29 03:19:35,951 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:35] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949575924 HTTP/1.1" 200 - +2025-12-29 03:19:38,250 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:38] "GET /api/strategies/positions?id=9&_t=1766949577931 HTTP/1.1" 200 - +2025-12-29 03:19:38,954 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:38] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949578916 HTTP/1.1" 200 - +2025-12-29 03:19:42,241 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:42] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949581926 HTTP/1.1" 200 - +2025-12-29 03:19:42,933 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:42] "GET /api/strategies/positions?id=9&_t=1766949582924 HTTP/1.1" 200 - +2025-12-29 03:19:45,239 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:45] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949584921 HTTP/1.1" 200 - +2025-12-29 03:19:47,927 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:47] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949587920 HTTP/1.1" 200 - +2025-12-29 03:19:48,235 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:48] "GET /api/strategies/positions?id=9&_t=1766949587921 HTTP/1.1" 200 - +2025-12-29 03:19:51,242 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:51] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949590927 HTTP/1.1" 200 - +2025-12-29 03:19:52,940 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:52] "GET /api/strategies/positions?id=9&_t=1766949592930 HTTP/1.1" 200 - +2025-12-29 03:19:54,233 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:54] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949593918 HTTP/1.1" 200 - +2025-12-29 03:19:56,936 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:56] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949596929 HTTP/1.1" 200 - +2025-12-29 03:19:58,239 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:58] "GET /api/strategies/positions?id=9&_t=1766949597926 HTTP/1.1" 200 - +2025-12-29 03:19:59,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:19:59] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949599919 HTTP/1.1" 200 - +2025-12-29 03:20:03,234 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:03] "GET /api/strategies/equityCurve?id=9&_t=1766949602919 HTTP/1.1" 200 - +2025-12-29 03:20:03,237 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:03] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949602919 HTTP/1.1" 200 - +2025-12-29 03:20:03,240 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:03] "GET /api/strategies/positions?id=9&_t=1766949602919 HTTP/1.1" 200 - +2025-12-29 03:20:06,484 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:06] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949606476 HTTP/1.1" 200 - +2025-12-29 03:20:08,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:08] "GET /api/strategies/positions?id=9&_t=1766949608481 HTTP/1.1" 200 - +2025-12-29 03:20:09,482 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:09] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949609474 HTTP/1.1" 200 - +2025-12-29 03:20:12,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:12] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949612477 HTTP/1.1" 200 - +2025-12-29 03:20:13,492 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:13] "GET /api/strategies/positions?id=9&_t=1766949613484 HTTP/1.1" 200 - +2025-12-29 03:20:15,783 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:15] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949615470 HTTP/1.1" 200 - +2025-12-29 03:20:18,481 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:18] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949618474 HTTP/1.1" 200 - +2025-12-29 03:20:18,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:18] "GET /api/strategies/positions?id=9&_t=1766949618475 HTTP/1.1" 200 - +2025-12-29 03:20:20,885 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=860.03, pending_signals=1 +2025-12-29 03:20:20,888 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 860.03, 'position_size': 0, 'timestamp': 1766949600}] +2025-12-29 03:20:21,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:21] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949621483 HTTP/1.1" 200 - +2025-12-29 03:20:23,490 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:23] "GET /api/strategies/positions?id=9&_t=1766949623484 HTTP/1.1" 200 - +2025-12-29 03:20:24,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:24] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949624471 HTTP/1.1" 200 - +2025-12-29 03:20:27,499 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:27] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949627493 HTTP/1.1" 200 - +2025-12-29 03:20:28,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:28] "GET /api/strategies/positions?id=9&_t=1766949628483 HTTP/1.1" 200 - +2025-12-29 03:20:30,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:30] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949630479 HTTP/1.1" 200 - +2025-12-29 03:20:30,782 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=860.03, pending_signals=1 +2025-12-29 03:20:30,784 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 860.03, 'position_size': 0, 'timestamp': 1766949600}] +2025-12-29 03:20:33,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:33] "GET /api/strategies/equityCurve?id=9&_t=1766949633478 HTTP/1.1" 200 - +2025-12-29 03:20:33,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:33] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949633481 HTTP/1.1" 200 - +2025-12-29 03:20:33,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:33] "GET /api/strategies/positions?id=9&_t=1766949633482 HTTP/1.1" 200 - +2025-12-29 03:20:35,920 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:35] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949635914 HTTP/1.1" 200 - +2025-12-29 03:20:38,233 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:38] "GET /api/strategies/positions?id=9&_t=1766949637919 HTTP/1.1" 200 - +2025-12-29 03:20:38,921 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:38] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949638915 HTTP/1.1" 200 - +2025-12-29 03:20:42,236 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:42] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949641914 HTTP/1.1" 200 - +2025-12-29 03:20:42,927 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:42] "GET /api/strategies/positions?id=9&_t=1766949642920 HTTP/1.1" 200 - +2025-12-29 03:20:45,222 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:45] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949644914 HTTP/1.1" 200 - +2025-12-29 03:20:47,921 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:47] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949647915 HTTP/1.1" 200 - +2025-12-29 03:20:48,233 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:48] "GET /api/strategies/positions?id=9&_t=1766949647919 HTTP/1.1" 200 - +2025-12-29 03:20:51,227 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:51] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949650915 HTTP/1.1" 200 - +2025-12-29 03:20:52,930 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:52] "GET /api/strategies/positions?id=9&_t=1766949652921 HTTP/1.1" 200 - +2025-12-29 03:20:54,224 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:54] "GET /api/strategies/notifications?id=9&since_id=12&limit=50&_t=1766949653915 HTTP/1.1" 200 - +2025-12-29 03:20:54,891 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:54] "GET /api/strategies?_t=1766949654883 HTTP/1.1" 200 - +2025-12-29 03:20:57,039 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:57] "GET /api/strategies/equityCurve?id=9&_t=1766949656708 HTTP/1.1" 200 - +2025-12-29 03:20:57,043 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:57] "GET /api/strategies/equityCurve?id=9&_t=1766949656708 HTTP/1.1" 200 - +2025-12-29 03:20:57,046 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:57] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766949656708 HTTP/1.1" 200 - +2025-12-29 03:20:57,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:57] "GET /api/strategies/positions?id=9&_t=1766949656709 HTTP/1.1" 200 - +2025-12-29 03:20:57,843 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:57] "GET /api/strategies/equityCurve?id=2&_t=1766949657832 HTTP/1.1" 200 - +2025-12-29 03:20:58,155 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:58] "GET /api/strategies/equityCurve?id=2&_t=1766949657832 HTTP/1.1" 200 - +2025-12-29 03:20:58,158 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:58] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766949657832 HTTP/1.1" 200 - +2025-12-29 03:20:58,268 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:58] "GET /api/strategies/positions?id=2&_t=1766949657833 HTTP/1.1" 200 - +2025-12-29 03:20:59,157 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:59] "GET /api/strategies/equityCurve?id=1&_t=1766949658840 HTTP/1.1" 200 - +2025-12-29 03:20:59,164 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:59] "GET /api/strategies/equityCurve?id=1&_t=1766949658840 HTTP/1.1" 200 - +2025-12-29 03:20:59,169 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:59] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766949658840 HTTP/1.1" 200 - +2025-12-29 03:20:59,281 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:20:59] "GET /api/strategies/positions?id=1&_t=1766949658841 HTTP/1.1" 200 - +2025-12-29 03:21:00,930 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:21:00] "GET /api/strategies/equityCurve?id=2&_t=1766949660917 HTTP/1.1" 200 - +2025-12-29 03:21:01,235 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:21:01] "GET /api/strategies/equityCurve?id=2&_t=1766949660917 HTTP/1.1" 200 - +2025-12-29 03:21:01,238 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:21:01] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766949660917 HTTP/1.1" 200 - +2025-12-29 03:21:01,348 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:21:01] "GET /api/strategies/positions?id=2&_t=1766949660918 HTTP/1.1" 200 - +2025-12-29 03:21:02,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:21:02] "GET /api/strategies/equityCurve?id=9&_t=1766949661730 HTTP/1.1" 200 - +2025-12-29 03:21:02,059 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:21:02] "GET /api/strategies/equityCurve?id=9&_t=1766949661730 HTTP/1.1" 200 - +2025-12-29 03:21:02,062 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:21:02] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766949661730 HTTP/1.1" 200 - +2025-12-29 03:21:02,067 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:21:02] "GET /api/strategies/positions?id=9&_t=1766949661731 HTTP/1.1" 200 - +2025-12-29 03:21:02,954 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:21:02] "GET /api/strategies/trades?id=9&_t=1766949662948 HTTP/1.1" 200 - +2025-12-29 03:21:04,185 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:21:04] "GET /api/dashboard/summary?_t=1766949663861 HTTP/1.1" 200 - +2025-12-29 03:21:04,189 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:21:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766949663861 HTTP/1.1" 200 - +2025-12-29 03:23:22,723 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87555.05, pending_signals=1 +2025-12-29 03:23:22,733 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87555.05, 'position_size': 0, 'timestamp': 1766949780}] +2025-12-29 03:23:32,617 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87555.05, pending_signals=1 +2025-12-29 03:23:32,626 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87555.05, 'position_size': 0, 'timestamp': 1766949780}] +2025-12-29 03:23:42,826 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87580.0, pending_signals=1 +2025-12-29 03:23:42,836 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87580.0, 'position_size': 0, 'timestamp': 1766949780}] +2025-12-29 03:23:52,618 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87580.0, pending_signals=1 +2025-12-29 03:23:52,628 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87580.0, 'position_size': 0, 'timestamp': 1766949780}] +2025-12-29 03:24:02,723 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87525.47, pending_signals=2 +2025-12-29 03:24:02,732 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87580.0, 'position_size': 0, 'timestamp': 1766949780}, {'type': 'open_short', 'trigger_price': 87580.0, 'position_size': 0.08, 'timestamp': 1766949780}] +2025-12-29 03:24:12,622 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87525.47, pending_signals=2 +2025-12-29 03:24:12,632 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87580.0, 'position_size': 0, 'timestamp': 1766949780}, {'type': 'open_short', 'trigger_price': 87580.0, 'position_size': 0.08, 'timestamp': 1766949780}] +2025-12-29 03:24:22,725 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87525.42, pending_signals=2 +2025-12-29 03:24:22,736 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87580.0, 'position_size': 0, 'timestamp': 1766949780}, {'type': 'open_short', 'trigger_price': 87580.0, 'position_size': 0.08, 'timestamp': 1766949780}] +2025-12-29 03:24:32,624 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87525.42, pending_signals=2 +2025-12-29 03:24:32,634 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87580.0, 'position_size': 0, 'timestamp': 1766949780}, {'type': 'open_short', 'trigger_price': 87580.0, 'position_size': 0.08, 'timestamp': 1766949780}] +2025-12-29 03:24:42,837 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87541.71, pending_signals=2 +2025-12-29 03:24:42,847 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87547.17, 'position_size': 0, 'timestamp': 1766949780}, {'type': 'open_short', 'trigger_price': 87547.17, 'position_size': 0.08, 'timestamp': 1766949780}] +2025-12-29 03:24:52,627 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87541.71, pending_signals=2 +2025-12-29 03:24:52,637 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87547.17, 'position_size': 0, 'timestamp': 1766949780}, {'type': 'open_short', 'trigger_price': 87547.17, 'position_size': 0.08, 'timestamp': 1766949780}] +2025-12-29 03:25:33,365 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:25:33] "GET /api/market/types?_t=1766949933043 HTTP/1.1" 200 - +2025-12-29 03:25:33,372 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:25:33] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 03:25:33,384 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:25:33] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 03:25:33,620 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-29 03:25:33,739 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:25:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:25:33,907 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:25:33] "GET /api/strategies?_t=1766949933894 HTTP/1.1" 200 - +2025-12-29 03:25:35,116 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:25:35] "GET /api/strategies/equityCurve?id=2&_t=1766949934793 HTTP/1.1" 200 - +2025-12-29 03:25:35,122 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:25:35] "GET /api/strategies/equityCurve?id=2&_t=1766949934793 HTTP/1.1" 200 - +2025-12-29 03:25:35,127 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:25:35] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766949934793 HTTP/1.1" 200 - +2025-12-29 03:25:35,244 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:25:35] "GET /api/strategies/positions?id=2&_t=1766949934795 HTTP/1.1" 200 - +2025-12-29 03:25:37,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:25:37] "GET /api/strategies/notifications?id=2&since_id=14&limit=50&_t=1766949937786 HTTP/1.1" 200 - +2025-12-29 03:25:38,454 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:25:38] "GET /api/strategies/equityCurve?id=9&_t=1766949938134 HTTP/1.1" 200 - +2025-12-29 03:25:38,460 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:25:38] "GET /api/strategies/equityCurve?id=9&_t=1766949938134 HTTP/1.1" 200 - +2025-12-29 03:25:38,464 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:25:38] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766949938134 HTTP/1.1" 200 - +2025-12-29 03:25:38,468 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:25:38] "GET /api/strategies/positions?id=9&_t=1766949938135 HTTP/1.1" 200 - +2025-12-29 03:25:40,160 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:25:40] "GET /api/strategies/trades?id=9&_t=1766949940152 HTTP/1.1" 200 - +2025-12-29 03:25:41,012 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:25:41] "GET /api/strategies/equityCurve?id=1&_t=1766949940695 HTTP/1.1" 200 - +2025-12-29 03:25:41,016 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:25:41] "GET /api/strategies/equityCurve?id=1&_t=1766949940695 HTTP/1.1" 200 - +2025-12-29 03:25:41,026 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:25:41] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766949940695 HTTP/1.1" 200 - +2025-12-29 03:25:41,154 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:25:41] "GET /api/strategies/positions?id=1&_t=1766949940696 HTTP/1.1" 200 - +2025-12-29 03:25:41,159 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:25:41] "GET /api/strategies/trades?id=1&_t=1766949940696 HTTP/1.1" 200 - +2025-12-29 03:25:43,698 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:25:43] "GET /api/strategies/notifications?id=1&since_id=13&limit=50&_t=1766949943691 HTTP/1.1" 200 - +2025-12-29 03:25:46,115 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:25:46] "GET /api/strategies/positions?id=1&_t=1766949945696 HTTP/1.1" 200 - +2025-12-29 03:25:46,698 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:25:46] "GET /api/strategies/notifications?id=1&since_id=13&limit=50&_t=1766949946691 HTTP/1.1" 200 - +2025-12-29 03:25:50,008 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:25:50] "GET /api/strategies/notifications?id=1&since_id=13&limit=50&_t=1766949949691 HTTP/1.1" 200 - +2025-12-29 03:25:50,811 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:25:50] "GET /api/strategies/positions?id=1&_t=1766949950697 HTTP/1.1" 200 - +2025-12-29 03:25:53,009 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:25:53] "GET /api/strategies/notifications?id=1&since_id=13&limit=50&_t=1766949952691 HTTP/1.1" 200 - +2025-12-29 03:25:53,803 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:25:53] "GET /api/strategies/equityCurve?id=2&_t=1766949953794 HTTP/1.1" 200 - +2025-12-29 03:25:54,122 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:25:54] "GET /api/strategies/equityCurve?id=2&_t=1766949953794 HTTP/1.1" 200 - +2025-12-29 03:25:54,125 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:25:54] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766949953794 HTTP/1.1" 200 - +2025-12-29 03:25:54,235 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:25:54] "GET /api/strategies/positions?id=2&_t=1766949953795 HTTP/1.1" 200 - +2025-12-29 03:25:54,240 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:25:54] "GET /api/strategies/trades?id=2&_t=1766949953795 HTTP/1.1" 200 - +2025-12-29 03:25:57,114 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:25:57] "GET /api/strategies/notifications?id=2&since_id=14&limit=50&_t=1766949956791 HTTP/1.1" 200 - +2025-12-29 03:25:58,913 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:25:58] "GET /api/strategies/positions?id=2&_t=1766949958796 HTTP/1.1" 200 - +2025-12-29 03:26:00,107 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:00] "GET /api/strategies/notifications?id=2&since_id=14&limit=50&_t=1766949959791 HTTP/1.1" 200 - +2025-12-29 03:26:02,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:02] "GET /api/strategies/notifications?id=2&since_id=14&limit=50&_t=1766949962791 HTTP/1.1" 200 - +2025-12-29 03:26:04,217 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:04] "GET /api/strategies/positions?id=2&_t=1766949963795 HTTP/1.1" 200 - +2025-12-29 03:26:05,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:05] "GET /api/strategies/notifications?id=2&since_id=14&limit=50&_t=1766949965791 HTTP/1.1" 200 - +2025-12-29 03:26:09,099 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:09] "GET /api/strategies/notifications?id=2&since_id=14&limit=50&_t=1766949968791 HTTP/1.1" 200 - +2025-12-29 03:26:09,211 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:09] "GET /api/strategies/positions?id=2&_t=1766949968795 HTTP/1.1" 200 - +2025-12-29 03:26:11,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:11] "GET /api/strategies/notifications?id=2&since_id=14&limit=50&_t=1766949971790 HTTP/1.1" 200 - +2025-12-29 03:26:14,215 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:14] "GET /api/strategies/positions?id=2&_t=1766949973796 HTTP/1.1" 200 - +2025-12-29 03:26:14,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:14] "GET /api/strategies/notifications?id=2&since_id=14&limit=50&_t=1766949974791 HTTP/1.1" 200 - +2025-12-29 03:26:18,114 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:18] "GET /api/strategies/notifications?id=2&since_id=14&limit=50&_t=1766949977791 HTTP/1.1" 200 - +2025-12-29 03:26:18,908 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:18] "GET /api/strategies/positions?id=2&_t=1766949978795 HTTP/1.1" 200 - +2025-12-29 03:26:21,104 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:21] "GET /api/strategies/notifications?id=2&since_id=14&limit=50&_t=1766949980791 HTTP/1.1" 200 - +2025-12-29 03:26:23,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:23] "GET /api/strategies/equityCurve?id=2&_t=1766949983790 HTTP/1.1" 200 - +2025-12-29 03:26:24,102 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:24] "GET /api/strategies/notifications?id=2&since_id=14&limit=50&_t=1766949983791 HTTP/1.1" 200 - +2025-12-29 03:26:24,213 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:24] "GET /api/strategies/positions?id=2&_t=1766949983794 HTTP/1.1" 200 - +2025-12-29 03:26:27,116 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:27] "GET /api/strategies/notifications?id=2&since_id=14&limit=50&_t=1766949986790 HTTP/1.1" 200 - +2025-12-29 03:26:28,910 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:28] "GET /api/strategies/positions?id=2&_t=1766949988794 HTTP/1.1" 200 - +2025-12-29 03:26:30,104 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:30] "GET /api/strategies/notifications?id=2&since_id=14&limit=50&_t=1766949989791 HTTP/1.1" 200 - +2025-12-29 03:26:32,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:32] "GET /api/strategies/notifications?id=2&since_id=14&limit=50&_t=1766949992791 HTTP/1.1" 200 - +2025-12-29 03:26:34,226 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:34] "GET /api/strategies/positions?id=2&_t=1766949993794 HTTP/1.1" 200 - +2025-12-29 03:26:35,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:35] "GET /api/strategies/notifications?id=2&since_id=14&limit=50&_t=1766949995790 HTTP/1.1" 200 - +2025-12-29 03:26:39,114 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:39] "GET /api/strategies/notifications?id=2&since_id=14&limit=50&_t=1766949998791 HTTP/1.1" 200 - +2025-12-29 03:26:39,229 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:39] "GET /api/strategies/positions?id=2&_t=1766949998794 HTTP/1.1" 200 - +2025-12-29 03:26:41,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:41] "GET /api/strategies/notifications?id=2&since_id=14&limit=50&_t=1766950001791 HTTP/1.1" 200 - +2025-12-29 03:26:44,211 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:44] "GET /api/strategies/positions?id=2&_t=1766950003795 HTTP/1.1" 200 - +2025-12-29 03:26:44,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:44] "GET /api/strategies/notifications?id=2&since_id=14&limit=50&_t=1766950004790 HTTP/1.1" 200 - +2025-12-29 03:26:47,000 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:47] "GET /api/market/types?_t=1766950006690 HTTP/1.1" 200 - +2025-12-29 03:26:47,003 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:47] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 03:26:47,009 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:47] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 03:26:47,257 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-29 03:26:47,258 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:26:48,288 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:26:48,389 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:26:50,314 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:26:50,314 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:26:50,579 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:26:50,580 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:26:51,286 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:26:51,287 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:26:52,598 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:26:52,599 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:26:52,813 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1D, limit=500 +2025-12-29 03:26:52,929 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:26:53,983 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1D, limit=5 +2025-12-29 03:26:54,083 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:26:55,264 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1D, limit=5 +2025-12-29 03:26:55,264 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:26:55,413 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:55] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 03:26:55,530 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:55] "GET /api/market/config?_t=1766950015395 HTTP/1.1" 200 - +2025-12-29 03:26:55,966 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-29 03:26:55,966 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-29 03:26:55,966 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-29 03:26:55,966 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-29 03:26:55,966 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-29 03:26:56,846 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (224817s) +2025-12-29 03:26:57,107 - app.data_sources.base - WARNING - Warning: 300475 data is delayed (271617s) +2025-12-29 03:26:57,111 - app.data_sources.base - WARNING - Warning: 000858 data is delayed (271617s) +2025-12-29 03:26:57,158 - app.data_sources.base - WARNING - Warning: 600519 data is delayed (271617s) +2025-12-29 03:26:57,269 - app.data_sources.base - WARNING - Warning: 00700 data is delayed (444417s) +2025-12-29 03:26:57,298 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:57] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 03:26:57,301 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:57] "GET /api/market/types?_t=1766950015541 HTTP/1.1" 200 - +2025-12-29 03:26:57,305 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:57] "GET /api/dashboard/summary?_t=1766950016581 HTTP/1.1" 200 - +2025-12-29 03:26:57,310 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:26:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766950016581 HTTP/1.1" 200 - +2025-12-29 03:27:03,305 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:03] "GET /api/dashboard/summary?_t=1766950023295 HTTP/1.1" 200 - +2025-12-29 03:27:03,312 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766950023295 HTTP/1.1" 200 - +2025-12-29 03:27:22,907 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:22] "GET /api/strategies?_t=1766950042587 HTTP/1.1" 200 - +2025-12-29 03:27:24,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:24] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 03:27:25,106 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:25] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 03:27:25,115 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:25] "GET /api/market/types?_t=1766950044782 HTTP/1.1" 200 - +2025-12-29 03:27:25,123 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-29 03:27:25,131 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:27:26,358 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:26] "GET /api/strategies?_t=1766950045932 HTTP/1.1" 200 - +2025-12-29 03:27:27,161 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:27] "GET /api/strategies/equityCurve?id=2&_t=1766950047148 HTTP/1.1" 200 - +2025-12-29 03:27:27,470 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:27] "GET /api/strategies/equityCurve?id=2&_t=1766950047148 HTTP/1.1" 200 - +2025-12-29 03:27:27,584 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:27] "GET /api/strategies/positions?id=2&_t=1766950047151 HTTP/1.1" 200 - +2025-12-29 03:27:27,588 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:27] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766950047148 HTTP/1.1" 200 - +2025-12-29 03:27:28,400 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:28] "GET /api/strategies/trades?id=2&_t=1766950048082 HTTP/1.1" 200 - +2025-12-29 03:27:30,143 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:30] "GET /api/strategies/notifications?id=2&since_id=14&limit=50&_t=1766950050135 HTTP/1.1" 200 - +2025-12-29 03:27:32,726 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:32] "GET /api/strategies/positions?id=2&_t=1766950052145 HTTP/1.1" 200 - +2025-12-29 03:27:33,143 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:33] "GET /api/strategies/notifications?id=2&since_id=14&limit=50&_t=1766950053135 HTTP/1.1" 200 - +2025-12-29 03:27:36,319 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:36] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 03:27:36,328 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:36] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 03:27:36,339 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:36] "GET /api/credentials/list?user_id=1&_t=1766950055998 HTTP/1.1" 200 - +2025-12-29 03:27:36,470 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:36] "GET /api/strategies/notifications?id=2&since_id=14&limit=50&_t=1766950056149 HTTP/1.1" 200 - +2025-12-29 03:27:37,259 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:37] "GET /api/strategies/positions?id=2&_t=1766950057144 HTTP/1.1" 200 - +2025-12-29 03:27:39,445 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:39] "GET /api/strategies/notifications?id=2&since_id=14&limit=50&_t=1766950059135 HTTP/1.1" 200 - +2025-12-29 03:27:42,530 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:42] "GET /api/strategies?_t=1766950062516 HTTP/1.1" 200 - +2025-12-29 03:27:43,615 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:43] "GET /api/market/types?_t=1766950063290 HTTP/1.1" 200 - +2025-12-29 03:27:43,622 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:43] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 03:27:43,631 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:43] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 03:27:43,869 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-29 03:27:43,871 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:27:43,964 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:43] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 03:27:44,227 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:44] "GET /api/market/config?_t=1766950063911 HTTP/1.1" 200 - +2025-12-29 03:27:44,239 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:44] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 03:27:44,291 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:44] "GET /api/market/types?_t=1766950064240 HTTP/1.1" 200 - +2025-12-29 03:27:44,927 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:27:44,928 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:27:45,462 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:45] "GET /api/dashboard/summary?_t=1766950065071 HTTP/1.1" 200 - +2025-12-29 03:27:45,470 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:45] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766950065071 HTTP/1.1" 200 - +2025-12-29 03:27:45,927 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:27:45,928 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:27:47,237 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:27:47,237 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:27:47,945 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:27:47,946 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:27:49,335 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:27:49,336 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:27:49,941 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:27:49,941 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:27:51,238 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:27:51,239 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:27:51,939 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:27:51,940 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:27:53,243 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:27:53,244 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:27:53,935 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:27:53,936 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:27:55,242 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:27:55,242 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:27:55,928 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:27:55,928 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:27:57,240 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:27:57,241 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:27:57,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:27:57,924 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:27:59,786 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:27:59,786 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:27:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:00,570 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:00,571 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:01,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:01,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:02,482 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:02,483 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:03,786 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:03,786 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:04,490 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:04,491 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:05,802 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:05,803 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:06,946 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:06,947 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:07,822 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:07,823 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:08,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:08,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:09,808 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:09,808 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:10,502 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:10,503 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:11,852 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:11,854 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:12,494 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:12,495 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:13,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:13,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:14,478 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:14,479 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:15,793 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:15,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:16,482 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:16,482 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:17,783 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:17,784 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:18,491 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:18,491 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:19,783 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:19,783 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:20,489 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:20,490 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:21,784 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:21,784 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:21,989 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2932.36, pending_signals=1 +2025-12-29 03:28:22,000 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2932.36, 'position_size': 0, 'timestamp': 1766950080}] +2025-12-29 03:28:22,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:22,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:23,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:23,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:24,476 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:24,477 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:25,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:25,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:26,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:26,487 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:27,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:27,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:28,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:28,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:29,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:29,788 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:30,488 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:30,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:31,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:31,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:31,887 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2932.36, pending_signals=1 +2025-12-29 03:28:31,898 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2932.36, 'position_size': 0, 'timestamp': 1766950080}] +2025-12-29 03:28:32,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:32,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:33,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:33,788 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:34,477 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:34,478 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:35,803 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:35,803 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:36,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:36,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:37,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:37,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:38,481 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:38,481 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:39,794 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:39,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:40,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:40,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:41,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:41,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:42,103 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2932.35, pending_signals=1 +2025-12-29 03:28:42,114 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2932.35, 'position_size': 0, 'timestamp': 1766950080}] +2025-12-29 03:28:42,488 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:42,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:43,795 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:43,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:44,481 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:44,482 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:45,792 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:45,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:46,483 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:46,483 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:47,785 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:28:47,786 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:28:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:28:51,889 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2932.35, pending_signals=1 +2025-12-29 03:28:51,901 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2932.35, 'position_size': 0, 'timestamp': 1766950080}] +2025-12-29 03:29:01,991 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2932.93, pending_signals=2 +2025-12-29 03:29:02,001 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2932.35, 'position_size': 0, 'timestamp': 1766950080}] +2025-12-29 03:29:11,891 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2932.93, pending_signals=2 +2025-12-29 03:29:11,902 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2932.35, 'position_size': 0, 'timestamp': 1766950080}] +2025-12-29 03:29:22,016 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2932.06, pending_signals=2 +2025-12-29 03:29:22,026 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2932.35, 'position_size': 0, 'timestamp': 1766950080}, {'type': 'open_short', 'trigger_price': 2932.35, 'position_size': 0.08, 'timestamp': 1766950080}] +2025-12-29 03:29:31,893 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2932.06, pending_signals=2 +2025-12-29 03:29:31,904 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2932.35, 'position_size': 0, 'timestamp': 1766950080}, {'type': 'open_short', 'trigger_price': 2932.35, 'position_size': 0.08, 'timestamp': 1766950080}] +2025-12-29 03:29:37,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:29:37,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:29:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:29:41,085 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=860.03, pending_signals=1 +2025-12-29 03:29:41,087 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 860.03, 'position_size': 0, 'timestamp': 1766950140}] +2025-12-29 03:29:42,112 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2931.57, pending_signals=1 +2025-12-29 03:29:42,122 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2931.57, 'position_size': 0, 'timestamp': 1766950140}] +2025-12-29 03:29:50,871 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=860.03, pending_signals=1 +2025-12-29 03:29:50,872 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 860.03, 'position_size': 0, 'timestamp': 1766950140}] +2025-12-29 03:29:51,896 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2931.57, pending_signals=1 +2025-12-29 03:29:51,906 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2931.57, 'position_size': 0, 'timestamp': 1766950140}] +2025-12-29 03:30:00,950 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:00,950 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:00,974 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=859.89, pending_signals=2 +2025-12-29 03:30:00,977 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 860.03, 'position_size': 0, 'timestamp': 1766950140}, {'type': 'open_short', 'trigger_price': 860.03, 'position_size': 0.08, 'timestamp': 1766950140}] +2025-12-29 03:30:00,987 - app.services.trading_executor - INFO - Strategy 9 signal executed: open_short @ 860.03 +2025-12-29 03:30:01,211 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:01,212 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:01,877 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:01] "GET /api/dashboard/summary?_t=1766950201862 HTTP/1.1" 200 - +2025-12-29 03:30:02,003 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2931.2, pending_signals=2 +2025-12-29 03:30:02,019 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2931.57, 'position_size': 0, 'timestamp': 1766950140}, {'type': 'open_short', 'trigger_price': 2931.57, 'position_size': 0.08, 'timestamp': 1766950140}] +2025-12-29 03:30:02,197 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766950201862 HTTP/1.1" 200 - +2025-12-29 03:30:02,465 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:02,466 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:03,237 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:03,237 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:03,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:03,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:04,293 - app.services.pending_order_worker - WARNING - live market phase failed: pending_id=77, strategy_id=9, cfg={'exchange_id': 'binance', 'api_key': '9E46...x6ec', 'secret_key': 'I5uD...ykZh'}, err=Invalid quantity (below step/minQty): requested=0.004412520493471156 +2025-12-29 03:30:05,235 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:05,236 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:05,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:05,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:07,228 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:07,228 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:07,822 - app.services.pending_order_worker - INFO - live notify: pending_id=77, strategy_id=9, ok=browser,email,telegram fail=- +2025-12-29 03:30:07,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:07,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:08,393 - app.services.pending_order_worker - INFO - position sync: removed 1 ghost positions for strategy_id=9 +2025-12-29 03:30:09,238 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:09,239 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:09,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:09,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:10,874 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=859.89, pending_signals=2 +2025-12-29 03:30:10,876 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 860.03, 'position_size': 0, 'timestamp': 1766950140}, {'type': 'open_short', 'trigger_price': 860.03, 'position_size': 0.08, 'timestamp': 1766950140}] +2025-12-29 03:30:11,229 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:11,229 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:11,900 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2931.2, pending_signals=2 +2025-12-29 03:30:11,912 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2931.57, 'position_size': 0, 'timestamp': 1766950140}, {'type': 'open_short', 'trigger_price': 2931.57, 'position_size': 0.08, 'timestamp': 1766950140}] +2025-12-29 03:30:11,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:11,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:13,231 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:13,231 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:13,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:13,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:15,239 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:15,240 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:15,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:15,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:17,231 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:17,232 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:17,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:17,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:19,240 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:19,241 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:19,939 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:19,940 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:20,893 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:20] "GET /api/dashboard/summary?_t=1766950220578 HTTP/1.1" 200 - +2025-12-29 03:30:20,897 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766950220578 HTTP/1.1" 200 - +2025-12-29 03:30:20,984 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=859.97, pending_signals=2 +2025-12-29 03:30:20,988 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 860.03, 'position_size': 0, 'timestamp': 1766950140}, {'type': 'open_short', 'trigger_price': 860.03, 'position_size': 0.08, 'timestamp': 1766950140}] +2025-12-29 03:30:21,150 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:21,151 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:21,926 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:21,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:22,002 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2931.32, pending_signals=2 +2025-12-29 03:30:22,011 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2931.57, 'position_size': 0, 'timestamp': 1766950140}, {'type': 'open_short', 'trigger_price': 2931.57, 'position_size': 0.08, 'timestamp': 1766950140}] +2025-12-29 03:30:23,233 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:23,234 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:23,941 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:23,941 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:25,251 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:25,251 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:25,926 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:25,927 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:27,801 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:27,802 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:28,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:28,484 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:29,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:29,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:30,488 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:30,489 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:30,878 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=859.97, pending_signals=2 +2025-12-29 03:30:30,881 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 860.03, 'position_size': 0, 'timestamp': 1766950140}, {'type': 'open_short', 'trigger_price': 860.03, 'position_size': 0.08, 'timestamp': 1766950140}] +2025-12-29 03:30:31,785 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:31,785 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:31,905 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2931.32, pending_signals=2 +2025-12-29 03:30:31,918 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2931.57, 'position_size': 0, 'timestamp': 1766950140}, {'type': 'open_short', 'trigger_price': 2931.57, 'position_size': 0.08, 'timestamp': 1766950140}] +2025-12-29 03:30:32,488 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:32,489 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:33,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:33,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:34,490 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:34,490 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:35,870 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:35,871 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:36,477 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:36,477 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:37,289 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:37,290 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:37,926 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:37,927 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:39,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:39] "GET /api/market/types?_t=1766950238739 HTTP/1.1" 200 - +2025-12-29 03:30:39,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:39] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 03:30:39,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:39] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 03:30:39,237 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:39,238 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:39,303 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-29 03:30:39,422 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:39,686 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:39] "GET /api/strategies?_t=1766950239677 HTTP/1.1" 200 - +2025-12-29 03:30:40,249 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:40,249 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:40,576 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:40] "GET /api/strategies/equityCurve?id=9&_t=1766950240567 HTTP/1.1" 200 - +2025-12-29 03:30:40,895 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:40] "GET /api/strategies/equityCurve?id=9&_t=1766950240567 HTTP/1.1" 200 - +2025-12-29 03:30:41,037 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:41] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766950240567 HTTP/1.1" 200 - +2025-12-29 03:30:41,041 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:41] "GET /api/strategies/positions?id=9&_t=1766950240569 HTTP/1.1" 200 - +2025-12-29 03:30:41,099 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=860.3, pending_signals=2 +2025-12-29 03:30:41,101 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 859.9, 'position_size': 0, 'timestamp': 1766950140}] +2025-12-29 03:30:41,341 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:41,342 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:42,108 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:42] "GET /api/strategies/trades?id=9&_t=1766950241789 HTTP/1.1" 200 - +2025-12-29 03:30:42,142 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2932.41, pending_signals=2 +2025-12-29 03:30:42,154 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2931.19, 'position_size': 0, 'timestamp': 1766950140}] +2025-12-29 03:30:42,231 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:42,232 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:42,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:42,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:43,878 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:43] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950243565 HTTP/1.1" 200 - +2025-12-29 03:30:44,138 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:44,139 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:44,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:44,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:45,879 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:45] "GET /api/strategies/positions?id=9&_t=1766950245565 HTTP/1.1" 200 - +2025-12-29 03:30:46,145 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:46,145 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:46,566 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:46] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950246560 HTTP/1.1" 200 - +2025-12-29 03:30:47,236 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:47,236 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:47,926 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:47,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:49,228 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:49,229 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:49,567 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:49] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950249561 HTTP/1.1" 200 - +2025-12-29 03:30:53,188 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-29 03:30:53,211 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-29 03:30:53,667 - app.services.strategy - INFO - Found 3 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}, {'id': 9, 'strategy_type': 'IndicatorStrategy'}] +2025-12-29 03:30:53,667 - app - INFO - Restoring 3 running strategies... +2025-12-29 03:30:53,667 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-29 03:30:53,668 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-29 03:30:53,668 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-29 03:30:53,668 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-29 03:30:53,668 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-29 03:30:53,668 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-29 03:30:53,669 - app.services.trading_executor - INFO - Strategy 9 loop starting +2025-12-29 03:30:53,669 - app.services.trading_executor - INFO - Strategy 9 started +2025-12-29 03:30:53,669 - app - INFO - [OK] IndicatorStrategy 9 restored +2025-12-29 03:30:53,669 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-29 03:30:53,669 - app - INFO - Strategy restore completed: 3/3 restored +2025-12-29 03:30:53,670 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-29 03:30:53,686 - app.services.trading_executor - INFO - Strategy 9 derivatives trading; normalize market_type to: swap +2025-12-29 03:30:53,699 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-29 03:30:53,699 - werkzeug - INFO - Press CTRL+C to quit +2025-12-29 03:30:53,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:57,479 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=1, position=-1, entry_price=87577.6, highest=87670.16 +2025-12-29 03:30:57,527 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2025-12-29 03:30:57,528 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=1, position=-1, entry_price=2930.39, highest=2937.28 +2025-12-29 03:30:57,546 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=2 +2025-12-29 03:30:57,547 - app.services.trading_executor - INFO - Initial signals: [{'type': 'close_long', 'trigger_price': 2931.19, 'position_size': 0, 'timestamp': 1766950140}, {'type': 'open_short', 'trigger_price': 2931.19, 'position_size': 0.08, 'timestamp': 1766950140}] +2025-12-29 03:30:57,579 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:57,581 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:57,581 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:57,585 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:57] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950255561 HTTP/1.1" 200 - +2025-12-29 03:30:57,592 - app.services.trading_executor - INFO - ็ญ–็•ฅ 9 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-29 03:30:57,594 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:57] "GET /api/strategies/positions?id=9&_t=1766950255565 HTTP/1.1" 200 - +2025-12-29 03:30:57,609 - app.services.trading_executor - INFO - Strategy 9 initialized; pending_signals=2 +2025-12-29 03:30:57,609 - app.services.trading_executor - INFO - Initial signals: [{'type': 'close_long', 'trigger_price': 859.9, 'position_size': 0, 'timestamp': 1766950140}, {'type': 'open_short', 'trigger_price': 859.9, 'position_size': 0.08, 'timestamp': 1766950140}] +2025-12-29 03:30:57,611 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:57,611 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:57,615 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:57] "GET /api/strategies/equityCurve?id=2&_t=1766950256800 HTTP/1.1" 200 - +2025-12-29 03:30:57,730 - app.services.trading_executor - INFO - [monitoring] strategy=9 price=860.29, pending_signals=2 +2025-12-29 03:30:57,733 - app.services.trading_executor - INFO - Strategy 9 triggered signals: [{'type': 'close_long', 'trigger_price': 859.9, 'position_size': 0, 'timestamp': 1766950140}] +2025-12-29 03:30:57,899 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:57] "GET /api/strategies/equityCurve?id=2&_t=1766950256800 HTTP/1.1" 200 - +2025-12-29 03:30:57,902 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:57] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766950256800 HTTP/1.1" 200 - +2025-12-29 03:30:58,012 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:58] "GET /api/strategies/positions?id=2&_t=1766950256801 HTTP/1.1" 200 - +2025-12-29 03:30:58,018 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:58] "GET /api/strategies/trades?id=2&_t=1766950256801 HTTP/1.1" 200 - +2025-12-29 03:30:58,020 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:58,020 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:58,130 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2932.68, pending_signals=2 +2025-12-29 03:30:58,141 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 2931.19, 'position_size': 0, 'timestamp': 1766950140}] +2025-12-29 03:30:58,238 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:58,238 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:58,506 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:58] "GET /api/strategies/equityCurve?id=9&_t=1766950258182 HTTP/1.1" 200 - +2025-12-29 03:30:58,510 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:58] "GET /api/strategies/equityCurve?id=9&_t=1766950258182 HTTP/1.1" 200 - +2025-12-29 03:30:58,513 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:58] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766950258182 HTTP/1.1" 200 - +2025-12-29 03:30:58,518 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:58] "GET /api/strategies/positions?id=9&_t=1766950258183 HTTP/1.1" 200 - +2025-12-29 03:30:58,523 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:58] "GET /api/strategies/trades?id=9&_t=1766950258183 HTTP/1.1" 200 - +2025-12-29 03:30:59,232 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:59,233 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:30:59,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:30:59,924 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:30:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:01,240 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:01,240 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:01,489 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:01] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950261178 HTTP/1.1" 200 - +2025-12-29 03:31:01,966 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:01] "GET /api/dashboard/summary?_t=1766950261950 HTTP/1.1" 200 - +2025-12-29 03:31:02,267 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766950261950 HTTP/1.1" 200 - +2025-12-29 03:31:02,274 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:02,275 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:03,233 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:03,234 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:03,926 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:03,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:04,521 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:04] "GET /api/strategies?_t=1766950264187 HTTP/1.1" 200 - +2025-12-29 03:31:04,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:04,924 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:05,658 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:05] "GET /api/strategies/equityCurve?id=9&_t=1766950265251 HTTP/1.1" 200 - +2025-12-29 03:31:05,661 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:05] "GET /api/strategies/equityCurve?id=9&_t=1766950265251 HTTP/1.1" 200 - +2025-12-29 03:31:05,665 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:05] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766950265251 HTTP/1.1" 200 - +2025-12-29 03:31:05,673 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:05] "GET /api/strategies/positions?id=9&_t=1766950265253 HTTP/1.1" 200 - +2025-12-29 03:31:05,927 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:05,927 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:07,227 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:07,227 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:07,472 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:07] "GET /api/strategies/trades?id=9&_t=1766950267032 HTTP/1.1" 200 - +2025-12-29 03:31:07,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:07,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:08,556 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:08] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950268245 HTTP/1.1" 200 - +2025-12-29 03:31:08,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:08,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:10,228 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:10,228 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:10,494 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:10] "GET /api/strategies/positions?id=9&_t=1766950270250 HTTP/1.1" 200 - +2025-12-29 03:31:10,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:10,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:11,554 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:11] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950271245 HTTP/1.1" 200 - +2025-12-29 03:31:11,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:11,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:12,595 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:12] "GET /api/dashboard/summary?_t=1766950272241 HTTP/1.1" 200 - +2025-12-29 03:31:12,603 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:12] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766950272241 HTTP/1.1" 200 - +2025-12-29 03:31:12,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:12,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:14,237 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:14,237 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:14,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:14,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:16,236 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:16,237 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:16,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:16,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:18,239 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:18,240 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:18,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:18,924 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:20,239 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:20,240 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:20,928 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:20,928 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:22,264 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:22,264 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:22,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:22,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:24,382 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:24,382 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:24,633 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:24] "GET /api/dashboard/summary?_t=1766950284586 HTTP/1.1" 200 - +2025-12-29 03:31:24,913 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766950284586 HTTP/1.1" 200 - +2025-12-29 03:31:24,933 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:24,933 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:26,261 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:26,261 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:26,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:26,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:28,230 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:28,231 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:28,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:28,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:30,228 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:30,228 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:30,926 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:30,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:32,239 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:32,239 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:32,689 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:32] "GET /api/dashboard/summary?_t=1766950292679 HTTP/1.1" 200 - +2025-12-29 03:31:32,992 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766950292679 HTTP/1.1" 200 - +2025-12-29 03:31:33,238 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:33,239 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:34,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:34,361 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:34,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:34,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:36,239 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:36,239 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:36,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:36,924 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:38,230 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:38,230 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:38,926 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:38,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:40,228 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:40,228 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:40,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:40,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:42,239 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:42,240 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:42,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:42,924 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:44,232 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:44,232 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:44,930 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:44,930 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:46,229 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:46,229 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:46,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:46,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:48,232 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:48,233 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:48,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:48,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:50,238 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:50,238 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:50,926 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:50,927 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:52,228 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:52,228 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:52,930 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:52,931 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:54,232 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:54,232 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:54,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:54,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:56,231 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:56,231 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:56,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:56,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:58,239 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:58,239 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:31:58,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:31:58,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:31:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:00,228 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:00,229 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:00,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:00,924 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:02,229 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:02,230 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:02,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:02,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:04,226 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:04,226 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:04,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:04,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:06,225 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:06,225 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:06,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:06,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:08,229 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:08,229 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:08,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:08,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:10,239 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:10,240 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:10,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:10,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:12,232 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:12,233 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:12,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:12,924 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:14,231 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:14,232 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:14,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:14,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:16,234 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:16,235 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:16,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:16,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:18,229 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:18,229 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:18,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:18,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:20,228 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:20,228 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:20,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:20,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:22,235 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:22,235 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:22,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:22,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:24,236 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:24,236 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:24,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:24,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:26,241 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:26,241 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:26,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:26,924 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:28,226 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:28,226 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:28,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:28,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:30,240 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:30,240 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:30,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:30,924 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:32,231 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:32,231 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:32,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:32,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:34,238 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:34,238 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:34,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:34,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:36,239 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:36,240 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:36,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:36,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:37,680 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87604.84, pending_signals=1 +2025-12-29 03:32:37,689 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87604.84, 'position_size': 0, 'timestamp': 1766950320}] +2025-12-29 03:32:37,698 - app.services.trading_executor - INFO - Strategy 2 signal executed: close_short @ 87604.84 +2025-12-29 03:32:38,239 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:38,240 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:38,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:38,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:40,237 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:40,238 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:40,926 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:40,927 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:42,238 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:42,238 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:42,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:42,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:44,240 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:44,240 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:44,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:44,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:46,236 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:46,237 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:46,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:46,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:47,582 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87604.84, pending_signals=1 +2025-12-29 03:32:47,592 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87604.84, 'position_size': 0, 'timestamp': 1766950320}] +2025-12-29 03:32:48,232 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:48,233 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:48,358 - app.services.pending_order_worker - INFO - live record begin: pending_id=78 strategy_id=2 symbol=BTC/USDT signal=close_short filled=0.0003 avg_price=87562.1 fee=0.0 fee_ccy= +2025-12-29 03:32:48,374 - app.services.pending_order_worker - INFO - live record done: pending_id=78 strategy_id=2 symbol=BTC/USDT signal=close_short +2025-12-29 03:32:48,926 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:48,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:50,230 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:50,231 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:50,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:50,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:51,764 - app.services.pending_order_worker - INFO - live notify: pending_id=78, strategy_id=2, ok=browser,email,telegram fail=- +2025-12-29 03:32:52,234 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:52,234 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:52,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:52,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:54,230 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:54,230 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:54,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:54,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:56,240 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:56,241 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:56,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:56,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:57,799 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87619.78, pending_signals=1 +2025-12-29 03:32:57,802 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87619.77, 'position_size': 0, 'timestamp': 1766950320}] +2025-12-29 03:32:58,239 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:58,240 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:32:58,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:32:58,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:32:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:00,240 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:00,241 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:00,941 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:00,942 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:02,235 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:02,236 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:02,926 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:02,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:04,233 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:04,234 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:04,926 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:04,927 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:06,231 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:06,231 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:06,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:06,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:07,585 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87619.78, pending_signals=2 +2025-12-29 03:33:07,587 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 87619.77, 'position_size': 0.08, 'timestamp': 1766950320}, {'type': 'close_short', 'trigger_price': 87619.77, 'position_size': 0, 'timestamp': 1766950320}] +2025-12-29 03:33:07,595 - app.services.trading_executor - INFO - Strategy 2 signal executed: open_long @ 87619.77 +2025-12-29 03:33:08,226 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:08,227 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:08,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:08,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:10,230 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:10,231 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:10,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:10,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:12,235 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:12,235 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:12,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:12,924 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:14,234 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:14,234 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:14,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:14,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:16,242 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:16,243 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:16,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:16,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:17,687 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87619.78, pending_signals=2 +2025-12-29 03:33:17,689 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 87619.77, 'position_size': 0.08, 'timestamp': 1766950320}, {'type': 'close_short', 'trigger_price': 87619.77, 'position_size': 0, 'timestamp': 1766950320}] +2025-12-29 03:33:17,996 - app.services.pending_order_worker - INFO - live record begin: pending_id=79 strategy_id=2 symbol=BTC/USDT signal=open_long filled=0.0003 avg_price=87580.8 fee=0.0 fee_ccy= +2025-12-29 03:33:18,015 - app.services.pending_order_worker - INFO - live record done: pending_id=79 strategy_id=2 symbol=BTC/USDT signal=open_long +2025-12-29 03:33:18,238 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:18,239 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:18,937 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:18,938 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:20,229 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:20,230 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:20,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:20,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:21,116 - app.services.pending_order_worker - INFO - live notify: pending_id=79, strategy_id=2, ok=browser,email,telegram fail=- +2025-12-29 03:33:22,236 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:22,236 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:22,927 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:22,928 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:24,237 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:24,238 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:24,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:24,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:26,236 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:26,236 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:26,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:26,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:27,589 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87619.78, pending_signals=2 +2025-12-29 03:33:27,611 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 87619.77, 'position_size': 0.08, 'timestamp': 1766950320}, {'type': 'close_short', 'trigger_price': 87619.77, 'position_size': 0, 'timestamp': 1766950320}] +2025-12-29 03:33:28,231 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:28,232 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:28,928 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:28,928 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:30,228 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:30,229 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:30,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:30,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:32,232 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:32,233 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:32,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:32,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:34,229 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:34,230 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:34,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:34,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:36,240 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:36,241 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:36,926 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:36,927 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:37,690 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87611.1, pending_signals=2 +2025-12-29 03:33:37,699 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87619.77, 'position_size': 0, 'timestamp': 1766950320}] +2025-12-29 03:33:38,237 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:38,238 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:38,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:38,924 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:40,228 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:40,229 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:40,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:40,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:42,225 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:42,226 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:42,923 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:42,924 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:44,226 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:44,227 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:44,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:44,924 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:46,235 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:46,236 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:46,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:46,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:47,591 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87611.1, pending_signals=2 +2025-12-29 03:33:47,603 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87619.77, 'position_size': 0, 'timestamp': 1766950320}] +2025-12-29 03:33:48,227 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:48,228 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:48,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:48,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:50,239 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:50,240 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:50,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:50,924 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:52,229 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:52,230 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:52,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:52,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:54,229 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:54,230 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:54,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:54,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:56,233 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:56,233 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:56,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:56,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:57,809 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87592.66, pending_signals=2 +2025-12-29 03:33:57,819 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 87619.78, 'position_size': 0, 'timestamp': 1766950320}] +2025-12-29 03:33:58,227 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:58,228 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:33:58,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:33:58,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:33:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:00,233 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:00,233 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:00,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:00,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:02,238 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:02,238 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:02,927 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:02,928 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:04,241 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:04,242 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:04,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:04,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:06,249 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:06,250 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:06,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:06,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:08,239 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:08,239 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:08,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:08,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:10,232 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:10,232 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:10,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:10,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:12,228 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:12,229 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:12,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:12,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:14,239 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:14,240 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:14,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:14,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:16,226 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:16,226 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:16,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:16,924 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:18,234 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:18,235 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:18,926 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:18,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:20,237 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:20,238 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:20,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:20,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:22,239 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:22,239 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:22,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:22,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:24,236 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:24,236 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:24,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:24,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:26,228 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:26,228 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:26,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:26,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:28,237 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:28,237 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:28,926 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:28,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:30,230 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:30,230 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:30,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:30,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:32,235 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:32,236 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:32,926 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:32,929 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:34,225 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:34,225 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:34,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:34,924 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:36,234 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:36,235 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:36,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:36,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:38,230 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:38,232 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:38,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:38,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:40,232 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:40,233 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:40,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:40,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:42,246 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:42,247 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:42,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:42,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:44,232 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:44,233 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:44,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:44,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:46,241 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:46,242 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:46,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:46,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:48,238 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:48,239 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:48,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:48,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:50,237 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:50,237 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:50,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:50,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:52,236 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:52,237 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:52,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:52,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:54,238 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:54,238 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:54,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:54,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:56,234 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:56,235 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:56,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:56,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:58,236 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:58,237 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:34:58,938 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:34:58,939 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:34:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:00,234 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:00,235 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:00,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:00,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:02,231 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:02,231 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:02,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:02,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:04,232 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:04,233 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:04,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:04,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:06,234 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:06,235 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:06,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:06,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:08,228 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:08,228 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:08,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:08,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:10,227 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:10,228 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:10,926 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:10,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:12,227 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:12,227 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:12,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:12,924 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:14,238 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:14,239 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:14,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:14,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:16,238 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:16,239 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:16,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:16,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:17,762 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2936.89, pending_signals=1 +2025-12-29 03:35:17,792 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2936.89, 'position_size': 0, 'timestamp': 1766950500}] +2025-12-29 03:35:17,807 - app.services.trading_executor - INFO - Strategy 1 signal executed: close_short @ 2936.89 +2025-12-29 03:35:18,230 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:18,230 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:18,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:18,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:20,236 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:20,237 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:20,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:20,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:21,301 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=80, strategy_id=1, cfg={'exchange_id': 'bitget', 'api_key': 'bg_8...b659', 'secret_key': '3b7e...b239', 'passphrase': 'xuji...u123', 'credential_id': 3}, err=Bitget HTTP 400: {"code":"45115","msg":"The price you enter should be a multiple of 0.01{1}","requestTime":1766950521753,"data":null} +2025-12-29 03:35:22,228 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:22,229 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:22,381 - app.services.pending_order_worker - INFO - live record begin: pending_id=80 strategy_id=1 symbol=ETH/USDT signal=close_short filled=0.01 avg_price=2934.87 fee=0.0 fee_ccy= +2025-12-29 03:35:22,396 - app.services.pending_order_worker - INFO - live record done: pending_id=80 strategy_id=1 symbol=ETH/USDT signal=close_short +2025-12-29 03:35:22,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:22,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:24,228 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:24,228 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:24,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:24,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:25,599 - app.services.pending_order_worker - INFO - live notify: pending_id=80, strategy_id=1, ok=browser,telegram,email fail=- +2025-12-29 03:35:26,232 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:26,232 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:26,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:26,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:27,664 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2936.89, pending_signals=1 +2025-12-29 03:35:27,667 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2936.89, 'position_size': 0, 'timestamp': 1766950500}] +2025-12-29 03:35:28,233 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:28,234 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:28,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:28,924 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:30,229 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:30,229 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:30,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:30,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:32,230 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:32,231 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:32,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:32,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:34,236 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:34,236 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:34,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:34,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:36,231 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:36,231 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:36,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:36,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:38,240 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:38,241 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:38,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:38,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:40,231 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:40,232 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:40,927 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:40,927 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:42,241 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:42,241 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:42,926 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:42,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:44,232 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:44,232 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:44,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:44,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:46,230 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:46,230 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:46,923 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:46,924 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:48,227 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:48,227 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:48,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:48,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:50,230 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:50,230 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:50,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:50,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:52,228 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:52,229 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:52,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:52,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:54,239 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:54,239 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:54,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:54,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:56,237 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:56,237 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:56,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:56,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:58,229 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:58,328 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:35:58,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:35:58,924 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:35:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:00,231 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:00,231 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:00,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:00,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:02,240 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:02,240 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:02,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:02,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:04,241 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:04,241 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:04,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:04,924 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:06,238 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:06,239 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:06,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:06,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:08,236 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:08,237 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:08,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:08,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:10,229 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:10,230 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:10,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:10,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:12,233 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:12,233 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:12,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:12,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:14,243 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:14,244 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:14,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:14,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:16,236 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:16,236 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:16,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:16,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:18,225 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:18,226 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:18,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:18,924 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:20,231 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:20,232 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:20,500 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:20] "GET /api/dashboard/summary?_t=1766950580378 HTTP/1.1" 200 - +2025-12-29 03:36:20,701 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766950580378 HTTP/1.1" 200 - +2025-12-29 03:36:20,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:20,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:22,229 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:22,230 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:22,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:22,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:24,230 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:24,230 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:24,787 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:24] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 03:36:25,104 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:25] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 03:36:25,106 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:25] "GET /api/market/types?_t=1766950584778 HTTP/1.1" 200 - +2025-12-29 03:36:25,116 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-29 03:36:25,237 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:25,241 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:25,241 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:26,067 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:26] "GET /api/strategies?_t=1766950585731 HTTP/1.1" 200 - +2025-12-29 03:36:26,231 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:26,231 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:26,824 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:26] "GET /api/strategies/equityCurve?id=9&_t=1766950586809 HTTP/1.1" 200 - +2025-12-29 03:36:27,200 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:27] "GET /api/strategies/equityCurve?id=9&_t=1766950586809 HTTP/1.1" 200 - +2025-12-29 03:36:27,204 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:27] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766950586809 HTTP/1.1" 200 - +2025-12-29 03:36:27,210 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:27] "GET /api/strategies/positions?id=9&_t=1766950586812 HTTP/1.1" 200 - +2025-12-29 03:36:27,243 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:27,243 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:28,225 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:28,226 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:28,273 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:28] "GET /api/strategies/trades?id=9&_t=1766950587964 HTTP/1.1" 200 - +2025-12-29 03:36:28,986 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:28,986 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:30,135 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:30] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950589809 HTTP/1.1" 200 - +2025-12-29 03:36:30,238 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:30,238 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:30,926 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:30,927 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:32,115 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:32] "GET /api/strategies/positions?id=9&_t=1766950591807 HTTP/1.1" 200 - +2025-12-29 03:36:32,236 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:32,236 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:32,822 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:32] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950592812 HTTP/1.1" 200 - +2025-12-29 03:36:33,235 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:33,235 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:33,950 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:33,950 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:35,239 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:35,240 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:35,819 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:35] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950595811 HTTP/1.1" 200 - +2025-12-29 03:36:36,234 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:36,234 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:36,828 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:36] "GET /api/strategies/positions?id=9&_t=1766950596819 HTTP/1.1" 200 - +2025-12-29 03:36:37,244 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:37,245 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:37,940 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:37,941 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:39,120 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:39] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950598805 HTTP/1.1" 200 - +2025-12-29 03:36:39,245 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:39,246 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:39,940 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:39,941 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:41,238 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:41,239 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:41,831 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:41] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950601816 HTTP/1.1" 200 - +2025-12-29 03:36:42,140 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:42] "GET /api/strategies/positions?id=9&_t=1766950601818 HTTP/1.1" 200 - +2025-12-29 03:36:42,248 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:42,249 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:43,238 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:43,238 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:43,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:43,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:45,124 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:45] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950604809 HTTP/1.1" 200 - +2025-12-29 03:36:45,247 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:45,248 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:45,935 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:45,935 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:47,135 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:47] "GET /api/strategies/positions?id=9&_t=1766950606818 HTTP/1.1" 200 - +2025-12-29 03:36:47,241 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:47,242 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:47,817 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:47] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950607807 HTTP/1.1" 200 - +2025-12-29 03:36:48,241 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:48,241 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:48,928 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:48,929 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:50,243 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:50,243 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:50,818 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:50] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950610810 HTTP/1.1" 200 - +2025-12-29 03:36:51,249 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:51,250 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:51,823 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:51] "GET /api/strategies/positions?id=9&_t=1766950611817 HTTP/1.1" 200 - +2025-12-29 03:36:52,238 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:52,238 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:52,937 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:52,938 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:54,120 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:54] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950613805 HTTP/1.1" 200 - +2025-12-29 03:36:54,242 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:54,243 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:54,930 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:54,931 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:56,235 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:56,235 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:56,820 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:56] "GET /api/strategies/equityCurve?id=9&_t=1766950616808 HTTP/1.1" 200 - +2025-12-29 03:36:57,125 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:57] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950616809 HTTP/1.1" 200 - +2025-12-29 03:36:57,130 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:57] "GET /api/strategies/positions?id=9&_t=1766950616809 HTTP/1.1" 200 - +2025-12-29 03:36:57,249 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:57,249 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:58,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:58,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:36:59,477 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:36:59,477 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:36:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:00,812 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:00,813 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:00,818 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:00] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950620486 HTTP/1.1" 200 - +2025-12-29 03:37:01,483 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:01,484 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:02,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:02,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:02,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:02] "GET /api/strategies/positions?id=9&_t=1766950622476 HTTP/1.1" 200 - +2025-12-29 03:37:03,478 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:03,479 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:03,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:03] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950623470 HTTP/1.1" 200 - +2025-12-29 03:37:04,785 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:04,785 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:05,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:05,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:06,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:06,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:06,803 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:06] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950626484 HTTP/1.1" 200 - +2025-12-29 03:37:07,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:07,484 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:07,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:07] "GET /api/strategies/positions?id=9&_t=1766950627476 HTTP/1.1" 200 - +2025-12-29 03:37:08,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:08,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:09,481 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:09,482 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:09,788 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:09] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950629473 HTTP/1.1" 200 - +2025-12-29 03:37:10,803 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:10,803 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:11,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:11,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:12,828 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:12,829 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:12,833 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:12] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950632483 HTTP/1.1" 200 - +2025-12-29 03:37:12,836 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:12] "GET /api/strategies/positions?id=9&_t=1766950632484 HTTP/1.1" 200 - +2025-12-29 03:37:13,483 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:13,483 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:14,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:14,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:15,492 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:15,493 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:15,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:15] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950635482 HTTP/1.1" 200 - +2025-12-29 03:37:16,814 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:16,814 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:17,490 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:17] "GET /api/strategies/positions?id=9&_t=1766950637478 HTTP/1.1" 200 - +2025-12-29 03:37:17,807 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:17,808 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:18,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:18,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:18,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:18] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950638472 HTTP/1.1" 200 - +2025-12-29 03:37:19,479 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:19,480 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:20,786 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:20,787 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:21,490 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:21,491 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:21,809 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:21] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950641481 HTTP/1.1" 200 - +2025-12-29 03:37:22,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:22] "GET /api/strategies/positions?id=9&_t=1766950642470 HTTP/1.1" 200 - +2025-12-29 03:37:22,791 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:22,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:23,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:23,488 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:24,796 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:24,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:24,802 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:24] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950644481 HTTP/1.1" 200 - +2025-12-29 03:37:25,482 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:25,483 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:26,787 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:26,788 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:27,491 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:27,491 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:27,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:27] "GET /api/strategies/equityCurve?id=9&_t=1766950647482 HTTP/1.1" 200 - +2025-12-29 03:37:27,803 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:27] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950647483 HTTP/1.1" 200 - +2025-12-29 03:37:27,806 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:27] "GET /api/strategies/positions?id=9&_t=1766950647483 HTTP/1.1" 200 - +2025-12-29 03:37:28,787 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:28,787 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:29,490 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:29,490 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:30,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:30,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:30,803 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:30] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950650482 HTTP/1.1" 200 - +2025-12-29 03:37:31,590 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:31,590 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:32,736 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:32,736 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:32,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:32] "GET /api/strategies/positions?id=9&_t=1766950652481 HTTP/1.1" 200 - +2025-12-29 03:37:37,490 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:37,491 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:37,494 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950657482 HTTP/1.1" 200 - +2025-12-29 03:37:37,499 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:37] "GET /api/strategies/positions?id=9&_t=1766950657484 HTTP/1.1" 200 - +2025-12-29 03:37:37,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:37,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:39,112 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:39] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950658802 HTTP/1.1" 200 - +2025-12-29 03:37:39,237 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:39,237 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:39,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:39,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:40,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:40] "GET /api/strategies?_t=1766950660050 HTTP/1.1" 200 - +2025-12-29 03:37:40,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:40,924 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:41,304 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:41] "GET /api/dashboard/summary?_t=1766950660979 HTTP/1.1" 200 - +2025-12-29 03:37:41,308 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:41] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766950660979 HTTP/1.1" 200 - +2025-12-29 03:37:41,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:41,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:43,231 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:43,232 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:43,926 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:43,927 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:45,238 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:45,239 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:45,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:45,924 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:47,238 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:47,239 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:47,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:47,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:49,226 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:49,226 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:49,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:49,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:51,232 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:51,232 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:51,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:51,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:53,237 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:53,237 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:53,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:53,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:55,227 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:55,227 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:55,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:55,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:57,240 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:57,241 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:57,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:57,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:59,368 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:59,369 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:37:59,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:37:59,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:37:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:38:01,233 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:38:01,234 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:38:01,928 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:38:01,928 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:38:03,231 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:38:03,232 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:38:03,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:38:03,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:38:05,227 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:38:05,227 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:38:05,926 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:38:05,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:38:07,235 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:38:07,236 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:38:07,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:38:07,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:38:09,240 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:38:09,240 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:38:09,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:38:09,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:38:11,226 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:38:11,226 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:38:11,926 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:38:11,926 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:38:13,228 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:38:13,228 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:38:13,276 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:13] "GET /api/strategies?_t=1766950692955 HTTP/1.1" 200 - +2025-12-29 03:38:13,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:38:13,924 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:38:14,544 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:14] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 03:38:14,553 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:14] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 03:38:14,566 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:14] "GET /api/credentials/list?user_id=1&_t=1766950694209 HTTP/1.1" 200 - +2025-12-29 03:38:14,953 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:38:14,954 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:38:16,233 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:38:16,235 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:38:16,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:38:16,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:38:17,948 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:17] "GET /api/strategies/equityCurve?id=9&_t=1766950697623 HTTP/1.1" 200 - +2025-12-29 03:38:17,953 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:17] "GET /api/strategies/equityCurve?id=9&_t=1766950697624 HTTP/1.1" 200 - +2025-12-29 03:38:17,957 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:17] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766950697624 HTTP/1.1" 200 - +2025-12-29 03:38:17,961 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:17] "GET /api/strategies/positions?id=9&_t=1766950697625 HTTP/1.1" 200 - +2025-12-29 03:38:18,191 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:38:18,192 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:38:18,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:38:18,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:38:20,242 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:38:20,242 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:38:20,494 - app.services.trading_executor - INFO - Strategy 9 stopped +2025-12-29 03:38:20,503 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:20] "POST /api/strategies/stop?id=9 HTTP/1.1" 200 - +2025-12-29 03:38:20,645 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:20] "GET /api/strategies?_t=1766950700524 HTTP/1.1" 200 - +2025-12-29 03:38:20,827 - app.services.trading_executor - INFO - Strategy 9 stopped +2025-12-29 03:38:20,827 - app.services.trading_executor - INFO - Strategy 9 loop exited +2025-12-29 03:38:20,842 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:20] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950700604 HTTP/1.1" 200 - +2025-12-29 03:38:20,925 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:38:20,925 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:38:22,391 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:38:22,391 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:38:22,813 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:22] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 03:38:22,878 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:22] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 03:38:22,963 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:22] "GET /api/strategies/equityCurve?id=9&_t=1766950701705 HTTP/1.1" 200 - +2025-12-29 03:38:22,973 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:22] "GET /api/strategies/equityCurve?id=9&_t=1766950701705 HTTP/1.1" 200 - +2025-12-29 03:38:22,979 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:22] "GET /api/credentials/list?user_id=1&_t=1766950702555 HTTP/1.1" 200 - +2025-12-29 03:38:22,985 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:22] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766950701705 HTTP/1.1" 200 - +2025-12-29 03:38:23,152 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:23] "GET /api/strategies/equityCurve?id=9&_t=1766950702557 HTTP/1.1" 200 - +2025-12-29 03:38:23,276 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:23] "GET /api/strategies/equityCurve?id=9&_t=1766950702557 HTTP/1.1" 200 - +2025-12-29 03:38:23,279 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:23] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766950702557 HTTP/1.1" 200 - +2025-12-29 03:38:23,289 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:23] "GET /api/strategies/positions?id=9&_t=1766950702609 HTTP/1.1" 200 - +2025-12-29 03:38:23,292 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 03:38:23,293 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 03:38:24,131 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:24] "GET /api/strategies?_t=1766950704122 HTTP/1.1" 200 - +2025-12-29 03:38:25,665 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:25] "GET /api/strategies/equityCurve?id=9&_t=1766950705647 HTTP/1.1" 200 - +2025-12-29 03:38:25,677 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:25] "GET /api/strategies/equityCurve?id=9&_t=1766950705647 HTTP/1.1" 200 - +2025-12-29 03:38:25,968 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:25] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766950705647 HTTP/1.1" 200 - +2025-12-29 03:38:25,973 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:25] "GET /api/strategies/positions?id=9&_t=1766950705653 HTTP/1.1" 200 - +2025-12-29 03:38:26,714 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:26] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 03:38:26,722 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:26] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 03:38:27,026 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:27] "GET /api/credentials/list?user_id=1&_t=1766950706681 HTTP/1.1" 200 - +2025-12-29 03:38:27,030 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:27] "GET /api/strategies/equityCurve?id=9&_t=1766950706699 HTTP/1.1" 200 - +2025-12-29 03:38:27,039 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:27] "GET /api/strategies/equityCurve?id=9&_t=1766950706699 HTTP/1.1" 200 - +2025-12-29 03:38:27,043 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:27] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766950706699 HTTP/1.1" 200 - +2025-12-29 03:38:30,008 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:30] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950709691 HTTP/1.1" 200 - +2025-12-29 03:38:30,665 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:30] "GET /api/strategies/positions?id=9&_t=1766950710658 HTTP/1.1" 200 - +2025-12-29 03:38:32,693 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:32] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950712687 HTTP/1.1" 200 - +2025-12-29 03:38:35,651 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:35] "GET /api/strategies/positions?id=9&_t=1766950715644 HTTP/1.1" 200 - +2025-12-29 03:38:36,011 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:36] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950715696 HTTP/1.1" 200 - +2025-12-29 03:38:38,698 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:38] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950718691 HTTP/1.1" 200 - +2025-12-29 03:38:40,968 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:40] "GET /api/strategies/positions?id=9&_t=1766950720653 HTTP/1.1" 200 - +2025-12-29 03:38:41,691 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:41] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950721684 HTTP/1.1" 200 - +2025-12-29 03:38:45,011 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:45] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950724693 HTTP/1.1" 200 - +2025-12-29 03:38:45,653 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:45] "GET /api/strategies/positions?id=9&_t=1766950725645 HTTP/1.1" 200 - +2025-12-29 03:38:48,011 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:48] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950727694 HTTP/1.1" 200 - +2025-12-29 03:38:50,658 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:50] "GET /api/strategies/positions?id=9&_t=1766950730651 HTTP/1.1" 200 - +2025-12-29 03:38:51,019 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:51] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950730697 HTTP/1.1" 200 - +2025-12-29 03:38:53,704 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:53] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950733696 HTTP/1.1" 200 - +2025-12-29 03:38:55,966 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:55] "GET /api/strategies/positions?id=9&_t=1766950735651 HTTP/1.1" 200 - +2025-12-29 03:38:56,698 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:56] "GET /api/strategies/equityCurve?id=9&_t=1766950736690 HTTP/1.1" 200 - +2025-12-29 03:38:57,002 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:38:57] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950736691 HTTP/1.1" 200 - +2025-12-29 03:39:00,005 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:39:00] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950739684 HTTP/1.1" 200 - +2025-12-29 03:39:00,655 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:39:00] "GET /api/strategies/positions?id=9&_t=1766950740644 HTTP/1.1" 200 - +2025-12-29 03:39:03,006 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:39:03] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950742684 HTTP/1.1" 200 - +2025-12-29 03:39:05,653 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:39:05] "GET /api/strategies/positions?id=9&_t=1766950745645 HTTP/1.1" 200 - +2025-12-29 03:39:06,000 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:39:06] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950745684 HTTP/1.1" 200 - +2025-12-29 03:39:08,690 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:39:08] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950748684 HTTP/1.1" 200 - +2025-12-29 03:39:10,953 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:39:10] "GET /api/strategies/positions?id=9&_t=1766950750644 HTTP/1.1" 200 - +2025-12-29 03:39:11,696 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:39:11] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950751685 HTTP/1.1" 200 - +2025-12-29 03:39:15,010 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:39:15] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950754685 HTTP/1.1" 200 - +2025-12-29 03:39:15,662 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:39:15] "GET /api/strategies/positions?id=9&_t=1766950755645 HTTP/1.1" 200 - +2025-12-29 03:39:17,868 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2936.49, pending_signals=1 +2025-12-29 03:39:17,875 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2936.49, 'position_size': 0, 'timestamp': 1766950740}] +2025-12-29 03:39:18,006 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:39:18] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950757684 HTTP/1.1" 200 - +2025-12-29 03:39:20,671 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:39:20] "GET /api/strategies/positions?id=9&_t=1766950760646 HTTP/1.1" 200 - +2025-12-29 03:39:21,015 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:39:21] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950760685 HTTP/1.1" 200 - +2025-12-29 03:39:23,692 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:39:23] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950763685 HTTP/1.1" 200 - +2025-12-29 03:39:25,967 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:39:25] "GET /api/strategies/positions?id=9&_t=1766950765644 HTTP/1.1" 200 - +2025-12-29 03:39:26,693 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:39:26] "GET /api/strategies/equityCurve?id=9&_t=1766950766684 HTTP/1.1" 200 - +2025-12-29 03:39:27,000 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:39:27] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950766684 HTTP/1.1" 200 - +2025-12-29 03:39:27,742 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2936.49, pending_signals=1 +2025-12-29 03:39:27,747 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2936.49, 'position_size': 0, 'timestamp': 1766950740}] +2025-12-29 03:39:29,993 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:39:29] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950769684 HTTP/1.1" 200 - +2025-12-29 03:39:30,653 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:39:30] "GET /api/strategies/positions?id=9&_t=1766950770645 HTTP/1.1" 200 - +2025-12-29 03:39:33,008 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:39:33] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950772685 HTTP/1.1" 200 - +2025-12-29 03:39:35,654 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:39:35] "GET /api/strategies/positions?id=9&_t=1766950775646 HTTP/1.1" 200 - +2025-12-29 03:39:36,006 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:39:36] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950775683 HTTP/1.1" 200 - +2025-12-29 03:39:37,830 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2936.49, pending_signals=1 +2025-12-29 03:39:37,833 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2936.49, 'position_size': 0, 'timestamp': 1766950740}] +2025-12-29 03:39:38,690 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:39:38] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950778685 HTTP/1.1" 200 - +2025-12-29 03:39:40,963 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:39:40] "GET /api/strategies/positions?id=9&_t=1766950780646 HTTP/1.1" 200 - +2025-12-29 03:39:41,693 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:39:41] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950781684 HTTP/1.1" 200 - +2025-12-29 03:39:44,997 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:39:44] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950784685 HTTP/1.1" 200 - +2025-12-29 03:39:45,662 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:39:45] "GET /api/strategies/positions?id=9&_t=1766950785645 HTTP/1.1" 200 - +2025-12-29 03:39:47,732 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2936.49, pending_signals=1 +2025-12-29 03:39:47,737 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2936.49, 'position_size': 0, 'timestamp': 1766950740}] +2025-12-29 03:39:48,003 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:39:48] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950787684 HTTP/1.1" 200 - +2025-12-29 03:39:50,659 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:39:50] "GET /api/strategies/positions?id=9&_t=1766950790645 HTTP/1.1" 200 - +2025-12-29 03:39:51,009 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:39:51] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950790684 HTTP/1.1" 200 - +2025-12-29 03:39:53,692 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:39:53] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950793685 HTTP/1.1" 200 - +2025-12-29 03:39:55,956 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:39:55] "GET /api/strategies/positions?id=9&_t=1766950795644 HTTP/1.1" 200 - +2025-12-29 03:39:56,692 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:39:56] "GET /api/strategies/equityCurve?id=9&_t=1766950796684 HTTP/1.1" 200 - +2025-12-29 03:39:57,001 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:39:57] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950796685 HTTP/1.1" 200 - +2025-12-29 03:39:57,968 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2936.49, pending_signals=1 +2025-12-29 03:39:57,976 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2936.49, 'position_size': 0, 'timestamp': 1766950740}] +2025-12-29 03:39:59,998 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:39:59] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950799684 HTTP/1.1" 200 - +2025-12-29 03:40:00,653 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:40:00] "GET /api/strategies/positions?id=9&_t=1766950800645 HTTP/1.1" 200 - +2025-12-29 03:40:03,000 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:40:03] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950802684 HTTP/1.1" 200 - +2025-12-29 03:40:05,655 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:40:05] "GET /api/strategies/positions?id=9&_t=1766950805645 HTTP/1.1" 200 - +2025-12-29 03:40:06,009 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:40:06] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950805684 HTTP/1.1" 200 - +2025-12-29 03:40:07,733 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2936.49, pending_signals=2 +2025-12-29 03:40:07,736 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 2936.49, 'position_size': 0.08, 'timestamp': 1766950740}, {'type': 'close_short', 'trigger_price': 2936.49, 'position_size': 0, 'timestamp': 1766950740}] +2025-12-29 03:40:07,746 - app.services.trading_executor - INFO - Strategy 1 signal executed: open_long @ 2936.49 +2025-12-29 03:40:08,691 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:40:08] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950808684 HTTP/1.1" 200 - +2025-12-29 03:40:10,073 - app.services.pending_order_worker - WARNING - live limit phase failed: pending_id=81, strategy_id=1, cfg={'exchange_id': 'bitget', 'api_key': 'bg_8...b659', 'secret_key': '3b7e...b239', 'passphrase': 'xuji...u123', 'credential_id': 3}, err=Bitget HTTP 400: {"code":"45115","msg":"The price you enter should be a multiple of 0.01{1}","requestTime":1766950810533,"data":null} +2025-12-29 03:40:10,954 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:40:10] "GET /api/strategies/positions?id=9&_t=1766950810645 HTTP/1.1" 200 - +2025-12-29 03:40:11,145 - app.services.pending_order_worker - INFO - live record begin: pending_id=81 strategy_id=1 symbol=ETH/USDT signal=open_long filled=0.01 avg_price=2935.07 fee=0.0 fee_ccy= +2025-12-29 03:40:11,162 - app.services.pending_order_worker - INFO - live record done: pending_id=81 strategy_id=1 symbol=ETH/USDT signal=open_long +2025-12-29 03:40:11,694 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:40:11] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950811684 HTTP/1.1" 200 - +2025-12-29 03:40:14,563 - app.services.pending_order_worker - INFO - live notify: pending_id=81, strategy_id=1, ok=browser,telegram,email fail=- +2025-12-29 03:40:14,999 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:40:14] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950814684 HTTP/1.1" 200 - +2025-12-29 03:40:15,652 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:40:15] "GET /api/strategies/positions?id=9&_t=1766950815645 HTTP/1.1" 200 - +2025-12-29 03:40:17,834 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2936.49, pending_signals=2 +2025-12-29 03:40:17,845 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 2936.49, 'position_size': 0.08, 'timestamp': 1766950740}, {'type': 'close_short', 'trigger_price': 2936.49, 'position_size': 0, 'timestamp': 1766950740}] +2025-12-29 03:40:18,007 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:40:18] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950817685 HTTP/1.1" 200 - +2025-12-29 03:40:20,655 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:40:20] "GET /api/strategies/positions?id=9&_t=1766950820645 HTTP/1.1" 200 - +2025-12-29 03:40:20,995 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:40:20] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950820684 HTTP/1.1" 200 - +2025-12-29 03:40:23,691 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:40:23] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950823685 HTTP/1.1" 200 - +2025-12-29 03:40:26,377 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:40:26] "GET /api/strategies?_t=1766950826362 HTTP/1.1" 200 - +2025-12-29 03:40:27,737 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2936.49, pending_signals=2 +2025-12-29 03:40:27,749 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 2936.49, 'position_size': 0.08, 'timestamp': 1766950740}, {'type': 'close_short', 'trigger_price': 2936.49, 'position_size': 0, 'timestamp': 1766950740}] +2025-12-29 03:40:37,840 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2936.49, pending_signals=2 +2025-12-29 03:40:37,850 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 2936.49, 'position_size': 0.08, 'timestamp': 1766950740}, {'type': 'close_short', 'trigger_price': 2936.49, 'position_size': 0, 'timestamp': 1766950740}] +2025-12-29 03:40:38,947 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:40:38] "GET /api/dashboard/summary?_t=1766950838933 HTTP/1.1" 200 - +2025-12-29 03:40:39,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:40:39] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766950838933 HTTP/1.1" 200 - +2025-12-29 03:40:47,739 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2936.49, pending_signals=2 +2025-12-29 03:40:47,749 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 2936.49, 'position_size': 0.08, 'timestamp': 1766950740}, {'type': 'close_short', 'trigger_price': 2936.49, 'position_size': 0, 'timestamp': 1766950740}] +2025-12-29 03:40:57,981 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2936.49, pending_signals=2 +2025-12-29 03:40:58,000 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:40:58] "GET /api/strategies?_t=1766950857791 HTTP/1.1" 200 - +2025-12-29 03:40:58,000 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 2936.49, 'position_size': 0.08, 'timestamp': 1766950740}, {'type': 'close_short', 'trigger_price': 2936.49, 'position_size': 0, 'timestamp': 1766950740}] +2025-12-29 03:40:59,441 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:40:59] "GET /api/strategies/equityCurve?id=2&_t=1766950859024 HTTP/1.1" 200 - +2025-12-29 03:40:59,445 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:40:59] "GET /api/strategies/equityCurve?id=2&_t=1766950859025 HTTP/1.1" 200 - +2025-12-29 03:40:59,447 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:40:59] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766950859025 HTTP/1.1" 200 - +2025-12-29 03:40:59,558 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:40:59] "GET /api/strategies/positions?id=2&_t=1766950859027 HTTP/1.1" 200 - +2025-12-29 03:41:00,858 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:00] "GET /api/strategies/equityCurve?id=1&_t=1766950860848 HTTP/1.1" 200 - +2025-12-29 03:41:00,861 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:00] "GET /api/strategies/equityCurve?id=1&_t=1766950860848 HTTP/1.1" 200 - +2025-12-29 03:41:01,234 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:01] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766950860848 HTTP/1.1" 200 - +2025-12-29 03:41:01,343 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:01] "GET /api/strategies/positions?id=1&_t=1766950860848 HTTP/1.1" 200 - +2025-12-29 03:41:03,215 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:03] "GET /api/strategies/equityCurve?id=9&_t=1766950862896 HTTP/1.1" 200 - +2025-12-29 03:41:03,219 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:03] "GET /api/strategies/equityCurve?id=9&_t=1766950862896 HTTP/1.1" 200 - +2025-12-29 03:41:03,224 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:03] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766950862896 HTTP/1.1" 200 - +2025-12-29 03:41:03,228 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:03] "GET /api/strategies/positions?id=9&_t=1766950862899 HTTP/1.1" 200 - +2025-12-29 03:41:03,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:03] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 03:41:04,018 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:04] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 03:41:04,022 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:04] "GET /api/credentials/list?user_id=1&_t=1766950863708 HTTP/1.1" 200 - +2025-12-29 03:41:04,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:04] "GET /api/strategies/equityCurve?id=9&_t=1766950863730 HTTP/1.1" 200 - +2025-12-29 03:41:04,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:04] "GET /api/strategies/equityCurve?id=9&_t=1766950863730 HTTP/1.1" 200 - +2025-12-29 03:41:04,064 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:04] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766950863730 HTTP/1.1" 200 - +2025-12-29 03:41:07,034 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:07] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950866720 HTTP/1.1" 200 - +2025-12-29 03:41:07,911 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:07] "GET /api/strategies/positions?id=9&_t=1766950867902 HTTP/1.1" 200 - +2025-12-29 03:41:10,024 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:10] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950869711 HTTP/1.1" 200 - +2025-12-29 03:41:12,720 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:12] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950872713 HTTP/1.1" 200 - +2025-12-29 03:41:13,220 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:13] "GET /api/strategies/positions?id=9&_t=1766950872901 HTTP/1.1" 200 - +2025-12-29 03:41:15,733 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:15] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950875725 HTTP/1.1" 200 - +2025-12-29 03:41:18,216 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:18] "GET /api/strategies/positions?id=9&_t=1766950877899 HTTP/1.1" 200 - +2025-12-29 03:41:18,729 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:18] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950878723 HTTP/1.1" 200 - +2025-12-29 03:41:22,041 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:22] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950881724 HTTP/1.1" 200 - +2025-12-29 03:41:22,909 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:22] "GET /api/strategies/positions?id=9&_t=1766950882903 HTTP/1.1" 200 - +2025-12-29 03:41:25,034 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:25] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950884718 HTTP/1.1" 200 - +2025-12-29 03:41:27,754 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:27] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950887713 HTTP/1.1" 200 - +2025-12-29 03:41:28,216 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:28] "GET /api/strategies/positions?id=9&_t=1766950887899 HTTP/1.1" 200 - +2025-12-29 03:41:30,726 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:30] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950890720 HTTP/1.1" 200 - +2025-12-29 03:41:33,213 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:33] "GET /api/strategies/positions?id=9&_t=1766950892898 HTTP/1.1" 200 - +2025-12-29 03:41:33,729 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:33] "GET /api/strategies/equityCurve?id=9&_t=1766950893722 HTTP/1.1" 200 - +2025-12-29 03:41:34,037 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:34] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950893723 HTTP/1.1" 200 - +2025-12-29 03:41:37,021 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950896712 HTTP/1.1" 200 - +2025-12-29 03:41:37,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:37] "GET /api/strategies/positions?id=9&_t=1766950897897 HTTP/1.1" 200 - +2025-12-29 03:41:40,021 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:40] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950899711 HTTP/1.1" 200 - +2025-12-29 03:41:42,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:42] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950902711 HTTP/1.1" 200 - +2025-12-29 03:41:43,206 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:43] "GET /api/strategies/positions?id=9&_t=1766950902897 HTTP/1.1" 200 - +2025-12-29 03:41:45,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:45] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950905712 HTTP/1.1" 200 - +2025-12-29 03:41:48,211 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:48] "GET /api/strategies/positions?id=9&_t=1766950907898 HTTP/1.1" 200 - +2025-12-29 03:41:48,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:48] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950908712 HTTP/1.1" 200 - +2025-12-29 03:41:52,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:52] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950911712 HTTP/1.1" 200 - +2025-12-29 03:41:52,902 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:52] "GET /api/strategies/positions?id=9&_t=1766950912896 HTTP/1.1" 200 - +2025-12-29 03:41:55,031 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:55] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950914712 HTTP/1.1" 200 - +2025-12-29 03:41:57,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:57] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950917711 HTTP/1.1" 200 - +2025-12-29 03:41:58,210 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:41:58] "GET /api/strategies/positions?id=9&_t=1766950917897 HTTP/1.1" 200 - +2025-12-29 03:42:00,721 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:42:00] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950920712 HTTP/1.1" 200 - +2025-12-29 03:42:03,221 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:42:03] "GET /api/strategies/positions?id=9&_t=1766950922897 HTTP/1.1" 200 - +2025-12-29 03:42:03,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:42:03] "GET /api/strategies/equityCurve?id=9&_t=1766950923711 HTTP/1.1" 200 - +2025-12-29 03:42:04,026 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:42:04] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950923712 HTTP/1.1" 200 - +2025-12-29 03:42:07,033 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:42:07] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950926712 HTTP/1.1" 200 - +2025-12-29 03:42:07,905 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:42:07] "GET /api/strategies/positions?id=9&_t=1766950927897 HTTP/1.1" 200 - +2025-12-29 03:42:10,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:42:10] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950929712 HTTP/1.1" 200 - +2025-12-29 03:42:12,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:42:12] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950932711 HTTP/1.1" 200 - +2025-12-29 03:42:13,217 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:42:13] "GET /api/strategies/positions?id=9&_t=1766950932897 HTTP/1.1" 200 - +2025-12-29 03:42:15,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:42:15] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950935712 HTTP/1.1" 200 - +2025-12-29 03:42:18,220 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:42:18] "GET /api/strategies/positions?id=9&_t=1766950937897 HTTP/1.1" 200 - +2025-12-29 03:42:18,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:42:18] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950938712 HTTP/1.1" 200 - +2025-12-29 03:42:22,028 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:42:22] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950941712 HTTP/1.1" 200 - +2025-12-29 03:42:22,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:42:22] "GET /api/strategies/positions?id=9&_t=1766950942897 HTTP/1.1" 200 - +2025-12-29 03:42:25,022 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:42:25] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950944712 HTTP/1.1" 200 - +2025-12-29 03:42:27,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:42:27] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950947711 HTTP/1.1" 200 - +2025-12-29 03:42:28,212 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:42:28] "GET /api/strategies/positions?id=9&_t=1766950947897 HTTP/1.1" 200 - +2025-12-29 03:42:30,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:42:30] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950950712 HTTP/1.1" 200 - +2025-12-29 03:42:33,215 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:42:33] "GET /api/strategies/positions?id=9&_t=1766950952897 HTTP/1.1" 200 - +2025-12-29 03:42:33,720 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:42:33] "GET /api/strategies/equityCurve?id=9&_t=1766950953712 HTTP/1.1" 200 - +2025-12-29 03:42:34,025 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:42:34] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950953713 HTTP/1.1" 200 - +2025-12-29 03:42:37,021 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:42:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950956712 HTTP/1.1" 200 - +2025-12-29 03:42:37,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:42:37] "GET /api/strategies/positions?id=9&_t=1766950957897 HTTP/1.1" 200 - +2025-12-29 03:42:40,029 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:42:40] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950959712 HTTP/1.1" 200 - +2025-12-29 03:42:42,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:42:42] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950962712 HTTP/1.1" 200 - +2025-12-29 03:42:43,219 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:42:43] "GET /api/strategies/positions?id=9&_t=1766950962896 HTTP/1.1" 200 - +2025-12-29 03:42:45,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:42:45] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950965712 HTTP/1.1" 200 - +2025-12-29 03:42:48,219 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:42:48] "GET /api/strategies/positions?id=9&_t=1766950967897 HTTP/1.1" 200 - +2025-12-29 03:42:48,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:42:48] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950968712 HTTP/1.1" 200 - +2025-12-29 03:42:52,021 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:42:52] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950971712 HTTP/1.1" 200 - +2025-12-29 03:42:52,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:42:52] "GET /api/strategies/positions?id=9&_t=1766950972897 HTTP/1.1" 200 - +2025-12-29 03:42:55,033 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:42:55] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950974712 HTTP/1.1" 200 - +2025-12-29 03:42:57,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:42:57] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950977712 HTTP/1.1" 200 - +2025-12-29 03:42:58,211 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:42:58] "GET /api/strategies/positions?id=9&_t=1766950977898 HTTP/1.1" 200 - +2025-12-29 03:43:00,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:43:00] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950980712 HTTP/1.1" 200 - +2025-12-29 03:43:03,214 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:43:03] "GET /api/strategies/positions?id=9&_t=1766950982897 HTTP/1.1" 200 - +2025-12-29 03:43:03,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:43:03] "GET /api/strategies/equityCurve?id=9&_t=1766950983712 HTTP/1.1" 200 - +2025-12-29 03:43:04,023 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:43:04] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950983713 HTTP/1.1" 200 - +2025-12-29 03:43:07,020 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:43:07] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950986711 HTTP/1.1" 200 - +2025-12-29 03:43:07,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:43:07] "GET /api/strategies/positions?id=9&_t=1766950987896 HTTP/1.1" 200 - +2025-12-29 03:43:10,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:43:10] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950989712 HTTP/1.1" 200 - +2025-12-29 03:43:12,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:43:12] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950992712 HTTP/1.1" 200 - +2025-12-29 03:43:13,214 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:43:13] "GET /api/strategies/positions?id=9&_t=1766950992897 HTTP/1.1" 200 - +2025-12-29 03:43:15,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:43:15] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950995712 HTTP/1.1" 200 - +2025-12-29 03:43:18,212 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:43:18] "GET /api/strategies/positions?id=9&_t=1766950997897 HTTP/1.1" 200 - +2025-12-29 03:43:18,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:43:18] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766950998712 HTTP/1.1" 200 - +2025-12-29 03:43:22,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:43:22] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951001712 HTTP/1.1" 200 - +2025-12-29 03:43:22,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:43:22] "GET /api/strategies/positions?id=9&_t=1766951002898 HTTP/1.1" 200 - +2025-12-29 03:43:25,030 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:43:25] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951004712 HTTP/1.1" 200 - +2025-12-29 03:43:27,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:43:27] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951007711 HTTP/1.1" 200 - +2025-12-29 03:43:28,209 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:43:28] "GET /api/strategies/positions?id=9&_t=1766951007896 HTTP/1.1" 200 - +2025-12-29 03:43:30,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:43:30] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951010712 HTTP/1.1" 200 - +2025-12-29 03:43:33,214 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:43:33] "GET /api/strategies/positions?id=9&_t=1766951012897 HTTP/1.1" 200 - +2025-12-29 03:43:33,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:43:33] "GET /api/strategies/equityCurve?id=9&_t=1766951013711 HTTP/1.1" 200 - +2025-12-29 03:43:34,017 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:43:34] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951013711 HTTP/1.1" 200 - +2025-12-29 03:43:37,033 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:43:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951016712 HTTP/1.1" 200 - +2025-12-29 03:43:37,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:43:37] "GET /api/strategies/positions?id=9&_t=1766951017897 HTTP/1.1" 200 - +2025-12-29 03:43:40,033 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:43:40] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951019712 HTTP/1.1" 200 - +2025-12-29 03:43:42,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:43:42] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951022711 HTTP/1.1" 200 - +2025-12-29 03:43:43,213 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:43:43] "GET /api/strategies/positions?id=9&_t=1766951022896 HTTP/1.1" 200 - +2025-12-29 03:43:45,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:43:45] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951025712 HTTP/1.1" 200 - +2025-12-29 03:43:48,209 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:43:48] "GET /api/strategies/positions?id=9&_t=1766951027897 HTTP/1.1" 200 - +2025-12-29 03:43:48,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:43:48] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951028711 HTTP/1.1" 200 - +2025-12-29 03:43:52,035 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:43:52] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951031711 HTTP/1.1" 200 - +2025-12-29 03:43:52,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:43:52] "GET /api/strategies/positions?id=9&_t=1766951032897 HTTP/1.1" 200 - +2025-12-29 03:43:55,033 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:43:55] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951034712 HTTP/1.1" 200 - +2025-12-29 03:43:57,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:43:57] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951037712 HTTP/1.1" 200 - +2025-12-29 03:43:58,204 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:43:58] "GET /api/strategies/positions?id=9&_t=1766951037897 HTTP/1.1" 200 - +2025-12-29 03:44:00,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:44:00] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951040712 HTTP/1.1" 200 - +2025-12-29 03:44:03,209 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:44:03] "GET /api/strategies/positions?id=9&_t=1766951042897 HTTP/1.1" 200 - +2025-12-29 03:44:03,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:44:03] "GET /api/strategies/equityCurve?id=9&_t=1766951043712 HTTP/1.1" 200 - +2025-12-29 03:44:04,018 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:44:04] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951043712 HTTP/1.1" 200 - +2025-12-29 03:44:07,033 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:44:07] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951046711 HTTP/1.1" 200 - +2025-12-29 03:44:07,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:44:07] "GET /api/strategies/positions?id=9&_t=1766951047897 HTTP/1.1" 200 - +2025-12-29 03:44:10,031 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:44:10] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951049711 HTTP/1.1" 200 - +2025-12-29 03:44:12,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:44:12] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951052712 HTTP/1.1" 200 - +2025-12-29 03:44:13,219 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:44:13] "GET /api/strategies/positions?id=9&_t=1766951052897 HTTP/1.1" 200 - +2025-12-29 03:44:15,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:44:15] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951055712 HTTP/1.1" 200 - +2025-12-29 03:44:18,217 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:44:18] "GET /api/strategies/positions?id=9&_t=1766951057897 HTTP/1.1" 200 - +2025-12-29 03:44:18,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:44:18] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951058712 HTTP/1.1" 200 - +2025-12-29 03:44:22,033 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:44:22] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951061712 HTTP/1.1" 200 - +2025-12-29 03:44:22,905 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:44:22] "GET /api/strategies/positions?id=9&_t=1766951062898 HTTP/1.1" 200 - +2025-12-29 03:44:25,033 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:44:25] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951064711 HTTP/1.1" 200 - +2025-12-29 03:44:27,724 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:44:27] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951067712 HTTP/1.1" 200 - +2025-12-29 03:44:28,217 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:44:28] "GET /api/strategies/positions?id=9&_t=1766951067897 HTTP/1.1" 200 - +2025-12-29 03:44:30,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:44:30] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951070712 HTTP/1.1" 200 - +2025-12-29 03:44:33,215 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:44:33] "GET /api/strategies/positions?id=9&_t=1766951072896 HTTP/1.1" 200 - +2025-12-29 03:44:33,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:44:33] "GET /api/strategies/equityCurve?id=9&_t=1766951073712 HTTP/1.1" 200 - +2025-12-29 03:44:34,021 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:44:34] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951073712 HTTP/1.1" 200 - +2025-12-29 03:44:37,028 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:44:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951076711 HTTP/1.1" 200 - +2025-12-29 03:44:37,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:44:37] "GET /api/strategies/positions?id=9&_t=1766951077897 HTTP/1.1" 200 - +2025-12-29 03:44:38,457 - app.services.pending_order_worker - INFO - position sync: strategy_id=2 failed: ('Connection aborted.', ConnectionResetError(10054, '่ฟœ็จ‹ไธปๆœบๅผบ่ฟซๅ…ณ้—ญไบ†ไธ€ไธช็Žฐๆœ‰็š„่ฟžๆŽฅใ€‚', None, 10054, None)) +2025-12-29 03:44:40,028 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:44:40] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951079713 HTTP/1.1" 200 - +2025-12-29 03:44:43,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:44:43] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951083477 HTTP/1.1" 200 - +2025-12-29 03:44:43,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:44:43] "GET /api/strategies/positions?id=9&_t=1766951083478 HTTP/1.1" 200 - +2025-12-29 03:44:46,787 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:44:46] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951086471 HTTP/1.1" 200 - +2025-12-29 03:44:48,483 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:44:48] "GET /api/strategies/positions?id=9&_t=1766951088475 HTTP/1.1" 200 - +2025-12-29 03:44:49,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:44:49] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951089481 HTTP/1.1" 200 - +2025-12-29 03:44:52,480 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:44:52] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951092471 HTTP/1.1" 200 - +2025-12-29 03:44:53,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:44:53] "GET /api/strategies/positions?id=9&_t=1766951093476 HTTP/1.1" 200 - +2025-12-29 03:44:55,479 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:44:55] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951095471 HTTP/1.1" 200 - +2025-12-29 03:44:58,543 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:44:58] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951098219 HTTP/1.1" 200 - +2025-12-29 03:44:58,547 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:44:58] "GET /api/strategies/positions?id=9&_t=1766951098220 HTTP/1.1" 200 - +2025-12-29 03:44:58,586 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:44:58,586 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:44:58,674 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:44:58,674 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:45:01,480 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:45:01] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951101473 HTTP/1.1" 200 - +2025-12-29 03:45:03,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:45:03] "GET /api/strategies/positions?id=9&_t=1766951103474 HTTP/1.1" 200 - +2025-12-29 03:45:04,483 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:45:04] "GET /api/strategies/equityCurve?id=9&_t=1766951104474 HTTP/1.1" 200 - +2025-12-29 03:45:04,787 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:45:04] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951104475 HTTP/1.1" 200 - +2025-12-29 03:45:07,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:45:07] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951107480 HTTP/1.1" 200 - +2025-12-29 03:45:07,934 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:45:07,934 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:45:08,028 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:45:08,029 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:45:08,491 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:45:08] "GET /api/strategies/positions?id=9&_t=1766951108483 HTTP/1.1" 200 - +2025-12-29 03:45:10,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:45:10] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951110478 HTTP/1.1" 200 - +2025-12-29 03:45:13,482 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:45:13] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951113475 HTTP/1.1" 200 - +2025-12-29 03:45:13,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:45:13] "GET /api/strategies/positions?id=9&_t=1766951113475 HTTP/1.1" 200 - +2025-12-29 03:45:16,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:45:16] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951116472 HTTP/1.1" 200 - +2025-12-29 03:45:17,935 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:45:17,936 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:45:18,028 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:45:18,028 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:45:18,490 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:45:18] "GET /api/strategies/positions?id=9&_t=1766951118483 HTTP/1.1" 200 - +2025-12-29 03:45:19,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:45:19] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951119474 HTTP/1.1" 200 - +2025-12-29 03:45:22,490 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:45:22] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951122482 HTTP/1.1" 200 - +2025-12-29 03:45:23,786 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:45:23] "GET /api/strategies/positions?id=9&_t=1766951123474 HTTP/1.1" 200 - +2025-12-29 03:45:25,483 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:45:25] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951125473 HTTP/1.1" 200 - +2025-12-29 03:45:27,946 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:45:27,947 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:45:28,029 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:45:28,029 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:45:28,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:45:28] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951128475 HTTP/1.1" 200 - +2025-12-29 03:45:28,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:45:28] "GET /api/strategies/positions?id=9&_t=1766951128476 HTTP/1.1" 200 - +2025-12-29 03:45:31,484 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:45:31] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951131475 HTTP/1.1" 200 - +2025-12-29 03:45:33,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:45:33] "GET /api/strategies/positions?id=9&_t=1766951133480 HTTP/1.1" 200 - +2025-12-29 03:45:34,483 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:45:34] "GET /api/strategies/equityCurve?id=9&_t=1766951134474 HTTP/1.1" 200 - +2025-12-29 03:45:34,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:45:34] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951134475 HTTP/1.1" 200 - +2025-12-29 03:45:37,788 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:45:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951137474 HTTP/1.1" 200 - +2025-12-29 03:45:37,939 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:45:37,939 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:45:38,031 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:45:38,031 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:45:38,490 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:45:38] "GET /api/strategies/positions?id=9&_t=1766951138480 HTTP/1.1" 200 - +2025-12-29 03:45:40,782 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:45:40] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951140469 HTTP/1.1" 200 - +2025-12-29 03:45:43,503 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:45:43] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951143470 HTTP/1.1" 200 - +2025-12-29 03:45:43,806 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:45:43] "GET /api/strategies/positions?id=9&_t=1766951143471 HTTP/1.1" 200 - +2025-12-29 03:45:46,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:45:46] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951146476 HTTP/1.1" 200 - +2025-12-29 03:45:47,940 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:45:47,940 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:45:48,032 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:45:48,032 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:45:48,478 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:45:48] "GET /api/strategies/positions?id=9&_t=1766951148471 HTTP/1.1" 200 - +2025-12-29 03:45:49,785 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:45:49] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951149470 HTTP/1.1" 200 - +2025-12-29 03:45:52,478 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:45:52] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951152471 HTTP/1.1" 200 - +2025-12-29 03:45:53,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:45:53] "GET /api/strategies/positions?id=9&_t=1766951153481 HTTP/1.1" 200 - +2025-12-29 03:45:55,489 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:45:55] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951155481 HTTP/1.1" 200 - +2025-12-29 03:45:57,941 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:45:57,941 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:45:58,033 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:45:58,033 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:45:58,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:45:58] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951158480 HTTP/1.1" 200 - +2025-12-29 03:45:58,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:45:58] "GET /api/strategies/positions?id=9&_t=1766951158481 HTTP/1.1" 200 - +2025-12-29 03:46:07,944 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:46:07,944 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:46:08,035 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:46:08,035 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:46:17,944 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:46:17,944 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:46:18,036 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:46:18,037 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:46:27,946 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:46:27,946 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:46:28,041 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:46:28,041 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:46:37,477 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:46:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951197470 HTTP/1.1" 200 - +2025-12-29 03:46:37,788 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:46:37] "GET /api/strategies/positions?id=9&_t=1766951197470 HTTP/1.1" 200 - +2025-12-29 03:46:37,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:46:37] "GET /api/strategies/equityCurve?id=9&_t=1766951197471 HTTP/1.1" 200 - +2025-12-29 03:46:37,948 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:46:37,948 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:46:38,043 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:46:38,043 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:46:47,949 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:46:47,949 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:46:48,043 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:46:48,043 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:46:57,949 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:46:57,950 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:46:58,044 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:46:58,045 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:47:07,951 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:47:07,951 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:47:08,046 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:47:08,046 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:47:17,952 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:47:17,952 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:47:18,054 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:47:18,054 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:47:27,953 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:47:27,954 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:47:28,049 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:47:28,049 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:47:37,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:47:37] "GET /api/strategies/positions?id=9&_t=1766951257477 HTTP/1.1" 200 - +2025-12-29 03:47:37,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:47:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951257478 HTTP/1.1" 200 - +2025-12-29 03:47:37,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:47:37] "GET /api/strategies/equityCurve?id=9&_t=1766951257478 HTTP/1.1" 200 - +2025-12-29 03:47:37,956 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:47:37,957 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:47:38,064 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:47:38,065 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:47:47,959 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:47:47,959 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:47:48,052 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:47:48,052 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:47:57,961 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:47:57,961 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:47:58,054 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:47:58,054 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:48:07,975 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:48:07,976 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:48:08,055 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:48:08,055 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:48:17,973 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:48:17,974 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:48:18,060 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:48:18,060 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:48:27,967 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:48:27,967 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:48:28,058 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:48:28,059 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:48:37,491 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:48:37] "GET /api/strategies/positions?id=9&_t=1766951317483 HTTP/1.1" 200 - +2025-12-29 03:48:37,798 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:48:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951317484 HTTP/1.1" 200 - +2025-12-29 03:48:37,802 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:48:37] "GET /api/strategies/equityCurve?id=9&_t=1766951317484 HTTP/1.1" 200 - +2025-12-29 03:48:37,969 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:48:37,969 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:48:38,060 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:48:38,060 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:48:47,970 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:48:47,970 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:48:48,067 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:48:48,068 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:48:57,970 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:48:57,970 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:48:58,062 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:48:58,063 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:49:07,972 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:49:07,972 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:49:08,063 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:49:08,064 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:49:17,973 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:49:17,973 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:49:18,066 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:49:18,066 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:49:27,977 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:49:27,977 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:49:28,065 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:49:28,066 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:49:37,788 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:49:37] "GET /api/strategies/positions?id=9&_t=1766951377477 HTTP/1.1" 200 - +2025-12-29 03:49:37,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:49:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951377477 HTTP/1.1" 200 - +2025-12-29 03:49:37,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:49:37] "GET /api/strategies/equityCurve?id=9&_t=1766951377477 HTTP/1.1" 200 - +2025-12-29 03:49:37,978 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:49:37,978 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:49:38,079 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:49:38,079 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:49:47,979 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:49:47,980 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:49:48,068 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:49:48,069 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:49:57,980 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:49:57,981 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:49:58,070 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:49:58,070 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:50:07,981 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:50:07,981 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:50:08,071 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:50:08,071 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:50:17,982 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:50:17,982 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:50:18,075 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:50:18,075 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:50:27,984 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:50:27,984 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:50:28,075 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:50:28,075 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:50:37,495 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:50:37] "GET /api/strategies/positions?id=9&_t=1766951437483 HTTP/1.1" 200 - +2025-12-29 03:50:37,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:50:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951437485 HTTP/1.1" 200 - +2025-12-29 03:50:37,803 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:50:37] "GET /api/strategies/equityCurve?id=9&_t=1766951437485 HTTP/1.1" 200 - +2025-12-29 03:50:37,985 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:50:37,985 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:50:38,090 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:50:38,090 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:50:47,988 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:50:47,989 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:50:48,078 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:50:48,078 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:50:57,987 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:50:57,987 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:50:58,080 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:50:58,080 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:51:07,988 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:51:07,989 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:51:08,104 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:51:08,104 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:51:17,990 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:51:17,992 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:51:18,084 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:51:18,085 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:51:27,995 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:51:27,996 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:51:28,085 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:51:28,086 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:51:37,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:51:37] "GET /api/strategies/positions?id=9&_t=1766951497477 HTTP/1.1" 200 - +2025-12-29 03:51:37,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:51:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951497479 HTTP/1.1" 200 - +2025-12-29 03:51:37,804 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:51:37] "GET /api/strategies/equityCurve?id=9&_t=1766951497479 HTTP/1.1" 200 - +2025-12-29 03:51:37,992 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:51:37,993 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:51:38,088 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:51:38,088 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:51:47,997 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:51:47,998 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:51:48,090 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:51:48,090 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:51:57,996 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:51:57,997 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:51:58,091 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:51:58,092 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:52:08,004 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:52:08,004 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:52:08,102 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:52:08,103 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:52:17,998 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:52:17,999 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:52:18,098 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:52:18,098 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:52:28,002 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:52:28,002 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:52:28,096 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:52:28,096 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:52:37,480 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:52:37] "GET /api/strategies/positions?id=9&_t=1766951557473 HTTP/1.1" 200 - +2025-12-29 03:52:37,787 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:52:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951557473 HTTP/1.1" 200 - +2025-12-29 03:52:37,791 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:52:37] "GET /api/strategies/equityCurve?id=9&_t=1766951557474 HTTP/1.1" 200 - +2025-12-29 03:52:38,002 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:52:38,002 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:52:38,097 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:52:38,097 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:52:48,006 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:52:48,006 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:52:48,098 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:52:48,098 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:52:58,006 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:52:58,006 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:52:58,099 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:52:58,100 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:53:08,009 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:53:08,009 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:53:08,101 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:53:08,101 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:53:18,009 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:53:18,010 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:53:18,103 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:53:18,104 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:53:28,012 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:53:28,012 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:53:28,104 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:53:28,104 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:53:37,787 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:53:37] "GET /api/strategies/positions?id=9&_t=1766951617474 HTTP/1.1" 200 - +2025-12-29 03:53:37,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:53:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951617475 HTTP/1.1" 200 - +2025-12-29 03:53:37,795 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:53:37] "GET /api/strategies/equityCurve?id=9&_t=1766951617476 HTTP/1.1" 200 - +2025-12-29 03:53:38,013 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:53:38,013 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:53:38,105 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:53:38,106 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:53:48,015 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:53:48,015 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:53:48,106 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:53:48,107 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:53:58,016 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:53:58,017 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:53:58,109 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:53:58,109 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:54:08,020 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:54:08,020 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:54:08,109 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:54:08,109 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:54:18,021 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:54:18,021 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:54:18,112 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:54:18,112 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:54:28,022 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:54:28,022 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:54:28,114 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:54:28,115 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:54:37,482 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:54:37] "GET /api/strategies/positions?id=9&_t=1766951677473 HTTP/1.1" 200 - +2025-12-29 03:54:37,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:54:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951677474 HTTP/1.1" 200 - +2025-12-29 03:54:37,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:54:37] "GET /api/strategies/equityCurve?id=9&_t=1766951677475 HTTP/1.1" 200 - +2025-12-29 03:54:38,023 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:54:38,023 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:54:38,114 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:54:38,115 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:54:48,025 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:54:48,025 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:54:48,114 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:54:48,115 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:54:58,026 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:54:58,026 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:54:58,119 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:54:58,119 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:55:08,034 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:55:08,034 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:55:08,118 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:55:08,118 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:55:18,029 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:55:18,030 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:55:18,121 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:55:18,121 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:55:28,030 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:55:28,031 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:55:28,121 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:55:28,121 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:55:37,794 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:55:37] "GET /api/strategies/positions?id=9&_t=1766951737474 HTTP/1.1" 200 - +2025-12-29 03:55:37,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:55:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951737474 HTTP/1.1" 200 - +2025-12-29 03:55:37,801 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:55:37] "GET /api/strategies/equityCurve?id=9&_t=1766951737475 HTTP/1.1" 200 - +2025-12-29 03:55:38,031 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:55:38,031 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:55:38,134 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:55:38,134 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:55:48,034 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:55:48,035 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:55:48,123 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:55:48,124 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:55:58,034 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:55:58,035 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:55:58,126 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:55:58,126 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:56:08,036 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:56:08,036 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:56:08,127 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:56:08,128 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:56:18,037 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:56:18,037 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:56:18,131 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:56:18,132 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:56:28,041 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:56:28,041 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:56:28,132 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:56:28,132 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:56:37,483 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:56:37] "GET /api/strategies/positions?id=9&_t=1766951797473 HTTP/1.1" 200 - +2025-12-29 03:56:37,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:56:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951797474 HTTP/1.1" 200 - +2025-12-29 03:56:37,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:56:37] "GET /api/strategies/equityCurve?id=9&_t=1766951797474 HTTP/1.1" 200 - +2025-12-29 03:56:38,042 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:56:38,042 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:56:38,134 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:56:38,134 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:56:48,043 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:56:48,044 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:56:48,134 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:56:48,135 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:56:58,043 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:56:58,044 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:56:58,137 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:56:58,138 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:57:08,045 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:57:08,046 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:57:08,139 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:57:08,139 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:57:18,047 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:57:18,047 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:57:18,139 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:57:18,139 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:57:28,048 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:57:28,048 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:57:28,140 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:57:28,141 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:57:37,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:57:37] "GET /api/strategies/positions?id=9&_t=1766951857472 HTTP/1.1" 200 - +2025-12-29 03:57:37,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:57:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951857472 HTTP/1.1" 200 - +2025-12-29 03:57:37,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:57:37] "GET /api/strategies/equityCurve?id=9&_t=1766951857473 HTTP/1.1" 200 - +2025-12-29 03:57:38,048 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:57:38,048 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:57:38,141 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:57:38,141 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:57:48,050 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:57:48,051 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:57:48,142 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:57:48,142 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:57:58,051 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:57:58,052 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:57:58,145 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:57:58,146 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:58:08,053 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:58:08,053 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:58:08,144 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:58:08,145 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:58:18,054 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:58:18,055 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:58:18,147 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:58:18,147 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:58:28,055 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:58:28,056 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:58:28,147 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:58:28,147 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:58:37,497 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:58:37] "GET /api/strategies/positions?id=9&_t=1766951917484 HTTP/1.1" 200 - +2025-12-29 03:58:37,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:58:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951917484 HTTP/1.1" 200 - +2025-12-29 03:58:37,803 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:58:37] "GET /api/strategies/equityCurve?id=9&_t=1766951917485 HTTP/1.1" 200 - +2025-12-29 03:58:38,059 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:58:38,059 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:58:38,153 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:58:38,153 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:58:48,059 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:58:48,059 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:58:48,151 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:58:48,151 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:58:58,063 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:58:58,064 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:58:58,153 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:58:58,153 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:59:08,063 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:59:08,063 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:59:08,157 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:59:08,158 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:59:18,064 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:59:18,065 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:59:18,158 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:59:18,158 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:59:28,065 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:59:28,065 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:59:28,158 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:59:28,158 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:59:37,797 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:59:37] "GET /api/strategies/positions?id=9&_t=1766951977477 HTTP/1.1" 200 - +2025-12-29 03:59:37,800 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:59:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766951977478 HTTP/1.1" 200 - +2025-12-29 03:59:37,807 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 03:59:37] "GET /api/strategies/equityCurve?id=9&_t=1766951977478 HTTP/1.1" 200 - +2025-12-29 03:59:38,068 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:59:38,068 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:59:38,159 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:59:38,160 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:59:48,069 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:59:48,069 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:59:48,160 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:59:48,160 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 03:59:58,070 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:59:58,070 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 03:59:58,167 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 03:59:58,168 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:00:08,074 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:00:08,074 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:00:08,164 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:00:08,165 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:00:18,072 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:00:18,073 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:00:18,164 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:00:18,165 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:00:20,321 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:00:20] "GET /api/strategies/positions?id=9&_t=1766952020295 HTTP/1.1" 200 - +2025-12-29 04:00:20,636 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:00:20] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952020303 HTTP/1.1" 200 - +2025-12-29 04:00:20,640 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:00:20] "GET /api/strategies/equityCurve?id=9&_t=1766952020303 HTTP/1.1" 200 - +2025-12-29 04:00:22,026 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:00:22] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952021711 HTTP/1.1" 200 - +2025-12-29 04:00:22,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:00:22] "GET /api/strategies/positions?id=9&_t=1766952022897 HTTP/1.1" 200 - +2025-12-29 04:00:25,026 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:00:25] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952024711 HTTP/1.1" 200 - +2025-12-29 04:00:27,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:00:27] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952027712 HTTP/1.1" 200 - +2025-12-29 04:00:28,074 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:00:28,075 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:00:28,166 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:00:28,166 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:00:28,211 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:00:28] "GET /api/strategies/positions?id=9&_t=1766952027897 HTTP/1.1" 200 - +2025-12-29 04:00:30,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:00:30] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952030711 HTTP/1.1" 200 - +2025-12-29 04:00:33,209 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:00:33] "GET /api/strategies/positions?id=9&_t=1766952032897 HTTP/1.1" 200 - +2025-12-29 04:00:33,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:00:33] "GET /api/strategies/equityCurve?id=9&_t=1766952033712 HTTP/1.1" 200 - +2025-12-29 04:00:34,019 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:00:34] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952033713 HTTP/1.1" 200 - +2025-12-29 04:00:37,026 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:00:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952036711 HTTP/1.1" 200 - +2025-12-29 04:00:37,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:00:37] "GET /api/strategies/positions?id=9&_t=1766952037897 HTTP/1.1" 200 - +2025-12-29 04:00:38,075 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:00:38,076 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:00:38,167 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:00:38,168 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:00:40,026 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:00:40] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952039712 HTTP/1.1" 200 - +2025-12-29 04:00:42,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:00:42] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952042711 HTTP/1.1" 200 - +2025-12-29 04:00:43,207 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:00:43] "GET /api/strategies/positions?id=9&_t=1766952042897 HTTP/1.1" 200 - +2025-12-29 04:00:45,721 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:00:45] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952045713 HTTP/1.1" 200 - +2025-12-29 04:00:48,095 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:00:48,095 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:00:48,170 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:00:48,170 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:00:48,271 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:00:48] "GET /api/strategies/positions?id=9&_t=1766952047896 HTTP/1.1" 200 - +2025-12-29 04:00:48,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:00:48] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952048712 HTTP/1.1" 200 - +2025-12-29 04:00:52,027 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:00:52] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952051712 HTTP/1.1" 200 - +2025-12-29 04:00:52,905 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:00:52] "GET /api/strategies/positions?id=9&_t=1766952052897 HTTP/1.1" 200 - +2025-12-29 04:00:55,030 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:00:55] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952054711 HTTP/1.1" 200 - +2025-12-29 04:00:57,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:00:57] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952057712 HTTP/1.1" 200 - +2025-12-29 04:00:58,087 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:00:58,088 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:00:58,170 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:00:58,170 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:00:58,208 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:00:58] "GET /api/strategies/positions?id=9&_t=1766952057898 HTTP/1.1" 200 - +2025-12-29 04:01:00,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:01:00] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952060711 HTTP/1.1" 200 - +2025-12-29 04:01:03,213 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:01:03] "GET /api/strategies/positions?id=9&_t=1766952062896 HTTP/1.1" 200 - +2025-12-29 04:01:03,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:01:03] "GET /api/strategies/equityCurve?id=9&_t=1766952063712 HTTP/1.1" 200 - +2025-12-29 04:01:04,025 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:01:04] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952063712 HTTP/1.1" 200 - +2025-12-29 04:01:07,026 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:01:07] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952066711 HTTP/1.1" 200 - +2025-12-29 04:01:07,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:01:07] "GET /api/strategies/positions?id=9&_t=1766952067897 HTTP/1.1" 200 - +2025-12-29 04:01:08,090 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:01:08,090 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:01:08,171 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:01:08,172 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:01:10,031 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:01:10] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952069713 HTTP/1.1" 200 - +2025-12-29 04:01:12,720 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:01:12] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952072712 HTTP/1.1" 200 - +2025-12-29 04:01:13,208 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:01:13] "GET /api/strategies/positions?id=9&_t=1766952072896 HTTP/1.1" 200 - +2025-12-29 04:01:15,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:01:15] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952075712 HTTP/1.1" 200 - +2025-12-29 04:01:18,090 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:01:18,090 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:01:18,173 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:01:18,173 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:01:18,212 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:01:18] "GET /api/strategies/positions?id=9&_t=1766952077897 HTTP/1.1" 200 - +2025-12-29 04:01:18,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:01:18] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952078711 HTTP/1.1" 200 - +2025-12-29 04:01:22,025 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:01:22] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952081712 HTTP/1.1" 200 - +2025-12-29 04:01:22,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:01:22] "GET /api/strategies/positions?id=9&_t=1766952082897 HTTP/1.1" 200 - +2025-12-29 04:01:25,028 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:01:25] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952084711 HTTP/1.1" 200 - +2025-12-29 04:01:27,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:01:27] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952087711 HTTP/1.1" 200 - +2025-12-29 04:01:28,093 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:01:28,093 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:01:28,174 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:01:28,174 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:01:28,207 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:01:28] "GET /api/strategies/positions?id=9&_t=1766952087898 HTTP/1.1" 200 - +2025-12-29 04:01:30,720 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:01:30] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952090712 HTTP/1.1" 200 - +2025-12-29 04:01:33,220 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:01:33] "GET /api/strategies/positions?id=9&_t=1766952092897 HTTP/1.1" 200 - +2025-12-29 04:01:33,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:01:33] "GET /api/strategies/equityCurve?id=9&_t=1766952093711 HTTP/1.1" 200 - +2025-12-29 04:01:34,020 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:01:34] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952093711 HTTP/1.1" 200 - +2025-12-29 04:01:37,022 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:01:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952096711 HTTP/1.1" 200 - +2025-12-29 04:01:37,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:01:37] "GET /api/strategies/positions?id=9&_t=1766952097897 HTTP/1.1" 200 - +2025-12-29 04:01:38,094 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:01:38,094 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:01:38,176 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:01:38,177 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:01:40,036 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:01:40] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952099712 HTTP/1.1" 200 - +2025-12-29 04:01:42,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:01:42] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952102712 HTTP/1.1" 200 - +2025-12-29 04:01:43,216 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:01:43] "GET /api/strategies/positions?id=9&_t=1766952102899 HTTP/1.1" 200 - +2025-12-29 04:01:45,720 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:01:45] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952105712 HTTP/1.1" 200 - +2025-12-29 04:01:48,096 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:01:48,097 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:01:48,177 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:01:48,177 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:01:48,215 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:01:48] "GET /api/strategies/positions?id=9&_t=1766952107897 HTTP/1.1" 200 - +2025-12-29 04:01:48,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:01:48] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952108712 HTTP/1.1" 200 - +2025-12-29 04:01:52,025 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:01:52] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952111712 HTTP/1.1" 200 - +2025-12-29 04:01:52,908 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:01:52] "GET /api/strategies/positions?id=9&_t=1766952112899 HTTP/1.1" 200 - +2025-12-29 04:01:55,025 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:01:55] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952114712 HTTP/1.1" 200 - +2025-12-29 04:01:57,720 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:01:57] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952117713 HTTP/1.1" 200 - +2025-12-29 04:01:58,097 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:01:58,097 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:01:58,179 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:01:58,180 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:01:58,211 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:01:58] "GET /api/strategies/positions?id=9&_t=1766952117898 HTTP/1.1" 200 - +2025-12-29 04:02:00,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:02:00] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952120712 HTTP/1.1" 200 - +2025-12-29 04:02:03,214 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:02:03] "GET /api/strategies/positions?id=9&_t=1766952122897 HTTP/1.1" 200 - +2025-12-29 04:02:03,720 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:02:03] "GET /api/strategies/equityCurve?id=9&_t=1766952123712 HTTP/1.1" 200 - +2025-12-29 04:02:04,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:02:04] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952123713 HTTP/1.1" 200 - +2025-12-29 04:02:07,022 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:02:07] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952126711 HTTP/1.1" 200 - +2025-12-29 04:02:07,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:02:07] "GET /api/strategies/positions?id=9&_t=1766952127897 HTTP/1.1" 200 - +2025-12-29 04:02:08,100 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:02:08,100 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:02:08,179 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:02:08,179 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:02:10,034 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:02:10] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952129712 HTTP/1.1" 200 - +2025-12-29 04:02:12,725 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:02:12] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952132715 HTTP/1.1" 200 - +2025-12-29 04:02:13,215 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:02:13] "GET /api/strategies/positions?id=9&_t=1766952132897 HTTP/1.1" 200 - +2025-12-29 04:02:15,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:02:15] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952135712 HTTP/1.1" 200 - +2025-12-29 04:02:18,099 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:02:18,100 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:02:18,182 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:02:18,182 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:02:18,216 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:02:18] "GET /api/strategies/positions?id=9&_t=1766952137896 HTTP/1.1" 200 - +2025-12-29 04:02:18,723 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:02:18] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952138712 HTTP/1.1" 200 - +2025-12-29 04:02:22,025 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:02:22] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952141712 HTTP/1.1" 200 - +2025-12-29 04:02:22,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:02:22] "GET /api/strategies/positions?id=9&_t=1766952142896 HTTP/1.1" 200 - +2025-12-29 04:02:25,024 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:02:25] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952144712 HTTP/1.1" 200 - +2025-12-29 04:02:27,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:02:27] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952147712 HTTP/1.1" 200 - +2025-12-29 04:02:28,102 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:02:28,102 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:02:28,182 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:02:28,183 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:02:28,218 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:02:28] "GET /api/strategies/positions?id=9&_t=1766952147897 HTTP/1.1" 200 - +2025-12-29 04:02:30,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:02:30] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952150711 HTTP/1.1" 200 - +2025-12-29 04:02:33,218 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:02:33] "GET /api/strategies/positions?id=9&_t=1766952152897 HTTP/1.1" 200 - +2025-12-29 04:02:33,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:02:33] "GET /api/strategies/equityCurve?id=9&_t=1766952153711 HTTP/1.1" 200 - +2025-12-29 04:02:34,029 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:02:34] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952153711 HTTP/1.1" 200 - +2025-12-29 04:02:37,027 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:02:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952156711 HTTP/1.1" 200 - +2025-12-29 04:02:37,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:02:37] "GET /api/strategies/positions?id=9&_t=1766952157897 HTTP/1.1" 200 - +2025-12-29 04:02:38,103 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:02:38,103 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:02:38,186 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:02:38,187 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:02:40,020 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:02:40] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952159712 HTTP/1.1" 200 - +2025-12-29 04:02:42,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:02:42] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952162712 HTTP/1.1" 200 - +2025-12-29 04:02:43,213 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:02:43] "GET /api/strategies/positions?id=9&_t=1766952162896 HTTP/1.1" 200 - +2025-12-29 04:02:45,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:02:45] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952165712 HTTP/1.1" 200 - +2025-12-29 04:02:48,105 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:02:48,105 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:02:48,185 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:02:48,185 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:02:48,210 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:02:48] "GET /api/strategies/positions?id=9&_t=1766952167897 HTTP/1.1" 200 - +2025-12-29 04:02:48,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:02:48] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952168711 HTTP/1.1" 200 - +2025-12-29 04:02:52,031 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:02:52] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952171712 HTTP/1.1" 200 - +2025-12-29 04:02:52,905 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:02:52] "GET /api/strategies/positions?id=9&_t=1766952172898 HTTP/1.1" 200 - +2025-12-29 04:02:55,021 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:02:55] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952174712 HTTP/1.1" 200 - +2025-12-29 04:02:57,720 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:02:57] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952177712 HTTP/1.1" 200 - +2025-12-29 04:02:58,106 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:02:58,107 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:02:58,187 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:02:58,187 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:02:58,209 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:02:58] "GET /api/strategies/positions?id=9&_t=1766952177897 HTTP/1.1" 200 - +2025-12-29 04:03:00,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:03:00] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952180712 HTTP/1.1" 200 - +2025-12-29 04:03:03,225 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:03:03] "GET /api/strategies/positions?id=9&_t=1766952182907 HTTP/1.1" 200 - +2025-12-29 04:03:03,721 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:03:03] "GET /api/strategies/equityCurve?id=9&_t=1766952183712 HTTP/1.1" 200 - +2025-12-29 04:03:04,034 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:03:04] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952183712 HTTP/1.1" 200 - +2025-12-29 04:03:07,025 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:03:07] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952186712 HTTP/1.1" 200 - +2025-12-29 04:03:07,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:03:07] "GET /api/strategies/positions?id=9&_t=1766952187897 HTTP/1.1" 200 - +2025-12-29 04:03:08,110 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:03:08,110 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:03:08,198 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:03:08,199 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:03:10,022 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:03:10] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952189712 HTTP/1.1" 200 - +2025-12-29 04:03:12,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:03:12] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952192711 HTTP/1.1" 200 - +2025-12-29 04:03:13,212 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:03:13] "GET /api/strategies/positions?id=9&_t=1766952192897 HTTP/1.1" 200 - +2025-12-29 04:03:15,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:03:15] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952195712 HTTP/1.1" 200 - +2025-12-29 04:03:18,111 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:03:18,112 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:03:18,191 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:03:18,191 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:03:18,209 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:03:18] "GET /api/strategies/positions?id=9&_t=1766952197897 HTTP/1.1" 200 - +2025-12-29 04:03:18,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:03:18] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952198711 HTTP/1.1" 200 - +2025-12-29 04:03:22,029 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:03:22] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952201712 HTTP/1.1" 200 - +2025-12-29 04:03:22,907 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:03:22] "GET /api/strategies/positions?id=9&_t=1766952202897 HTTP/1.1" 200 - +2025-12-29 04:03:25,021 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:03:25] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952204711 HTTP/1.1" 200 - +2025-12-29 04:03:27,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:03:27] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952207711 HTTP/1.1" 200 - +2025-12-29 04:03:28,112 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:03:28,113 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:03:28,191 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:03:28,192 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:03:28,206 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:03:28] "GET /api/strategies/positions?id=9&_t=1766952207897 HTTP/1.1" 200 - +2025-12-29 04:03:30,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:03:30] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952210712 HTTP/1.1" 200 - +2025-12-29 04:03:33,208 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:03:33] "GET /api/strategies/positions?id=9&_t=1766952212896 HTTP/1.1" 200 - +2025-12-29 04:03:33,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:03:33] "GET /api/strategies/equityCurve?id=9&_t=1766952213712 HTTP/1.1" 200 - +2025-12-29 04:03:34,021 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:03:34] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952213712 HTTP/1.1" 200 - +2025-12-29 04:03:37,024 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:03:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952216711 HTTP/1.1" 200 - +2025-12-29 04:03:37,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:03:37] "GET /api/strategies/positions?id=9&_t=1766952217897 HTTP/1.1" 200 - +2025-12-29 04:03:38,113 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:03:38,113 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:03:38,194 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:03:38,194 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:03:40,020 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:03:40] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952219711 HTTP/1.1" 200 - +2025-12-29 04:03:42,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:03:42] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952222712 HTTP/1.1" 200 - +2025-12-29 04:03:43,217 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:03:43] "GET /api/strategies/positions?id=9&_t=1766952222897 HTTP/1.1" 200 - +2025-12-29 04:03:45,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:03:45] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952225712 HTTP/1.1" 200 - +2025-12-29 04:03:48,114 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:03:48,115 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:03:48,206 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:03:48,206 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:03:48,210 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:03:48] "GET /api/strategies/positions?id=9&_t=1766952227897 HTTP/1.1" 200 - +2025-12-29 04:03:48,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:03:48] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952228712 HTTP/1.1" 200 - +2025-12-29 04:03:52,033 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:03:52] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952231712 HTTP/1.1" 200 - +2025-12-29 04:03:52,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:03:52] "GET /api/strategies/positions?id=9&_t=1766952232896 HTTP/1.1" 200 - +2025-12-29 04:03:55,023 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:03:55] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952234712 HTTP/1.1" 200 - +2025-12-29 04:03:57,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:03:57] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952237711 HTTP/1.1" 200 - +2025-12-29 04:03:58,115 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:03:58,116 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:03:58,199 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:03:58,199 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:03:58,206 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:03:58] "GET /api/strategies/positions?id=9&_t=1766952237897 HTTP/1.1" 200 - +2025-12-29 04:04:00,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:04:00] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952240712 HTTP/1.1" 200 - +2025-12-29 04:04:03,209 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:04:03] "GET /api/strategies/positions?id=9&_t=1766952242897 HTTP/1.1" 200 - +2025-12-29 04:04:03,720 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:04:03] "GET /api/strategies/equityCurve?id=9&_t=1766952243712 HTTP/1.1" 200 - +2025-12-29 04:04:04,031 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:04:04] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952243713 HTTP/1.1" 200 - +2025-12-29 04:04:07,028 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:04:07] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952246712 HTTP/1.1" 200 - +2025-12-29 04:04:07,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:04:07] "GET /api/strategies/positions?id=9&_t=1766952247897 HTTP/1.1" 200 - +2025-12-29 04:04:08,118 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:04:08,118 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:04:08,202 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:04:08,202 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:04:10,021 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:04:10] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952249712 HTTP/1.1" 200 - +2025-12-29 04:04:12,721 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:04:12] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952252712 HTTP/1.1" 200 - +2025-12-29 04:04:13,214 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:04:13] "GET /api/strategies/positions?id=9&_t=1766952252897 HTTP/1.1" 200 - +2025-12-29 04:04:15,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:04:15] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952255712 HTTP/1.1" 200 - +2025-12-29 04:04:18,118 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:04:18,118 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:04:18,203 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:04:18,203 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:04:18,214 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:04:18] "GET /api/strategies/positions?id=9&_t=1766952257896 HTTP/1.1" 200 - +2025-12-29 04:04:18,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:04:18] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952258712 HTTP/1.1" 200 - +2025-12-29 04:04:22,026 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:04:22] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952261712 HTTP/1.1" 200 - +2025-12-29 04:04:22,905 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:04:22] "GET /api/strategies/positions?id=9&_t=1766952262897 HTTP/1.1" 200 - +2025-12-29 04:04:25,025 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:04:25] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952264711 HTTP/1.1" 200 - +2025-12-29 04:04:27,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:04:27] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952267712 HTTP/1.1" 200 - +2025-12-29 04:04:28,120 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:04:28,120 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:04:28,204 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:04:28,204 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:04:28,212 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:04:28] "GET /api/strategies/positions?id=9&_t=1766952267897 HTTP/1.1" 200 - +2025-12-29 04:04:30,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:04:30] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952270712 HTTP/1.1" 200 - +2025-12-29 04:04:33,219 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:04:33] "GET /api/strategies/positions?id=9&_t=1766952272896 HTTP/1.1" 200 - +2025-12-29 04:04:33,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:04:33] "GET /api/strategies/equityCurve?id=9&_t=1766952273712 HTTP/1.1" 200 - +2025-12-29 04:04:34,027 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:04:34] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952273713 HTTP/1.1" 200 - +2025-12-29 04:04:37,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:04:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952276712 HTTP/1.1" 200 - +2025-12-29 04:04:37,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:04:37] "GET /api/strategies/positions?id=9&_t=1766952277897 HTTP/1.1" 200 - +2025-12-29 04:04:38,122 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:04:38,122 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:04:38,206 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:04:38,206 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:04:40,025 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:04:40] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952279712 HTTP/1.1" 200 - +2025-12-29 04:04:42,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:04:42] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952282712 HTTP/1.1" 200 - +2025-12-29 04:04:43,208 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:04:43] "GET /api/strategies/positions?id=9&_t=1766952282898 HTTP/1.1" 200 - +2025-12-29 04:04:45,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:04:45] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952285712 HTTP/1.1" 200 - +2025-12-29 04:04:48,123 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:04:48,123 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:04:48,206 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:04:48,206 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:04:48,213 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:04:48] "GET /api/strategies/positions?id=9&_t=1766952287896 HTTP/1.1" 200 - +2025-12-29 04:04:48,720 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:04:48] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952288713 HTTP/1.1" 200 - +2025-12-29 04:04:52,034 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:04:52] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952291712 HTTP/1.1" 200 - +2025-12-29 04:04:52,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:04:52] "GET /api/strategies/positions?id=9&_t=1766952292897 HTTP/1.1" 200 - +2025-12-29 04:04:55,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:04:55] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952294712 HTTP/1.1" 200 - +2025-12-29 04:04:57,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:04:57] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952297712 HTTP/1.1" 200 - +2025-12-29 04:04:58,124 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:04:58,125 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:04:58,205 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:04:58] "GET /api/strategies/positions?id=9&_t=1766952297896 HTTP/1.1" 200 - +2025-12-29 04:04:58,211 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:04:58,211 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:05:00,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:05:00] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952300711 HTTP/1.1" 200 - +2025-12-29 04:05:03,219 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:05:03] "GET /api/strategies/positions?id=9&_t=1766952302896 HTTP/1.1" 200 - +2025-12-29 04:05:03,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:05:03] "GET /api/strategies/equityCurve?id=9&_t=1766952303712 HTTP/1.1" 200 - +2025-12-29 04:05:04,024 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:05:04] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952303712 HTTP/1.1" 200 - +2025-12-29 04:05:07,024 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:05:07] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952306711 HTTP/1.1" 200 - +2025-12-29 04:05:07,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:05:07] "GET /api/strategies/positions?id=9&_t=1766952307897 HTTP/1.1" 200 - +2025-12-29 04:05:08,126 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:05:08,127 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:05:08,213 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:05:08,213 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:05:10,022 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:05:10] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952309712 HTTP/1.1" 200 - +2025-12-29 04:05:12,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:05:12] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952312712 HTTP/1.1" 200 - +2025-12-29 04:05:13,212 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:05:13] "GET /api/strategies/positions?id=9&_t=1766952312897 HTTP/1.1" 200 - +2025-12-29 04:05:15,721 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:05:15] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952315711 HTTP/1.1" 200 - +2025-12-29 04:05:18,127 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:05:18,128 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:05:18,212 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:05:18] "GET /api/strategies/positions?id=9&_t=1766952317898 HTTP/1.1" 200 - +2025-12-29 04:05:18,216 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:05:18,216 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:05:18,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:05:18] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952318712 HTTP/1.1" 200 - +2025-12-29 04:05:22,034 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:05:22] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952321712 HTTP/1.1" 200 - +2025-12-29 04:05:22,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:05:22] "GET /api/strategies/positions?id=9&_t=1766952322896 HTTP/1.1" 200 - +2025-12-29 04:05:25,028 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:05:25] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952324712 HTTP/1.1" 200 - +2025-12-29 04:05:27,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:05:27] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952327711 HTTP/1.1" 200 - +2025-12-29 04:05:28,129 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:05:28,129 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:05:28,211 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:05:28] "GET /api/strategies/positions?id=9&_t=1766952327897 HTTP/1.1" 200 - +2025-12-29 04:05:28,216 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:05:28,216 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:05:30,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:05:30] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952330711 HTTP/1.1" 200 - +2025-12-29 04:05:33,215 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:05:33] "GET /api/strategies/positions?id=9&_t=1766952332897 HTTP/1.1" 200 - +2025-12-29 04:05:33,720 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:05:33] "GET /api/strategies/equityCurve?id=9&_t=1766952333712 HTTP/1.1" 200 - +2025-12-29 04:05:34,028 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:05:34] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952333712 HTTP/1.1" 200 - +2025-12-29 04:05:37,028 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:05:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952336712 HTTP/1.1" 200 - +2025-12-29 04:05:37,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:05:37] "GET /api/strategies/positions?id=9&_t=1766952337897 HTTP/1.1" 200 - +2025-12-29 04:05:38,130 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:05:38,131 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:05:38,217 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:05:38,217 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:05:40,029 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:05:40] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952339711 HTTP/1.1" 200 - +2025-12-29 04:05:42,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:05:42] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952342712 HTTP/1.1" 200 - +2025-12-29 04:05:43,213 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:05:43] "GET /api/strategies/positions?id=9&_t=1766952342897 HTTP/1.1" 200 - +2025-12-29 04:05:45,720 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:05:45] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952345711 HTTP/1.1" 200 - +2025-12-29 04:05:48,133 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:05:48,134 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:05:48,218 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:05:48,219 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:05:48,251 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:05:48] "GET /api/strategies/positions?id=9&_t=1766952347897 HTTP/1.1" 200 - +2025-12-29 04:05:48,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:05:48] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952348712 HTTP/1.1" 200 - +2025-12-29 04:05:52,021 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:05:52] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952351712 HTTP/1.1" 200 - +2025-12-29 04:05:52,908 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:05:52] "GET /api/strategies/positions?id=9&_t=1766952352898 HTTP/1.1" 200 - +2025-12-29 04:05:55,031 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:05:55] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952354711 HTTP/1.1" 200 - +2025-12-29 04:05:57,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:05:57] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952357712 HTTP/1.1" 200 - +2025-12-29 04:05:58,135 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:05:58,135 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:05:58,220 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:05:58] "GET /api/strategies/positions?id=9&_t=1766952357897 HTTP/1.1" 200 - +2025-12-29 04:05:58,221 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:05:58,222 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:06:00,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:06:00] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952360712 HTTP/1.1" 200 - +2025-12-29 04:06:03,214 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:06:03] "GET /api/strategies/positions?id=9&_t=1766952362897 HTTP/1.1" 200 - +2025-12-29 04:06:03,721 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:06:03] "GET /api/strategies/equityCurve?id=9&_t=1766952363712 HTTP/1.1" 200 - +2025-12-29 04:06:04,037 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:06:04] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952363713 HTTP/1.1" 200 - +2025-12-29 04:06:07,026 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:06:07] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952366711 HTTP/1.1" 200 - +2025-12-29 04:06:07,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:06:07] "GET /api/strategies/positions?id=9&_t=1766952367897 HTTP/1.1" 200 - +2025-12-29 04:06:08,136 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:06:08,137 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:06:08,221 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:06:08,221 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:06:10,025 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:06:10] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952369712 HTTP/1.1" 200 - +2025-12-29 04:06:12,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:06:12] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952372712 HTTP/1.1" 200 - +2025-12-29 04:06:13,211 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:06:13] "GET /api/strategies/positions?id=9&_t=1766952372897 HTTP/1.1" 200 - +2025-12-29 04:06:15,720 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:06:15] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952375712 HTTP/1.1" 200 - +2025-12-29 04:06:18,145 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:06:18,145 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:06:18,213 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:06:18] "GET /api/strategies/positions?id=9&_t=1766952377896 HTTP/1.1" 200 - +2025-12-29 04:06:18,223 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:06:18,224 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:06:18,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:06:18] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952378712 HTTP/1.1" 200 - +2025-12-29 04:06:22,024 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:06:22] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952381712 HTTP/1.1" 200 - +2025-12-29 04:06:22,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:06:22] "GET /api/strategies/positions?id=9&_t=1766952382897 HTTP/1.1" 200 - +2025-12-29 04:06:25,028 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:06:25] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952384712 HTTP/1.1" 200 - +2025-12-29 04:06:27,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:06:27] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952387711 HTTP/1.1" 200 - +2025-12-29 04:06:28,140 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:06:28,140 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:06:28,214 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:06:28] "GET /api/strategies/positions?id=9&_t=1766952387896 HTTP/1.1" 200 - +2025-12-29 04:06:28,224 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:06:28,225 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:06:30,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:06:30] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952390712 HTTP/1.1" 200 - +2025-12-29 04:06:33,205 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:06:33] "GET /api/strategies/positions?id=9&_t=1766952392897 HTTP/1.1" 200 - +2025-12-29 04:06:33,721 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:06:33] "GET /api/strategies/equityCurve?id=9&_t=1766952393714 HTTP/1.1" 200 - +2025-12-29 04:06:34,033 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:06:34] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952393714 HTTP/1.1" 200 - +2025-12-29 04:06:37,024 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:06:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952396712 HTTP/1.1" 200 - +2025-12-29 04:06:37,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:06:37] "GET /api/strategies/positions?id=9&_t=1766952397897 HTTP/1.1" 200 - +2025-12-29 04:06:38,141 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:06:38,142 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:06:38,228 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:06:38,228 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:06:40,027 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:06:40] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952399712 HTTP/1.1" 200 - +2025-12-29 04:06:42,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:06:42] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952402711 HTTP/1.1" 200 - +2025-12-29 04:06:43,219 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:06:43] "GET /api/strategies/positions?id=9&_t=1766952402897 HTTP/1.1" 200 - +2025-12-29 04:06:45,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:06:45] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952405712 HTTP/1.1" 200 - +2025-12-29 04:06:48,142 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:06:48,142 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:06:48,213 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:06:48] "GET /api/strategies/positions?id=9&_t=1766952407897 HTTP/1.1" 200 - +2025-12-29 04:06:48,226 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:06:48,227 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:06:48,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:06:48] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952408712 HTTP/1.1" 200 - +2025-12-29 04:06:52,030 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:06:52] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952411712 HTTP/1.1" 200 - +2025-12-29 04:06:52,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:06:52] "GET /api/strategies/positions?id=9&_t=1766952412897 HTTP/1.1" 200 - +2025-12-29 04:06:55,025 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:06:55] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952414712 HTTP/1.1" 200 - +2025-12-29 04:06:57,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:06:57] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952417712 HTTP/1.1" 200 - +2025-12-29 04:06:58,143 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:06:58,143 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:06:58,217 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:06:58] "GET /api/strategies/positions?id=9&_t=1766952417896 HTTP/1.1" 200 - +2025-12-29 04:06:58,229 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:06:58,229 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:07:00,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:07:00] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952420712 HTTP/1.1" 200 - +2025-12-29 04:07:03,211 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:07:03] "GET /api/strategies/positions?id=9&_t=1766952422897 HTTP/1.1" 200 - +2025-12-29 04:07:03,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:07:03] "GET /api/strategies/equityCurve?id=9&_t=1766952423712 HTTP/1.1" 200 - +2025-12-29 04:07:04,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:07:04] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952423712 HTTP/1.1" 200 - +2025-12-29 04:07:07,024 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:07:07] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952426711 HTTP/1.1" 200 - +2025-12-29 04:07:07,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:07:07] "GET /api/strategies/positions?id=9&_t=1766952427897 HTTP/1.1" 200 - +2025-12-29 04:07:08,145 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:07:08,145 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:07:08,230 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:07:08,230 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:07:10,027 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:07:10] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952429712 HTTP/1.1" 200 - +2025-12-29 04:07:12,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:07:12] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952432712 HTTP/1.1" 200 - +2025-12-29 04:07:13,214 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:07:13] "GET /api/strategies/positions?id=9&_t=1766952432898 HTTP/1.1" 200 - +2025-12-29 04:07:15,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:07:15] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952435711 HTTP/1.1" 200 - +2025-12-29 04:07:18,147 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:07:18,147 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:07:18,218 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:07:18] "GET /api/strategies/positions?id=9&_t=1766952437896 HTTP/1.1" 200 - +2025-12-29 04:07:18,233 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:07:18,233 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:07:18,723 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:07:18] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952438716 HTTP/1.1" 200 - +2025-12-29 04:07:22,030 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:07:22] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952441712 HTTP/1.1" 200 - +2025-12-29 04:07:22,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:07:22] "GET /api/strategies/positions?id=9&_t=1766952442897 HTTP/1.1" 200 - +2025-12-29 04:07:25,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:07:25] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952444711 HTTP/1.1" 200 - +2025-12-29 04:07:27,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:07:27] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952447711 HTTP/1.1" 200 - +2025-12-29 04:07:28,149 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:07:28,150 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:07:28,207 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:07:28] "GET /api/strategies/positions?id=9&_t=1766952447896 HTTP/1.1" 200 - +2025-12-29 04:07:28,234 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:07:28,234 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:07:30,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:07:30] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952450713 HTTP/1.1" 200 - +2025-12-29 04:07:33,207 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:07:33] "GET /api/strategies/positions?id=9&_t=1766952452896 HTTP/1.1" 200 - +2025-12-29 04:07:33,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:07:33] "GET /api/strategies/equityCurve?id=9&_t=1766952453712 HTTP/1.1" 200 - +2025-12-29 04:07:34,026 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:07:34] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952453712 HTTP/1.1" 200 - +2025-12-29 04:07:37,028 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:07:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952456711 HTTP/1.1" 200 - +2025-12-29 04:07:37,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:07:37] "GET /api/strategies/positions?id=9&_t=1766952457897 HTTP/1.1" 200 - +2025-12-29 04:07:38,153 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:07:38,154 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:07:38,236 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:07:38,236 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:07:40,024 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:07:40] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952459712 HTTP/1.1" 200 - +2025-12-29 04:07:42,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:07:42] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952462712 HTTP/1.1" 200 - +2025-12-29 04:07:43,215 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:07:43] "GET /api/strategies/positions?id=9&_t=1766952462897 HTTP/1.1" 200 - +2025-12-29 04:07:45,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:07:45] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952465712 HTTP/1.1" 200 - +2025-12-29 04:07:48,153 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:07:48,153 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:07:48,211 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:07:48] "GET /api/strategies/positions?id=9&_t=1766952467897 HTTP/1.1" 200 - +2025-12-29 04:07:48,237 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:07:48,237 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:07:48,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:07:48] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952468712 HTTP/1.1" 200 - +2025-12-29 04:07:52,019 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:07:52] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952471711 HTTP/1.1" 200 - +2025-12-29 04:07:52,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:07:52] "GET /api/strategies/positions?id=9&_t=1766952472897 HTTP/1.1" 200 - +2025-12-29 04:07:55,040 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:07:55] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952474727 HTTP/1.1" 200 - +2025-12-29 04:07:57,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:07:57] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952477712 HTTP/1.1" 200 - +2025-12-29 04:07:58,153 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:07:58,153 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:07:58,217 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:07:58] "GET /api/strategies/positions?id=9&_t=1766952477897 HTTP/1.1" 200 - +2025-12-29 04:07:58,239 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:07:58,240 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:08:00,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:08:00] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952480712 HTTP/1.1" 200 - +2025-12-29 04:08:03,210 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:08:03] "GET /api/strategies/positions?id=9&_t=1766952482897 HTTP/1.1" 200 - +2025-12-29 04:08:03,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:08:03] "GET /api/strategies/equityCurve?id=9&_t=1766952483711 HTTP/1.1" 200 - +2025-12-29 04:08:04,031 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:08:04] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952483712 HTTP/1.1" 200 - +2025-12-29 04:08:07,020 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:08:07] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952486713 HTTP/1.1" 200 - +2025-12-29 04:08:07,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:08:07] "GET /api/strategies/positions?id=9&_t=1766952487897 HTTP/1.1" 200 - +2025-12-29 04:08:08,167 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:08:08,167 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:08:08,239 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:08:08,239 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:08:10,024 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:08:10] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952489712 HTTP/1.1" 200 - +2025-12-29 04:08:12,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:08:12] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952492713 HTTP/1.1" 200 - +2025-12-29 04:08:13,208 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:08:13] "GET /api/strategies/positions?id=9&_t=1766952492897 HTTP/1.1" 200 - +2025-12-29 04:08:15,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:08:15] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952495712 HTTP/1.1" 200 - +2025-12-29 04:08:18,156 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:08:18,157 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:08:18,212 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:08:18] "GET /api/strategies/positions?id=9&_t=1766952497896 HTTP/1.1" 200 - +2025-12-29 04:08:18,242 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:08:18,242 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:08:18,720 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:08:18] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952498712 HTTP/1.1" 200 - +2025-12-29 04:08:22,033 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:08:22] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952501712 HTTP/1.1" 200 - +2025-12-29 04:08:22,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:08:22] "GET /api/strategies/positions?id=9&_t=1766952502897 HTTP/1.1" 200 - +2025-12-29 04:08:25,043 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:08:25] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952504722 HTTP/1.1" 200 - +2025-12-29 04:08:27,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:08:27] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952507712 HTTP/1.1" 200 - +2025-12-29 04:08:28,160 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:08:28,160 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:08:28,216 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:08:28] "GET /api/strategies/positions?id=9&_t=1766952507901 HTTP/1.1" 200 - +2025-12-29 04:08:28,250 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:08:28,250 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:08:30,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:08:30] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952510711 HTTP/1.1" 200 - +2025-12-29 04:08:33,206 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:08:33] "GET /api/strategies/positions?id=9&_t=1766952512897 HTTP/1.1" 200 - +2025-12-29 04:08:33,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:08:33] "GET /api/strategies/equityCurve?id=9&_t=1766952513711 HTTP/1.1" 200 - +2025-12-29 04:08:34,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:08:34] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952513712 HTTP/1.1" 200 - +2025-12-29 04:08:37,033 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:08:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952516711 HTTP/1.1" 200 - +2025-12-29 04:08:37,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:08:37] "GET /api/strategies/positions?id=9&_t=1766952517897 HTTP/1.1" 200 - +2025-12-29 04:08:38,177 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:08:38,178 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:08:38,263 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:08:38,263 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:08:40,030 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:08:40] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952519711 HTTP/1.1" 200 - +2025-12-29 04:08:42,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:08:42] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952522712 HTTP/1.1" 200 - +2025-12-29 04:08:43,214 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:08:43] "GET /api/strategies/positions?id=9&_t=1766952522898 HTTP/1.1" 200 - +2025-12-29 04:08:45,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:08:45] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952525711 HTTP/1.1" 200 - +2025-12-29 04:08:48,180 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:08:48,180 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:08:48,219 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:08:48] "GET /api/strategies/positions?id=9&_t=1766952527897 HTTP/1.1" 200 - +2025-12-29 04:08:48,261 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:08:48,261 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:08:48,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:08:48] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952528712 HTTP/1.1" 200 - +2025-12-29 04:08:52,027 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:08:52] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952531712 HTTP/1.1" 200 - +2025-12-29 04:08:52,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:08:52] "GET /api/strategies/positions?id=9&_t=1766952532896 HTTP/1.1" 200 - +2025-12-29 04:08:55,031 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:08:55] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952534711 HTTP/1.1" 200 - +2025-12-29 04:08:57,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:08:57] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952537711 HTTP/1.1" 200 - +2025-12-29 04:08:58,186 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:08:58,186 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:08:58,208 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:08:58] "GET /api/strategies/positions?id=9&_t=1766952537897 HTTP/1.1" 200 - +2025-12-29 04:08:59,860 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:08:59,860 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:09:00,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:09:00] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952540711 HTTP/1.1" 200 - +2025-12-29 04:09:03,217 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:09:03] "GET /api/strategies/positions?id=9&_t=1766952542897 HTTP/1.1" 200 - +2025-12-29 04:09:03,720 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:09:03] "GET /api/strategies/equityCurve?id=9&_t=1766952543712 HTTP/1.1" 200 - +2025-12-29 04:09:04,034 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:09:04] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952543712 HTTP/1.1" 200 - +2025-12-29 04:09:07,028 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:09:07] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952546712 HTTP/1.1" 200 - +2025-12-29 04:09:07,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:09:07] "GET /api/strategies/positions?id=9&_t=1766952547897 HTTP/1.1" 200 - +2025-12-29 04:09:08,183 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:09:08,183 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:09:08,266 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:09:08,266 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:09:10,024 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:09:10] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952549711 HTTP/1.1" 200 - +2025-12-29 04:09:12,730 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:09:12] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952552712 HTTP/1.1" 200 - +2025-12-29 04:09:13,211 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:09:13] "GET /api/strategies/positions?id=9&_t=1766952552898 HTTP/1.1" 200 - +2025-12-29 04:09:15,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:09:15] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952555711 HTTP/1.1" 200 - +2025-12-29 04:09:18,183 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:09:18,183 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:09:18,208 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:09:18] "GET /api/strategies/positions?id=9&_t=1766952557897 HTTP/1.1" 200 - +2025-12-29 04:09:18,269 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:09:18,270 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:09:18,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:09:18] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952558712 HTTP/1.1" 200 - +2025-12-29 04:09:22,029 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:09:22] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952561712 HTTP/1.1" 200 - +2025-12-29 04:09:22,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:09:22] "GET /api/strategies/positions?id=9&_t=1766952562897 HTTP/1.1" 200 - +2025-12-29 04:09:25,029 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:09:25] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952564711 HTTP/1.1" 200 - +2025-12-29 04:09:27,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:09:27] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952567711 HTTP/1.1" 200 - +2025-12-29 04:09:28,183 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:09:28,184 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:09:28,213 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:09:28] "GET /api/strategies/positions?id=9&_t=1766952567897 HTTP/1.1" 200 - +2025-12-29 04:09:28,268 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:09:28,268 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:09:30,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:09:30] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952570712 HTTP/1.1" 200 - +2025-12-29 04:09:33,219 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:09:33] "GET /api/strategies/positions?id=9&_t=1766952572897 HTTP/1.1" 200 - +2025-12-29 04:09:33,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:09:33] "GET /api/strategies/equityCurve?id=9&_t=1766952573711 HTTP/1.1" 200 - +2025-12-29 04:09:34,033 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:09:34] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952573711 HTTP/1.1" 200 - +2025-12-29 04:09:37,029 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:09:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952576712 HTTP/1.1" 200 - +2025-12-29 04:09:37,905 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:09:37] "GET /api/strategies/positions?id=9&_t=1766952577897 HTTP/1.1" 200 - +2025-12-29 04:09:38,168 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:09:38,168 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:09:38,257 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:09:38,257 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:09:40,034 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:09:40] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952579711 HTTP/1.1" 200 - +2025-12-29 04:09:42,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:09:42] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952582712 HTTP/1.1" 200 - +2025-12-29 04:09:43,205 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:09:43] "GET /api/strategies/positions?id=9&_t=1766952582897 HTTP/1.1" 200 - +2025-12-29 04:09:45,722 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:09:45] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952585711 HTTP/1.1" 200 - +2025-12-29 04:09:48,172 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:09:48,172 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:09:48,212 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:09:48] "GET /api/strategies/positions?id=9&_t=1766952587897 HTTP/1.1" 200 - +2025-12-29 04:09:48,257 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:09:48,257 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:09:48,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:09:48] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952588711 HTTP/1.1" 200 - +2025-12-29 04:09:52,026 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:09:52] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952591712 HTTP/1.1" 200 - +2025-12-29 04:09:52,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:09:52] "GET /api/strategies/positions?id=9&_t=1766952592897 HTTP/1.1" 200 - +2025-12-29 04:09:55,020 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:09:55] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952594712 HTTP/1.1" 200 - +2025-12-29 04:09:57,720 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:09:57] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952597712 HTTP/1.1" 200 - +2025-12-29 04:09:58,171 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:09:58,172 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:09:58,210 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:09:58] "GET /api/strategies/positions?id=9&_t=1766952597897 HTTP/1.1" 200 - +2025-12-29 04:09:58,259 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:09:58,260 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:10:00,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:10:00] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952600712 HTTP/1.1" 200 - +2025-12-29 04:10:03,213 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:10:03] "GET /api/strategies/positions?id=9&_t=1766952602897 HTTP/1.1" 200 - +2025-12-29 04:10:03,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:10:03] "GET /api/strategies/equityCurve?id=9&_t=1766952603712 HTTP/1.1" 200 - +2025-12-29 04:10:04,021 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:10:04] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952603712 HTTP/1.1" 200 - +2025-12-29 04:10:07,024 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:10:07] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952606712 HTTP/1.1" 200 - +2025-12-29 04:10:07,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:10:07] "GET /api/strategies/positions?id=9&_t=1766952607897 HTTP/1.1" 200 - +2025-12-29 04:10:08,175 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:10:08,176 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:10:08,265 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:10:08,265 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:10:10,023 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:10:10] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952609711 HTTP/1.1" 200 - +2025-12-29 04:10:12,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:10:12] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952612711 HTTP/1.1" 200 - +2025-12-29 04:10:13,214 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:10:13] "GET /api/strategies/positions?id=9&_t=1766952612897 HTTP/1.1" 200 - +2025-12-29 04:10:15,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:10:15] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952615712 HTTP/1.1" 200 - +2025-12-29 04:10:18,176 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:10:18,176 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:10:18,210 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:10:18] "GET /api/strategies/positions?id=9&_t=1766952617897 HTTP/1.1" 200 - +2025-12-29 04:10:18,264 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:10:18,264 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:10:18,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:10:18] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952618711 HTTP/1.1" 200 - +2025-12-29 04:10:22,029 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:10:22] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952621713 HTTP/1.1" 200 - +2025-12-29 04:10:22,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:10:22] "GET /api/strategies/positions?id=9&_t=1766952622897 HTTP/1.1" 200 - +2025-12-29 04:10:25,020 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:10:25] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952624712 HTTP/1.1" 200 - +2025-12-29 04:10:27,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:10:27] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952627712 HTTP/1.1" 200 - +2025-12-29 04:10:28,179 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:10:28,179 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:10:28,228 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:10:28] "GET /api/strategies/positions?id=9&_t=1766952627909 HTTP/1.1" 200 - +2025-12-29 04:10:28,264 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:10:28,265 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:10:30,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:10:30] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952630711 HTTP/1.1" 200 - +2025-12-29 04:10:33,212 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:10:33] "GET /api/strategies/positions?id=9&_t=1766952632896 HTTP/1.1" 200 - +2025-12-29 04:10:33,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:10:33] "GET /api/strategies/equityCurve?id=9&_t=1766952633712 HTTP/1.1" 200 - +2025-12-29 04:10:34,026 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:10:34] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952633712 HTTP/1.1" 200 - +2025-12-29 04:10:37,026 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:10:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952636711 HTTP/1.1" 200 - +2025-12-29 04:10:37,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:10:37] "GET /api/strategies/positions?id=9&_t=1766952637897 HTTP/1.1" 200 - +2025-12-29 04:10:38,178 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:10:38,178 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:10:38,267 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:10:38,268 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:10:40,024 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:10:40] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952639711 HTTP/1.1" 200 - +2025-12-29 04:10:42,720 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:10:42] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952642712 HTTP/1.1" 200 - +2025-12-29 04:10:43,211 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:10:43] "GET /api/strategies/positions?id=9&_t=1766952642897 HTTP/1.1" 200 - +2025-12-29 04:10:45,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:10:45] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952645712 HTTP/1.1" 200 - +2025-12-29 04:10:48,182 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:10:48,183 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:10:48,224 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:10:48] "GET /api/strategies/positions?id=9&_t=1766952647897 HTTP/1.1" 200 - +2025-12-29 04:10:48,269 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:10:48,269 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:10:48,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:10:48] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952648712 HTTP/1.1" 200 - +2025-12-29 04:10:52,027 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:10:52] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952651711 HTTP/1.1" 200 - +2025-12-29 04:10:52,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:10:52] "GET /api/strategies/positions?id=9&_t=1766952652897 HTTP/1.1" 200 - +2025-12-29 04:10:55,031 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:10:55] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952654712 HTTP/1.1" 200 - +2025-12-29 04:10:57,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:10:57] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952657711 HTTP/1.1" 200 - +2025-12-29 04:10:58,181 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:10:58,181 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:10:58,209 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:10:58] "GET /api/strategies/positions?id=9&_t=1766952657896 HTTP/1.1" 200 - +2025-12-29 04:10:58,273 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:10:58,273 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:11:00,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:11:00] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952660712 HTTP/1.1" 200 - +2025-12-29 04:11:03,209 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:11:03] "GET /api/strategies/positions?id=9&_t=1766952662897 HTTP/1.1" 200 - +2025-12-29 04:11:03,720 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:11:03] "GET /api/strategies/equityCurve?id=9&_t=1766952663712 HTTP/1.1" 200 - +2025-12-29 04:11:04,033 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:11:04] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952663712 HTTP/1.1" 200 - +2025-12-29 04:11:07,038 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:11:07] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952666712 HTTP/1.1" 200 - +2025-12-29 04:11:07,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:11:07] "GET /api/strategies/positions?id=9&_t=1766952667897 HTTP/1.1" 200 - +2025-12-29 04:11:08,183 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:11:08,183 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:11:08,273 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:11:08,273 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:11:10,028 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:11:10] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952669711 HTTP/1.1" 200 - +2025-12-29 04:11:12,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:11:12] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952672711 HTTP/1.1" 200 - +2025-12-29 04:11:13,216 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:11:13] "GET /api/strategies/positions?id=9&_t=1766952672897 HTTP/1.1" 200 - +2025-12-29 04:11:15,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:11:15] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952675712 HTTP/1.1" 200 - +2025-12-29 04:11:18,183 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:11:18,183 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:11:18,211 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:11:18] "GET /api/strategies/positions?id=9&_t=1766952677897 HTTP/1.1" 200 - +2025-12-29 04:11:18,275 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:11:18,276 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:11:18,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:11:18] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952678712 HTTP/1.1" 200 - +2025-12-29 04:11:22,024 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:11:22] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952681711 HTTP/1.1" 200 - +2025-12-29 04:11:22,902 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:11:22] "GET /api/strategies/positions?id=9&_t=1766952682896 HTTP/1.1" 200 - +2025-12-29 04:11:25,027 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:11:25] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952684712 HTTP/1.1" 200 - +2025-12-29 04:11:27,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:11:27] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952687711 HTTP/1.1" 200 - +2025-12-29 04:11:28,200 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:11:28,201 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:11:28,217 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:11:28] "GET /api/strategies/positions?id=9&_t=1766952687897 HTTP/1.1" 200 - +2025-12-29 04:11:28,290 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:11:28,291 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:11:30,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:11:30] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952690712 HTTP/1.1" 200 - +2025-12-29 04:11:33,212 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:11:33] "GET /api/strategies/positions?id=9&_t=1766952692896 HTTP/1.1" 200 - +2025-12-29 04:11:33,738 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:11:33] "GET /api/strategies/equityCurve?id=9&_t=1766952693712 HTTP/1.1" 200 - +2025-12-29 04:11:34,025 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:11:34] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952693712 HTTP/1.1" 200 - +2025-12-29 04:11:37,031 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:11:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952696712 HTTP/1.1" 200 - +2025-12-29 04:11:37,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:11:37] "GET /api/strategies/positions?id=9&_t=1766952697897 HTTP/1.1" 200 - +2025-12-29 04:11:38,595 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:11:38,596 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:11:38,596 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:11:38,596 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:11:40,028 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:11:40] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952699712 HTTP/1.1" 200 - +2025-12-29 04:11:42,720 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:11:42] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952702712 HTTP/1.1" 200 - +2025-12-29 04:11:43,230 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:11:43] "GET /api/strategies/positions?id=9&_t=1766952702911 HTTP/1.1" 200 - +2025-12-29 04:11:45,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:11:45] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952705712 HTTP/1.1" 200 - +2025-12-29 04:11:48,208 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:11:48] "GET /api/strategies/positions?id=9&_t=1766952707898 HTTP/1.1" 200 - +2025-12-29 04:11:48,213 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:11:48,215 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:11:48,303 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:11:48,304 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:11:48,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:11:48] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952708712 HTTP/1.1" 200 - +2025-12-29 04:11:52,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:11:52] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952711712 HTTP/1.1" 200 - +2025-12-29 04:11:52,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:11:52] "GET /api/strategies/positions?id=9&_t=1766952712897 HTTP/1.1" 200 - +2025-12-29 04:11:55,034 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:11:55] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952714711 HTTP/1.1" 200 - +2025-12-29 04:11:57,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:11:57] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952717712 HTTP/1.1" 200 - +2025-12-29 04:11:58,206 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:11:58] "GET /api/strategies/positions?id=9&_t=1766952717897 HTTP/1.1" 200 - +2025-12-29 04:11:58,215 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:11:58,216 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:11:58,307 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:11:58,307 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:12:00,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:12:00] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952720712 HTTP/1.1" 200 - +2025-12-29 04:12:03,220 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:12:03] "GET /api/strategies/positions?id=9&_t=1766952722897 HTTP/1.1" 200 - +2025-12-29 04:12:03,721 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:12:03] "GET /api/strategies/equityCurve?id=9&_t=1766952723712 HTTP/1.1" 200 - +2025-12-29 04:12:04,038 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:12:04] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952723712 HTTP/1.1" 200 - +2025-12-29 04:12:07,034 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:12:07] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952726712 HTTP/1.1" 200 - +2025-12-29 04:12:07,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:12:07] "GET /api/strategies/positions?id=9&_t=1766952727897 HTTP/1.1" 200 - +2025-12-29 04:12:08,218 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:12:08,218 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:12:08,310 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:12:08,310 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:12:10,020 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:12:10] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952729712 HTTP/1.1" 200 - +2025-12-29 04:12:12,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:12:12] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952732712 HTTP/1.1" 200 - +2025-12-29 04:12:13,213 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:12:13] "GET /api/strategies/positions?id=9&_t=1766952732897 HTTP/1.1" 200 - +2025-12-29 04:12:15,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:12:15] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952735712 HTTP/1.1" 200 - +2025-12-29 04:12:18,209 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:12:18] "GET /api/strategies/positions?id=9&_t=1766952737897 HTTP/1.1" 200 - +2025-12-29 04:12:18,310 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:12:18,310 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:12:18,565 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:12:18,565 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:12:18,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:12:18] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952738712 HTTP/1.1" 200 - +2025-12-29 04:12:22,027 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:12:22] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952741712 HTTP/1.1" 200 - +2025-12-29 04:12:22,905 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:12:22] "GET /api/strategies/positions?id=9&_t=1766952742897 HTTP/1.1" 200 - +2025-12-29 04:12:25,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:12:25] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952744711 HTTP/1.1" 200 - +2025-12-29 04:12:27,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:12:27] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952747711 HTTP/1.1" 200 - +2025-12-29 04:12:28,196 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:12:28,196 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:12:28,212 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:12:28] "GET /api/strategies/positions?id=9&_t=1766952747896 HTTP/1.1" 200 - +2025-12-29 04:12:28,287 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:12:28,287 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:12:30,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:12:30] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952750711 HTTP/1.1" 200 - +2025-12-29 04:12:33,211 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:12:33] "GET /api/strategies/positions?id=9&_t=1766952752897 HTTP/1.1" 200 - +2025-12-29 04:12:33,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:12:33] "GET /api/strategies/equityCurve?id=9&_t=1766952753711 HTTP/1.1" 200 - +2025-12-29 04:12:34,021 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:12:34] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952753711 HTTP/1.1" 200 - +2025-12-29 04:12:37,029 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:12:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952756711 HTTP/1.1" 200 - +2025-12-29 04:12:37,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:12:37] "GET /api/strategies/positions?id=9&_t=1766952757897 HTTP/1.1" 200 - +2025-12-29 04:12:38,198 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:12:38,198 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:12:38,287 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:12:38,288 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:12:40,020 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:12:40] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952759711 HTTP/1.1" 200 - +2025-12-29 04:12:42,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:12:42] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952762712 HTTP/1.1" 200 - +2025-12-29 04:12:43,218 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:12:43] "GET /api/strategies/positions?id=9&_t=1766952762897 HTTP/1.1" 200 - +2025-12-29 04:12:45,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:12:45] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952765712 HTTP/1.1" 200 - +2025-12-29 04:12:48,197 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:12:48,198 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:12:48,205 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:12:48] "GET /api/strategies/positions?id=9&_t=1766952767897 HTTP/1.1" 200 - +2025-12-29 04:12:48,289 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:12:48,290 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:12:48,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:12:48] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952768712 HTTP/1.1" 200 - +2025-12-29 04:12:52,020 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:12:52] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952771711 HTTP/1.1" 200 - +2025-12-29 04:12:52,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:12:52] "GET /api/strategies/positions?id=9&_t=1766952772896 HTTP/1.1" 200 - +2025-12-29 04:12:55,025 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:12:55] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952774712 HTTP/1.1" 200 - +2025-12-29 04:12:57,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:12:57] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952777711 HTTP/1.1" 200 - +2025-12-29 04:12:58,199 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:12:58,199 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:12:58,207 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:12:58] "GET /api/strategies/positions?id=9&_t=1766952777897 HTTP/1.1" 200 - +2025-12-29 04:12:58,291 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:12:58,292 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:13:00,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:13:00] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952780711 HTTP/1.1" 200 - +2025-12-29 04:13:03,208 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:13:03] "GET /api/strategies/positions?id=9&_t=1766952782896 HTTP/1.1" 200 - +2025-12-29 04:13:03,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:13:03] "GET /api/strategies/equityCurve?id=9&_t=1766952783712 HTTP/1.1" 200 - +2025-12-29 04:13:04,030 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:13:04] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952783712 HTTP/1.1" 200 - +2025-12-29 04:13:07,024 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:13:07] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952786711 HTTP/1.1" 200 - +2025-12-29 04:13:07,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:13:07] "GET /api/strategies/positions?id=9&_t=1766952787897 HTTP/1.1" 200 - +2025-12-29 04:13:08,200 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:13:08,200 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:13:08,292 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:13:08,293 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:13:10,019 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:13:10] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952789712 HTTP/1.1" 200 - +2025-12-29 04:13:12,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:13:12] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952792711 HTTP/1.1" 200 - +2025-12-29 04:13:13,206 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:13:13] "GET /api/strategies/positions?id=9&_t=1766952792897 HTTP/1.1" 200 - +2025-12-29 04:13:15,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:13:15] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952795712 HTTP/1.1" 200 - +2025-12-29 04:13:18,203 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:13:18,204 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:13:18,208 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:13:18] "GET /api/strategies/positions?id=9&_t=1766952797897 HTTP/1.1" 200 - +2025-12-29 04:13:18,297 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:13:18,297 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:13:18,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:13:18] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952798712 HTTP/1.1" 200 - +2025-12-29 04:13:22,034 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:13:22] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952801712 HTTP/1.1" 200 - +2025-12-29 04:13:22,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:13:22] "GET /api/strategies/positions?id=9&_t=1766952802898 HTTP/1.1" 200 - +2025-12-29 04:13:25,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:13:25] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952804712 HTTP/1.1" 200 - +2025-12-29 04:13:27,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:13:27] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952807712 HTTP/1.1" 200 - +2025-12-29 04:13:28,203 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:13:28,203 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:13:28,207 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:13:28] "GET /api/strategies/positions?id=9&_t=1766952807897 HTTP/1.1" 200 - +2025-12-29 04:13:28,295 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:13:28,295 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:13:30,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:13:30] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952810711 HTTP/1.1" 200 - +2025-12-29 04:13:33,210 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:13:33] "GET /api/strategies/positions?id=9&_t=1766952812897 HTTP/1.1" 200 - +2025-12-29 04:13:33,724 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:13:33] "GET /api/strategies/equityCurve?id=9&_t=1766952813712 HTTP/1.1" 200 - +2025-12-29 04:13:34,024 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:13:34] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952813712 HTTP/1.1" 200 - +2025-12-29 04:13:37,023 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:13:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952816711 HTTP/1.1" 200 - +2025-12-29 04:13:37,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:13:37] "GET /api/strategies/positions?id=9&_t=1766952817897 HTTP/1.1" 200 - +2025-12-29 04:13:38,206 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:13:38,206 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:13:38,297 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:13:38,297 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:13:40,035 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:13:40] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952819712 HTTP/1.1" 200 - +2025-12-29 04:13:42,720 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:13:42] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952822712 HTTP/1.1" 200 - +2025-12-29 04:13:43,205 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:13:43] "GET /api/strategies/positions?id=9&_t=1766952822896 HTTP/1.1" 200 - +2025-12-29 04:13:45,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:13:45] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952825712 HTTP/1.1" 200 - +2025-12-29 04:13:48,205 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:13:48,206 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:13:48,213 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:13:48] "GET /api/strategies/positions?id=9&_t=1766952827896 HTTP/1.1" 200 - +2025-12-29 04:13:48,298 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:13:48,298 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:13:48,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:13:48] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952828712 HTTP/1.1" 200 - +2025-12-29 04:13:52,030 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:13:52] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952831712 HTTP/1.1" 200 - +2025-12-29 04:13:52,905 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:13:52] "GET /api/strategies/positions?id=9&_t=1766952832897 HTTP/1.1" 200 - +2025-12-29 04:13:55,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:13:55] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952834712 HTTP/1.1" 200 - +2025-12-29 04:13:57,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:13:57] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952837711 HTTP/1.1" 200 - +2025-12-29 04:13:58,207 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:13:58,207 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:13:58,210 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:13:58] "GET /api/strategies/positions?id=9&_t=1766952837899 HTTP/1.1" 200 - +2025-12-29 04:13:58,299 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:13:58,300 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:14:00,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:14:00] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952840711 HTTP/1.1" 200 - +2025-12-29 04:14:03,205 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:14:03] "GET /api/strategies/positions?id=9&_t=1766952842897 HTTP/1.1" 200 - +2025-12-29 04:14:03,720 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:14:03] "GET /api/strategies/equityCurve?id=9&_t=1766952843712 HTTP/1.1" 200 - +2025-12-29 04:14:04,029 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:14:04] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952843712 HTTP/1.1" 200 - +2025-12-29 04:14:07,023 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:14:07] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952846712 HTTP/1.1" 200 - +2025-12-29 04:14:07,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:14:07] "GET /api/strategies/positions?id=9&_t=1766952847897 HTTP/1.1" 200 - +2025-12-29 04:14:08,208 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:14:08,209 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:14:08,301 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:14:08,301 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:14:10,020 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:14:10] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952849712 HTTP/1.1" 200 - +2025-12-29 04:14:12,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:14:12] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952852712 HTTP/1.1" 200 - +2025-12-29 04:14:13,217 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:14:13] "GET /api/strategies/positions?id=9&_t=1766952852896 HTTP/1.1" 200 - +2025-12-29 04:14:15,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:14:15] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952855712 HTTP/1.1" 200 - +2025-12-29 04:14:18,210 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:14:18,211 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:14:18,213 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:14:18] "GET /api/strategies/positions?id=9&_t=1766952857896 HTTP/1.1" 200 - +2025-12-29 04:14:18,302 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:14:18,302 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:14:18,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:14:18] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952858712 HTTP/1.1" 200 - +2025-12-29 04:14:22,031 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:14:22] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952861711 HTTP/1.1" 200 - +2025-12-29 04:14:22,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:14:22] "GET /api/strategies/positions?id=9&_t=1766952862897 HTTP/1.1" 200 - +2025-12-29 04:14:25,034 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:14:25] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952864711 HTTP/1.1" 200 - +2025-12-29 04:14:27,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:14:27] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952867711 HTTP/1.1" 200 - +2025-12-29 04:14:28,206 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:14:28] "GET /api/strategies/positions?id=9&_t=1766952867896 HTTP/1.1" 200 - +2025-12-29 04:14:28,218 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:14:28,219 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:14:28,303 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:14:28,304 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:14:30,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:14:30] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952870712 HTTP/1.1" 200 - +2025-12-29 04:14:33,209 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:14:33] "GET /api/strategies/positions?id=9&_t=1766952872897 HTTP/1.1" 200 - +2025-12-29 04:14:33,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:14:33] "GET /api/strategies/equityCurve?id=9&_t=1766952873712 HTTP/1.1" 200 - +2025-12-29 04:14:34,027 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:14:34] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952873712 HTTP/1.1" 200 - +2025-12-29 04:14:37,024 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:14:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952876712 HTTP/1.1" 200 - +2025-12-29 04:14:37,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:14:37] "GET /api/strategies/positions?id=9&_t=1766952877897 HTTP/1.1" 200 - +2025-12-29 04:14:38,213 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:14:38,214 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:14:38,304 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:14:38,305 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:14:40,019 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:14:40] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952879711 HTTP/1.1" 200 - +2025-12-29 04:14:42,720 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:14:42] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952882711 HTTP/1.1" 200 - +2025-12-29 04:14:43,205 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:14:43] "GET /api/strategies/positions?id=9&_t=1766952882897 HTTP/1.1" 200 - +2025-12-29 04:14:45,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:14:45] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952885711 HTTP/1.1" 200 - +2025-12-29 04:14:48,217 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:14:48] "GET /api/strategies/positions?id=9&_t=1766952887898 HTTP/1.1" 200 - +2025-12-29 04:14:48,240 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:14:48,240 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:14:48,331 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:14:48,332 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:14:48,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:14:48] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952888712 HTTP/1.1" 200 - +2025-12-29 04:14:52,023 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:14:52] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952891713 HTTP/1.1" 200 - +2025-12-29 04:14:52,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:14:52] "GET /api/strategies/positions?id=9&_t=1766952892896 HTTP/1.1" 200 - +2025-12-29 04:14:55,027 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:14:55] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952894712 HTTP/1.1" 200 - +2025-12-29 04:14:57,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:14:57] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952897711 HTTP/1.1" 200 - +2025-12-29 04:14:58,206 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:14:58] "GET /api/strategies/positions?id=9&_t=1766952897897 HTTP/1.1" 200 - +2025-12-29 04:14:58,245 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:14:58,245 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:14:58,332 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:14:58,332 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:15:00,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:15:00] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952900712 HTTP/1.1" 200 - +2025-12-29 04:15:03,215 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:15:03] "GET /api/strategies/positions?id=9&_t=1766952902897 HTTP/1.1" 200 - +2025-12-29 04:15:03,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:15:03] "GET /api/strategies/equityCurve?id=9&_t=1766952903712 HTTP/1.1" 200 - +2025-12-29 04:15:04,026 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:15:04] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952903712 HTTP/1.1" 200 - +2025-12-29 04:15:07,021 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:15:07] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952906712 HTTP/1.1" 200 - +2025-12-29 04:15:07,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:15:07] "GET /api/strategies/positions?id=9&_t=1766952907896 HTTP/1.1" 200 - +2025-12-29 04:15:08,251 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:15:08,251 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:15:08,334 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:15:08,334 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:15:10,022 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:15:10] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952909713 HTTP/1.1" 200 - +2025-12-29 04:15:12,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:15:12] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952912713 HTTP/1.1" 200 - +2025-12-29 04:15:13,211 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:15:13] "GET /api/strategies/positions?id=9&_t=1766952912896 HTTP/1.1" 200 - +2025-12-29 04:15:15,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:15:15] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952915712 HTTP/1.1" 200 - +2025-12-29 04:15:18,212 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:15:18] "GET /api/strategies/positions?id=9&_t=1766952917896 HTTP/1.1" 200 - +2025-12-29 04:15:18,246 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:15:18,246 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:15:18,336 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:15:18,336 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:15:18,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:15:18] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952918712 HTTP/1.1" 200 - +2025-12-29 04:15:22,019 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:15:22] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952921712 HTTP/1.1" 200 - +2025-12-29 04:15:22,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:15:22] "GET /api/strategies/positions?id=9&_t=1766952922897 HTTP/1.1" 200 - +2025-12-29 04:15:25,027 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:15:25] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952924712 HTTP/1.1" 200 - +2025-12-29 04:15:27,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:15:27] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952927711 HTTP/1.1" 200 - +2025-12-29 04:15:28,215 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:15:28] "GET /api/strategies/positions?id=9&_t=1766952927896 HTTP/1.1" 200 - +2025-12-29 04:15:28,248 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:15:28,248 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:15:28,793 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:15:28,793 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:15:30,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:15:30] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952930713 HTTP/1.1" 200 - +2025-12-29 04:15:33,211 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:15:33] "GET /api/strategies/positions?id=9&_t=1766952932897 HTTP/1.1" 200 - +2025-12-29 04:15:33,720 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:15:33] "GET /api/strategies/equityCurve?id=9&_t=1766952933713 HTTP/1.1" 200 - +2025-12-29 04:15:34,024 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:15:34] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952933713 HTTP/1.1" 200 - +2025-12-29 04:15:37,031 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:15:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952936712 HTTP/1.1" 200 - +2025-12-29 04:15:37,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:15:37] "GET /api/strategies/positions?id=9&_t=1766952937897 HTTP/1.1" 200 - +2025-12-29 04:15:38,338 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:15:38,338 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:15:38,595 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:15:38,595 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:15:40,030 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:15:40] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952939711 HTTP/1.1" 200 - +2025-12-29 04:15:42,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:15:42] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952942712 HTTP/1.1" 200 - +2025-12-29 04:15:43,215 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:15:43] "GET /api/strategies/positions?id=9&_t=1766952942897 HTTP/1.1" 200 - +2025-12-29 04:15:45,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:15:45] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952945712 HTTP/1.1" 200 - +2025-12-29 04:15:48,206 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:15:48] "GET /api/strategies/positions?id=9&_t=1766952947897 HTTP/1.1" 200 - +2025-12-29 04:15:48,225 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:15:48,225 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:15:48,314 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:15:48,315 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:15:48,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:15:48] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952948712 HTTP/1.1" 200 - +2025-12-29 04:15:52,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:15:52] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952951712 HTTP/1.1" 200 - +2025-12-29 04:15:52,905 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:15:52] "GET /api/strategies/positions?id=9&_t=1766952952897 HTTP/1.1" 200 - +2025-12-29 04:15:55,029 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:15:55] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952954711 HTTP/1.1" 200 - +2025-12-29 04:15:57,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:15:57] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952957712 HTTP/1.1" 200 - +2025-12-29 04:15:58,215 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:15:58] "GET /api/strategies/positions?id=9&_t=1766952957897 HTTP/1.1" 200 - +2025-12-29 04:15:58,224 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:15:58,224 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:15:58,317 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:15:58,317 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:16:00,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:16:00] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952960712 HTTP/1.1" 200 - +2025-12-29 04:16:03,214 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:16:03] "GET /api/strategies/positions?id=9&_t=1766952962896 HTTP/1.1" 200 - +2025-12-29 04:16:03,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:16:03] "GET /api/strategies/equityCurve?id=9&_t=1766952963712 HTTP/1.1" 200 - +2025-12-29 04:16:04,022 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:16:04] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952963712 HTTP/1.1" 200 - +2025-12-29 04:16:07,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:16:07] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952966711 HTTP/1.1" 200 - +2025-12-29 04:16:07,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:16:07] "GET /api/strategies/positions?id=9&_t=1766952967897 HTTP/1.1" 200 - +2025-12-29 04:16:08,226 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:16:08,227 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:16:08,317 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:16:08,317 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:16:10,019 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:16:10] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952969712 HTTP/1.1" 200 - +2025-12-29 04:16:12,721 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:16:12] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952972713 HTTP/1.1" 200 - +2025-12-29 04:16:13,208 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:16:13] "GET /api/strategies/positions?id=9&_t=1766952972897 HTTP/1.1" 200 - +2025-12-29 04:16:15,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:16:15] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952975712 HTTP/1.1" 200 - +2025-12-29 04:16:18,218 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:16:18] "GET /api/strategies/positions?id=9&_t=1766952977897 HTTP/1.1" 200 - +2025-12-29 04:16:18,228 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:16:18,228 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:16:18,319 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:16:18,319 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:16:18,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:16:18] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952978712 HTTP/1.1" 200 - +2025-12-29 04:16:22,025 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:16:22] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952981711 HTTP/1.1" 200 - +2025-12-29 04:16:22,917 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:16:22] "GET /api/strategies/positions?id=9&_t=1766952982910 HTTP/1.1" 200 - +2025-12-29 04:16:25,020 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:16:25] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952984712 HTTP/1.1" 200 - +2025-12-29 04:16:27,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:16:27] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952987713 HTTP/1.1" 200 - +2025-12-29 04:16:28,217 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:16:28] "GET /api/strategies/positions?id=9&_t=1766952987897 HTTP/1.1" 200 - +2025-12-29 04:16:28,231 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:16:28,231 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:16:28,320 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:16:28,320 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:16:30,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:16:30] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952990713 HTTP/1.1" 200 - +2025-12-29 04:16:33,211 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:16:33] "GET /api/strategies/positions?id=9&_t=1766952992897 HTTP/1.1" 200 - +2025-12-29 04:16:33,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:16:33] "GET /api/strategies/equityCurve?id=9&_t=1766952993712 HTTP/1.1" 200 - +2025-12-29 04:16:34,024 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:16:34] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952993712 HTTP/1.1" 200 - +2025-12-29 04:16:37,024 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:16:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952996712 HTTP/1.1" 200 - +2025-12-29 04:16:37,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:16:37] "GET /api/strategies/positions?id=9&_t=1766952997897 HTTP/1.1" 200 - +2025-12-29 04:16:38,231 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:16:38,231 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:16:38,322 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:16:38,322 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:16:40,022 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:16:40] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766952999712 HTTP/1.1" 200 - +2025-12-29 04:16:42,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:16:42] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953002712 HTTP/1.1" 200 - +2025-12-29 04:16:43,208 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:16:43] "GET /api/strategies/positions?id=9&_t=1766953002896 HTTP/1.1" 200 - +2025-12-29 04:16:45,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:16:45] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953005713 HTTP/1.1" 200 - +2025-12-29 04:16:48,206 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:16:48] "GET /api/strategies/positions?id=9&_t=1766953007897 HTTP/1.1" 200 - +2025-12-29 04:16:48,232 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:16:48,233 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:16:48,323 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:16:48,323 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:16:48,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:16:48] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953008712 HTTP/1.1" 200 - +2025-12-29 04:16:52,021 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:16:52] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953011711 HTTP/1.1" 200 - +2025-12-29 04:16:52,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:16:52] "GET /api/strategies/positions?id=9&_t=1766953012896 HTTP/1.1" 200 - +2025-12-29 04:16:55,022 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:16:55] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953014712 HTTP/1.1" 200 - +2025-12-29 04:16:57,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:16:57] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953017713 HTTP/1.1" 200 - +2025-12-29 04:16:58,214 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:16:58] "GET /api/strategies/positions?id=9&_t=1766953017897 HTTP/1.1" 200 - +2025-12-29 04:16:58,234 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:16:58,235 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:16:58,325 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:16:58,325 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:17:00,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:17:00] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953020712 HTTP/1.1" 200 - +2025-12-29 04:17:03,209 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:17:03] "GET /api/strategies/positions?id=9&_t=1766953022897 HTTP/1.1" 200 - +2025-12-29 04:17:03,720 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:17:03] "GET /api/strategies/equityCurve?id=9&_t=1766953023713 HTTP/1.1" 200 - +2025-12-29 04:17:04,029 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:17:04] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953023713 HTTP/1.1" 200 - +2025-12-29 04:17:07,021 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:17:07] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953026711 HTTP/1.1" 200 - +2025-12-29 04:17:07,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:17:07] "GET /api/strategies/positions?id=9&_t=1766953027896 HTTP/1.1" 200 - +2025-12-29 04:17:08,241 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:17:08,241 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:17:08,329 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:17:08,330 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:17:10,024 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:17:10] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953029711 HTTP/1.1" 200 - +2025-12-29 04:17:12,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:17:12] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953032712 HTTP/1.1" 200 - +2025-12-29 04:17:13,219 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:17:13] "GET /api/strategies/positions?id=9&_t=1766953032897 HTTP/1.1" 200 - +2025-12-29 04:17:15,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:17:15] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953035711 HTTP/1.1" 200 - +2025-12-29 04:17:18,210 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:17:18] "GET /api/strategies/positions?id=9&_t=1766953037897 HTTP/1.1" 200 - +2025-12-29 04:17:18,237 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:17:18,237 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:17:18,328 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:17:18,328 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:17:18,720 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:17:18] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953038712 HTTP/1.1" 200 - +2025-12-29 04:17:22,026 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:17:22] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953041712 HTTP/1.1" 200 - +2025-12-29 04:17:22,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:17:22] "GET /api/strategies/positions?id=9&_t=1766953042897 HTTP/1.1" 200 - +2025-12-29 04:17:25,028 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:17:25] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953044712 HTTP/1.1" 200 - +2025-12-29 04:17:27,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:17:27] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953047712 HTTP/1.1" 200 - +2025-12-29 04:17:28,216 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:17:28] "GET /api/strategies/positions?id=9&_t=1766953047898 HTTP/1.1" 200 - +2025-12-29 04:17:28,249 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:17:28,249 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:17:28,360 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:17:28,360 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:17:30,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:17:30] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953050711 HTTP/1.1" 200 - +2025-12-29 04:17:33,207 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:17:33] "GET /api/strategies/positions?id=9&_t=1766953052898 HTTP/1.1" 200 - +2025-12-29 04:17:33,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:17:33] "GET /api/strategies/equityCurve?id=9&_t=1766953053712 HTTP/1.1" 200 - +2025-12-29 04:17:34,033 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:17:34] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953053712 HTTP/1.1" 200 - +2025-12-29 04:17:37,030 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:17:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953056712 HTTP/1.1" 200 - +2025-12-29 04:17:37,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:17:37] "GET /api/strategies/positions?id=9&_t=1766953057897 HTTP/1.1" 200 - +2025-12-29 04:17:38,240 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:17:38,240 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:17:38,331 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:17:38,331 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:17:40,031 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:17:40] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953059711 HTTP/1.1" 200 - +2025-12-29 04:17:42,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:17:42] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953062711 HTTP/1.1" 200 - +2025-12-29 04:17:43,212 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:17:43] "GET /api/strategies/positions?id=9&_t=1766953062897 HTTP/1.1" 200 - +2025-12-29 04:17:45,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:17:45] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953065711 HTTP/1.1" 200 - +2025-12-29 04:17:48,211 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:17:48] "GET /api/strategies/positions?id=9&_t=1766953067897 HTTP/1.1" 200 - +2025-12-29 04:17:48,262 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:17:48,262 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:17:48,331 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:17:48,331 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:17:48,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:17:48] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953068711 HTTP/1.1" 200 - +2025-12-29 04:17:52,024 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:17:52] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953071712 HTTP/1.1" 200 - +2025-12-29 04:17:52,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:17:52] "GET /api/strategies/positions?id=9&_t=1766953072897 HTTP/1.1" 200 - +2025-12-29 04:17:55,035 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:17:55] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953074712 HTTP/1.1" 200 - +2025-12-29 04:17:57,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:17:57] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953077712 HTTP/1.1" 200 - +2025-12-29 04:17:58,214 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:17:58] "GET /api/strategies/positions?id=9&_t=1766953077897 HTTP/1.1" 200 - +2025-12-29 04:17:58,256 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:17:58,256 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:17:58,332 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:17:58,333 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:18:00,721 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:18:00] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953080711 HTTP/1.1" 200 - +2025-12-29 04:18:03,219 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:18:03] "GET /api/strategies/positions?id=9&_t=1766953082897 HTTP/1.1" 200 - +2025-12-29 04:18:03,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:18:03] "GET /api/strategies/equityCurve?id=9&_t=1766953083711 HTTP/1.1" 200 - +2025-12-29 04:18:04,026 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:18:04] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953083712 HTTP/1.1" 200 - +2025-12-29 04:18:07,021 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:18:07] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953086711 HTTP/1.1" 200 - +2025-12-29 04:18:07,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:18:07] "GET /api/strategies/positions?id=9&_t=1766953087896 HTTP/1.1" 200 - +2025-12-29 04:18:08,246 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:18:08,247 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:18:08,334 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:18:08,334 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:18:10,028 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:18:10] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953089712 HTTP/1.1" 200 - +2025-12-29 04:18:12,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:18:12] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953092712 HTTP/1.1" 200 - +2025-12-29 04:18:13,205 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:18:13] "GET /api/strategies/positions?id=9&_t=1766953092897 HTTP/1.1" 200 - +2025-12-29 04:18:15,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:18:15] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953095712 HTTP/1.1" 200 - +2025-12-29 04:18:18,210 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:18:18] "GET /api/strategies/positions?id=9&_t=1766953097897 HTTP/1.1" 200 - +2025-12-29 04:18:18,246 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:18:18,246 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:18:18,341 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:18:18,341 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:18:18,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:18:18] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953098712 HTTP/1.1" 200 - +2025-12-29 04:18:22,024 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:18:22] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953101712 HTTP/1.1" 200 - +2025-12-29 04:18:22,902 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:18:22] "GET /api/strategies/positions?id=9&_t=1766953102896 HTTP/1.1" 200 - +2025-12-29 04:18:25,028 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:18:25] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953104711 HTTP/1.1" 200 - +2025-12-29 04:18:27,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:18:27] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953107711 HTTP/1.1" 200 - +2025-12-29 04:18:28,217 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:18:28] "GET /api/strategies/positions?id=9&_t=1766953107896 HTTP/1.1" 200 - +2025-12-29 04:18:28,249 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:18:28,249 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:18:28,337 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:18:28,338 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:18:30,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:18:30] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953110712 HTTP/1.1" 200 - +2025-12-29 04:18:33,207 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:18:33] "GET /api/strategies/positions?id=9&_t=1766953112896 HTTP/1.1" 200 - +2025-12-29 04:18:33,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:18:33] "GET /api/strategies/equityCurve?id=9&_t=1766953113712 HTTP/1.1" 200 - +2025-12-29 04:18:34,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:18:34] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953113712 HTTP/1.1" 200 - +2025-12-29 04:18:37,029 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:18:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953116711 HTTP/1.1" 200 - +2025-12-29 04:18:37,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:18:37] "GET /api/strategies/positions?id=9&_t=1766953117897 HTTP/1.1" 200 - +2025-12-29 04:18:38,256 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:18:38,256 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:18:38,338 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:18:38,339 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:18:40,031 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:18:40] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953119712 HTTP/1.1" 200 - +2025-12-29 04:18:42,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:18:42] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953122711 HTTP/1.1" 200 - +2025-12-29 04:18:43,206 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:18:43] "GET /api/strategies/positions?id=9&_t=1766953122896 HTTP/1.1" 200 - +2025-12-29 04:18:45,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:18:45] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953125711 HTTP/1.1" 200 - +2025-12-29 04:18:48,211 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:18:48] "GET /api/strategies/positions?id=9&_t=1766953127897 HTTP/1.1" 200 - +2025-12-29 04:18:48,251 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:18:48,251 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:18:48,340 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:18:48,340 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:18:48,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:18:48] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953128712 HTTP/1.1" 200 - +2025-12-29 04:18:52,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:18:52] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953131712 HTTP/1.1" 200 - +2025-12-29 04:18:52,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:18:52] "GET /api/strategies/positions?id=9&_t=1766953132898 HTTP/1.1" 200 - +2025-12-29 04:18:55,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:18:55] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953134712 HTTP/1.1" 200 - +2025-12-29 04:18:57,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:18:57] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953137711 HTTP/1.1" 200 - +2025-12-29 04:18:58,207 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:18:58] "GET /api/strategies/positions?id=9&_t=1766953137896 HTTP/1.1" 200 - +2025-12-29 04:18:58,252 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:18:58,252 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:18:58,342 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:18:58,342 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:19:00,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:19:00] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953140713 HTTP/1.1" 200 - +2025-12-29 04:19:03,210 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:19:03] "GET /api/strategies/positions?id=9&_t=1766953142897 HTTP/1.1" 200 - +2025-12-29 04:19:03,720 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:19:03] "GET /api/strategies/equityCurve?id=9&_t=1766953143712 HTTP/1.1" 200 - +2025-12-29 04:19:04,035 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:19:04] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953143713 HTTP/1.1" 200 - +2025-12-29 04:19:07,025 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:19:07] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953146711 HTTP/1.1" 200 - +2025-12-29 04:19:07,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:19:07] "GET /api/strategies/positions?id=9&_t=1766953147897 HTTP/1.1" 200 - +2025-12-29 04:19:08,253 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:19:08,253 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:19:08,343 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:19:08,343 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:19:10,034 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:19:10] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953149712 HTTP/1.1" 200 - +2025-12-29 04:19:12,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:19:12] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953152711 HTTP/1.1" 200 - +2025-12-29 04:19:13,219 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:19:13] "GET /api/strategies/positions?id=9&_t=1766953152896 HTTP/1.1" 200 - +2025-12-29 04:19:15,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:19:15] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953155711 HTTP/1.1" 200 - +2025-12-29 04:19:18,206 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:19:18] "GET /api/strategies/positions?id=9&_t=1766953157897 HTTP/1.1" 200 - +2025-12-29 04:19:18,253 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:19:18,253 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:19:18,345 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:19:18,345 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:19:18,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:19:18] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953158712 HTTP/1.1" 200 - +2025-12-29 04:19:22,019 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:19:22] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953161711 HTTP/1.1" 200 - +2025-12-29 04:19:22,905 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:19:22] "GET /api/strategies/positions?id=9&_t=1766953162897 HTTP/1.1" 200 - +2025-12-29 04:19:25,021 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:19:25] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953164711 HTTP/1.1" 200 - +2025-12-29 04:19:27,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:19:27] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953167711 HTTP/1.1" 200 - +2025-12-29 04:19:28,206 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:19:28] "GET /api/strategies/positions?id=9&_t=1766953167897 HTTP/1.1" 200 - +2025-12-29 04:19:28,255 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:19:28,255 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:19:28,347 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:19:28,347 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:19:30,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:19:30] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953170712 HTTP/1.1" 200 - +2025-12-29 04:19:33,213 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:19:33] "GET /api/strategies/positions?id=9&_t=1766953172897 HTTP/1.1" 200 - +2025-12-29 04:19:33,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:19:33] "GET /api/strategies/equityCurve?id=9&_t=1766953173712 HTTP/1.1" 200 - +2025-12-29 04:19:34,024 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:19:34] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953173712 HTTP/1.1" 200 - +2025-12-29 04:19:37,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:19:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953176711 HTTP/1.1" 200 - +2025-12-29 04:19:37,902 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:19:37] "GET /api/strategies/positions?id=9&_t=1766953177896 HTTP/1.1" 200 - +2025-12-29 04:19:38,259 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:19:38,259 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:19:38,348 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:19:38,348 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:19:40,028 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:19:40] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953179712 HTTP/1.1" 200 - +2025-12-29 04:19:42,832 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:19:42] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953182712 HTTP/1.1" 200 - +2025-12-29 04:19:43,214 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:19:43] "GET /api/strategies/positions?id=9&_t=1766953182896 HTTP/1.1" 200 - +2025-12-29 04:19:45,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:19:45] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953185712 HTTP/1.1" 200 - +2025-12-29 04:19:48,205 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:19:48] "GET /api/strategies/positions?id=9&_t=1766953187897 HTTP/1.1" 200 - +2025-12-29 04:19:48,267 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:19:48,268 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:19:48,350 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:19:48,350 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:19:48,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:19:48] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953188712 HTTP/1.1" 200 - +2025-12-29 04:19:52,023 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:19:52] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953191712 HTTP/1.1" 200 - +2025-12-29 04:19:52,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:19:52] "GET /api/strategies/positions?id=9&_t=1766953192897 HTTP/1.1" 200 - +2025-12-29 04:19:55,030 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:19:55] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953194712 HTTP/1.1" 200 - +2025-12-29 04:19:57,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:19:57] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953197711 HTTP/1.1" 200 - +2025-12-29 04:19:58,207 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:19:58] "GET /api/strategies/positions?id=9&_t=1766953197897 HTTP/1.1" 200 - +2025-12-29 04:19:58,260 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:19:58,260 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:19:58,351 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:19:58,353 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:20:00,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:20:00] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953200712 HTTP/1.1" 200 - +2025-12-29 04:20:03,209 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:20:03] "GET /api/strategies/positions?id=9&_t=1766953202896 HTTP/1.1" 200 - +2025-12-29 04:20:03,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:20:03] "GET /api/strategies/equityCurve?id=9&_t=1766953203712 HTTP/1.1" 200 - +2025-12-29 04:20:04,021 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:20:04] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953203712 HTTP/1.1" 200 - +2025-12-29 04:20:07,029 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:20:07] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953206711 HTTP/1.1" 200 - +2025-12-29 04:20:07,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:20:07] "GET /api/strategies/positions?id=9&_t=1766953207897 HTTP/1.1" 200 - +2025-12-29 04:20:08,262 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:20:08,262 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:20:08,353 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:20:08,353 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:20:10,024 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:20:10] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953209712 HTTP/1.1" 200 - +2025-12-29 04:20:12,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:20:12] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953212711 HTTP/1.1" 200 - +2025-12-29 04:20:13,218 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:20:13] "GET /api/strategies/positions?id=9&_t=1766953212897 HTTP/1.1" 200 - +2025-12-29 04:20:15,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:20:15] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953215712 HTTP/1.1" 200 - +2025-12-29 04:20:18,214 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:20:18] "GET /api/strategies/positions?id=9&_t=1766953217897 HTTP/1.1" 200 - +2025-12-29 04:20:18,263 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:20:18,263 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:20:18,354 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:20:18,354 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:20:18,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:20:18] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953218711 HTTP/1.1" 200 - +2025-12-29 04:20:22,024 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:20:22] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953221711 HTTP/1.1" 200 - +2025-12-29 04:20:22,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:20:22] "GET /api/strategies/positions?id=9&_t=1766953222897 HTTP/1.1" 200 - +2025-12-29 04:20:25,018 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:20:25] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953224711 HTTP/1.1" 200 - +2025-12-29 04:20:27,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:20:27] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953227712 HTTP/1.1" 200 - +2025-12-29 04:20:28,215 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:20:28] "GET /api/strategies/positions?id=9&_t=1766953227899 HTTP/1.1" 200 - +2025-12-29 04:20:28,266 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:20:28,267 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:20:28,354 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:20:28,355 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:20:30,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:20:30] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953230712 HTTP/1.1" 200 - +2025-12-29 04:20:33,208 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:20:33] "GET /api/strategies/positions?id=9&_t=1766953232897 HTTP/1.1" 200 - +2025-12-29 04:20:33,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:20:33] "GET /api/strategies/equityCurve?id=9&_t=1766953233712 HTTP/1.1" 200 - +2025-12-29 04:20:34,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:20:34] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953233712 HTTP/1.1" 200 - +2025-12-29 04:20:37,019 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:20:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953236712 HTTP/1.1" 200 - +2025-12-29 04:20:37,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:20:37] "GET /api/strategies/positions?id=9&_t=1766953237896 HTTP/1.1" 200 - +2025-12-29 04:20:38,279 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:20:38,279 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:20:38,368 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:20:38,368 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:20:40,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:20:40] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953239712 HTTP/1.1" 200 - +2025-12-29 04:20:42,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:20:42] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953242711 HTTP/1.1" 200 - +2025-12-29 04:20:43,216 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:20:43] "GET /api/strategies/positions?id=9&_t=1766953242897 HTTP/1.1" 200 - +2025-12-29 04:20:45,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:20:45] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953245711 HTTP/1.1" 200 - +2025-12-29 04:20:48,216 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:20:48] "GET /api/strategies/positions?id=9&_t=1766953247896 HTTP/1.1" 200 - +2025-12-29 04:20:48,279 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:20:48,280 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:20:48,358 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:20:48,358 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:20:48,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:20:48] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953248712 HTTP/1.1" 200 - +2025-12-29 04:20:52,025 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:20:52] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953251711 HTTP/1.1" 200 - +2025-12-29 04:20:52,902 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:20:52] "GET /api/strategies/positions?id=9&_t=1766953252896 HTTP/1.1" 200 - +2025-12-29 04:20:55,027 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:20:55] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953254712 HTTP/1.1" 200 - +2025-12-29 04:20:57,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:20:57] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953257711 HTTP/1.1" 200 - +2025-12-29 04:20:58,217 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:20:58] "GET /api/strategies/positions?id=9&_t=1766953257896 HTTP/1.1" 200 - +2025-12-29 04:20:58,281 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:20:58,281 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:20:58,360 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:20:58,361 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:21:00,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:21:00] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953260711 HTTP/1.1" 200 - +2025-12-29 04:21:03,207 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:21:03] "GET /api/strategies/positions?id=9&_t=1766953262897 HTTP/1.1" 200 - +2025-12-29 04:21:03,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:21:03] "GET /api/strategies/equityCurve?id=9&_t=1766953263712 HTTP/1.1" 200 - +2025-12-29 04:21:04,025 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:21:04] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953263712 HTTP/1.1" 200 - +2025-12-29 04:21:07,029 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:21:07] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953266712 HTTP/1.1" 200 - +2025-12-29 04:21:07,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:21:07] "GET /api/strategies/positions?id=9&_t=1766953267897 HTTP/1.1" 200 - +2025-12-29 04:21:08,282 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:21:08,283 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:21:08,362 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:21:08,362 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:21:10,020 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:21:10] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953269711 HTTP/1.1" 200 - +2025-12-29 04:21:12,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:21:12] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953272712 HTTP/1.1" 200 - +2025-12-29 04:21:13,209 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:21:13] "GET /api/strategies/positions?id=9&_t=1766953272897 HTTP/1.1" 200 - +2025-12-29 04:21:15,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:21:15] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953275711 HTTP/1.1" 200 - +2025-12-29 04:21:18,209 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:21:18] "GET /api/strategies/positions?id=9&_t=1766953277897 HTTP/1.1" 200 - +2025-12-29 04:21:18,287 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:21:18,287 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:21:18,365 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:21:18,365 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:21:18,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:21:18] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953278712 HTTP/1.1" 200 - +2025-12-29 04:21:22,020 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:21:22] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953281711 HTTP/1.1" 200 - +2025-12-29 04:21:22,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:21:22] "GET /api/strategies/positions?id=9&_t=1766953282896 HTTP/1.1" 200 - +2025-12-29 04:21:25,030 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:21:25] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953284711 HTTP/1.1" 200 - +2025-12-29 04:21:27,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:21:27] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953287711 HTTP/1.1" 200 - +2025-12-29 04:21:28,207 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:21:28] "GET /api/strategies/positions?id=9&_t=1766953287897 HTTP/1.1" 200 - +2025-12-29 04:21:28,285 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:21:28,285 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:21:28,376 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:21:28,378 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:21:30,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:21:30] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953290711 HTTP/1.1" 200 - +2025-12-29 04:21:33,213 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:21:33] "GET /api/strategies/positions?id=9&_t=1766953292897 HTTP/1.1" 200 - +2025-12-29 04:21:33,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:21:33] "GET /api/strategies/equityCurve?id=9&_t=1766953293711 HTTP/1.1" 200 - +2025-12-29 04:21:34,033 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:21:34] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953293712 HTTP/1.1" 200 - +2025-12-29 04:21:37,036 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:21:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953296712 HTTP/1.1" 200 - +2025-12-29 04:21:37,902 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:21:37] "GET /api/strategies/positions?id=9&_t=1766953297896 HTTP/1.1" 200 - +2025-12-29 04:21:38,287 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:21:38,287 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:21:38,366 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:21:38,367 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:21:40,022 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:21:40] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953299712 HTTP/1.1" 200 - +2025-12-29 04:21:42,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:21:42] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953302712 HTTP/1.1" 200 - +2025-12-29 04:21:43,212 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:21:43] "GET /api/strategies/positions?id=9&_t=1766953302897 HTTP/1.1" 200 - +2025-12-29 04:21:45,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:21:45] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953305711 HTTP/1.1" 200 - +2025-12-29 04:21:48,213 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:21:48] "GET /api/strategies/positions?id=9&_t=1766953307896 HTTP/1.1" 200 - +2025-12-29 04:21:48,288 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:21:48,288 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:21:48,367 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:21:48,368 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:21:48,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:21:48] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953308712 HTTP/1.1" 200 - +2025-12-29 04:21:52,026 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:21:52] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953311711 HTTP/1.1" 200 - +2025-12-29 04:21:52,902 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:21:52] "GET /api/strategies/positions?id=9&_t=1766953312896 HTTP/1.1" 200 - +2025-12-29 04:21:55,023 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:21:55] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953314712 HTTP/1.1" 200 - +2025-12-29 04:21:57,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:21:57] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953317711 HTTP/1.1" 200 - +2025-12-29 04:21:58,203 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:21:58] "GET /api/strategies/positions?id=9&_t=1766953317897 HTTP/1.1" 200 - +2025-12-29 04:21:58,291 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:21:58,291 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:21:58,369 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:21:58,369 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:22:00,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:22:00] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953320712 HTTP/1.1" 200 - +2025-12-29 04:22:03,203 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:22:03] "GET /api/strategies/positions?id=9&_t=1766953322896 HTTP/1.1" 200 - +2025-12-29 04:22:03,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:22:03] "GET /api/strategies/equityCurve?id=9&_t=1766953323712 HTTP/1.1" 200 - +2025-12-29 04:22:04,030 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:22:04] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953323712 HTTP/1.1" 200 - +2025-12-29 04:22:07,024 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:22:07] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953326712 HTTP/1.1" 200 - +2025-12-29 04:22:07,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:22:07] "GET /api/strategies/positions?id=9&_t=1766953327898 HTTP/1.1" 200 - +2025-12-29 04:22:08,291 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:22:08,291 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:22:08,376 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:22:08,376 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:22:10,021 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:22:10] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953329711 HTTP/1.1" 200 - +2025-12-29 04:22:12,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:22:12] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953332712 HTTP/1.1" 200 - +2025-12-29 04:22:13,208 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:22:13] "GET /api/strategies/positions?id=9&_t=1766953332897 HTTP/1.1" 200 - +2025-12-29 04:22:15,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:22:15] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953335712 HTTP/1.1" 200 - +2025-12-29 04:22:18,208 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:22:18] "GET /api/strategies/positions?id=9&_t=1766953337897 HTTP/1.1" 200 - +2025-12-29 04:22:18,291 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:22:18,292 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:22:18,372 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:22:18,372 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:22:18,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:22:18] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953338711 HTTP/1.1" 200 - +2025-12-29 04:22:22,029 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:22:22] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953341712 HTTP/1.1" 200 - +2025-12-29 04:22:22,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:22:22] "GET /api/strategies/positions?id=9&_t=1766953342897 HTTP/1.1" 200 - +2025-12-29 04:22:25,023 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:22:25] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953344711 HTTP/1.1" 200 - +2025-12-29 04:22:27,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:22:27] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953347712 HTTP/1.1" 200 - +2025-12-29 04:22:28,206 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:22:28] "GET /api/strategies/positions?id=9&_t=1766953347897 HTTP/1.1" 200 - +2025-12-29 04:22:28,293 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:22:28,294 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:22:28,372 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:22:28,373 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:22:30,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:22:30] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953350711 HTTP/1.1" 200 - +2025-12-29 04:22:33,212 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:22:33] "GET /api/strategies/positions?id=9&_t=1766953352897 HTTP/1.1" 200 - +2025-12-29 04:22:33,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:22:33] "GET /api/strategies/equityCurve?id=9&_t=1766953353711 HTTP/1.1" 200 - +2025-12-29 04:22:34,030 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:22:34] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953353711 HTTP/1.1" 200 - +2025-12-29 04:22:37,021 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:22:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953356712 HTTP/1.1" 200 - +2025-12-29 04:22:37,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:22:37] "GET /api/strategies/positions?id=9&_t=1766953357897 HTTP/1.1" 200 - +2025-12-29 04:22:38,294 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:22:38,294 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:22:38,376 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:22:38,376 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:22:40,028 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:22:40] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953359711 HTTP/1.1" 200 - +2025-12-29 04:22:42,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:22:42] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953362712 HTTP/1.1" 200 - +2025-12-29 04:22:43,212 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:22:43] "GET /api/strategies/positions?id=9&_t=1766953362897 HTTP/1.1" 200 - +2025-12-29 04:22:45,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:22:45] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953365712 HTTP/1.1" 200 - +2025-12-29 04:22:48,219 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:22:48] "GET /api/strategies/positions?id=9&_t=1766953367897 HTTP/1.1" 200 - +2025-12-29 04:22:48,296 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:22:48,296 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:22:48,375 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:22:48,376 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:22:48,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:22:48] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953368712 HTTP/1.1" 200 - +2025-12-29 04:22:52,020 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:22:52] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953371711 HTTP/1.1" 200 - +2025-12-29 04:22:52,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:22:52] "GET /api/strategies/positions?id=9&_t=1766953372898 HTTP/1.1" 200 - +2025-12-29 04:22:55,026 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:22:55] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953374712 HTTP/1.1" 200 - +2025-12-29 04:22:57,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:22:57] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953377712 HTTP/1.1" 200 - +2025-12-29 04:22:58,212 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:22:58] "GET /api/strategies/positions?id=9&_t=1766953377897 HTTP/1.1" 200 - +2025-12-29 04:22:58,315 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:22:58,315 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:22:58,377 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:22:58,377 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:23:00,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:23:00] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953380712 HTTP/1.1" 200 - +2025-12-29 04:23:03,209 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:23:03] "GET /api/strategies/positions?id=9&_t=1766953382896 HTTP/1.1" 200 - +2025-12-29 04:23:03,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:23:03] "GET /api/strategies/equityCurve?id=9&_t=1766953383712 HTTP/1.1" 200 - +2025-12-29 04:23:04,020 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:23:04] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953383712 HTTP/1.1" 200 - +2025-12-29 04:23:07,022 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:23:07] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953386711 HTTP/1.1" 200 - +2025-12-29 04:23:07,902 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:23:07] "GET /api/strategies/positions?id=9&_t=1766953387896 HTTP/1.1" 200 - +2025-12-29 04:23:08,300 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:23:08,300 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:23:08,378 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:23:08,378 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:23:10,033 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:23:10] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953389711 HTTP/1.1" 200 - +2025-12-29 04:23:12,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:23:12] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953392711 HTTP/1.1" 200 - +2025-12-29 04:23:13,208 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:23:13] "GET /api/strategies/positions?id=9&_t=1766953392897 HTTP/1.1" 200 - +2025-12-29 04:23:15,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:23:15] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953395713 HTTP/1.1" 200 - +2025-12-29 04:23:18,221 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:23:18] "GET /api/strategies/positions?id=9&_t=1766953397897 HTTP/1.1" 200 - +2025-12-29 04:23:18,301 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:23:18,301 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:23:18,380 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:23:18,380 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:23:18,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:23:18] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953398711 HTTP/1.1" 200 - +2025-12-29 04:23:22,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:23:22] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953401712 HTTP/1.1" 200 - +2025-12-29 04:23:22,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:23:22] "GET /api/strategies/positions?id=9&_t=1766953402897 HTTP/1.1" 200 - +2025-12-29 04:23:25,021 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:23:25] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953404712 HTTP/1.1" 200 - +2025-12-29 04:23:27,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:23:27] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953407712 HTTP/1.1" 200 - +2025-12-29 04:23:28,209 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:23:28] "GET /api/strategies/positions?id=9&_t=1766953407897 HTTP/1.1" 200 - +2025-12-29 04:23:28,303 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:23:28,303 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:23:28,381 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:23:28,382 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:23:30,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:23:30] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953410711 HTTP/1.1" 200 - +2025-12-29 04:23:33,212 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:23:33] "GET /api/strategies/positions?id=9&_t=1766953412897 HTTP/1.1" 200 - +2025-12-29 04:23:33,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:23:33] "GET /api/strategies/equityCurve?id=9&_t=1766953413711 HTTP/1.1" 200 - +2025-12-29 04:23:34,023 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:23:34] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953413712 HTTP/1.1" 200 - +2025-12-29 04:23:37,018 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:23:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953416711 HTTP/1.1" 200 - +2025-12-29 04:23:37,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:23:37] "GET /api/strategies/positions?id=9&_t=1766953417897 HTTP/1.1" 200 - +2025-12-29 04:23:38,304 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:23:38,305 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:23:38,383 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:23:38,383 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:23:40,028 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:23:40] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953419712 HTTP/1.1" 200 - +2025-12-29 04:23:42,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:23:42] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953422711 HTTP/1.1" 200 - +2025-12-29 04:23:43,216 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:23:43] "GET /api/strategies/positions?id=9&_t=1766953422897 HTTP/1.1" 200 - +2025-12-29 04:23:45,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:23:45] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953425712 HTTP/1.1" 200 - +2025-12-29 04:23:48,204 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:23:48] "GET /api/strategies/positions?id=9&_t=1766953427897 HTTP/1.1" 200 - +2025-12-29 04:23:48,306 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:23:48,306 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:23:48,384 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:23:48,384 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:23:48,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:23:48] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953428711 HTTP/1.1" 200 - +2025-12-29 04:23:52,024 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:23:52] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953431712 HTTP/1.1" 200 - +2025-12-29 04:23:52,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:23:52] "GET /api/strategies/positions?id=9&_t=1766953432897 HTTP/1.1" 200 - +2025-12-29 04:23:55,030 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:23:55] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953434712 HTTP/1.1" 200 - +2025-12-29 04:23:57,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:23:57] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953437712 HTTP/1.1" 200 - +2025-12-29 04:23:58,209 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:23:58] "GET /api/strategies/positions?id=9&_t=1766953437896 HTTP/1.1" 200 - +2025-12-29 04:23:58,306 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:23:58,306 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:23:58,394 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:23:58,394 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:24:00,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:24:00] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953440711 HTTP/1.1" 200 - +2025-12-29 04:24:03,211 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:24:03] "GET /api/strategies/positions?id=9&_t=1766953442897 HTTP/1.1" 200 - +2025-12-29 04:24:03,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:24:03] "GET /api/strategies/equityCurve?id=9&_t=1766953443712 HTTP/1.1" 200 - +2025-12-29 04:24:04,022 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:24:04] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953443712 HTTP/1.1" 200 - +2025-12-29 04:24:07,020 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:24:07] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953446711 HTTP/1.1" 200 - +2025-12-29 04:24:07,907 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:24:07] "GET /api/strategies/positions?id=9&_t=1766953447897 HTTP/1.1" 200 - +2025-12-29 04:24:08,311 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:24:08,312 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:24:08,387 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:24:08,387 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:24:10,028 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:24:10] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953449712 HTTP/1.1" 200 - +2025-12-29 04:24:12,726 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:24:12] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953452712 HTTP/1.1" 200 - +2025-12-29 04:24:13,204 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:24:13] "GET /api/strategies/positions?id=9&_t=1766953452897 HTTP/1.1" 200 - +2025-12-29 04:24:15,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:24:15] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953455712 HTTP/1.1" 200 - +2025-12-29 04:24:18,207 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:24:18] "GET /api/strategies/positions?id=9&_t=1766953457896 HTTP/1.1" 200 - +2025-12-29 04:24:18,309 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:24:18,309 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:24:18,389 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:24:18,389 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:24:18,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:24:18] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953458712 HTTP/1.1" 200 - +2025-12-29 04:24:22,027 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:24:22] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953461712 HTTP/1.1" 200 - +2025-12-29 04:24:22,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:24:22] "GET /api/strategies/positions?id=9&_t=1766953462897 HTTP/1.1" 200 - +2025-12-29 04:24:25,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:24:25] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953464712 HTTP/1.1" 200 - +2025-12-29 04:24:27,723 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:24:27] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953467713 HTTP/1.1" 200 - +2025-12-29 04:24:28,204 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:24:28] "GET /api/strategies/positions?id=9&_t=1766953467897 HTTP/1.1" 200 - +2025-12-29 04:24:28,312 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:24:28,312 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:24:28,390 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:24:28,390 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:24:30,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:24:30] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953470712 HTTP/1.1" 200 - +2025-12-29 04:24:33,209 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:24:33] "GET /api/strategies/positions?id=9&_t=1766953472897 HTTP/1.1" 200 - +2025-12-29 04:24:33,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:24:33] "GET /api/strategies/equityCurve?id=9&_t=1766953473711 HTTP/1.1" 200 - +2025-12-29 04:24:34,018 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:24:34] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953473712 HTTP/1.1" 200 - +2025-12-29 04:24:37,031 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:24:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953476713 HTTP/1.1" 200 - +2025-12-29 04:24:37,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:24:37] "GET /api/strategies/positions?id=9&_t=1766953477897 HTTP/1.1" 200 - +2025-12-29 04:24:38,313 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:24:38,313 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:24:38,392 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:24:38,392 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:24:40,034 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:24:40] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953479712 HTTP/1.1" 200 - +2025-12-29 04:24:42,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:24:42] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953482711 HTTP/1.1" 200 - +2025-12-29 04:24:43,207 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:24:43] "GET /api/strategies/positions?id=9&_t=1766953482897 HTTP/1.1" 200 - +2025-12-29 04:24:45,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:24:45] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953485712 HTTP/1.1" 200 - +2025-12-29 04:24:48,211 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:24:48] "GET /api/strategies/positions?id=9&_t=1766953487897 HTTP/1.1" 200 - +2025-12-29 04:24:48,315 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:24:48,315 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:24:48,392 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:24:48,393 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:24:48,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:24:48] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953488712 HTTP/1.1" 200 - +2025-12-29 04:24:52,021 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:24:52] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953491712 HTTP/1.1" 200 - +2025-12-29 04:24:52,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:24:52] "GET /api/strategies/positions?id=9&_t=1766953492896 HTTP/1.1" 200 - +2025-12-29 04:24:55,028 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:24:55] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953494712 HTTP/1.1" 200 - +2025-12-29 04:24:57,720 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:24:57] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953497711 HTTP/1.1" 200 - +2025-12-29 04:24:58,217 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:24:58] "GET /api/strategies/positions?id=9&_t=1766953497896 HTTP/1.1" 200 - +2025-12-29 04:24:58,317 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:24:58,317 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:24:58,398 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:24:58,398 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:25:00,720 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:25:00] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953500711 HTTP/1.1" 200 - +2025-12-29 04:25:03,221 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:25:03] "GET /api/strategies/positions?id=9&_t=1766953502897 HTTP/1.1" 200 - +2025-12-29 04:25:03,726 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:25:03] "GET /api/strategies/equityCurve?id=9&_t=1766953503719 HTTP/1.1" 200 - +2025-12-29 04:25:04,034 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:25:04] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953503720 HTTP/1.1" 200 - +2025-12-29 04:25:07,028 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:25:07] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953506712 HTTP/1.1" 200 - +2025-12-29 04:25:07,904 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:25:07] "GET /api/strategies/positions?id=9&_t=1766953507897 HTTP/1.1" 200 - +2025-12-29 04:25:08,317 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:25:08,318 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:25:08,395 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:25:08,395 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:25:10,026 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:25:10] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953509711 HTTP/1.1" 200 - +2025-12-29 04:25:12,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:25:12] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766953512712 HTTP/1.1" 200 - +2025-12-29 04:25:13,207 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:25:13] "GET /api/strategies/positions?id=9&_t=1766953512897 HTTP/1.1" 200 - +2025-12-29 04:25:13,942 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:25:13] "GET /api/dashboard/summary?_t=1766953513931 HTTP/1.1" 200 - +2025-12-29 04:25:14,250 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:25:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766953513931 HTTP/1.1" 200 - +2025-12-29 04:25:18,320 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:25:18,320 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:25:18,397 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:25:18,398 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:25:28,327 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:25:28,327 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:25:28,398 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:25:28,398 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:25:38,321 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:25:38,321 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:25:38,399 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:25:38,400 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:25:48,324 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:25:48,324 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:25:48,401 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:25:48,401 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:25:58,324 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:25:58,325 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:25:58,401 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:25:58,402 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 04:26:03,161 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:26:03] "GET /api/dashboard/summary?_t=1766953562840 HTTP/1.1" 200 - +2025-12-29 04:26:03,172 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 04:26:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766953562840 HTTP/1.1" 200 - +2025-12-29 04:26:08,326 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:26:08,326 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 04:26:08,404 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 04:26:08,404 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 15:12:22,382 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-29 15:12:22,408 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-29 15:12:22,974 - app.services.strategy - INFO - Found 2 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}] +2025-12-29 15:12:22,975 - app - INFO - Restoring 2 running strategies... +2025-12-29 15:12:22,975 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-29 15:12:22,975 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-29 15:12:22,975 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-29 15:12:22,975 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-29 15:12:22,976 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-29 15:12:22,976 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-29 15:12:22,976 - app - INFO - Strategy restore completed: 2/2 restored +2025-12-29 15:12:22,976 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-29 15:12:22,977 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-29 15:12:23,006 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-29 15:12:23,007 - werkzeug - INFO - Press CTRL+C to quit +2025-12-29 15:12:23,662 - app.services.pending_order_worker - INFO - position sync: removed 1 ghost positions for strategy_id=2 +2025-12-29 15:12:24,325 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 15:12:24,327 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 15:12:24,584 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 15:12:24,584 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 15:12:24,585 - app.services.trading_executor - ERROR - Strategy 1 failed to fetch K-lines +2025-12-29 15:12:24,585 - app.services.trading_executor - INFO - Strategy 1 loop exited +2025-12-29 15:12:24,587 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 15:12:24,587 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-29 15:12:24,587 - app.services.trading_executor - ERROR - Strategy 2 failed to fetch K-lines +2025-12-29 15:12:24,587 - app.services.trading_executor - INFO - Strategy 2 loop exited +2025-12-29 15:12:25,093 - app.services.pending_order_worker - INFO - position sync: removed 1 ghost positions for strategy_id=1 +2025-12-29 15:12:25,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:12:25] "GET /api/dashboard/summary?_t=1766992345785 HTTP/1.1" 200 - +2025-12-29 15:12:26,098 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:12:26] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766992345785 HTTP/1.1" 200 - +2025-12-29 15:14:23,511 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:14:23] "GET /api/dashboard/summary?_t=1766992463500 HTTP/1.1" 200 - +2025-12-29 15:14:23,723 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:14:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766992463500 HTTP/1.1" 200 - +2025-12-29 15:14:45,763 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:14:45] "GET /api/dashboard/summary?_t=1766992485752 HTTP/1.1" 200 - +2025-12-29 15:14:45,773 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:14:45] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766992485752 HTTP/1.1" 200 - +2025-12-29 15:15:00,035 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:15:00] "GET /api/dashboard/summary?_t=1766992500023 HTTP/1.1" 200 - +2025-12-29 15:15:00,225 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:15:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766992500023 HTTP/1.1" 200 - +2025-12-29 15:21:29,566 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:21:29] "GET /api/dashboard/summary?_t=1766992889551 HTTP/1.1" 200 - +2025-12-29 15:21:29,774 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:21:29] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766992889551 HTTP/1.1" 200 - +2025-12-29 15:22:07,733 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:22:07] "GET /api/dashboard/summary?_t=1766992927724 HTTP/1.1" 200 - +2025-12-29 15:22:08,005 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:22:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766992927724 HTTP/1.1" 200 - +2025-12-29 15:30:48,680 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-29 15:30:48,683 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-29 15:30:49,105 - app.services.strategy - INFO - Found 2 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}] +2025-12-29 15:30:49,105 - app - INFO - Restoring 2 running strategies... +2025-12-29 15:30:49,105 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-29 15:30:49,105 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-29 15:30:49,105 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-29 15:30:49,106 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-29 15:30:49,106 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-29 15:30:49,106 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-29 15:30:49,106 - app - INFO - Strategy restore completed: 2/2 restored +2025-12-29 15:30:49,106 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-29 15:30:49,117 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-29 15:30:49,130 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-29 15:30:49,130 - werkzeug - INFO - Press CTRL+C to quit +2025-12-29 15:30:50,205 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 15:30:50,449 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 15:30:50,450 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-29 15:30:50,450 - app.services.trading_executor - ERROR - Strategy 2 failed to fetch K-lines +2025-12-29 15:30:50,451 - app.services.trading_executor - INFO - Strategy 2 loop exited +2025-12-29 15:30:50,521 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 15:30:50,767 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 15:30:50,767 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 15:30:50,767 - app.services.trading_executor - ERROR - Strategy 1 failed to fetch K-lines +2025-12-29 15:30:50,767 - app.services.trading_executor - INFO - Strategy 1 loop exited +2025-12-29 15:31:01,002 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:31:01] "GET /api/dashboard/summary?_t=1766993460985 HTTP/1.1" 200 - +2025-12-29 15:31:01,011 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:31:01] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766993460985 HTTP/1.1" 200 - +2025-12-29 15:31:07,810 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:31:07] "GET /api/dashboard/summary?_t=1766993467798 HTTP/1.1" 200 - +2025-12-29 15:31:08,076 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:31:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766993467798 HTTP/1.1" 200 - +2025-12-29 15:32:01,395 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:32:01] "GET /api/strategies?_t=1766993521385 HTTP/1.1" 200 - +2025-12-29 15:32:02,803 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:32:02] "GET /api/dashboard/summary?_t=1766993522787 HTTP/1.1" 200 - +2025-12-29 15:32:03,116 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:32:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766993522787 HTTP/1.1" 200 - +2025-12-29 15:33:33,215 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:33:33] "GET /api/market/types?_t=1766993613207 HTTP/1.1" 200 - +2025-12-29 15:33:33,318 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:33:33] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 15:33:33,537 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:33:33] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 15:33:33,540 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-29 15:33:34,051 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 15:33:34,296 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 15:33:34,297 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 15:33:34,297 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:33:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 15:33:34,620 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:33:34] "GET /api/strategies?_t=1766993614603 HTTP/1.1" 200 - +2025-12-29 15:33:35,813 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:33:35] "GET /api/strategies/equityCurve?id=9&_t=1766993615796 HTTP/1.1" 200 - +2025-12-29 15:33:35,819 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:33:35] "GET /api/strategies/equityCurve?id=9&_t=1766993615796 HTTP/1.1" 200 - +2025-12-29 15:33:35,827 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:33:35] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766993615796 HTTP/1.1" 200 - +2025-12-29 15:33:35,836 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:33:35] "GET /api/strategies/positions?id=9&_t=1766993615798 HTTP/1.1" 200 - +2025-12-29 15:33:36,419 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:33:36] "GET /api/strategies/equityCurve?id=2&_t=1766993616409 HTTP/1.1" 200 - +2025-12-29 15:33:36,673 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:33:36] "GET /api/strategies/equityCurve?id=2&_t=1766993616409 HTTP/1.1" 200 - +2025-12-29 15:33:36,732 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:33:36] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766993616409 HTTP/1.1" 200 - +2025-12-29 15:33:36,736 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:33:36] "GET /api/strategies/positions?id=2&_t=1766993616410 HTTP/1.1" 200 - +2025-12-29 15:33:36,931 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:33:36] "GET /api/strategies/equityCurve?id=1&_t=1766993616918 HTTP/1.1" 200 - +2025-12-29 15:33:37,245 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:33:37] "GET /api/strategies/equityCurve?id=1&_t=1766993616918 HTTP/1.1" 200 - +2025-12-29 15:33:37,248 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:33:37] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766993616918 HTTP/1.1" 200 - +2025-12-29 15:33:37,251 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:33:37] "GET /api/strategies/positions?id=1&_t=1766993616919 HTTP/1.1" 200 - +2025-12-29 15:33:38,261 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:33:38] "GET /api/dashboard/summary?_t=1766993617944 HTTP/1.1" 200 - +2025-12-29 15:33:38,268 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:33:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766993617944 HTTP/1.1" 200 - +2025-12-29 15:35:46,106 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:35:46] "GET /api/dashboard/summary?_t=1766993746092 HTTP/1.1" 200 - +2025-12-29 15:35:46,360 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:35:46] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766993746092 HTTP/1.1" 200 - +2025-12-29 15:36:21,891 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:36:21] "GET /api/dashboard/summary?_t=1766993781881 HTTP/1.1" 200 - +2025-12-29 15:36:22,156 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:36:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766993781881 HTTP/1.1" 200 - +2025-12-29 15:36:48,598 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:36:48] "GET /api/dashboard/summary?_t=1766993808584 HTTP/1.1" 200 - +2025-12-29 15:36:48,606 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:36:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766993808584 HTTP/1.1" 200 - +2025-12-29 15:37:08,906 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:37:08] "GET /api/dashboard/summary?_t=1766993828892 HTTP/1.1" 200 - +2025-12-29 15:37:08,914 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:37:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766993828892 HTTP/1.1" 200 - +2025-12-29 15:37:32,278 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:37:32] "GET /api/dashboard/summary?_t=1766993852261 HTTP/1.1" 200 - +2025-12-29 15:37:32,590 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:37:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766993852261 HTTP/1.1" 200 - +2025-12-29 15:39:05,234 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:39:05] "GET /api/dashboard/summary?_t=1766993945217 HTTP/1.1" 200 - +2025-12-29 15:39:05,240 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:39:05] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766993945217 HTTP/1.1" 200 - +2025-12-29 15:39:18,689 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:39:18] "GET /api/dashboard/summary?_t=1766993958679 HTTP/1.1" 200 - +2025-12-29 15:39:18,883 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:39:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766993958679 HTTP/1.1" 200 - +2025-12-29 15:39:21,759 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:39:21] "GET /api/dashboard/summary?_t=1766993961746 HTTP/1.1" 200 - +2025-12-29 15:39:21,764 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:39:21] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766993961746 HTTP/1.1" 200 - +2025-12-29 15:39:25,759 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:39:25] "GET /api/dashboard/summary?_t=1766993965748 HTTP/1.1" 200 - +2025-12-29 15:39:25,977 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:39:25] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766993965748 HTTP/1.1" 200 - +2025-12-29 15:39:30,019 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:39:30] "GET /api/dashboard/summary?_t=1766993970006 HTTP/1.1" 200 - +2025-12-29 15:39:30,027 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:39:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766993970006 HTTP/1.1" 200 - +2025-12-29 15:39:48,114 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:39:48] "GET /api/dashboard/summary?_t=1766993988104 HTTP/1.1" 200 - +2025-12-29 15:39:48,330 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:39:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766993988104 HTTP/1.1" 200 - +2025-12-29 15:40:06,543 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:40:06] "GET /api/dashboard/summary?_t=1766994006529 HTTP/1.1" 200 - +2025-12-29 15:40:06,549 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:40:06] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766994006529 HTTP/1.1" 200 - +2025-12-29 15:40:21,255 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:40:21] "GET /api/dashboard/summary?_t=1766994021227 HTTP/1.1" 200 - +2025-12-29 15:40:21,501 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:40:21] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766994021227 HTTP/1.1" 200 - +2025-12-29 15:40:48,324 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:40:48] "GET /api/dashboard/summary?_t=1766994048308 HTTP/1.1" 200 - +2025-12-29 15:40:48,332 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:40:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766994048308 HTTP/1.1" 200 - +2025-12-29 15:40:53,515 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:40:53] "GET /api/dashboard/summary?_t=1766994053505 HTTP/1.1" 200 - +2025-12-29 15:40:53,777 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:40:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766994053505 HTTP/1.1" 200 - +2025-12-29 15:41:16,085 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:41:16] "GET /api/dashboard/summary?_t=1766994076073 HTTP/1.1" 200 - +2025-12-29 15:41:16,352 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:41:16] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766994076073 HTTP/1.1" 200 - +2025-12-29 15:41:39,852 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:41:39] "GET /api/dashboard/summary?_t=1766994099841 HTTP/1.1" 200 - +2025-12-29 15:41:39,857 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:41:39] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766994099841 HTTP/1.1" 200 - +2025-12-29 15:44:05,269 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:44:05] "GET /api/dashboard/summary?_t=1766994245257 HTTP/1.1" 200 - +2025-12-29 15:44:05,275 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:44:05] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766994245257 HTTP/1.1" 200 - +2025-12-29 15:44:08,750 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:44:08] "GET /api/dashboard/summary?_t=1766994248739 HTTP/1.1" 200 - +2025-12-29 15:44:09,016 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:44:09] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766994248739 HTTP/1.1" 200 - +2025-12-29 15:44:12,885 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:44:12] "GET /api/dashboard/summary?_t=1766994252874 HTTP/1.1" 200 - +2025-12-29 15:44:13,137 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:44:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766994252874 HTTP/1.1" 200 - +2025-12-29 15:44:53,589 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:44:53] "GET /api/dashboard/summary?_t=1766994293575 HTTP/1.1" 200 - +2025-12-29 15:44:53,594 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:44:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766994293575 HTTP/1.1" 200 - +2025-12-29 15:44:59,291 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:44:59] "GET /api/dashboard/summary?_t=1766994299277 HTTP/1.1" 200 - +2025-12-29 15:44:59,297 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:44:59] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766994299277 HTTP/1.1" 200 - +2025-12-29 15:45:36,335 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:45:36] "GET /api/dashboard/summary?_t=1766994336324 HTTP/1.1" 200 - +2025-12-29 15:45:36,340 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:45:36] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766994336324 HTTP/1.1" 200 - +2025-12-29 15:46:17,161 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:46:17] "GET /api/dashboard/summary?_t=1766994377147 HTTP/1.1" 200 - +2025-12-29 15:46:17,167 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:46:17] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766994377147 HTTP/1.1" 200 - +2025-12-29 15:48:00,773 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:48:00] "GET /api/dashboard/summary?_t=1766994480760 HTTP/1.1" 200 - +2025-12-29 15:48:00,778 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:48:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766994480760 HTTP/1.1" 200 - +2025-12-29 15:48:16,307 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:48:16] "GET /api/dashboard/summary?_t=1766994496297 HTTP/1.1" 200 - +2025-12-29 15:48:16,529 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:48:16] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766994496297 HTTP/1.1" 200 - +2025-12-29 15:48:33,816 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:48:33] "GET /api/dashboard/summary?_t=1766994513806 HTTP/1.1" 200 - +2025-12-29 15:48:33,825 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:48:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766994513806 HTTP/1.1" 200 - +2025-12-29 15:50:31,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:50:31] "GET /api/dashboard/summary?_t=1766994631046 HTTP/1.1" 200 - +2025-12-29 15:50:31,065 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:50:31] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766994631046 HTTP/1.1" 200 - +2025-12-29 15:51:40,481 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:51:40] "GET /api/dashboard/summary?_t=1766994700470 HTTP/1.1" 200 - +2025-12-29 15:51:40,747 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:51:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766994700470 HTTP/1.1" 200 - +2025-12-29 15:51:40,883 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:51:40] "GET /api/dashboard/summary?_t=1766994700871 HTTP/1.1" 200 - +2025-12-29 15:51:40,888 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:51:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766994700871 HTTP/1.1" 200 - +2025-12-29 15:51:41,231 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:51:41] "GET /api/dashboard/summary?_t=1766994701219 HTTP/1.1" 200 - +2025-12-29 15:51:41,492 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:51:41] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766994701219 HTTP/1.1" 200 - +2025-12-29 15:51:42,587 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:51:42] "GET /api/dashboard/summary?_t=1766994702570 HTTP/1.1" 200 - +2025-12-29 15:51:42,593 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:51:42] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766994702570 HTTP/1.1" 200 - +2025-12-29 15:54:08,630 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:54:08] "GET /api/dashboard/summary?_t=1766994848619 HTTP/1.1" 200 - +2025-12-29 15:54:08,856 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:54:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766994848619 HTTP/1.1" 200 - +2025-12-29 15:54:27,534 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:54:27] "GET /api/dashboard/summary?_t=1766994867521 HTTP/1.1" 200 - +2025-12-29 15:54:27,541 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:54:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766994867521 HTTP/1.1" 200 - +2025-12-29 15:54:45,672 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:54:45] "GET /api/dashboard/summary?_t=1766994885663 HTTP/1.1" 200 - +2025-12-29 15:54:45,895 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:54:45] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766994885663 HTTP/1.1" 200 - +2025-12-29 15:55:04,461 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:55:04] "GET /api/dashboard/summary?_t=1766994904450 HTTP/1.1" 200 - +2025-12-29 15:55:04,468 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:55:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766994904450 HTTP/1.1" 200 - +2025-12-29 15:55:22,551 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:55:22] "GET /api/dashboard/summary?_t=1766994922541 HTTP/1.1" 200 - +2025-12-29 15:55:22,777 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:55:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766994922541 HTTP/1.1" 200 - +2025-12-29 15:56:06,101 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:56:06] "GET /api/dashboard/summary?_t=1766994966092 HTTP/1.1" 200 - +2025-12-29 15:56:06,106 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:56:06] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766994966092 HTTP/1.1" 200 - +2025-12-29 15:56:20,495 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:56:20] "GET /api/dashboard/summary?_t=1766994980486 HTTP/1.1" 200 - +2025-12-29 15:56:20,705 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:56:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766994980486 HTTP/1.1" 200 - +2025-12-29 15:56:28,272 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:56:28] "GET /api/dashboard/summary?_t=1766994988263 HTTP/1.1" 200 - +2025-12-29 15:56:28,277 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:56:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766994988263 HTTP/1.1" 200 - +2025-12-29 15:56:35,656 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:56:35] "GET /api/dashboard/summary?_t=1766994995647 HTTP/1.1" 200 - +2025-12-29 15:56:35,885 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 15:56:35] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766994995647 HTTP/1.1" 200 - +2025-12-29 16:17:06,758 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-29 16:17:06,762 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-29 16:17:07,166 - app.services.strategy - INFO - Found 2 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}] +2025-12-29 16:17:07,166 - app - INFO - Restoring 2 running strategies... +2025-12-29 16:17:07,167 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-29 16:17:07,167 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-29 16:17:07,167 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-29 16:17:07,167 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-29 16:17:07,167 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-29 16:17:07,168 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-29 16:17:07,168 - app - INFO - Strategy restore completed: 2/2 restored +2025-12-29 16:17:07,168 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-29 16:17:07,171 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-29 16:17:07,196 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-29 16:17:07,196 - werkzeug - INFO - Press CTRL+C to quit +2025-12-29 16:17:08,085 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:17:08,312 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:17:08,329 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:17:08,330 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-29 16:17:08,330 - app.services.trading_executor - ERROR - Strategy 2 failed to fetch K-lines +2025-12-29 16:17:08,330 - app.services.trading_executor - INFO - Strategy 2 loop exited +2025-12-29 16:17:08,555 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:17:08,556 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 16:17:08,557 - app.services.trading_executor - ERROR - Strategy 1 failed to fetch K-lines +2025-12-29 16:17:08,557 - app.services.trading_executor - INFO - Strategy 1 loop exited +2025-12-29 16:17:10,997 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:17:10] "GET /api/dashboard/summary?_t=1766996230676 HTTP/1.1" 200 - +2025-12-29 16:17:11,002 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:17:11] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766996230676 HTTP/1.1" 200 - +2025-12-29 16:18:01,304 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:18:01] "GET /api/dashboard/summary?_t=1766996281295 HTTP/1.1" 200 - +2025-12-29 16:18:01,581 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:18:01] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766996281295 HTTP/1.1" 200 - +2025-12-29 16:18:02,558 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:18:02] "GET /api/dashboard/summary?_t=1766996282546 HTTP/1.1" 200 - +2025-12-29 16:18:02,567 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:18:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766996282546 HTTP/1.1" 200 - +2025-12-29 16:18:15,191 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:18:15] "GET /api/dashboard/summary?_t=1766996295179 HTTP/1.1" 200 - +2025-12-29 16:18:15,396 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:18:15] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766996295179 HTTP/1.1" 200 - +2025-12-29 16:18:46,281 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:18:46] "GET /api/dashboard/summary?_t=1766996326264 HTTP/1.1" 200 - +2025-12-29 16:18:46,286 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:18:46] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766996326264 HTTP/1.1" 200 - +2025-12-29 16:18:49,997 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:18:49] "GET /api/dashboard/summary?_t=1766996329981 HTTP/1.1" 200 - +2025-12-29 16:18:50,004 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:18:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766996329981 HTTP/1.1" 200 - +2025-12-29 16:19:52,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:19:52] "GET /api/dashboard/summary?_t=1766996392045 HTTP/1.1" 200 - +2025-12-29 16:19:52,277 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:19:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766996392045 HTTP/1.1" 200 - +2025-12-29 16:20:06,807 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:20:06] "GET /api/dashboard/summary?_t=1766996406792 HTTP/1.1" 200 - +2025-12-29 16:20:06,817 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:20:06] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766996406792 HTTP/1.1" 200 - +2025-12-29 16:20:21,142 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:20:21] "GET /api/dashboard/summary?_t=1766996421133 HTTP/1.1" 200 - +2025-12-29 16:20:21,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:20:21] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766996421133 HTTP/1.1" 200 - +2025-12-29 16:20:36,834 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:20:36] "GET /api/dashboard/summary?_t=1766996436824 HTTP/1.1" 200 - +2025-12-29 16:20:36,840 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:20:36] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766996436824 HTTP/1.1" 200 - +2025-12-29 16:20:51,364 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:20:51] "GET /api/dashboard/summary?_t=1766996451352 HTTP/1.1" 200 - +2025-12-29 16:20:51,584 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:20:51] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766996451352 HTTP/1.1" 200 - +2025-12-29 16:24:45,318 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:24:45] "GET /api/dashboard/summary?_t=1766996685302 HTTP/1.1" 200 - +2025-12-29 16:24:45,325 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:24:45] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766996685302 HTTP/1.1" 200 - +2025-12-29 16:25:31,606 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:25:31] "GET /api/dashboard/summary?_t=1766996731592 HTTP/1.1" 200 - +2025-12-29 16:25:31,611 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:25:31] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766996731592 HTTP/1.1" 200 - +2025-12-29 16:26:25,843 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:26:25] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 16:26:26,025 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:26:26] "GET /api/market/config?_t=1766996785815 HTTP/1.1" 200 - +2025-12-29 16:26:26,294 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-29 16:26:26,294 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-29 16:26:26,294 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-29 16:26:26,294 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-29 16:26:26,294 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-29 16:26:27,348 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:26:27,609 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:26:27,610 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 16:26:27,772 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:26:27,817 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:26:28,028 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:26:28,028 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BNB/USDT +2025-12-29 16:26:28,131 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (271588s) +2025-12-29 16:26:28,224 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:26:28,225 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-29 16:26:30,120 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:26:30] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 16:26:30,124 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:26:30] "GET /api/market/types?_t=1766996786035 HTTP/1.1" 200 - +2025-12-29 16:26:39,851 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:26:39] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 16:26:40,164 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:26:40] "GET /api/market/types?_t=1766996799842 HTTP/1.1" 200 - +2025-12-29 16:26:40,168 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:26:40] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 16:26:40,172 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-29 16:26:40,431 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:26:40,682 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:26:40,683 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 16:26:40,683 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:26:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 16:26:42,668 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:26:42] "GET /api/strategies?_t=1766996802655 HTTP/1.1" 200 - +2025-12-29 16:26:43,466 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:26:43] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 16:26:43,475 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:26:43] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 16:26:43,481 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:26:43] "GET /api/market/types?_t=1766996803455 HTTP/1.1" 200 - +2025-12-29 16:26:43,496 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-29 16:26:43,750 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:26:44,274 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:26:44,274 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 16:26:44,274 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:26:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 16:26:52,613 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:26:52] "GET /api/strategies?_t=1766996812293 HTTP/1.1" 200 - +2025-12-29 16:26:58,061 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:26:58] "GET /api/market/types?_t=1766996818050 HTTP/1.1" 200 - +2025-12-29 16:26:58,374 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:26:58] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 16:26:58,382 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:26:58] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 16:26:58,706 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-29 16:26:58,968 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:26:59,229 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:26:59,230 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 16:26:59,230 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:26:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 16:27:00,817 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:00] "GET /api/dashboard/summary?_t=1766996820806 HTTP/1.1" 200 - +2025-12-29 16:27:01,128 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:01] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766996820806 HTTP/1.1" 200 - +2025-12-29 16:27:02,980 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:02] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 16:27:02,983 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:02] "GET /api/market/config?_t=1766996822657 HTTP/1.1" 200 - +2025-12-29 16:27:03,498 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:27:03,702 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:27:03,703 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:27:03,903 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:27:03,903 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 16:27:04,102 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:27:04,103 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:27:04,103 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BNB/USDT +2025-12-29 16:27:04,103 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-29 16:27:04,104 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:04] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 16:27:04,107 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:04] "GET /api/market/types?_t=1766996823003 HTTP/1.1" 200 - +2025-12-29 16:27:04,748 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:04] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 16:27:05,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:05] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 16:27:05,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:05] "GET /api/market/types?_t=1766996824734 HTTP/1.1" 200 - +2025-12-29 16:27:05,081 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-29 16:27:05,343 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:27:05,604 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:27:05,604 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 16:27:05,605 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 16:27:06,922 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:06] "GET /api/strategies?_t=1766996826551 HTTP/1.1" 200 - +2025-12-29 16:27:07,658 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:07] "GET /api/strategies/equityCurve?id=2&_t=1766996827643 HTTP/1.1" 200 - +2025-12-29 16:27:08,066 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:08] "GET /api/strategies/equityCurve?id=2&_t=1766996827643 HTTP/1.1" 200 - +2025-12-29 16:27:08,069 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:08] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766996827643 HTTP/1.1" 200 - +2025-12-29 16:27:08,073 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:08] "GET /api/strategies/positions?id=2&_t=1766996827646 HTTP/1.1" 200 - +2025-12-29 16:27:08,757 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:08] "GET /api/strategies/equityCurve?id=9&_t=1766996828745 HTTP/1.1" 200 - +2025-12-29 16:27:08,803 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:08] "GET /api/strategies/equityCurve?id=9&_t=1766996828745 HTTP/1.1" 200 - +2025-12-29 16:27:09,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:09] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766996828745 HTTP/1.1" 200 - +2025-12-29 16:27:09,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:09] "GET /api/strategies/positions?id=9&_t=1766996828746 HTTP/1.1" 200 - +2025-12-29 16:27:09,951 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:09] "GET /api/strategies/equityCurve?id=1&_t=1766996829937 HTTP/1.1" 200 - +2025-12-29 16:27:10,256 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:10] "GET /api/strategies/equityCurve?id=1&_t=1766996829937 HTTP/1.1" 200 - +2025-12-29 16:27:10,259 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:10] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766996829937 HTTP/1.1" 200 - +2025-12-29 16:27:10,262 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:10] "GET /api/strategies/positions?id=1&_t=1766996829939 HTTP/1.1" 200 - +2025-12-29 16:27:12,270 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:12] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 16:27:12,279 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:12] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 16:27:12,282 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:12] "GET /api/market/types?_t=1766996831950 HTTP/1.1" 200 - +2025-12-29 16:27:12,526 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-29 16:27:12,773 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:27:13,022 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:27:13,022 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 16:27:13,023 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 16:27:17,893 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:17] "GET /api/strategies?_t=1766996837880 HTTP/1.1" 200 - +2025-12-29 16:27:20,660 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:20] "GET /api/dashboard/summary?_t=1766996840118 HTTP/1.1" 200 - +2025-12-29 16:27:20,665 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766996840118 HTTP/1.1" 200 - +2025-12-29 16:27:34,255 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:34] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 16:27:34,556 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:34] "GET /api/market/config?_t=1766996854238 HTTP/1.1" 200 - +2025-12-29 16:27:34,845 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:27:35,046 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:27:35,047 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:27:35,249 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:27:35,249 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 16:27:35,448 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:27:35,449 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:27:35,449 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-29 16:27:35,449 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BNB/USDT +2025-12-29 16:27:35,450 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:35] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 16:27:35,453 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:35] "GET /api/market/types?_t=1766996854564 HTTP/1.1" 200 - +2025-12-29 16:27:39,978 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:39] "GET /api/dashboard/summary?_t=1766996859659 HTTP/1.1" 200 - +2025-12-29 16:27:39,986 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:39] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766996859659 HTTP/1.1" 200 - +2025-12-29 16:27:52,213 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:52] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 16:27:52,520 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:52] "GET /api/market/config?_t=1766996872193 HTTP/1.1" 200 - +2025-12-29 16:27:52,796 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:27:52,996 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:27:52,996 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:27:53,196 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:27:53,196 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 16:27:53,391 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:27:53,392 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:27:53,392 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BNB/USDT +2025-12-29 16:27:53,393 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-29 16:27:53,393 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:53] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 16:27:53,398 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:53] "GET /api/market/types?_t=1766996872530 HTTP/1.1" 200 - +2025-12-29 16:27:54,039 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:54] "GET /api/dashboard/summary?_t=1766996873711 HTTP/1.1" 200 - +2025-12-29 16:27:54,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:54] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766996873711 HTTP/1.1" 200 - +2025-12-29 16:27:55,360 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:55] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 16:27:55,672 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:55] "GET /api/market/config?_t=1766996875339 HTTP/1.1" 200 - +2025-12-29 16:27:55,950 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:27:56,154 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:27:56,155 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:27:56,354 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:27:56,355 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 16:27:56,551 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:27:56,551 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:27:56,552 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-29 16:27:56,552 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BNB/USDT +2025-12-29 16:27:56,552 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:56] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 16:27:56,556 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:56] "GET /api/market/types?_t=1766996875681 HTTP/1.1" 200 - +2025-12-29 16:27:58,200 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:58] "GET /api/market/types?_t=1766996877877 HTTP/1.1" 200 - +2025-12-29 16:27:58,206 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:58] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 16:27:58,214 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:58] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 16:27:58,462 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-29 16:27:58,707 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:27:58,954 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:27:58,955 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 16:27:58,956 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 16:27:59,534 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:59] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 16:27:59,839 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:27:59] "GET /api/market/config?_t=1766996879525 HTTP/1.1" 200 - +2025-12-29 16:28:00,095 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:28:00,303 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:28:00,504 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:28:00,505 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 16:28:00,705 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:28:00,705 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BNB/USDT +2025-12-29 16:28:00,723 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:28:00,971 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:28:00,971 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-29 16:28:00,972 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:28:00] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 16:28:00,975 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:28:00] "GET /api/market/types?_t=1766996879850 HTTP/1.1" 200 - +2025-12-29 16:28:03,972 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:28:03] "GET /api/dashboard/summary?_t=1766996883643 HTTP/1.1" 200 - +2025-12-29 16:28:03,980 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:28:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766996883643 HTTP/1.1" 200 - +2025-12-29 16:28:12,804 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:28:12] "GET /api/market/config?_t=1766996892789 HTTP/1.1" 200 - +2025-12-29 16:28:13,119 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:28:13] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 16:28:13,161 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:28:13] "GET /api/market/types?_t=1766996892850 HTTP/1.1" 200 - +2025-12-29 16:28:13,694 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:28:13,891 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:28:13,892 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:28:14,095 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:28:14,096 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 16:28:14,294 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:28:14,295 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:28:14,295 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-29 16:28:14,295 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BNB/USDT +2025-12-29 16:28:14,296 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:28:14] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 16:28:41,433 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:28:41] "GET /api/dashboard/summary?_t=1766996921114 HTTP/1.1" 200 - +2025-12-29 16:28:41,438 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:28:41] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766996921114 HTTP/1.1" 200 - +2025-12-29 16:28:43,072 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:28:43] "GET /api/market/config?_t=1766996923065 HTTP/1.1" 200 - +2025-12-29 16:28:43,391 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:28:43] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 16:28:43,396 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:28:43] "GET /api/market/types?_t=1766996923080 HTTP/1.1" 200 - +2025-12-29 16:28:43,960 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:28:44,161 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:28:44,162 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:28:44,361 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:28:44,362 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 16:28:44,563 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:28:44,563 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-29 16:28:44,844 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:28:44,844 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BNB/USDT +2025-12-29 16:28:44,845 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:28:44] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 16:29:13,785 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:29:13,983 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:29:13,984 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:29:14,186 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:29:14,186 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BNB/USDT +2025-12-29 16:29:14,387 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:29:14,388 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:29:14,389 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-29 16:29:14,390 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 16:29:14,391 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:29:14] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 16:29:14,395 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:29:14] "GET /api/market/config?_t=1766996953913 HTTP/1.1" 200 - +2025-12-29 16:29:14,403 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:29:14] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 16:29:14,422 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:29:14] "GET /api/market/types?_t=1766996954409 HTTP/1.1" 200 - +2025-12-29 16:29:15,191 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:29:15,554 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:29:15,791 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:29:15,792 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:29:15,792 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-29 16:29:16,054 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:29:16,055 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 16:29:16,215 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:29:16,216 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BNB/USDT +2025-12-29 16:29:16,216 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:29:16] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 16:29:28,676 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:29:28] "GET /api/market/config?_t=1766996968660 HTTP/1.1" 200 - +2025-12-29 16:29:28,888 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:29:28] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 16:29:28,984 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:29:28] "GET /api/market/types?_t=1766996968689 HTTP/1.1" 200 - +2025-12-29 16:29:29,470 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:29:29,732 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:29:29,733 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BNB/USDT +2025-12-29 16:29:29,735 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:29:29,799 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:29:30,309 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:29:30,310 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-29 16:29:30,545 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:29:30,546 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 16:29:30,547 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:29:30] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 16:29:58,909 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:29:59,110 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:29:59,111 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:29:59,308 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:29:59,309 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BNB/USDT +2025-12-29 16:29:59,511 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:29:59,512 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 16:29:59,775 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:29:59,776 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-29 16:29:59,778 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:29:59] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 16:30:11,105 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:30:11] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 16:30:11,248 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:30:11] "GET /api/market/config?_t=1766997011087 HTTP/1.1" 200 - +2025-12-29 16:30:11,780 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:30:11,781 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:30:12,016 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:30:12,045 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:30:12,046 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BNB/USDT +2025-12-29 16:30:12,245 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:30:12,246 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-29 16:30:12,448 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:30:12,449 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 16:30:12,450 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:30:12] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 16:30:12,457 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:30:12] "GET /api/market/types?_t=1766997011262 HTTP/1.1" 200 - +2025-12-29 16:30:41,321 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:30:41,519 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:30:41,520 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:30:41,723 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:30:41,723 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 16:30:41,921 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:30:41,922 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:30:41,922 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-29 16:30:41,922 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BNB/USDT +2025-12-29 16:30:41,923 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:30:41] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 16:30:44,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:30:44] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 16:30:44,256 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:30:44] "GET /api/market/config?_t=1766997044026 HTTP/1.1" 200 - +2025-12-29 16:30:44,597 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:30:44,796 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:30:44,798 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:30:44,999 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:30:45,000 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BNB/USDT +2025-12-29 16:30:45,196 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:30:45,197 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:30:45,197 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 16:30:45,198 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-29 16:30:45,199 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:30:45] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 16:30:45,206 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:30:45] "GET /api/market/types?_t=1766997044281 HTTP/1.1" 200 - +2025-12-29 16:31:01,682 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:31:01] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 16:31:01,920 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:31:01] "GET /api/market/config?_t=1766997061659 HTTP/1.1" 200 - +2025-12-29 16:31:02,239 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:31:02,436 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:31:02,437 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:31:02,638 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:31:02,639 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 16:31:02,838 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:31:02,839 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:31:02,839 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-29 16:31:02,839 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BNB/USDT +2025-12-29 16:31:02,840 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:31:02] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 16:31:02,845 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:31:02] "GET /api/market/types?_t=1766997061934 HTTP/1.1" 200 - +2025-12-29 16:31:25,191 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:31:25] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 16:31:25,438 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:31:25] "GET /api/market/config?_t=1766997085183 HTTP/1.1" 200 - +2025-12-29 16:31:25,946 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:31:25,947 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:31:26,089 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:31:26,193 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:31:26,194 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-29 16:31:26,394 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:31:26,395 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:31:26,395 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BNB/USDT +2025-12-29 16:31:26,395 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 16:31:26,397 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:31:26] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 16:31:26,401 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:31:26] "GET /api/market/types?_t=1766997085451 HTTP/1.1" 200 - +2025-12-29 16:31:42,276 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:31:42] "GET /api/market/config?_t=1766997102268 HTTP/1.1" 200 - +2025-12-29 16:31:42,535 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:31:42] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 16:31:42,584 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:31:42] "GET /api/market/types?_t=1766997102284 HTTP/1.1" 200 - +2025-12-29 16:31:42,842 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:31:43,041 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:31:43,042 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:31:43,244 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:31:43,245 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 16:31:43,446 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:31:43,447 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:31:43,447 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-29 16:31:43,447 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BNB/USDT +2025-12-29 16:31:43,447 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:31:43] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 16:32:03,957 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:32:03] "GET /api/market/config?_t=1766997123950 HTTP/1.1" 200 - +2025-12-29 16:32:04,213 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:32:04] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 16:32:04,274 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:32:04] "GET /api/market/types?_t=1766997123963 HTTP/1.1" 200 - +2025-12-29 16:32:04,307 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (271924s) +2025-12-29 16:32:04,534 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:32:04,729 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:32:04,731 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:32:04,932 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:32:04,933 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 16:32:05,130 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:32:05,131 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:32:05,131 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-29 16:32:05,131 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BNB/USDT +2025-12-29 16:32:15,207 - urllib3.connectionpool - WARNING - Retrying (Retry(total=2, connect=3, read=3, redirect=None, status=None)) after connection broken by 'SSLError(SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1020)'))': /api/qt/stock/kline/get?secid=0.000858&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2025-12-29 16:32:32,950 - urllib3.connectionpool - WARNING - Retrying (Retry(total=1, connect=3, read=2, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Read timed out. (read timeout=15)")': /api/qt/stock/kline/get?secid=0.000858&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2025-12-29 16:32:34,289 - app.routes.market - ERROR - Batch watchlist price fetch failed: 1 (of 10) futures unfinished +2025-12-29 16:32:34,292 - app.routes.market - ERROR - Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\routes\market.py", line 379, in get_watchlist_prices + for future in as_completed(futures, timeout=30): + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\concurrent\futures\_base.py", line 239, in as_completed + raise TimeoutError( + '%d (of %d) futures unfinished' % ( + len(pending), total_futures)) +TimeoutError: 1 (of 10) futures unfinished + +2025-12-29 16:32:34,292 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:32:34] "POST /api/market/watchlist/prices HTTP/1.1" 500 - +2025-12-29 16:32:34,296 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:32:34] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 16:32:34,300 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:32:34] "GET /api/market/config?_t=1766997150076 HTTP/1.1" 200 - +2025-12-29 16:32:35,081 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:32:35,083 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:32:35,291 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:32:35,321 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:32:35,322 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-29 16:32:35,527 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:32:35,528 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BNB/USDT +2025-12-29 16:32:35,734 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:32:35,734 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 16:32:36,106 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:32:36] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 16:32:36,109 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:32:36] "GET /api/market/types?_t=1766997154316 HTTP/1.1" 200 - +2025-12-29 16:32:40,124 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:32:40] "GET /api/market/config?_t=1766997160117 HTTP/1.1" 200 - +2025-12-29 16:32:40,128 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:32:40] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 16:32:40,272 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:32:40] "GET /api/market/types?_t=1766997160146 HTTP/1.1" 200 - +2025-12-29 16:32:40,725 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:32:40,924 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:32:40,925 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:32:41,124 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:32:41,125 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 16:32:41,326 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:32:41,327 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:32:41,327 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BNB/USDT +2025-12-29 16:32:41,327 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-29 16:32:41,328 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:32:41] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 16:33:10,354 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:33:10,552 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:33:10,753 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:33:10,754 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 16:33:10,952 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:33:10,953 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BNB/USDT +2025-12-29 16:33:10,974 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:33:11,227 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:33:11,228 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-29 16:33:11,229 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:33:11] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 16:33:40,659 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:33:40,863 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:33:41,063 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:33:41,063 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BNB/USDT +2025-12-29 16:33:41,112 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:33:41,260 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:33:41,261 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-29 16:33:41,710 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:33:41,711 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 16:33:41,711 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:33:41] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 16:34:10,353 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:34:10,551 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:34:10,551 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:34:10,753 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:34:10,753 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 16:34:10,953 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:34:10,953 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:34:10,953 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-29 16:34:10,953 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BNB/USDT +2025-12-29 16:34:10,954 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:34:10] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 16:34:14,891 - app.routes.analysis - INFO - Analyze request: AShare:600519, use_multi_agent=True, model=openai/gpt-4o-mini +2025-12-29 16:34:15,008 - app.services.analysis - INFO - Multi-agent coordinator initialized +2025-12-29 16:34:15,009 - app.services.analysis - INFO - Starting analysis AShare:600519, language=en-US, mode=multi-agent +2025-12-29 16:34:15,010 - app.services.analysis - INFO - Run coordinator: AShare:600519 +2025-12-29 16:34:15,010 - app.services.agents.coordinator - INFO - Multi-agent analysis start: AShare:600519, model=openai/gpt-4o-mini, language=en-US +2025-12-29 16:35:08,061 - app.services.agents.tools - WARNING - akshare AShare spot failed (600519): SOCKSHTTPSConnectionPool(host='82.push2.eastmoney.com', port=443): Read timed out. (read timeout=15) +2025-12-29 16:36:32,125 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-29 16:36:32,129 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-29 16:36:32,540 - app.services.strategy - INFO - Found 2 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}] +2025-12-29 16:36:32,540 - app - INFO - Restoring 2 running strategies... +2025-12-29 16:36:32,540 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-29 16:36:32,540 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-29 16:36:32,540 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-29 16:36:32,541 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-29 16:36:32,541 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-29 16:36:32,541 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-29 16:36:32,541 - app - INFO - Strategy restore completed: 2/2 restored +2025-12-29 16:36:32,542 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-29 16:36:32,542 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-29 16:36:32,574 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-29 16:36:32,574 - werkzeug - INFO - Press CTRL+C to quit +2025-12-29 16:36:33,468 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:36:33,713 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:36:33,713 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-29 16:36:33,713 - app.services.trading_executor - ERROR - Strategy 2 failed to fetch K-lines +2025-12-29 16:36:33,713 - app.services.trading_executor - INFO - Strategy 2 loop exited +2025-12-29 16:36:34,447 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:36:34,692 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:36:34,692 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 16:36:34,693 - app.services.trading_executor - ERROR - Strategy 1 failed to fetch K-lines +2025-12-29 16:36:34,693 - app.services.trading_executor - INFO - Strategy 1 loop exited +2025-12-29 16:36:36,561 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:36:36] "GET /api/dashboard/summary?_t=1766997396548 HTTP/1.1" 200 - +2025-12-29 16:36:36,869 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:36:36] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766997396548 HTTP/1.1" 200 - +2025-12-29 16:36:40,779 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:36:40] "GET /api/market/config?_t=1766997400441 HTTP/1.1" 200 - +2025-12-29 16:36:40,784 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:36:40] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 16:36:41,022 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:36:41] "GET /api/market/types?_t=1766997400787 HTTP/1.1" 200 - +2025-12-29 16:36:41,272 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-29 16:36:41,272 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-29 16:36:41,272 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-29 16:36:41,272 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-29 16:36:41,273 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-29 16:36:41,347 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:36:41,751 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:36:41,756 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 16:36:42,649 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:36:42,707 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:36:42,896 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:36:42,896 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BNB/USDT +2025-12-29 16:36:43,094 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:36:43,095 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-29 16:36:43,431 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (272203s) +2025-12-29 16:36:44,456 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:36:44] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 16:36:46,884 - app.routes.analysis - INFO - Analyze request: AShare:600519, use_multi_agent=True, model=openai/gpt-4o-mini +2025-12-29 16:36:46,908 - app.services.analysis - INFO - Multi-agent coordinator initialized +2025-12-29 16:36:46,909 - app.services.analysis - INFO - Starting analysis AShare:600519, language=en-US, mode=multi-agent +2025-12-29 16:36:46,909 - app.services.analysis - INFO - Run coordinator: AShare:600519 +2025-12-29 16:36:46,909 - app.services.agents.coordinator - INFO - Multi-agent analysis start: AShare:600519, model=openai/gpt-4o-mini, language=en-US +2025-12-29 16:37:02,382 - app.services.agents.tools - WARNING - akshare AShare spot failed (600519): SOCKSHTTPSConnectionPool(host='82.push2.eastmoney.com', port=443): Read timed out. (read timeout=15) +2025-12-29 16:37:29,391 - app.services.agents.tools - INFO - Running news search: "่ดตๅทž่Œ…ๅฐ" 600519 (ๅˆฉๅฅฝ OR ๅˆฉ็ฉบ OR ่ดขๆŠฅ OR ๅ…ฌๅ‘Š OR ไธš็ปฉ) after:2024 +2025-12-29 16:37:30,788 - app.services.agents.tools - INFO - Deep reading: ่ดตๅทž่Œ…ๅฐ1408.20(0.52%)_ๅ…ฌๅธๅ…ฌๅ‘Š_ๆ–ฐๆตช่ดข็ป_ๆ–ฐๆตช็ฝ‘ +2025-12-29 16:37:33,025 - app.services.agents.tools - INFO - Deep reading: ่ดตๅทž่Œ…ๅฐ(600519)ๅˆ†็บข้…่‚ก_ๆ–ฐๆตช่ดข็ป_ๆ–ฐๆตช็ฝ‘ +2025-12-29 16:37:36,506 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2025-12-29 16:38:04,475 - app.services.agents.tools - WARNING - akshare AShare spot failed (600519): SOCKSHTTPSConnectionPool(host='82.push2.eastmoney.com', port=443): Read timed out. (read timeout=15) +2025-12-29 16:38:13,085 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2025-12-29 16:38:29,074 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2025-12-29 16:38:41,582 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2025-12-29 16:38:48,425 - app.services.agents.coordinator - WARNING - Record reflection failed: 'NoneType' object has no attribute 'get' +2025-12-29 16:38:48,425 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: AShare:600519 +2025-12-29 16:38:48,426 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2025-12-29 16:38:48,428 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2025-12-29 16:38:48,439 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:38:48] "POST /api/analysis/multiAnalysis HTTP/1.1" 200 - +2025-12-29 16:38:48,447 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:38:48] "POST /api/analysis/getHistoryList HTTP/1.1" 200 - +2025-12-29 16:38:48,456 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:38:48] "POST /api/analysis/getHistoryList HTTP/1.1" 200 - +2025-12-29 16:38:48,714 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:38:48,917 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:38:49,116 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:38:49,116 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BNB/USDT +2025-12-29 16:38:49,174 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:38:49,310 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:38:49,311 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-29 16:38:49,516 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:38:49,517 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 16:38:49,517 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:38:49] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 16:38:49,523 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:38:49] "POST /api/analysis/getHistoryList HTTP/1.1" 200 - +2025-12-29 16:38:49,780 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:38:49,983 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:38:49,984 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:38:50,182 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:38:50,182 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 16:38:50,383 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:38:50,383 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-29 16:38:50,682 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:38:50,682 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BNB/USDT +2025-12-29 16:38:50,683 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:38:50] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 16:38:50,688 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:38:50] "POST /api/analysis/getHistoryList HTTP/1.1" 200 - +2025-12-29 16:38:50,946 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:38:51,146 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:38:51,147 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:38:51,335 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:38:51,335 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 16:38:51,546 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:38:51,547 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BNB/USDT +2025-12-29 16:38:51,548 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:38:51,548 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-29 16:38:51,548 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:38:51] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 16:38:51,806 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:38:52,002 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:38:52,003 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:38:52,204 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:38:52,205 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BNB/USDT +2025-12-29 16:38:52,407 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:38:52,407 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-29 16:38:52,407 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:38:52,408 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 16:38:52,408 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:38:52] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 16:39:05,854 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:05] "POST /api/analysis/getHistoryList HTTP/1.1" 200 - +2025-12-29 16:39:10,694 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:39:10,891 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:39:10,892 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:39:11,087 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:39:11,088 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 16:39:11,292 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:39:11,292 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:39:11,292 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BNB/USDT +2025-12-29 16:39:11,292 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-29 16:39:11,293 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:11] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 16:39:15,040 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:15] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 16:39:15,045 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:15] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 16:39:15,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:15] "GET /api/market/types?_t=1766997554717 HTTP/1.1" 200 - +2025-12-29 16:39:15,284 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-29 16:39:15,534 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 16:39:16,051 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 16:39:16,051 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 16:39:16,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 16:39:18,331 - app.routes.kline - INFO - Requesting K-lines: AShare:600519, timeframe=1D, limit=500 +2025-12-29 16:39:33,743 - urllib3.connectionpool - WARNING - Retrying (Retry(total=2, connect=3, read=2, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Read timed out. (read timeout=15)")': /api/qt/stock/kline/get?secid=1.600519&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=500 +2025-12-29 16:39:35,930 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 16:39:37,289 - app.routes.kline - INFO - Requesting K-lines: AShare:600519, timeframe=1D, limit=5 +2025-12-29 16:39:39,585 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 16:39:39,587 - app.routes.kline - INFO - Requesting K-lines: AShare:600519, timeframe=1D, limit=5 +2025-12-29 16:39:39,587 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 16:39:39,589 - app.routes.kline - INFO - Requesting K-lines: AShare:600519, timeframe=1D, limit=5 +2025-12-29 16:39:39,590 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 16:39:40,291 - app.routes.kline - INFO - Requesting K-lines: AShare:600519, timeframe=1D, limit=5 +2025-12-29 16:39:40,292 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 16:39:40,977 - app.routes.kline - INFO - Requesting K-lines: AShare:600519, timeframe=1D, limit=5 +2025-12-29 16:39:40,977 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 16:39:42,287 - app.routes.kline - INFO - Requesting K-lines: AShare:600519, timeframe=1D, limit=5 +2025-12-29 16:39:42,287 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 16:39:42,975 - app.routes.kline - INFO - Requesting K-lines: AShare:600519, timeframe=1D, limit=5 +2025-12-29 16:39:42,975 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 16:39:44,280 - app.routes.kline - INFO - Requesting K-lines: AShare:600519, timeframe=1D, limit=5 +2025-12-29 16:39:44,280 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 16:39:44,982 - app.routes.kline - INFO - Requesting K-lines: AShare:600519, timeframe=1D, limit=5 +2025-12-29 16:39:44,983 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 16:39:45,726 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:45] "GET /api/strategies?_t=1766997585405 HTTP/1.1" 200 - +2025-12-29 16:39:46,858 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:46] "GET /api/strategies/equityCurve?id=9&_t=1766997586845 HTTP/1.1" 200 - +2025-12-29 16:39:47,173 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:47] "GET /api/strategies/equityCurve?id=9&_t=1766997586845 HTTP/1.1" 200 - +2025-12-29 16:39:47,179 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:47] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766997586845 HTTP/1.1" 200 - +2025-12-29 16:39:47,185 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:47] "GET /api/strategies/positions?id=9&_t=1766997586847 HTTP/1.1" 200 - +2025-12-29 16:39:48,104 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:48] "GET /api/strategies/equityCurve?id=2&_t=1766997588089 HTTP/1.1" 200 - +2025-12-29 16:39:48,116 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:48] "GET /api/strategies/equityCurve?id=2&_t=1766997588089 HTTP/1.1" 200 - +2025-12-29 16:39:48,404 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:48] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766997588089 HTTP/1.1" 200 - +2025-12-29 16:39:48,408 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:48] "GET /api/strategies/positions?id=2&_t=1766997588091 HTTP/1.1" 200 - +2025-12-29 16:39:49,340 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:49] "GET /api/strategies/equityCurve?id=1&_t=1766997589010 HTTP/1.1" 200 - +2025-12-29 16:39:49,348 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:49] "GET /api/strategies/equityCurve?id=1&_t=1766997589010 HTTP/1.1" 200 - +2025-12-29 16:39:49,351 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:49] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766997589010 HTTP/1.1" 200 - +2025-12-29 16:39:49,356 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:49] "GET /api/strategies/positions?id=1&_t=1766997589012 HTTP/1.1" 200 - +2025-12-29 16:39:49,774 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:49] "GET /api/strategies/trades?id=1&_t=1766997589768 HTTP/1.1" 200 - +2025-12-29 16:39:52,323 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:52] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997592006 HTTP/1.1" 200 - +2025-12-29 16:39:53,504 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:53] "GET /api/strategies/equityCurve?id=2&_t=1766997593494 HTTP/1.1" 200 - +2025-12-29 16:39:53,821 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:53] "GET /api/strategies/equityCurve?id=2&_t=1766997593494 HTTP/1.1" 200 - +2025-12-29 16:39:53,824 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:53] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766997593494 HTTP/1.1" 200 - +2025-12-29 16:39:53,827 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:53] "GET /api/strategies/positions?id=2&_t=1766997593495 HTTP/1.1" 200 - +2025-12-29 16:39:53,830 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:53] "GET /api/strategies/trades?id=2&_t=1766997593495 HTTP/1.1" 200 - +2025-12-29 16:39:56,388 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:56] "GET /api/strategies/equityCurve?id=9&_t=1766997596058 HTTP/1.1" 200 - +2025-12-29 16:39:56,393 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:56] "GET /api/strategies/equityCurve?id=9&_t=1766997596058 HTTP/1.1" 200 - +2025-12-29 16:39:56,398 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:56] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766997596058 HTTP/1.1" 200 - +2025-12-29 16:39:56,405 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:56] "GET /api/strategies/positions?id=9&_t=1766997596060 HTTP/1.1" 200 - +2025-12-29 16:39:56,413 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:39:56] "GET /api/strategies/trades?id=9&_t=1766997596060 HTTP/1.1" 200 - +2025-12-29 16:40:00,522 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:00] "GET /api/strategies?_t=1766997600507 HTTP/1.1" 200 - +2025-12-29 16:40:02,336 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:02] "GET /api/dashboard/summary?_t=1766997602020 HTTP/1.1" 200 - +2025-12-29 16:40:02,344 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1766997602020 HTTP/1.1" 200 - +2025-12-29 16:40:08,071 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:08] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 16:40:08,377 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:08] "GET /api/market/config?_t=1766997608049 HTTP/1.1" 200 - +2025-12-29 16:40:12,690 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:12] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 16:40:12,692 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:12] "GET /api/market/types?_t=1766997608385 HTTP/1.1" 200 - +2025-12-29 16:40:12,694 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:12] "GET /api/market/types?_t=1766997609272 HTTP/1.1" 200 - +2025-12-29 16:40:12,700 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:12] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 16:40:12,705 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:12] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 16:40:13,018 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-29 16:40:13,264 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 16:40:14,301 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 16:40:14,400 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 16:40:15,618 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 16:40:15,618 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 16:40:15,667 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:15] "GET /api/strategies?_t=1766997615349 HTTP/1.1" 200 - +2025-12-29 16:40:16,818 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:16] "GET /api/strategies/equityCurve?id=2&_t=1766997616807 HTTP/1.1" 200 - +2025-12-29 16:40:17,169 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:17] "GET /api/strategies/equityCurve?id=2&_t=1766997616807 HTTP/1.1" 200 - +2025-12-29 16:40:17,172 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:17] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766997616807 HTTP/1.1" 200 - +2025-12-29 16:40:17,175 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:17] "GET /api/strategies/positions?id=2&_t=1766997616809 HTTP/1.1" 200 - +2025-12-29 16:40:20,119 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:20] "GET /api/strategies/notifications?id=2&since_id=17&limit=50&_t=1766997619807 HTTP/1.1" 200 - +2025-12-29 16:40:21,825 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:21] "GET /api/strategies/positions?id=2&_t=1766997621818 HTTP/1.1" 200 - +2025-12-29 16:40:23,126 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:23] "GET /api/strategies/notifications?id=2&since_id=17&limit=50&_t=1766997622812 HTTP/1.1" 200 - +2025-12-29 16:40:25,811 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:25] "GET /api/strategies/notifications?id=2&since_id=17&limit=50&_t=1766997625804 HTTP/1.1" 200 - +2025-12-29 16:40:27,147 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:27] "GET /api/strategies/positions?id=2&_t=1766997626806 HTTP/1.1" 200 - +2025-12-29 16:40:28,808 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:28] "GET /api/strategies/notifications?id=2&since_id=17&limit=50&_t=1766997628801 HTTP/1.1" 200 - +2025-12-29 16:40:32,116 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:32] "GET /api/strategies/notifications?id=2&since_id=17&limit=50&_t=1766997631800 HTTP/1.1" 200 - +2025-12-29 16:40:32,120 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:32] "GET /api/strategies/positions?id=2&_t=1766997631805 HTTP/1.1" 200 - +2025-12-29 16:40:34,807 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:34] "GET /api/strategies/notifications?id=2&since_id=17&limit=50&_t=1766997634801 HTTP/1.1" 200 - +2025-12-29 16:40:37,127 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:37] "GET /api/strategies/positions?id=2&_t=1766997636805 HTTP/1.1" 200 - +2025-12-29 16:40:37,810 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:37] "GET /api/strategies/notifications?id=2&since_id=17&limit=50&_t=1766997637801 HTTP/1.1" 200 - +2025-12-29 16:40:41,124 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:41] "GET /api/strategies/notifications?id=2&since_id=17&limit=50&_t=1766997640801 HTTP/1.1" 200 - +2025-12-29 16:40:41,811 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:41] "GET /api/strategies/positions?id=2&_t=1766997641805 HTTP/1.1" 200 - +2025-12-29 16:40:44,119 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:44] "GET /api/strategies/notifications?id=2&since_id=17&limit=50&_t=1766997643802 HTTP/1.1" 200 - +2025-12-29 16:40:44,375 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:44] "GET /api/strategies/trades?id=2&_t=1766997644127 HTTP/1.1" 200 - +2025-12-29 16:40:46,810 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:46] "GET /api/strategies/equityCurve?id=2&_t=1766997646802 HTTP/1.1" 200 - +2025-12-29 16:40:47,114 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:47] "GET /api/strategies/notifications?id=2&since_id=17&limit=50&_t=1766997646802 HTTP/1.1" 200 - +2025-12-29 16:40:47,118 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:47] "GET /api/strategies/positions?id=2&_t=1766997646807 HTTP/1.1" 200 - +2025-12-29 16:40:50,118 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:50] "GET /api/strategies/notifications?id=2&since_id=17&limit=50&_t=1766997649801 HTTP/1.1" 200 - +2025-12-29 16:40:51,813 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:51] "GET /api/strategies/positions?id=2&_t=1766997651806 HTTP/1.1" 200 - +2025-12-29 16:40:52,567 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:52] "GET /api/strategies/equityCurve?id=9&_t=1766997652249 HTTP/1.1" 200 - +2025-12-29 16:40:52,571 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:52] "GET /api/strategies/equityCurve?id=9&_t=1766997652249 HTTP/1.1" 200 - +2025-12-29 16:40:52,574 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:52] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766997652249 HTTP/1.1" 200 - +2025-12-29 16:40:52,578 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:52] "GET /api/strategies/positions?id=9&_t=1766997652250 HTTP/1.1" 200 - +2025-12-29 16:40:52,585 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:52] "GET /api/strategies/trades?id=9&_t=1766997652250 HTTP/1.1" 200 - +2025-12-29 16:40:53,208 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:53] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 16:40:53,523 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:53] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 16:40:53,528 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:53] "GET /api/credentials/list?user_id=1&_t=1766997653202 HTTP/1.1" 200 - +2025-12-29 16:40:55,562 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:55] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766997655245 HTTP/1.1" 200 - +2025-12-29 16:40:57,258 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:57] "GET /api/strategies/positions?id=9&_t=1766997657250 HTTP/1.1" 200 - +2025-12-29 16:40:58,558 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:58] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766997658245 HTTP/1.1" 200 - +2025-12-29 16:40:58,702 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:58] "GET /api/strategies/equityCurve?id=2&_t=1766997658386 HTTP/1.1" 200 - +2025-12-29 16:40:58,706 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:58] "GET /api/strategies/equityCurve?id=2&_t=1766997658386 HTTP/1.1" 200 - +2025-12-29 16:40:58,710 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:58] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766997658386 HTTP/1.1" 200 - +2025-12-29 16:40:58,714 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:58] "GET /api/strategies/positions?id=2&_t=1766997658388 HTTP/1.1" 200 - +2025-12-29 16:40:58,718 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:58] "GET /api/strategies/trades?id=2&_t=1766997658388 HTTP/1.1" 200 - +2025-12-29 16:40:59,616 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:59] "GET /api/strategies/equityCurve?id=1&_t=1766997659296 HTTP/1.1" 200 - +2025-12-29 16:40:59,621 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:59] "GET /api/strategies/equityCurve?id=1&_t=1766997659296 HTTP/1.1" 200 - +2025-12-29 16:40:59,624 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:59] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766997659296 HTTP/1.1" 200 - +2025-12-29 16:40:59,628 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:59] "GET /api/strategies/positions?id=1&_t=1766997659297 HTTP/1.1" 200 - +2025-12-29 16:40:59,632 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:40:59] "GET /api/strategies/trades?id=1&_t=1766997659297 HTTP/1.1" 200 - +2025-12-29 16:41:02,288 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:02] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997662282 HTTP/1.1" 200 - +2025-12-29 16:41:04,594 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:04] "GET /api/strategies/positions?id=1&_t=1766997664286 HTTP/1.1" 200 - +2025-12-29 16:41:05,289 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:05] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997665281 HTTP/1.1" 200 - +2025-12-29 16:41:06,659 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:06] "GET /api/strategies/equityCurve?id=2&_t=1766997666335 HTTP/1.1" 200 - +2025-12-29 16:41:06,662 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:06] "GET /api/strategies/equityCurve?id=2&_t=1766997666335 HTTP/1.1" 200 - +2025-12-29 16:41:06,665 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:06] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766997666335 HTTP/1.1" 200 - +2025-12-29 16:41:06,669 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:06] "GET /api/strategies/positions?id=2&_t=1766997666336 HTTP/1.1" 200 - +2025-12-29 16:41:06,672 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:06] "GET /api/strategies/trades?id=2&_t=1766997666336 HTTP/1.1" 200 - +2025-12-29 16:41:07,446 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:07] "GET /api/strategies/equityCurve?id=9&_t=1766997667435 HTTP/1.1" 200 - +2025-12-29 16:41:07,751 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:07] "GET /api/strategies/equityCurve?id=9&_t=1766997667435 HTTP/1.1" 200 - +2025-12-29 16:41:07,754 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:07] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766997667435 HTTP/1.1" 200 - +2025-12-29 16:41:07,757 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:07] "GET /api/strategies/positions?id=9&_t=1766997667436 HTTP/1.1" 200 - +2025-12-29 16:41:07,760 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:07] "GET /api/strategies/trades?id=9&_t=1766997667436 HTTP/1.1" 200 - +2025-12-29 16:41:08,779 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:08] "GET /api/strategies/equityCurve?id=2&_t=1766997668455 HTTP/1.1" 200 - +2025-12-29 16:41:08,783 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:08] "GET /api/strategies/equityCurve?id=2&_t=1766997668455 HTTP/1.1" 200 - +2025-12-29 16:41:08,786 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:08] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766997668455 HTTP/1.1" 200 - +2025-12-29 16:41:08,789 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:08] "GET /api/strategies/positions?id=2&_t=1766997668456 HTTP/1.1" 200 - +2025-12-29 16:41:08,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:08] "GET /api/strategies/trades?id=2&_t=1766997668456 HTTP/1.1" 200 - +2025-12-29 16:41:11,452 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:11] "GET /api/strategies/notifications?id=2&since_id=17&limit=50&_t=1766997671441 HTTP/1.1" 200 - +2025-12-29 16:41:13,763 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:13] "GET /api/strategies/positions?id=2&_t=1766997673444 HTTP/1.1" 200 - +2025-12-29 16:41:14,203 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:14] "GET /api/strategies/equityCurve?id=1&_t=1766997674192 HTTP/1.1" 200 - +2025-12-29 16:41:14,505 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:14] "GET /api/strategies/equityCurve?id=1&_t=1766997674192 HTTP/1.1" 200 - +2025-12-29 16:41:14,509 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:14] "GET /api/strategies/positions?id=1&_t=1766997674193 HTTP/1.1" 200 - +2025-12-29 16:41:14,512 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:14] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766997674192 HTTP/1.1" 200 - +2025-12-29 16:41:14,516 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:14] "GET /api/strategies/trades?id=1&_t=1766997674193 HTTP/1.1" 200 - +2025-12-29 16:41:17,496 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:17] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997677178 HTTP/1.1" 200 - +2025-12-29 16:41:19,188 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:19] "GET /api/strategies/positions?id=1&_t=1766997679182 HTTP/1.1" 200 - +2025-12-29 16:41:20,499 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:20] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997680179 HTTP/1.1" 200 - +2025-12-29 16:41:22,188 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:22] "GET /api/strategies?_t=1766997682158 HTTP/1.1" 200 - +2025-12-29 16:41:23,702 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:23] "GET /api/strategies/equityCurve?id=1&_t=1766997683381 HTTP/1.1" 200 - +2025-12-29 16:41:23,706 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:23] "GET /api/strategies/equityCurve?id=1&_t=1766997683381 HTTP/1.1" 200 - +2025-12-29 16:41:23,709 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:23] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766997683381 HTTP/1.1" 200 - +2025-12-29 16:41:23,713 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:23] "GET /api/strategies/positions?id=1&_t=1766997683385 HTTP/1.1" 200 - +2025-12-29 16:41:26,380 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:26] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997686374 HTTP/1.1" 200 - +2025-12-29 16:41:28,696 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:28] "GET /api/strategies/positions?id=1&_t=1766997688379 HTTP/1.1" 200 - +2025-12-29 16:41:29,382 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:29] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997689374 HTTP/1.1" 200 - +2025-12-29 16:41:32,685 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:32] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997692374 HTTP/1.1" 200 - +2025-12-29 16:41:33,386 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:33] "GET /api/strategies/positions?id=1&_t=1766997693379 HTTP/1.1" 200 - +2025-12-29 16:41:35,688 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:35] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997695374 HTTP/1.1" 200 - +2025-12-29 16:41:38,380 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:38] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997698374 HTTP/1.1" 200 - +2025-12-29 16:41:38,697 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:38] "GET /api/strategies/positions?id=1&_t=1766997698383 HTTP/1.1" 200 - +2025-12-29 16:41:41,381 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:41] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997701374 HTTP/1.1" 200 - +2025-12-29 16:41:43,687 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:43] "GET /api/strategies/positions?id=1&_t=1766997703379 HTTP/1.1" 200 - +2025-12-29 16:41:44,380 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:44] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997704374 HTTP/1.1" 200 - +2025-12-29 16:41:47,685 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:47] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997707375 HTTP/1.1" 200 - +2025-12-29 16:41:48,385 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:48] "GET /api/strategies/positions?id=1&_t=1766997708379 HTTP/1.1" 200 - +2025-12-29 16:41:50,689 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:50] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997710374 HTTP/1.1" 200 - +2025-12-29 16:41:53,383 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:53] "GET /api/strategies/equityCurve?id=1&_t=1766997713375 HTTP/1.1" 200 - +2025-12-29 16:41:53,697 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:53] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997713376 HTTP/1.1" 200 - +2025-12-29 16:41:53,700 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:53] "GET /api/strategies/positions?id=1&_t=1766997713379 HTTP/1.1" 200 - +2025-12-29 16:41:56,684 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:56] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997716375 HTTP/1.1" 200 - +2025-12-29 16:41:58,386 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:58] "GET /api/strategies/positions?id=1&_t=1766997718379 HTTP/1.1" 200 - +2025-12-29 16:41:59,691 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:41:59] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997719375 HTTP/1.1" 200 - +2025-12-29 16:42:02,380 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:42:02] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997722374 HTTP/1.1" 200 - +2025-12-29 16:42:03,698 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:42:03] "GET /api/strategies/positions?id=1&_t=1766997723379 HTTP/1.1" 200 - +2025-12-29 16:42:05,381 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:42:05] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997725374 HTTP/1.1" 200 - +2025-12-29 16:42:08,688 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:42:08] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997728374 HTTP/1.1" 200 - +2025-12-29 16:42:08,691 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:42:08] "GET /api/strategies/positions?id=1&_t=1766997728379 HTTP/1.1" 200 - +2025-12-29 16:42:11,382 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:42:11] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997731374 HTTP/1.1" 200 - +2025-12-29 16:42:13,691 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:42:13] "GET /api/strategies/positions?id=1&_t=1766997733379 HTTP/1.1" 200 - +2025-12-29 16:42:14,380 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:42:14] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997734374 HTTP/1.1" 200 - +2025-12-29 16:42:17,690 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:42:17] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997737374 HTTP/1.1" 200 - +2025-12-29 16:42:18,385 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:42:18] "GET /api/strategies/positions?id=1&_t=1766997738379 HTTP/1.1" 200 - +2025-12-29 16:42:20,684 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:42:20] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997740374 HTTP/1.1" 200 - +2025-12-29 16:42:23,384 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:42:23] "GET /api/strategies/equityCurve?id=1&_t=1766997743374 HTTP/1.1" 200 - +2025-12-29 16:42:23,698 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:42:23] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997743375 HTTP/1.1" 200 - +2025-12-29 16:42:23,702 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:42:23] "GET /api/strategies/positions?id=1&_t=1766997743378 HTTP/1.1" 200 - +2025-12-29 16:42:26,687 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:42:26] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997746373 HTTP/1.1" 200 - +2025-12-29 16:42:28,386 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:42:28] "GET /api/strategies/positions?id=1&_t=1766997748379 HTTP/1.1" 200 - +2025-12-29 16:42:29,695 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:42:29] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997749374 HTTP/1.1" 200 - +2025-12-29 16:42:32,379 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:42:32] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997752373 HTTP/1.1" 200 - +2025-12-29 16:42:33,701 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:42:33] "GET /api/strategies/positions?id=1&_t=1766997753379 HTTP/1.1" 200 - +2025-12-29 16:42:35,381 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:42:35] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997755374 HTTP/1.1" 200 - +2025-12-29 16:42:38,682 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:42:38] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997758373 HTTP/1.1" 200 - +2025-12-29 16:42:38,688 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:42:38] "GET /api/strategies/positions?id=1&_t=1766997758379 HTTP/1.1" 200 - +2025-12-29 16:42:41,380 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:42:41] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997761374 HTTP/1.1" 200 - +2025-12-29 16:42:43,693 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:42:43] "GET /api/strategies/positions?id=1&_t=1766997763380 HTTP/1.1" 200 - +2025-12-29 16:42:44,381 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:42:44] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997764374 HTTP/1.1" 200 - +2025-12-29 16:42:47,681 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:42:47] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997767374 HTTP/1.1" 200 - +2025-12-29 16:42:48,385 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:42:48] "GET /api/strategies/positions?id=1&_t=1766997768378 HTTP/1.1" 200 - +2025-12-29 16:42:50,687 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:42:50] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997770374 HTTP/1.1" 200 - +2025-12-29 16:42:53,380 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:42:53] "GET /api/strategies/equityCurve?id=1&_t=1766997773373 HTTP/1.1" 200 - +2025-12-29 16:42:53,688 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:42:53] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997773374 HTTP/1.1" 200 - +2025-12-29 16:42:53,691 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:42:53] "GET /api/strategies/positions?id=1&_t=1766997773379 HTTP/1.1" 200 - +2025-12-29 16:42:56,683 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:42:56] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997776374 HTTP/1.1" 200 - +2025-12-29 16:42:58,385 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:42:58] "GET /api/strategies/positions?id=1&_t=1766997778379 HTTP/1.1" 200 - +2025-12-29 16:42:59,693 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:42:59] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997779373 HTTP/1.1" 200 - +2025-12-29 16:43:03,424 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:43:03] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997782374 HTTP/1.1" 200 - +2025-12-29 16:43:03,693 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:43:03] "GET /api/strategies/positions?id=1&_t=1766997783378 HTTP/1.1" 200 - +2025-12-29 16:43:05,695 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:43:05] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997785374 HTTP/1.1" 200 - +2025-12-29 16:43:08,380 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:43:08] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997788374 HTTP/1.1" 200 - +2025-12-29 16:43:08,693 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:43:08] "GET /api/strategies/positions?id=1&_t=1766997788380 HTTP/1.1" 200 - +2025-12-29 16:43:11,380 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:43:11] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997791374 HTTP/1.1" 200 - +2025-12-29 16:43:13,693 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:43:13] "GET /api/strategies/positions?id=1&_t=1766997793379 HTTP/1.1" 200 - +2025-12-29 16:43:14,380 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:43:14] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997794374 HTTP/1.1" 200 - +2025-12-29 16:43:17,692 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:43:17] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997797374 HTTP/1.1" 200 - +2025-12-29 16:43:18,384 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:43:18] "GET /api/strategies/positions?id=1&_t=1766997798378 HTTP/1.1" 200 - +2025-12-29 16:43:20,682 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:43:20] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997800374 HTTP/1.1" 200 - +2025-12-29 16:43:23,380 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:43:23] "GET /api/strategies/equityCurve?id=1&_t=1766997803373 HTTP/1.1" 200 - +2025-12-29 16:43:23,692 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:43:23] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997803374 HTTP/1.1" 200 - +2025-12-29 16:43:23,696 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:43:23] "GET /api/strategies/positions?id=1&_t=1766997803379 HTTP/1.1" 200 - +2025-12-29 16:43:26,680 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:43:26] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997806373 HTTP/1.1" 200 - +2025-12-29 16:43:28,386 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:43:28] "GET /api/strategies/positions?id=1&_t=1766997808379 HTTP/1.1" 200 - +2025-12-29 16:43:29,682 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:43:29] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997809374 HTTP/1.1" 200 - +2025-12-29 16:43:32,380 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:43:32] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997812374 HTTP/1.1" 200 - +2025-12-29 16:43:33,689 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:43:33] "GET /api/strategies/positions?id=1&_t=1766997813380 HTTP/1.1" 200 - +2025-12-29 16:43:35,380 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:43:35] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997815373 HTTP/1.1" 200 - +2025-12-29 16:43:39,422 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:43:39] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997818373 HTTP/1.1" 200 - +2025-12-29 16:43:39,426 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:43:39] "GET /api/strategies/positions?id=1&_t=1766997818380 HTTP/1.1" 200 - +2025-12-29 16:43:41,380 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:43:41] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997821374 HTTP/1.1" 200 - +2025-12-29 16:43:43,701 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:43:43] "GET /api/strategies/positions?id=1&_t=1766997823379 HTTP/1.1" 200 - +2025-12-29 16:43:44,380 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:43:44] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997824374 HTTP/1.1" 200 - +2025-12-29 16:43:47,695 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:43:47] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997827373 HTTP/1.1" 200 - +2025-12-29 16:43:48,385 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:43:48] "GET /api/strategies/positions?id=1&_t=1766997828379 HTTP/1.1" 200 - +2025-12-29 16:43:50,694 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:43:50] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997830374 HTTP/1.1" 200 - +2025-12-29 16:43:53,382 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:43:53] "GET /api/strategies/equityCurve?id=1&_t=1766997833374 HTTP/1.1" 200 - +2025-12-29 16:43:53,691 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:43:53] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997833374 HTTP/1.1" 200 - +2025-12-29 16:43:53,695 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:43:53] "GET /api/strategies/positions?id=1&_t=1766997833378 HTTP/1.1" 200 - +2025-12-29 16:43:56,691 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:43:56] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997836375 HTTP/1.1" 200 - +2025-12-29 16:43:58,385 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:43:58] "GET /api/strategies/positions?id=1&_t=1766997838379 HTTP/1.1" 200 - +2025-12-29 16:43:59,682 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:43:59] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997839375 HTTP/1.1" 200 - +2025-12-29 16:44:02,380 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:44:02] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997842374 HTTP/1.1" 200 - +2025-12-29 16:44:03,693 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:44:03] "GET /api/strategies/positions?id=1&_t=1766997843379 HTTP/1.1" 200 - +2025-12-29 16:44:05,380 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:44:05] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997845374 HTTP/1.1" 200 - +2025-12-29 16:44:08,686 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:44:08] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997848374 HTTP/1.1" 200 - +2025-12-29 16:44:08,690 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:44:08] "GET /api/strategies/positions?id=1&_t=1766997848379 HTTP/1.1" 200 - +2025-12-29 16:44:11,381 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:44:11] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997851374 HTTP/1.1" 200 - +2025-12-29 16:44:13,697 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:44:13] "GET /api/strategies/positions?id=1&_t=1766997853379 HTTP/1.1" 200 - +2025-12-29 16:44:14,379 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:44:14] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997854374 HTTP/1.1" 200 - +2025-12-29 16:44:17,696 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:44:17] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997857374 HTTP/1.1" 200 - +2025-12-29 16:44:18,388 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:44:18] "GET /api/strategies/positions?id=1&_t=1766997858379 HTTP/1.1" 200 - +2025-12-29 16:44:20,696 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:44:20] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997860374 HTTP/1.1" 200 - +2025-12-29 16:44:23,385 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:44:23] "GET /api/strategies/equityCurve?id=1&_t=1766997863374 HTTP/1.1" 200 - +2025-12-29 16:44:23,697 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:44:23] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997863374 HTTP/1.1" 200 - +2025-12-29 16:44:23,700 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:44:23] "GET /api/strategies/positions?id=1&_t=1766997863379 HTTP/1.1" 200 - +2025-12-29 16:44:26,694 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:44:26] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997866374 HTTP/1.1" 200 - +2025-12-29 16:44:28,385 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:44:28] "GET /api/strategies/positions?id=1&_t=1766997868379 HTTP/1.1" 200 - +2025-12-29 16:44:29,682 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:44:29] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997869374 HTTP/1.1" 200 - +2025-12-29 16:44:32,380 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:44:32] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997872374 HTTP/1.1" 200 - +2025-12-29 16:44:33,700 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:44:33] "GET /api/strategies/positions?id=1&_t=1766997873379 HTTP/1.1" 200 - +2025-12-29 16:44:35,381 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:44:35] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997875374 HTTP/1.1" 200 - +2025-12-29 16:44:38,687 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:44:38] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997878373 HTTP/1.1" 200 - +2025-12-29 16:44:38,691 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:44:38] "GET /api/strategies/positions?id=1&_t=1766997878379 HTTP/1.1" 200 - +2025-12-29 16:44:41,381 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:44:41] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997881375 HTTP/1.1" 200 - +2025-12-29 16:44:43,697 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:44:43] "GET /api/strategies/positions?id=1&_t=1766997883378 HTTP/1.1" 200 - +2025-12-29 16:44:44,382 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:44:44] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997884374 HTTP/1.1" 200 - +2025-12-29 16:44:47,690 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:44:47] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997887374 HTTP/1.1" 200 - +2025-12-29 16:44:48,390 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:44:48] "GET /api/strategies/positions?id=1&_t=1766997888380 HTTP/1.1" 200 - +2025-12-29 16:44:50,691 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:44:50] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997890373 HTTP/1.1" 200 - +2025-12-29 16:44:53,381 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:44:53] "GET /api/strategies/equityCurve?id=1&_t=1766997893373 HTTP/1.1" 200 - +2025-12-29 16:44:53,690 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:44:53] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997893374 HTTP/1.1" 200 - +2025-12-29 16:44:53,695 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:44:53] "GET /api/strategies/positions?id=1&_t=1766997893379 HTTP/1.1" 200 - +2025-12-29 16:44:56,682 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:44:56] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997896375 HTTP/1.1" 200 - +2025-12-29 16:44:58,385 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:44:58] "GET /api/strategies/positions?id=1&_t=1766997898379 HTTP/1.1" 200 - +2025-12-29 16:44:59,687 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:44:59] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997899374 HTTP/1.1" 200 - +2025-12-29 16:45:02,381 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:45:02] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997902374 HTTP/1.1" 200 - +2025-12-29 16:45:03,689 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:45:03] "GET /api/strategies/positions?id=1&_t=1766997903379 HTTP/1.1" 200 - +2025-12-29 16:45:05,380 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:45:05] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997905374 HTTP/1.1" 200 - +2025-12-29 16:45:08,685 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:45:08] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997908374 HTTP/1.1" 200 - +2025-12-29 16:45:08,689 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:45:08] "GET /api/strategies/positions?id=1&_t=1766997908379 HTTP/1.1" 200 - +2025-12-29 16:45:11,380 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:45:11] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997911374 HTTP/1.1" 200 - +2025-12-29 16:45:13,695 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:45:13] "GET /api/strategies/positions?id=1&_t=1766997913380 HTTP/1.1" 200 - +2025-12-29 16:45:14,381 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:45:14] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997914374 HTTP/1.1" 200 - +2025-12-29 16:45:17,696 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:45:17] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997917375 HTTP/1.1" 200 - +2025-12-29 16:45:18,386 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:45:18] "GET /api/strategies/positions?id=1&_t=1766997918379 HTTP/1.1" 200 - +2025-12-29 16:45:20,688 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:45:20] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997920374 HTTP/1.1" 200 - +2025-12-29 16:45:23,381 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:45:23] "GET /api/strategies/equityCurve?id=1&_t=1766997923374 HTTP/1.1" 200 - +2025-12-29 16:45:23,697 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:45:23] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997923375 HTTP/1.1" 200 - +2025-12-29 16:45:23,700 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:45:23] "GET /api/strategies/positions?id=1&_t=1766997923380 HTTP/1.1" 200 - +2025-12-29 16:45:26,695 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:45:26] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997926374 HTTP/1.1" 200 - +2025-12-29 16:45:28,388 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:45:28] "GET /api/strategies/positions?id=1&_t=1766997928380 HTTP/1.1" 200 - +2025-12-29 16:45:29,691 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:45:29] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997929374 HTTP/1.1" 200 - +2025-12-29 16:45:32,381 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:45:32] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997932374 HTTP/1.1" 200 - +2025-12-29 16:45:33,692 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:45:33] "GET /api/strategies/positions?id=1&_t=1766997933379 HTTP/1.1" 200 - +2025-12-29 16:45:35,381 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:45:35] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997935373 HTTP/1.1" 200 - +2025-12-29 16:45:38,686 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:45:38] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997938375 HTTP/1.1" 200 - +2025-12-29 16:45:38,692 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:45:38] "GET /api/strategies/positions?id=1&_t=1766997938379 HTTP/1.1" 200 - +2025-12-29 16:45:41,381 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:45:41] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997941374 HTTP/1.1" 200 - +2025-12-29 16:45:43,690 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:45:43] "GET /api/strategies/positions?id=1&_t=1766997943380 HTTP/1.1" 200 - +2025-12-29 16:45:44,381 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:45:44] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997944375 HTTP/1.1" 200 - +2025-12-29 16:45:47,695 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:45:47] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997947374 HTTP/1.1" 200 - +2025-12-29 16:45:48,386 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:45:48] "GET /api/strategies/positions?id=1&_t=1766997948378 HTTP/1.1" 200 - +2025-12-29 16:45:50,689 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:45:50] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997950373 HTTP/1.1" 200 - +2025-12-29 16:45:53,382 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:45:53] "GET /api/strategies/equityCurve?id=1&_t=1766997953374 HTTP/1.1" 200 - +2025-12-29 16:45:53,682 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:45:53] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997953375 HTTP/1.1" 200 - +2025-12-29 16:45:53,688 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:45:53] "GET /api/strategies/positions?id=1&_t=1766997953378 HTTP/1.1" 200 - +2025-12-29 16:45:56,698 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:45:56] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997956374 HTTP/1.1" 200 - +2025-12-29 16:45:58,386 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:45:58] "GET /api/strategies/positions?id=1&_t=1766997958379 HTTP/1.1" 200 - +2025-12-29 16:45:59,695 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:45:59] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997959374 HTTP/1.1" 200 - +2025-12-29 16:46:02,380 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:46:02] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997962373 HTTP/1.1" 200 - +2025-12-29 16:46:03,695 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:46:03] "GET /api/strategies/positions?id=1&_t=1766997963379 HTTP/1.1" 200 - +2025-12-29 16:46:05,382 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:46:05] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997965374 HTTP/1.1" 200 - +2025-12-29 16:46:08,684 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:46:08] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997968375 HTTP/1.1" 200 - +2025-12-29 16:46:08,687 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:46:08] "GET /api/strategies/positions?id=1&_t=1766997968378 HTTP/1.1" 200 - +2025-12-29 16:46:11,381 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:46:11] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997971374 HTTP/1.1" 200 - +2025-12-29 16:46:13,694 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:46:13] "GET /api/strategies/positions?id=1&_t=1766997973379 HTTP/1.1" 200 - +2025-12-29 16:46:14,382 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:46:14] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997974374 HTTP/1.1" 200 - +2025-12-29 16:46:17,695 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:46:17] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997977374 HTTP/1.1" 200 - +2025-12-29 16:46:18,386 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:46:18] "GET /api/strategies/positions?id=1&_t=1766997978380 HTTP/1.1" 200 - +2025-12-29 16:46:20,683 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:46:20] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997980373 HTTP/1.1" 200 - +2025-12-29 16:46:23,382 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:46:23] "GET /api/strategies/equityCurve?id=1&_t=1766997983374 HTTP/1.1" 200 - +2025-12-29 16:46:23,686 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:46:23] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997983374 HTTP/1.1" 200 - +2025-12-29 16:46:23,689 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:46:23] "GET /api/strategies/positions?id=1&_t=1766997983379 HTTP/1.1" 200 - +2025-12-29 16:46:26,690 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:46:26] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997986374 HTTP/1.1" 200 - +2025-12-29 16:46:28,387 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:46:28] "GET /api/strategies/positions?id=1&_t=1766997988380 HTTP/1.1" 200 - +2025-12-29 16:46:29,686 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:46:29] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997989374 HTTP/1.1" 200 - +2025-12-29 16:46:32,381 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:46:32] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997992374 HTTP/1.1" 200 - +2025-12-29 16:46:33,687 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:46:33] "GET /api/strategies/positions?id=1&_t=1766997993379 HTTP/1.1" 200 - +2025-12-29 16:46:35,380 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:46:35] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997995373 HTTP/1.1" 200 - +2025-12-29 16:46:38,695 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:46:38] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766997998374 HTTP/1.1" 200 - +2025-12-29 16:46:38,698 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:46:38] "GET /api/strategies/positions?id=1&_t=1766997998378 HTTP/1.1" 200 - +2025-12-29 16:46:41,382 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:46:41] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998001375 HTTP/1.1" 200 - +2025-12-29 16:46:43,689 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:46:43] "GET /api/strategies/positions?id=1&_t=1766998003379 HTTP/1.1" 200 - +2025-12-29 16:46:44,380 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:46:44] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998004374 HTTP/1.1" 200 - +2025-12-29 16:46:47,694 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:46:47] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998007373 HTTP/1.1" 200 - +2025-12-29 16:46:48,384 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:46:48] "GET /api/strategies/positions?id=1&_t=1766998008378 HTTP/1.1" 200 - +2025-12-29 16:46:50,693 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:46:50] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998010375 HTTP/1.1" 200 - +2025-12-29 16:46:53,382 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:46:53] "GET /api/strategies/equityCurve?id=1&_t=1766998013375 HTTP/1.1" 200 - +2025-12-29 16:46:53,685 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:46:53] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998013375 HTTP/1.1" 200 - +2025-12-29 16:46:53,689 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:46:53] "GET /api/strategies/positions?id=1&_t=1766998013379 HTTP/1.1" 200 - +2025-12-29 16:46:56,688 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:46:56] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998016374 HTTP/1.1" 200 - +2025-12-29 16:46:58,385 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:46:58] "GET /api/strategies/positions?id=1&_t=1766998018379 HTTP/1.1" 200 - +2025-12-29 16:46:59,694 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:46:59] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998019373 HTTP/1.1" 200 - +2025-12-29 16:47:02,380 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:47:02] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998022374 HTTP/1.1" 200 - +2025-12-29 16:47:03,686 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:47:03] "GET /api/strategies/positions?id=1&_t=1766998023379 HTTP/1.1" 200 - +2025-12-29 16:47:05,381 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:47:05] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998025374 HTTP/1.1" 200 - +2025-12-29 16:47:08,696 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:47:08] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998028375 HTTP/1.1" 200 - +2025-12-29 16:47:08,700 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:47:08] "GET /api/strategies/positions?id=1&_t=1766998028379 HTTP/1.1" 200 - +2025-12-29 16:47:11,381 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:47:11] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998031374 HTTP/1.1" 200 - +2025-12-29 16:47:13,695 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:47:13] "GET /api/strategies/positions?id=1&_t=1766998033380 HTTP/1.1" 200 - +2025-12-29 16:47:14,380 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:47:14] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998034374 HTTP/1.1" 200 - +2025-12-29 16:47:17,693 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:47:17] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998037374 HTTP/1.1" 200 - +2025-12-29 16:47:18,386 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:47:18] "GET /api/strategies/positions?id=1&_t=1766998038379 HTTP/1.1" 200 - +2025-12-29 16:47:20,692 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:47:20] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998040374 HTTP/1.1" 200 - +2025-12-29 16:47:23,382 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:47:23] "GET /api/strategies/equityCurve?id=1&_t=1766998043374 HTTP/1.1" 200 - +2025-12-29 16:47:23,682 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:47:23] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998043374 HTTP/1.1" 200 - +2025-12-29 16:47:23,688 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:47:23] "GET /api/strategies/positions?id=1&_t=1766998043378 HTTP/1.1" 200 - +2025-12-29 16:47:26,681 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:47:26] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998046373 HTTP/1.1" 200 - +2025-12-29 16:47:28,387 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:47:28] "GET /api/strategies/positions?id=1&_t=1766998048379 HTTP/1.1" 200 - +2025-12-29 16:47:29,689 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:47:29] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998049374 HTTP/1.1" 200 - +2025-12-29 16:47:32,382 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:47:32] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998052374 HTTP/1.1" 200 - +2025-12-29 16:47:34,139 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:47:34] "GET /api/strategies/positions?id=1&_t=1766998053378 HTTP/1.1" 200 - +2025-12-29 16:47:35,381 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:47:35] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998055374 HTTP/1.1" 200 - +2025-12-29 16:47:38,682 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:47:38] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998058373 HTTP/1.1" 200 - +2025-12-29 16:47:38,688 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:47:38] "GET /api/strategies/positions?id=1&_t=1766998058379 HTTP/1.1" 200 - +2025-12-29 16:47:41,380 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:47:41] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998061374 HTTP/1.1" 200 - +2025-12-29 16:47:43,694 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:47:43] "GET /api/strategies/positions?id=1&_t=1766998063379 HTTP/1.1" 200 - +2025-12-29 16:47:44,381 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:47:44] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998064374 HTTP/1.1" 200 - +2025-12-29 16:47:47,687 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:47:47] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998067374 HTTP/1.1" 200 - +2025-12-29 16:47:48,389 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:47:48] "GET /api/strategies/positions?id=1&_t=1766998068380 HTTP/1.1" 200 - +2025-12-29 16:47:50,687 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:47:50] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998070375 HTTP/1.1" 200 - +2025-12-29 16:47:53,381 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:47:53] "GET /api/strategies/equityCurve?id=1&_t=1766998073373 HTTP/1.1" 200 - +2025-12-29 16:47:53,694 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:47:53] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998073374 HTTP/1.1" 200 - +2025-12-29 16:47:53,698 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:47:53] "GET /api/strategies/positions?id=1&_t=1766998073379 HTTP/1.1" 200 - +2025-12-29 16:47:56,693 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:47:56] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998076375 HTTP/1.1" 200 - +2025-12-29 16:47:58,388 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:47:58] "GET /api/strategies/positions?id=1&_t=1766998078379 HTTP/1.1" 200 - +2025-12-29 16:47:59,694 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:47:59] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998079374 HTTP/1.1" 200 - +2025-12-29 16:48:02,382 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:48:02] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998082375 HTTP/1.1" 200 - +2025-12-29 16:48:03,689 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:48:03] "GET /api/strategies/positions?id=1&_t=1766998083379 HTTP/1.1" 200 - +2025-12-29 16:48:05,381 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:48:05] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998085374 HTTP/1.1" 200 - +2025-12-29 16:48:08,686 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:48:08] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998088374 HTTP/1.1" 200 - +2025-12-29 16:48:08,689 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:48:08] "GET /api/strategies/positions?id=1&_t=1766998088379 HTTP/1.1" 200 - +2025-12-29 16:48:11,381 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:48:11] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998091374 HTTP/1.1" 200 - +2025-12-29 16:48:13,697 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:48:13] "GET /api/strategies/positions?id=1&_t=1766998093379 HTTP/1.1" 200 - +2025-12-29 16:48:14,381 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:48:14] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998094373 HTTP/1.1" 200 - +2025-12-29 16:48:17,694 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:48:17] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998097375 HTTP/1.1" 200 - +2025-12-29 16:48:18,387 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:48:18] "GET /api/strategies/positions?id=1&_t=1766998098379 HTTP/1.1" 200 - +2025-12-29 16:48:20,682 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:48:20] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998100374 HTTP/1.1" 200 - +2025-12-29 16:48:24,116 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:48:24] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998103375 HTTP/1.1" 200 - +2025-12-29 16:48:24,121 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:48:24] "GET /api/strategies/equityCurve?id=1&_t=1766998103375 HTTP/1.1" 200 - +2025-12-29 16:48:24,126 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:48:24] "GET /api/strategies/positions?id=1&_t=1766998103380 HTTP/1.1" 200 - +2025-12-29 16:48:26,695 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:48:26] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998106374 HTTP/1.1" 200 - +2025-12-29 16:48:28,385 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:48:28] "GET /api/strategies/positions?id=1&_t=1766998108378 HTTP/1.1" 200 - +2025-12-29 16:48:29,692 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:48:29] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998109374 HTTP/1.1" 200 - +2025-12-29 16:48:32,380 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:48:32] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998112374 HTTP/1.1" 200 - +2025-12-29 16:48:33,703 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:48:33] "GET /api/strategies/positions?id=1&_t=1766998113380 HTTP/1.1" 200 - +2025-12-29 16:48:35,380 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:48:35] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998115374 HTTP/1.1" 200 - +2025-12-29 16:48:38,689 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:48:38] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998118375 HTTP/1.1" 200 - +2025-12-29 16:48:38,692 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:48:38] "GET /api/strategies/positions?id=1&_t=1766998118379 HTTP/1.1" 200 - +2025-12-29 16:48:41,381 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:48:41] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998121374 HTTP/1.1" 200 - +2025-12-29 16:48:43,693 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:48:43] "GET /api/strategies/positions?id=1&_t=1766998123379 HTTP/1.1" 200 - +2025-12-29 16:48:44,381 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:48:44] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998124374 HTTP/1.1" 200 - +2025-12-29 16:48:47,694 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:48:47] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998127375 HTTP/1.1" 200 - +2025-12-29 16:48:48,388 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:48:48] "GET /api/strategies/positions?id=1&_t=1766998128379 HTTP/1.1" 200 - +2025-12-29 16:48:51,613 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:48:51] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998130374 HTTP/1.1" 200 - +2025-12-29 16:48:53,381 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:48:53] "GET /api/strategies/equityCurve?id=1&_t=1766998133374 HTTP/1.1" 200 - +2025-12-29 16:48:53,689 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:48:53] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998133374 HTTP/1.1" 200 - +2025-12-29 16:48:53,693 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:48:53] "GET /api/strategies/positions?id=1&_t=1766998133378 HTTP/1.1" 200 - +2025-12-29 16:48:56,686 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:48:56] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998136375 HTTP/1.1" 200 - +2025-12-29 16:48:58,399 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:48:58] "GET /api/strategies/positions?id=1&_t=1766998138392 HTTP/1.1" 200 - +2025-12-29 16:48:59,688 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:48:59] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998139374 HTTP/1.1" 200 - +2025-12-29 16:49:02,382 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:02] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998142375 HTTP/1.1" 200 - +2025-12-29 16:49:03,699 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:03] "GET /api/strategies/positions?id=1&_t=1766998143379 HTTP/1.1" 200 - +2025-12-29 16:49:05,380 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:05] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998145374 HTTP/1.1" 200 - +2025-12-29 16:49:08,688 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:08] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998148374 HTTP/1.1" 200 - +2025-12-29 16:49:08,692 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:08] "GET /api/strategies/positions?id=1&_t=1766998148379 HTTP/1.1" 200 - +2025-12-29 16:49:11,383 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:11] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998151374 HTTP/1.1" 200 - +2025-12-29 16:49:13,527 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:13] "GET /api/strategies/positions?id=1&_t=1766998153380 HTTP/1.1" 200 - +2025-12-29 16:49:13,733 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:13] "GET /api/strategies?_t=1766998153726 HTTP/1.1" 200 - +2025-12-29 16:49:13,825 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:13] "GET /api/strategies?_t=1766998153816 HTTP/1.1" 200 - +2025-12-29 16:49:13,877 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:13] "GET /api/strategies?_t=1766998153869 HTTP/1.1" 200 - +2025-12-29 16:49:13,924 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:13] "GET /api/strategies?_t=1766998153915 HTTP/1.1" 200 - +2025-12-29 16:49:14,071 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:14] "GET /api/strategies?_t=1766998154063 HTTP/1.1" 200 - +2025-12-29 16:49:14,137 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:14] "GET /api/strategies?_t=1766998154130 HTTP/1.1" 200 - +2025-12-29 16:49:14,176 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:14] "GET /api/strategies?_t=1766998154169 HTTP/1.1" 200 - +2025-12-29 16:49:14,227 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:14] "GET /api/strategies?_t=1766998154219 HTTP/1.1" 200 - +2025-12-29 16:49:14,270 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:14] "GET /api/strategies?_t=1766998154262 HTTP/1.1" 200 - +2025-12-29 16:49:14,408 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:14] "GET /api/strategies?_t=1766998154401 HTTP/1.1" 200 - +2025-12-29 16:49:14,446 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:14] "GET /api/strategies?_t=1766998154439 HTTP/1.1" 200 - +2025-12-29 16:49:16,529 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:16] "GET /api/strategies/equityCurve?id=9&_t=1766998156511 HTTP/1.1" 200 - +2025-12-29 16:49:16,541 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:16] "GET /api/strategies/equityCurve?id=9&_t=1766998156511 HTTP/1.1" 200 - +2025-12-29 16:49:16,545 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:16] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766998156511 HTTP/1.1" 200 - +2025-12-29 16:49:16,550 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:16] "GET /api/strategies/positions?id=9&_t=1766998156514 HTTP/1.1" 200 - +2025-12-29 16:49:19,822 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:19] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766998159498 HTTP/1.1" 200 - +2025-12-29 16:49:19,947 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:19] "GET /api/strategies/equityCurve?id=2&_t=1766998159625 HTTP/1.1" 200 - +2025-12-29 16:49:19,951 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:19] "GET /api/strategies/equityCurve?id=2&_t=1766998159625 HTTP/1.1" 200 - +2025-12-29 16:49:19,956 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:19] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766998159625 HTTP/1.1" 200 - +2025-12-29 16:49:19,960 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:19] "GET /api/strategies/positions?id=2&_t=1766998159626 HTTP/1.1" 200 - +2025-12-29 16:49:21,594 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:21] "GET /api/strategies/equityCurve?id=1&_t=1766998161586 HTTP/1.1" 200 - +2025-12-29 16:49:21,903 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:21] "GET /api/strategies/equityCurve?id=1&_t=1766998161586 HTTP/1.1" 200 - +2025-12-29 16:49:21,906 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:21] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766998161586 HTTP/1.1" 200 - +2025-12-29 16:49:21,909 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:21] "GET /api/strategies/positions?id=1&_t=1766998161587 HTTP/1.1" 200 - +2025-12-29 16:49:23,588 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:23] "GET /api/strategies/trades?id=1&_t=1766998163275 HTTP/1.1" 200 - +2025-12-29 16:49:24,592 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:24] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998164583 HTTP/1.1" 200 - +2025-12-29 16:49:26,897 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:26] "GET /api/strategies/positions?id=1&_t=1766998166587 HTTP/1.1" 200 - +2025-12-29 16:49:27,589 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:27] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998167581 HTTP/1.1" 200 - +2025-12-29 16:49:30,473 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:30] "GET /api/strategies/equityCurve?id=2&_t=1766998170157 HTTP/1.1" 200 - +2025-12-29 16:49:30,476 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:30] "GET /api/strategies/equityCurve?id=2&_t=1766998170157 HTTP/1.1" 200 - +2025-12-29 16:49:30,479 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:30] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766998170157 HTTP/1.1" 200 - +2025-12-29 16:49:30,484 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:30] "GET /api/strategies/positions?id=2&_t=1766998170159 HTTP/1.1" 200 - +2025-12-29 16:49:30,490 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:30] "GET /api/strategies/trades?id=2&_t=1766998170159 HTTP/1.1" 200 - +2025-12-29 16:49:31,447 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:31] "GET /api/strategies/equityCurve?id=9&_t=1766998171437 HTTP/1.1" 200 - +2025-12-29 16:49:31,760 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:31] "GET /api/strategies/equityCurve?id=9&_t=1766998171437 HTTP/1.1" 200 - +2025-12-29 16:49:31,762 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:31] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766998171437 HTTP/1.1" 200 - +2025-12-29 16:49:31,766 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:31] "GET /api/strategies/positions?id=9&_t=1766998171438 HTTP/1.1" 200 - +2025-12-29 16:49:31,771 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:31] "GET /api/strategies/trades?id=9&_t=1766998171438 HTTP/1.1" 200 - +2025-12-29 16:49:34,745 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:34] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766998174431 HTTP/1.1" 200 - +2025-12-29 16:49:36,446 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:36] "GET /api/strategies/positions?id=9&_t=1766998176439 HTTP/1.1" 200 - +2025-12-29 16:49:37,753 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766998177433 HTTP/1.1" 200 - +2025-12-29 16:49:39,305 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:39] "GET /api/strategies/equityCurve?id=2&_t=1766998179293 HTTP/1.1" 200 - +2025-12-29 16:49:39,620 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:39] "GET /api/strategies/equityCurve?id=2&_t=1766998179293 HTTP/1.1" 200 - +2025-12-29 16:49:39,624 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:39] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766998179293 HTTP/1.1" 200 - +2025-12-29 16:49:39,627 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:39] "GET /api/strategies/positions?id=2&_t=1766998179294 HTTP/1.1" 200 - +2025-12-29 16:49:39,630 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:39] "GET /api/strategies/trades?id=2&_t=1766998179294 HTTP/1.1" 200 - +2025-12-29 16:49:41,326 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:41] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 16:49:41,330 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:41] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 16:49:41,333 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:41] "GET /api/credentials/list?user_id=1&_t=1766998180843 HTTP/1.1" 200 - +2025-12-29 16:49:42,295 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:42] "GET /api/strategies/notifications?id=2&since_id=17&limit=50&_t=1766998182288 HTTP/1.1" 200 - +2025-12-29 16:49:44,611 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:44] "GET /api/strategies/positions?id=2&_t=1766998184293 HTTP/1.1" 200 - +2025-12-29 16:49:45,295 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:45] "GET /api/strategies/notifications?id=2&since_id=17&limit=50&_t=1766998185289 HTTP/1.1" 200 - +2025-12-29 16:49:46,368 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:46] "GET /api/strategies/equityCurve?id=1&_t=1766998186044 HTTP/1.1" 200 - +2025-12-29 16:49:46,373 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:46] "GET /api/strategies/equityCurve?id=1&_t=1766998186044 HTTP/1.1" 200 - +2025-12-29 16:49:46,377 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:46] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766998186044 HTTP/1.1" 200 - +2025-12-29 16:49:46,381 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:46] "GET /api/strategies/positions?id=1&_t=1766998186045 HTTP/1.1" 200 - +2025-12-29 16:49:46,386 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:46] "GET /api/strategies/trades?id=1&_t=1766998186045 HTTP/1.1" 200 - +2025-12-29 16:49:46,985 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:46] "GET /api/strategies/equityCurve?id=9&_t=1766998186974 HTTP/1.1" 200 - +2025-12-29 16:49:47,298 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:47] "GET /api/strategies/equityCurve?id=9&_t=1766998186974 HTTP/1.1" 200 - +2025-12-29 16:49:47,301 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:47] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766998186974 HTTP/1.1" 200 - +2025-12-29 16:49:47,307 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:47] "GET /api/strategies/positions?id=9&_t=1766998186975 HTTP/1.1" 200 - +2025-12-29 16:49:47,310 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:47] "GET /api/strategies/trades?id=9&_t=1766998186975 HTTP/1.1" 200 - +2025-12-29 16:49:50,281 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:50] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766998189960 HTTP/1.1" 200 - +2025-12-29 16:49:51,972 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:51] "GET /api/strategies/positions?id=9&_t=1766998191965 HTTP/1.1" 200 - +2025-12-29 16:49:53,284 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:53] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766998192966 HTTP/1.1" 200 - +2025-12-29 16:49:55,966 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:55] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766998195960 HTTP/1.1" 200 - +2025-12-29 16:49:57,277 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:57] "GET /api/strategies/positions?id=9&_t=1766998196964 HTTP/1.1" 200 - +2025-12-29 16:49:58,968 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:49:58] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766998198960 HTTP/1.1" 200 - +2025-12-29 16:50:02,274 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:02] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766998201960 HTTP/1.1" 200 - +2025-12-29 16:50:02,278 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:02] "GET /api/strategies/positions?id=9&_t=1766998201965 HTTP/1.1" 200 - +2025-12-29 16:50:04,968 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:04] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766998204959 HTTP/1.1" 200 - +2025-12-29 16:50:07,284 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:07] "GET /api/strategies/positions?id=9&_t=1766998206964 HTTP/1.1" 200 - +2025-12-29 16:50:07,965 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:07] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766998207960 HTTP/1.1" 200 - +2025-12-29 16:50:11,279 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:11] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766998210959 HTTP/1.1" 200 - +2025-12-29 16:50:11,972 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:11] "GET /api/strategies/positions?id=9&_t=1766998211964 HTTP/1.1" 200 - +2025-12-29 16:50:14,280 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:14] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766998213960 HTTP/1.1" 200 - +2025-12-29 16:50:16,967 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:16] "GET /api/strategies/equityCurve?id=9&_t=1766998216960 HTTP/1.1" 200 - +2025-12-29 16:50:17,273 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:17] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766998216961 HTTP/1.1" 200 - +2025-12-29 16:50:17,277 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:17] "GET /api/strategies/positions?id=9&_t=1766998216964 HTTP/1.1" 200 - +2025-12-29 16:50:20,281 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:20] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766998219959 HTTP/1.1" 200 - +2025-12-29 16:50:21,975 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:21] "GET /api/strategies/positions?id=9&_t=1766998221965 HTTP/1.1" 200 - +2025-12-29 16:50:23,290 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:23] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766998222961 HTTP/1.1" 200 - +2025-12-29 16:50:25,966 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:25] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766998225960 HTTP/1.1" 200 - +2025-12-29 16:50:27,276 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:27] "GET /api/strategies/positions?id=9&_t=1766998226965 HTTP/1.1" 200 - +2025-12-29 16:50:28,966 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:28] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766998228960 HTTP/1.1" 200 - +2025-12-29 16:50:32,283 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:32] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766998231961 HTTP/1.1" 200 - +2025-12-29 16:50:32,287 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:32] "GET /api/strategies/positions?id=9&_t=1766998231964 HTTP/1.1" 200 - +2025-12-29 16:50:34,967 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:34] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766998234961 HTTP/1.1" 200 - +2025-12-29 16:50:37,278 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:37] "GET /api/strategies/positions?id=9&_t=1766998236965 HTTP/1.1" 200 - +2025-12-29 16:50:37,967 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:37] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766998237960 HTTP/1.1" 200 - +2025-12-29 16:50:40,254 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:40] "GET /api/strategies/equityCurve?id=9&_t=1766998239938 HTTP/1.1" 200 - +2025-12-29 16:50:40,258 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:40] "GET /api/strategies/equityCurve?id=9&_t=1766998239938 HTTP/1.1" 200 - +2025-12-29 16:50:40,261 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:40] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766998239938 HTTP/1.1" 200 - +2025-12-29 16:50:42,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:42] "GET /api/strategies/positions?id=9&_t=1766998241965 HTTP/1.1" 200 - +2025-12-29 16:50:43,243 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:43] "GET /api/strategies/notifications?id=9&since_id=15&limit=50&_t=1766998242924 HTTP/1.1" 200 - +2025-12-29 16:50:45,064 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:45] "GET /api/strategies/equityCurve?id=1&_t=1766998245048 HTTP/1.1" 200 - +2025-12-29 16:50:45,377 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:45] "GET /api/strategies/equityCurve?id=1&_t=1766998245048 HTTP/1.1" 200 - +2025-12-29 16:50:45,380 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:45] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766998245048 HTTP/1.1" 200 - +2025-12-29 16:50:45,383 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:45] "GET /api/strategies/positions?id=1&_t=1766998245052 HTTP/1.1" 200 - +2025-12-29 16:50:45,387 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:45] "GET /api/strategies/trades?id=1&_t=1766998245052 HTTP/1.1" 200 - +2025-12-29 16:50:46,101 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:46] "GET /api/strategies/equityCurve?id=1&_t=1766998245783 HTTP/1.1" 200 - +2025-12-29 16:50:46,106 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:46] "GET /api/strategies/equityCurve?id=1&_t=1766998245783 HTTP/1.1" 200 - +2025-12-29 16:50:46,110 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:46] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766998245783 HTTP/1.1" 200 - +2025-12-29 16:50:46,728 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:46] "GET /api/strategies/equityCurve?id=2&_t=1766998246710 HTTP/1.1" 200 - +2025-12-29 16:50:48,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:48] "GET /api/strategies/equityCurve?id=2&_t=1766998246710 HTTP/1.1" 200 - +2025-12-29 16:50:48,061 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:48] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766998246710 HTTP/1.1" 200 - +2025-12-29 16:50:48,065 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:48] "GET /api/strategies/positions?id=2&_t=1766998246717 HTTP/1.1" 200 - +2025-12-29 16:50:48,069 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:48] "GET /api/strategies/trades?id=2&_t=1766998246717 HTTP/1.1" 200 - +2025-12-29 16:50:49,700 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:49] "GET /api/strategies/notifications?id=2&since_id=17&limit=50&_t=1766998249694 HTTP/1.1" 200 - +2025-12-29 16:50:51,706 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:51] "GET /api/strategies/positions?id=2&_t=1766998251698 HTTP/1.1" 200 - +2025-12-29 16:50:53,011 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:53] "GET /api/strategies/notifications?id=2&since_id=17&limit=50&_t=1766998252694 HTTP/1.1" 200 - +2025-12-29 16:50:55,699 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:55] "GET /api/strategies/notifications?id=2&since_id=17&limit=50&_t=1766998255693 HTTP/1.1" 200 - +2025-12-29 16:50:57,204 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:57] "GET /api/strategies/positions?id=2&_t=1766998256698 HTTP/1.1" 200 - +2025-12-29 16:50:58,700 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:50:58] "GET /api/strategies/notifications?id=2&since_id=17&limit=50&_t=1766998258694 HTTP/1.1" 200 - +2025-12-29 16:51:01,701 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:01] "GET /api/strategies/notifications?id=2&since_id=17&limit=50&_t=1766998261694 HTTP/1.1" 200 - +2025-12-29 16:51:01,707 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:01] "GET /api/strategies/positions?id=2&_t=1766998261698 HTTP/1.1" 200 - +2025-12-29 16:51:05,003 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:05] "GET /api/strategies/notifications?id=2&since_id=17&limit=50&_t=1766998264694 HTTP/1.1" 200 - +2025-12-29 16:51:06,706 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:06] "GET /api/strategies/positions?id=2&_t=1766998266698 HTTP/1.1" 200 - +2025-12-29 16:51:07,701 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:07] "GET /api/strategies/notifications?id=2&since_id=17&limit=50&_t=1766998267693 HTTP/1.1" 200 - +2025-12-29 16:51:11,003 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:11] "GET /api/strategies/notifications?id=2&since_id=17&limit=50&_t=1766998270694 HTTP/1.1" 200 - +2025-12-29 16:51:11,707 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:11] "GET /api/strategies/positions?id=2&_t=1766998271699 HTTP/1.1" 200 - +2025-12-29 16:51:14,009 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:14] "GET /api/strategies/notifications?id=2&since_id=17&limit=50&_t=1766998273694 HTTP/1.1" 200 - +2025-12-29 16:51:14,251 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:14] "GET /api/market/types?_t=1766998273930 HTTP/1.1" 200 - +2025-12-29 16:51:14,279 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:14] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 16:51:14,285 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:14] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 16:51:14,299 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-29 16:51:15,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 16:51:17,159 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 16:51:17,308 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 16:51:17,839 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 16:51:17,840 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 16:51:19,456 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 16:51:19,457 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 16:51:19,844 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 16:51:19,844 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 16:51:20,842 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 16:51:20,843 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 16:51:21,759 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:21] "GET /api/strategies?_t=1766998281428 HTTP/1.1" 200 - +2025-12-29 16:51:22,895 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:22] "GET /api/strategies/equityCurve?id=9&_t=1766998282884 HTTP/1.1" 200 - +2025-12-29 16:51:23,200 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:23] "GET /api/strategies/equityCurve?id=9&_t=1766998282884 HTTP/1.1" 200 - +2025-12-29 16:51:23,204 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:23] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1766998282884 HTTP/1.1" 200 - +2025-12-29 16:51:23,210 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:23] "GET /api/strategies/positions?id=9&_t=1766998282885 HTTP/1.1" 200 - +2025-12-29 16:51:23,832 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:23] "GET /api/strategies/equityCurve?id=2&_t=1766998283514 HTTP/1.1" 200 - +2025-12-29 16:51:23,836 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:23] "GET /api/strategies/equityCurve?id=2&_t=1766998283514 HTTP/1.1" 200 - +2025-12-29 16:51:23,841 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:23] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766998283514 HTTP/1.1" 200 - +2025-12-29 16:51:23,848 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:23] "GET /api/strategies/positions?id=2&_t=1766998283516 HTTP/1.1" 200 - +2025-12-29 16:51:25,369 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:25] "GET /api/strategies/equityCurve?id=1&_t=1766998285361 HTTP/1.1" 200 - +2025-12-29 16:51:25,680 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:25] "GET /api/strategies/equityCurve?id=1&_t=1766998285361 HTTP/1.1" 200 - +2025-12-29 16:51:25,683 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:25] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766998285361 HTTP/1.1" 200 - +2025-12-29 16:51:25,687 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:25] "GET /api/strategies/positions?id=1&_t=1766998285362 HTTP/1.1" 200 - +2025-12-29 16:51:28,676 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:28] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998288357 HTTP/1.1" 200 - +2025-12-29 16:51:30,391 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:30] "GET /api/strategies/positions?id=1&_t=1766998290361 HTTP/1.1" 200 - +2025-12-29 16:51:31,684 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:31] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998291357 HTTP/1.1" 200 - +2025-12-29 16:51:35,486 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:35] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998294357 HTTP/1.1" 200 - +2025-12-29 16:51:35,678 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:35] "GET /api/strategies/positions?id=1&_t=1766998295361 HTTP/1.1" 200 - +2025-12-29 16:51:37,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:37] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998297356 HTTP/1.1" 200 - +2025-12-29 16:51:37,388 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:37] "GET /api/strategies/trades?id=1&_t=1766998297381 HTTP/1.1" 200 - +2025-12-29 16:51:40,678 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:40] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998300357 HTTP/1.1" 200 - +2025-12-29 16:51:40,681 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:40] "GET /api/strategies/positions?id=1&_t=1766998300361 HTTP/1.1" 200 - +2025-12-29 16:51:43,364 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:43] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998303356 HTTP/1.1" 200 - +2025-12-29 16:51:45,683 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:45] "GET /api/strategies/positions?id=1&_t=1766998305361 HTTP/1.1" 200 - +2025-12-29 16:51:46,364 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:46] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998306357 HTTP/1.1" 200 - +2025-12-29 16:51:49,678 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:49] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998309357 HTTP/1.1" 200 - +2025-12-29 16:51:50,367 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:50] "GET /api/strategies/positions?id=1&_t=1766998310361 HTTP/1.1" 200 - +2025-12-29 16:51:52,676 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:52] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998312356 HTTP/1.1" 200 - +2025-12-29 16:51:55,364 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:55] "GET /api/strategies/equityCurve?id=1&_t=1766998315357 HTTP/1.1" 200 - +2025-12-29 16:51:55,666 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:55] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998315358 HTTP/1.1" 200 - +2025-12-29 16:51:55,672 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:55] "GET /api/strategies/positions?id=1&_t=1766998315362 HTTP/1.1" 200 - +2025-12-29 16:51:58,679 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:51:58] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998318358 HTTP/1.1" 200 - +2025-12-29 16:52:00,369 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:52:00] "GET /api/strategies/positions?id=1&_t=1766998320362 HTTP/1.1" 200 - +2025-12-29 16:52:01,675 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:52:01] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998321357 HTTP/1.1" 200 - +2025-12-29 16:52:04,364 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:52:04] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998324358 HTTP/1.1" 200 - +2025-12-29 16:52:05,671 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:52:05] "GET /api/strategies/positions?id=1&_t=1766998325362 HTTP/1.1" 200 - +2025-12-29 16:52:07,364 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:52:07] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998327358 HTTP/1.1" 200 - +2025-12-29 16:52:10,668 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:52:10] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998330357 HTTP/1.1" 200 - +2025-12-29 16:52:10,674 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:52:10] "GET /api/strategies/positions?id=1&_t=1766998330362 HTTP/1.1" 200 - +2025-12-29 16:52:13,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:52:13] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998333357 HTTP/1.1" 200 - +2025-12-29 16:52:15,680 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:52:15] "GET /api/strategies/positions?id=1&_t=1766998335362 HTTP/1.1" 200 - +2025-12-29 16:52:16,379 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:52:16] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998336372 HTTP/1.1" 200 - +2025-12-29 16:52:19,666 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:52:19] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998339357 HTTP/1.1" 200 - +2025-12-29 16:52:20,369 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:52:20] "GET /api/strategies/positions?id=1&_t=1766998340361 HTTP/1.1" 200 - +2025-12-29 16:52:22,677 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:52:22] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998342360 HTTP/1.1" 200 - +2025-12-29 16:52:25,365 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:52:25] "GET /api/strategies/equityCurve?id=1&_t=1766998345357 HTTP/1.1" 200 - +2025-12-29 16:52:25,679 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:52:25] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998345357 HTTP/1.1" 200 - +2025-12-29 16:52:25,682 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:52:25] "GET /api/strategies/positions?id=1&_t=1766998345362 HTTP/1.1" 200 - +2025-12-29 16:52:28,666 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:52:28] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998348357 HTTP/1.1" 200 - +2025-12-29 16:52:30,368 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:52:30] "GET /api/strategies/positions?id=1&_t=1766998350362 HTTP/1.1" 200 - +2025-12-29 16:52:31,677 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:52:31] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998351357 HTTP/1.1" 200 - +2025-12-29 16:52:34,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:52:34] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998354357 HTTP/1.1" 200 - +2025-12-29 16:52:35,690 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:52:35] "GET /api/strategies/positions?id=1&_t=1766998355373 HTTP/1.1" 200 - +2025-12-29 16:52:37,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:52:37] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998357357 HTTP/1.1" 200 - +2025-12-29 16:52:40,680 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:52:40] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998360358 HTTP/1.1" 200 - +2025-12-29 16:52:40,684 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:52:40] "GET /api/strategies/positions?id=1&_t=1766998360363 HTTP/1.1" 200 - +2025-12-29 16:52:43,364 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:52:43] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998363357 HTTP/1.1" 200 - +2025-12-29 16:52:45,679 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:52:45] "GET /api/strategies/positions?id=1&_t=1766998365361 HTTP/1.1" 200 - +2025-12-29 16:52:46,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:52:46] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998366357 HTTP/1.1" 200 - +2025-12-29 16:52:49,675 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:52:49] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998369357 HTTP/1.1" 200 - +2025-12-29 16:52:50,370 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:52:50] "GET /api/strategies/positions?id=1&_t=1766998370363 HTTP/1.1" 200 - +2025-12-29 16:52:52,681 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:52:52] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998372357 HTTP/1.1" 200 - +2025-12-29 16:52:55,365 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:52:55] "GET /api/strategies/equityCurve?id=1&_t=1766998375357 HTTP/1.1" 200 - +2025-12-29 16:52:55,679 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:52:55] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998375357 HTTP/1.1" 200 - +2025-12-29 16:52:55,683 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:52:55] "GET /api/strategies/positions?id=1&_t=1766998375362 HTTP/1.1" 200 - +2025-12-29 16:52:58,668 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:52:58] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998378356 HTTP/1.1" 200 - +2025-12-29 16:53:00,369 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:53:00] "GET /api/strategies/positions?id=1&_t=1766998380362 HTTP/1.1" 200 - +2025-12-29 16:53:01,680 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:53:01] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998381357 HTTP/1.1" 200 - +2025-12-29 16:53:04,199 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:53:04] "GET /api/strategies?_t=1766998384191 HTTP/1.1" 200 - +2025-12-29 16:53:08,268 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:53:08] "GET /api/strategies/equityCurve?id=1&_t=1766998388255 HTTP/1.1" 200 - +2025-12-29 16:53:08,579 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:53:08] "GET /api/strategies/equityCurve?id=1&_t=1766998388255 HTTP/1.1" 200 - +2025-12-29 16:53:08,582 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:53:08] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766998388255 HTTP/1.1" 200 - +2025-12-29 16:53:08,585 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:53:08] "GET /api/strategies/positions?id=1&_t=1766998388257 HTTP/1.1" 200 - +2025-12-29 16:53:09,565 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:53:09] "GET /api/strategies/trades?id=1&_t=1766998389246 HTTP/1.1" 200 - +2025-12-29 16:53:11,255 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:53:11] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998391249 HTTP/1.1" 200 - +2025-12-29 16:53:13,564 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:53:13] "GET /api/strategies/positions?id=1&_t=1766998393253 HTTP/1.1" 200 - +2025-12-29 16:53:14,255 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:53:14] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998394249 HTTP/1.1" 200 - +2025-12-29 16:53:17,571 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:53:17] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998397250 HTTP/1.1" 200 - +2025-12-29 16:53:18,261 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:53:18] "GET /api/strategies/positions?id=1&_t=1766998398253 HTTP/1.1" 200 - +2025-12-29 16:53:20,569 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:53:20] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998400249 HTTP/1.1" 200 - +2025-12-29 16:53:23,255 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:53:23] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998403249 HTTP/1.1" 200 - +2025-12-29 16:53:23,565 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:53:23] "GET /api/strategies/positions?id=1&_t=1766998403253 HTTP/1.1" 200 - +2025-12-29 16:53:27,622 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:53:27] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998406248 HTTP/1.1" 200 - +2025-12-29 16:53:27,672 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:53:27] "GET /api/strategies?_t=1766998407663 HTTP/1.1" 200 - +2025-12-29 16:53:29,383 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:53:29] "GET /api/strategies/equityCurve?id=1&_t=1766998409373 HTTP/1.1" 200 - +2025-12-29 16:53:29,697 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:53:29] "GET /api/strategies/equityCurve?id=1&_t=1766998409373 HTTP/1.1" 200 - +2025-12-29 16:53:29,700 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:53:29] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766998409373 HTTP/1.1" 200 - +2025-12-29 16:53:29,703 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:53:29] "GET /api/strategies/positions?id=1&_t=1766998409376 HTTP/1.1" 200 - +2025-12-29 16:53:30,919 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:53:30] "GET /api/strategies/trades?id=1&_t=1766998410603 HTTP/1.1" 200 - +2025-12-29 16:53:32,375 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:53:32] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998412368 HTTP/1.1" 200 - +2025-12-29 16:53:34,681 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:53:34] "GET /api/strategies/positions?id=1&_t=1766998414371 HTTP/1.1" 200 - +2025-12-29 16:53:35,380 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:53:35] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998415368 HTTP/1.1" 200 - +2025-12-29 16:53:38,680 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:53:38] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998418368 HTTP/1.1" 200 - +2025-12-29 16:53:39,380 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:53:39] "GET /api/strategies/positions?id=1&_t=1766998419372 HTTP/1.1" 200 - +2025-12-29 16:53:41,776 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:53:41] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998421368 HTTP/1.1" 200 - +2025-12-29 16:53:41,970 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:53:41] "GET /api/strategies?_t=1766998421961 HTTP/1.1" 200 - +2025-12-29 16:54:04,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:54:04] "GET /api/strategies/equityCurve?id=1&_t=1766998444040 HTTP/1.1" 200 - +2025-12-29 16:54:04,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:54:04] "GET /api/strategies/equityCurve?id=1&_t=1766998444040 HTTP/1.1" 200 - +2025-12-29 16:54:04,361 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:54:04] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766998444040 HTTP/1.1" 200 - +2025-12-29 16:54:04,365 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:54:04] "GET /api/strategies/positions?id=1&_t=1766998444042 HTTP/1.1" 200 - +2025-12-29 16:54:05,569 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:54:05] "GET /api/strategies/trades?id=1&_t=1766998445249 HTTP/1.1" 200 - +2025-12-29 16:54:07,039 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:54:07] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998447032 HTTP/1.1" 200 - +2025-12-29 16:54:09,360 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:54:09] "GET /api/strategies/positions?id=1&_t=1766998449038 HTTP/1.1" 200 - +2025-12-29 16:54:10,038 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:54:10] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998450032 HTTP/1.1" 200 - +2025-12-29 16:54:13,342 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:54:13] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998453032 HTTP/1.1" 200 - +2025-12-29 16:54:14,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:54:14] "GET /api/strategies/positions?id=1&_t=1766998454039 HTTP/1.1" 200 - +2025-12-29 16:54:16,353 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:54:16] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998456032 HTTP/1.1" 200 - +2025-12-29 16:54:19,038 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:54:19] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998459032 HTTP/1.1" 200 - +2025-12-29 16:54:19,354 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:54:19] "GET /api/strategies/positions?id=1&_t=1766998459039 HTTP/1.1" 200 - +2025-12-29 16:54:22,039 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:54:22] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998462032 HTTP/1.1" 200 - +2025-12-29 16:54:24,361 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:54:24] "GET /api/strategies/positions?id=1&_t=1766998464039 HTTP/1.1" 200 - +2025-12-29 16:54:25,042 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:54:25] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998465033 HTTP/1.1" 200 - +2025-12-29 16:54:28,351 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:54:28] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998468032 HTTP/1.1" 200 - +2025-12-29 16:54:29,045 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:54:29] "GET /api/strategies/positions?id=1&_t=1766998469038 HTTP/1.1" 200 - +2025-12-29 16:54:31,342 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:54:31] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998471032 HTTP/1.1" 200 - +2025-12-29 16:54:34,039 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:54:34] "GET /api/strategies/equityCurve?id=1&_t=1766998474032 HTTP/1.1" 200 - +2025-12-29 16:54:34,353 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:54:34] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998474033 HTTP/1.1" 200 - +2025-12-29 16:54:34,356 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:54:34] "GET /api/strategies/positions?id=1&_t=1766998474038 HTTP/1.1" 200 - +2025-12-29 16:54:37,339 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:54:37] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998477032 HTTP/1.1" 200 - +2025-12-29 16:54:39,045 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:54:39] "GET /api/strategies/positions?id=1&_t=1766998479038 HTTP/1.1" 200 - +2025-12-29 16:54:40,354 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:54:40] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998480033 HTTP/1.1" 200 - +2025-12-29 16:54:43,038 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:54:43] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998483031 HTTP/1.1" 200 - +2025-12-29 16:54:44,356 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:54:44] "GET /api/strategies/positions?id=1&_t=1766998484039 HTTP/1.1" 200 - +2025-12-29 16:54:46,038 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:54:46] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998486031 HTTP/1.1" 200 - +2025-12-29 16:54:49,353 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:54:49] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998489032 HTTP/1.1" 200 - +2025-12-29 16:54:49,356 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:54:49] "GET /api/strategies/positions?id=1&_t=1766998489039 HTTP/1.1" 200 - +2025-12-29 16:54:52,038 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:54:52] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998492032 HTTP/1.1" 200 - +2025-12-29 16:54:54,359 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:54:54] "GET /api/strategies/positions?id=1&_t=1766998494039 HTTP/1.1" 200 - +2025-12-29 16:54:55,037 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:54:55] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998495032 HTTP/1.1" 200 - +2025-12-29 16:54:58,341 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:54:58] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998498032 HTTP/1.1" 200 - +2025-12-29 16:54:59,045 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:54:59] "GET /api/strategies/positions?id=1&_t=1766998499039 HTTP/1.1" 200 - +2025-12-29 16:55:01,353 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:55:01] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998501032 HTTP/1.1" 200 - +2025-12-29 16:55:04,040 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:55:04] "GET /api/strategies/equityCurve?id=1&_t=1766998504033 HTTP/1.1" 200 - +2025-12-29 16:55:04,347 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:55:04] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998504033 HTTP/1.1" 200 - +2025-12-29 16:55:04,351 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:55:04] "GET /api/strategies/positions?id=1&_t=1766998504038 HTTP/1.1" 200 - +2025-12-29 16:55:07,359 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:55:07] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998507043 HTTP/1.1" 200 - +2025-12-29 16:55:09,045 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:55:09] "GET /api/strategies/positions?id=1&_t=1766998509038 HTTP/1.1" 200 - +2025-12-29 16:55:10,351 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:55:10] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998510032 HTTP/1.1" 200 - +2025-12-29 16:55:13,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:55:13] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998513044 HTTP/1.1" 200 - +2025-12-29 16:55:14,353 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:55:14] "GET /api/strategies/positions?id=1&_t=1766998514040 HTTP/1.1" 200 - +2025-12-29 16:55:16,038 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:55:16] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998516032 HTTP/1.1" 200 - +2025-12-29 16:55:19,354 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:55:19] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998519033 HTTP/1.1" 200 - +2025-12-29 16:55:19,357 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:55:19] "GET /api/strategies/positions?id=1&_t=1766998519038 HTTP/1.1" 200 - +2025-12-29 16:55:22,038 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:55:22] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998522032 HTTP/1.1" 200 - +2025-12-29 16:55:24,356 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:55:24] "GET /api/strategies/positions?id=1&_t=1766998524041 HTTP/1.1" 200 - +2025-12-29 16:55:25,040 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:55:25] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998525032 HTTP/1.1" 200 - +2025-12-29 16:55:28,354 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:55:28] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998528033 HTTP/1.1" 200 - +2025-12-29 16:55:29,045 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:55:29] "GET /api/strategies/positions?id=1&_t=1766998529038 HTTP/1.1" 200 - +2025-12-29 16:55:31,344 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:55:31] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998531031 HTTP/1.1" 200 - +2025-12-29 16:55:34,039 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:55:34] "GET /api/strategies/equityCurve?id=1&_t=1766998534032 HTTP/1.1" 200 - +2025-12-29 16:55:34,351 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:55:34] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998534032 HTTP/1.1" 200 - +2025-12-29 16:55:34,354 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:55:34] "GET /api/strategies/positions?id=1&_t=1766998534038 HTTP/1.1" 200 - +2025-12-29 16:55:37,347 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:55:37] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998537033 HTTP/1.1" 200 - +2025-12-29 16:55:39,045 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:55:39] "GET /api/strategies/positions?id=1&_t=1766998539038 HTTP/1.1" 200 - +2025-12-29 16:55:40,348 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:55:40] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998540035 HTTP/1.1" 200 - +2025-12-29 16:55:43,038 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:55:43] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998543032 HTTP/1.1" 200 - +2025-12-29 16:55:44,348 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:55:44] "GET /api/strategies/positions?id=1&_t=1766998544039 HTTP/1.1" 200 - +2025-12-29 16:55:46,039 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:55:46] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998546033 HTTP/1.1" 200 - +2025-12-29 16:55:49,350 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:55:49] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998549032 HTTP/1.1" 200 - +2025-12-29 16:55:49,354 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:55:49] "GET /api/strategies/positions?id=1&_t=1766998549038 HTTP/1.1" 200 - +2025-12-29 16:55:52,038 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:55:52] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998552032 HTTP/1.1" 200 - +2025-12-29 16:55:54,355 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:55:54] "GET /api/strategies/positions?id=1&_t=1766998554039 HTTP/1.1" 200 - +2025-12-29 16:55:55,038 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:55:55] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998555032 HTTP/1.1" 200 - +2025-12-29 16:55:57,008 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:55:57] "GET /api/strategies?_t=1766998556999 HTTP/1.1" 200 - +2025-12-29 16:56:14,371 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:56:14] "GET /api/strategies?_t=1766998574363 HTTP/1.1" 200 - +2025-12-29 16:56:26,729 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:56:26] "GET /api/strategies?_t=1766998586722 HTTP/1.1" 200 - +2025-12-29 16:56:57,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:56:57] "GET /api/strategies?_t=1766998617356 HTTP/1.1" 200 - +2025-12-29 16:57:16,678 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:57:16] "GET /api/strategies?_t=1766998636668 HTTP/1.1" 200 - +2025-12-29 16:57:43,410 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:57:43] "GET /api/strategies?_t=1766998663404 HTTP/1.1" 200 - +2025-12-29 16:57:59,622 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:57:59] "GET /api/strategies?_t=1766998679614 HTTP/1.1" 200 - +2025-12-29 16:58:07,038 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:07] "GET /api/strategies/equityCurve?id=1&_t=1766998687020 HTTP/1.1" 200 - +2025-12-29 16:58:07,045 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:07] "GET /api/strategies/equityCurve?id=1&_t=1766998687020 HTTP/1.1" 200 - +2025-12-29 16:58:07,346 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:07] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766998687020 HTTP/1.1" 200 - +2025-12-29 16:58:07,349 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:07] "GET /api/strategies/positions?id=1&_t=1766998687024 HTTP/1.1" 200 - +2025-12-29 16:58:08,296 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:08] "GET /api/strategies/trades?id=1&_t=1766998687984 HTTP/1.1" 200 - +2025-12-29 16:58:10,011 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:10] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998690006 HTTP/1.1" 200 - +2025-12-29 16:58:12,321 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:12] "GET /api/strategies/positions?id=1&_t=1766998692012 HTTP/1.1" 200 - +2025-12-29 16:58:13,014 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:13] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998693005 HTTP/1.1" 200 - +2025-12-29 16:58:13,979 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:13] "GET /api/strategies/equityCurve?id=2&_t=1766998693656 HTTP/1.1" 200 - +2025-12-29 16:58:13,983 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:13] "GET /api/strategies/equityCurve?id=2&_t=1766998693656 HTTP/1.1" 200 - +2025-12-29 16:58:13,987 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:13] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1766998693656 HTTP/1.1" 200 - +2025-12-29 16:58:13,991 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:13] "GET /api/strategies/positions?id=2&_t=1766998693657 HTTP/1.1" 200 - +2025-12-29 16:58:13,996 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:13] "GET /api/strategies/trades?id=2&_t=1766998693657 HTTP/1.1" 200 - +2025-12-29 16:58:14,578 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:14] "GET /api/strategies/equityCurve?id=1&_t=1766998694564 HTTP/1.1" 200 - +2025-12-29 16:58:14,889 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:14] "GET /api/strategies/equityCurve?id=1&_t=1766998694564 HTTP/1.1" 200 - +2025-12-29 16:58:14,892 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:14] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1766998694564 HTTP/1.1" 200 - +2025-12-29 16:58:14,895 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:14] "GET /api/strategies/trades?id=1&_t=1766998694565 HTTP/1.1" 200 - +2025-12-29 16:58:14,899 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:14] "GET /api/strategies/positions?id=1&_t=1766998694565 HTTP/1.1" 200 - +2025-12-29 16:58:17,878 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:17] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998697560 HTTP/1.1" 200 - +2025-12-29 16:58:19,574 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:19] "GET /api/strategies/positions?id=1&_t=1766998699564 HTTP/1.1" 200 - +2025-12-29 16:58:20,868 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:20] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998700560 HTTP/1.1" 200 - +2025-12-29 16:58:23,565 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:23] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998703559 HTTP/1.1" 200 - +2025-12-29 16:58:24,881 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:24] "GET /api/strategies/positions?id=1&_t=1766998704564 HTTP/1.1" 200 - +2025-12-29 16:58:26,567 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:26] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998706560 HTTP/1.1" 200 - +2025-12-29 16:58:29,888 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:29] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998709567 HTTP/1.1" 200 - +2025-12-29 16:58:29,892 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:29] "GET /api/strategies/positions?id=1&_t=1766998709568 HTTP/1.1" 200 - +2025-12-29 16:58:32,565 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:32] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998712559 HTTP/1.1" 200 - +2025-12-29 16:58:34,883 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:34] "GET /api/strategies/positions?id=1&_t=1766998714565 HTTP/1.1" 200 - +2025-12-29 16:58:35,567 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:35] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998715561 HTTP/1.1" 200 - +2025-12-29 16:58:38,875 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:38] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998718559 HTTP/1.1" 200 - +2025-12-29 16:58:39,572 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:39] "GET /api/strategies/positions?id=1&_t=1766998719565 HTTP/1.1" 200 - +2025-12-29 16:58:41,866 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:41] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998721559 HTTP/1.1" 200 - +2025-12-29 16:58:44,567 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:44] "GET /api/strategies/equityCurve?id=1&_t=1766998724559 HTTP/1.1" 200 - +2025-12-29 16:58:44,873 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:44] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998724560 HTTP/1.1" 200 - +2025-12-29 16:58:44,876 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:44] "GET /api/strategies/positions?id=1&_t=1766998724565 HTTP/1.1" 200 - +2025-12-29 16:58:47,877 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:47] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998727560 HTTP/1.1" 200 - +2025-12-29 16:58:49,573 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:49] "GET /api/strategies/positions?id=1&_t=1766998729564 HTTP/1.1" 200 - +2025-12-29 16:58:50,867 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:50] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998730560 HTTP/1.1" 200 - +2025-12-29 16:58:53,573 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:53] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998733566 HTTP/1.1" 200 - +2025-12-29 16:58:54,885 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:54] "GET /api/strategies/positions?id=1&_t=1766998734565 HTTP/1.1" 200 - +2025-12-29 16:58:56,576 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:56] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998736568 HTTP/1.1" 200 - +2025-12-29 16:58:59,889 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:59] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998739569 HTTP/1.1" 200 - +2025-12-29 16:58:59,893 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:58:59] "GET /api/strategies/positions?id=1&_t=1766998739569 HTTP/1.1" 200 - +2025-12-29 16:59:02,577 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:59:02] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998742568 HTTP/1.1" 200 - +2025-12-29 16:59:04,874 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:59:04] "GET /api/strategies/positions?id=1&_t=1766998744564 HTTP/1.1" 200 - +2025-12-29 16:59:05,565 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:59:05] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998745559 HTTP/1.1" 200 - +2025-12-29 16:59:08,878 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:59:08] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998748559 HTTP/1.1" 200 - +2025-12-29 16:59:09,571 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:59:09] "GET /api/strategies/positions?id=1&_t=1766998749564 HTTP/1.1" 200 - +2025-12-29 16:59:11,875 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:59:11] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998751559 HTTP/1.1" 200 - +2025-12-29 16:59:14,566 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:59:14] "GET /api/strategies/equityCurve?id=1&_t=1766998754559 HTTP/1.1" 200 - +2025-12-29 16:59:14,875 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:59:14] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998754559 HTTP/1.1" 200 - +2025-12-29 16:59:14,878 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:59:14] "GET /api/strategies/positions?id=1&_t=1766998754564 HTTP/1.1" 200 - +2025-12-29 16:59:17,881 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:59:17] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998757560 HTTP/1.1" 200 - +2025-12-29 16:59:19,573 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:59:19] "GET /api/strategies/positions?id=1&_t=1766998759565 HTTP/1.1" 200 - +2025-12-29 16:59:20,880 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:59:20] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998760559 HTTP/1.1" 200 - +2025-12-29 16:59:23,565 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:59:23] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998763560 HTTP/1.1" 200 - +2025-12-29 16:59:24,876 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:59:24] "GET /api/strategies/positions?id=1&_t=1766998764565 HTTP/1.1" 200 - +2025-12-29 16:59:26,565 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:59:26] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998766559 HTTP/1.1" 200 - +2025-12-29 16:59:29,866 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:59:29] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998769559 HTTP/1.1" 200 - +2025-12-29 16:59:29,872 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:59:29] "GET /api/strategies/positions?id=1&_t=1766998769565 HTTP/1.1" 200 - +2025-12-29 16:59:32,571 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:59:32] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998772561 HTTP/1.1" 200 - +2025-12-29 16:59:34,884 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:59:34] "GET /api/strategies/positions?id=1&_t=1766998774564 HTTP/1.1" 200 - +2025-12-29 16:59:35,565 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:59:35] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998775559 HTTP/1.1" 200 - +2025-12-29 16:59:38,877 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:59:38] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998778559 HTTP/1.1" 200 - +2025-12-29 16:59:39,573 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:59:39] "GET /api/strategies/positions?id=1&_t=1766998779565 HTTP/1.1" 200 - +2025-12-29 16:59:41,870 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:59:41] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998781559 HTTP/1.1" 200 - +2025-12-29 16:59:44,567 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:59:44] "GET /api/strategies/equityCurve?id=1&_t=1766998784560 HTTP/1.1" 200 - +2025-12-29 16:59:44,880 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:59:44] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998784560 HTTP/1.1" 200 - +2025-12-29 16:59:44,884 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:59:44] "GET /api/strategies/positions?id=1&_t=1766998784565 HTTP/1.1" 200 - +2025-12-29 16:59:47,867 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:59:47] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998787559 HTTP/1.1" 200 - +2025-12-29 16:59:49,572 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:59:49] "GET /api/strategies/positions?id=1&_t=1766998789564 HTTP/1.1" 200 - +2025-12-29 16:59:50,878 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:59:50] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998790559 HTTP/1.1" 200 - +2025-12-29 16:59:53,567 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:59:53] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998793561 HTTP/1.1" 200 - +2025-12-29 16:59:54,887 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:59:54] "GET /api/strategies/positions?id=1&_t=1766998794564 HTTP/1.1" 200 - +2025-12-29 16:59:56,567 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:59:56] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998796561 HTTP/1.1" 200 - +2025-12-29 16:59:59,880 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:59:59] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998799560 HTTP/1.1" 200 - +2025-12-29 16:59:59,883 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 16:59:59] "GET /api/strategies/positions?id=1&_t=1766998799564 HTTP/1.1" 200 - +2025-12-29 17:00:02,567 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:00:02] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998802561 HTTP/1.1" 200 - +2025-12-29 17:00:04,886 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:00:04] "GET /api/strategies/positions?id=1&_t=1766998804565 HTTP/1.1" 200 - +2025-12-29 17:00:05,566 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:00:05] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998805560 HTTP/1.1" 200 - +2025-12-29 17:00:08,874 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:00:08] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998808559 HTTP/1.1" 200 - +2025-12-29 17:00:09,571 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:00:09] "GET /api/strategies/positions?id=1&_t=1766998809565 HTTP/1.1" 200 - +2025-12-29 17:00:11,878 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:00:11] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998811559 HTTP/1.1" 200 - +2025-12-29 17:00:14,567 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:00:14] "GET /api/strategies/equityCurve?id=1&_t=1766998814560 HTTP/1.1" 200 - +2025-12-29 17:00:14,868 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:00:14] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998814560 HTTP/1.1" 200 - +2025-12-29 17:00:14,874 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:00:14] "GET /api/strategies/positions?id=1&_t=1766998814565 HTTP/1.1" 200 - +2025-12-29 17:00:17,871 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:00:17] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998817559 HTTP/1.1" 200 - +2025-12-29 17:00:19,570 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:00:19] "GET /api/strategies/positions?id=1&_t=1766998819564 HTTP/1.1" 200 - +2025-12-29 17:00:20,868 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:00:20] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998820560 HTTP/1.1" 200 - +2025-12-29 17:00:23,565 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:00:23] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998823559 HTTP/1.1" 200 - +2025-12-29 17:00:24,881 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:00:24] "GET /api/strategies/positions?id=1&_t=1766998824564 HTTP/1.1" 200 - +2025-12-29 17:00:26,570 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:00:26] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998826564 HTTP/1.1" 200 - +2025-12-29 17:00:29,869 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:00:29] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998829560 HTTP/1.1" 200 - +2025-12-29 17:00:29,875 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:00:29] "GET /api/strategies/positions?id=1&_t=1766998829564 HTTP/1.1" 200 - +2025-12-29 17:00:32,566 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:00:32] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998832560 HTTP/1.1" 200 - +2025-12-29 17:00:34,873 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:00:34] "GET /api/strategies/positions?id=1&_t=1766998834564 HTTP/1.1" 200 - +2025-12-29 17:00:35,567 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:00:35] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998835561 HTTP/1.1" 200 - +2025-12-29 17:00:38,872 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:00:38] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998838560 HTTP/1.1" 200 - +2025-12-29 17:00:39,571 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:00:39] "GET /api/strategies/positions?id=1&_t=1766998839564 HTTP/1.1" 200 - +2025-12-29 17:00:41,879 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:00:41] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998841559 HTTP/1.1" 200 - +2025-12-29 17:00:44,566 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:00:44] "GET /api/strategies/equityCurve?id=1&_t=1766998844559 HTTP/1.1" 200 - +2025-12-29 17:00:44,880 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:00:44] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998844559 HTTP/1.1" 200 - +2025-12-29 17:00:44,883 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:00:44] "GET /api/strategies/positions?id=1&_t=1766998844564 HTTP/1.1" 200 - +2025-12-29 17:00:47,874 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:00:47] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998847559 HTTP/1.1" 200 - +2025-12-29 17:00:49,571 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:00:49] "GET /api/strategies/positions?id=1&_t=1766998849564 HTTP/1.1" 200 - +2025-12-29 17:00:50,878 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:00:50] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998850560 HTTP/1.1" 200 - +2025-12-29 17:00:53,566 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:00:53] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998853560 HTTP/1.1" 200 - +2025-12-29 17:00:54,881 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:00:54] "GET /api/strategies/positions?id=1&_t=1766998854564 HTTP/1.1" 200 - +2025-12-29 17:00:56,566 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:00:56] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998856559 HTTP/1.1" 200 - +2025-12-29 17:00:59,879 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:00:59] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998859559 HTTP/1.1" 200 - +2025-12-29 17:00:59,883 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:00:59] "GET /api/strategies/positions?id=1&_t=1766998859564 HTTP/1.1" 200 - +2025-12-29 17:01:02,567 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:01:02] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998862561 HTTP/1.1" 200 - +2025-12-29 17:01:04,879 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:01:04] "GET /api/strategies/positions?id=1&_t=1766998864564 HTTP/1.1" 200 - +2025-12-29 17:01:05,566 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:01:05] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998865560 HTTP/1.1" 200 - +2025-12-29 17:01:08,881 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:01:08] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998868560 HTTP/1.1" 200 - +2025-12-29 17:01:09,571 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:01:09] "GET /api/strategies/positions?id=1&_t=1766998869565 HTTP/1.1" 200 - +2025-12-29 17:01:11,880 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:01:11] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998871561 HTTP/1.1" 200 - +2025-12-29 17:01:14,566 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:01:14] "GET /api/strategies/equityCurve?id=1&_t=1766998874559 HTTP/1.1" 200 - +2025-12-29 17:01:14,880 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:01:14] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998874559 HTTP/1.1" 200 - +2025-12-29 17:01:14,884 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:01:14] "GET /api/strategies/positions?id=1&_t=1766998874564 HTTP/1.1" 200 - +2025-12-29 17:01:17,875 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:01:17] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998877560 HTTP/1.1" 200 - +2025-12-29 17:01:19,572 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:01:19] "GET /api/strategies/positions?id=1&_t=1766998879565 HTTP/1.1" 200 - +2025-12-29 17:01:20,880 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:01:20] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998880559 HTTP/1.1" 200 - +2025-12-29 17:01:23,567 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:01:23] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998883559 HTTP/1.1" 200 - +2025-12-29 17:01:24,883 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:01:24] "GET /api/strategies/positions?id=1&_t=1766998884564 HTTP/1.1" 200 - +2025-12-29 17:01:26,567 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:01:26] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998886561 HTTP/1.1" 200 - +2025-12-29 17:01:29,882 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:01:29] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998889560 HTTP/1.1" 200 - +2025-12-29 17:01:29,885 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:01:29] "GET /api/strategies/positions?id=1&_t=1766998889565 HTTP/1.1" 200 - +2025-12-29 17:01:32,567 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:01:32] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998892561 HTTP/1.1" 200 - +2025-12-29 17:01:34,874 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:01:34] "GET /api/strategies/positions?id=1&_t=1766998894565 HTTP/1.1" 200 - +2025-12-29 17:01:35,565 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:01:35] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998895560 HTTP/1.1" 200 - +2025-12-29 17:01:38,874 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:01:38] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998898559 HTTP/1.1" 200 - +2025-12-29 17:01:39,573 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:01:39] "GET /api/strategies/positions?id=1&_t=1766998899564 HTTP/1.1" 200 - +2025-12-29 17:01:41,882 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:01:41] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998901561 HTTP/1.1" 200 - +2025-12-29 17:01:44,570 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:01:44] "GET /api/strategies/equityCurve?id=1&_t=1766998904559 HTTP/1.1" 200 - +2025-12-29 17:01:44,881 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:01:44] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998904560 HTTP/1.1" 200 - +2025-12-29 17:01:44,884 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:01:44] "GET /api/strategies/positions?id=1&_t=1766998904566 HTTP/1.1" 200 - +2025-12-29 17:01:47,873 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:01:47] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998907561 HTTP/1.1" 200 - +2025-12-29 17:01:49,571 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:01:49] "GET /api/strategies/positions?id=1&_t=1766998909565 HTTP/1.1" 200 - +2025-12-29 17:01:50,880 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:01:50] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998910559 HTTP/1.1" 200 - +2025-12-29 17:01:53,566 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:01:53] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998913559 HTTP/1.1" 200 - +2025-12-29 17:01:54,891 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:01:54] "GET /api/strategies/positions?id=1&_t=1766998914574 HTTP/1.1" 200 - +2025-12-29 17:01:56,566 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:01:56] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998916559 HTTP/1.1" 200 - +2025-12-29 17:01:59,882 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:01:59] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998919560 HTTP/1.1" 200 - +2025-12-29 17:01:59,885 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:01:59] "GET /api/strategies/positions?id=1&_t=1766998919564 HTTP/1.1" 200 - +2025-12-29 17:02:02,566 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:02:02] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998922560 HTTP/1.1" 200 - +2025-12-29 17:02:04,886 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:02:04] "GET /api/strategies/positions?id=1&_t=1766998924565 HTTP/1.1" 200 - +2025-12-29 17:02:05,568 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:02:05] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998925560 HTTP/1.1" 200 - +2025-12-29 17:02:08,874 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:02:08] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998928560 HTTP/1.1" 200 - +2025-12-29 17:02:09,575 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:02:09] "GET /api/strategies/positions?id=1&_t=1766998929569 HTTP/1.1" 200 - +2025-12-29 17:02:11,880 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:02:11] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998931561 HTTP/1.1" 200 - +2025-12-29 17:02:14,568 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:02:14] "GET /api/strategies/equityCurve?id=1&_t=1766998934560 HTTP/1.1" 200 - +2025-12-29 17:02:14,882 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:02:14] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998934560 HTTP/1.1" 200 - +2025-12-29 17:02:14,885 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:02:14] "GET /api/strategies/positions?id=1&_t=1766998934565 HTTP/1.1" 200 - +2025-12-29 17:02:17,877 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:02:17] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998937560 HTTP/1.1" 200 - +2025-12-29 17:02:19,572 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:02:19] "GET /api/strategies/positions?id=1&_t=1766998939566 HTTP/1.1" 200 - +2025-12-29 17:02:20,872 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:02:20] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998940560 HTTP/1.1" 200 - +2025-12-29 17:02:23,567 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:02:23] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998943559 HTTP/1.1" 200 - +2025-12-29 17:02:24,873 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:02:24] "GET /api/strategies/positions?id=1&_t=1766998944564 HTTP/1.1" 200 - +2025-12-29 17:02:26,566 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:02:26] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998946559 HTTP/1.1" 200 - +2025-12-29 17:02:29,875 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:02:29] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998949559 HTTP/1.1" 200 - +2025-12-29 17:02:29,880 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:02:29] "GET /api/strategies/positions?id=1&_t=1766998949565 HTTP/1.1" 200 - +2025-12-29 17:02:32,568 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:02:32] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998952559 HTTP/1.1" 200 - +2025-12-29 17:02:34,883 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:02:34] "GET /api/strategies/positions?id=1&_t=1766998954565 HTTP/1.1" 200 - +2025-12-29 17:02:35,567 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:02:35] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998955559 HTTP/1.1" 200 - +2025-12-29 17:02:38,886 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:02:38] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998958563 HTTP/1.1" 200 - +2025-12-29 17:02:39,571 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:02:39] "GET /api/strategies/positions?id=1&_t=1766998959565 HTTP/1.1" 200 - +2025-12-29 17:02:41,876 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:02:41] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998961559 HTTP/1.1" 200 - +2025-12-29 17:02:44,569 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:02:44] "GET /api/strategies/equityCurve?id=1&_t=1766998964560 HTTP/1.1" 200 - +2025-12-29 17:02:44,873 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:02:44] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998964560 HTTP/1.1" 200 - +2025-12-29 17:02:44,876 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:02:44] "GET /api/strategies/positions?id=1&_t=1766998964564 HTTP/1.1" 200 - +2025-12-29 17:02:47,872 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:02:47] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998967560 HTTP/1.1" 200 - +2025-12-29 17:02:49,571 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:02:49] "GET /api/strategies/positions?id=1&_t=1766998969565 HTTP/1.1" 200 - +2025-12-29 17:02:50,875 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:02:50] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998970560 HTTP/1.1" 200 - +2025-12-29 17:02:53,571 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:02:53] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998973560 HTTP/1.1" 200 - +2025-12-29 17:02:54,889 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:02:54] "GET /api/strategies/positions?id=1&_t=1766998974565 HTTP/1.1" 200 - +2025-12-29 17:02:56,570 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:02:56] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998976560 HTTP/1.1" 200 - +2025-12-29 17:02:59,881 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:02:59] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998979559 HTTP/1.1" 200 - +2025-12-29 17:02:59,892 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:02:59] "GET /api/strategies/positions?id=1&_t=1766998979566 HTTP/1.1" 200 - +2025-12-29 17:03:02,571 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:03:02] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998982559 HTTP/1.1" 200 - +2025-12-29 17:03:04,882 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:03:04] "GET /api/strategies/positions?id=1&_t=1766998984564 HTTP/1.1" 200 - +2025-12-29 17:03:05,569 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:03:05] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998985559 HTTP/1.1" 200 - +2025-12-29 17:03:08,884 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:03:08] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998988561 HTTP/1.1" 200 - +2025-12-29 17:03:09,571 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:03:09] "GET /api/strategies/positions?id=1&_t=1766998989564 HTTP/1.1" 200 - +2025-12-29 17:03:11,874 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:03:11] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998991560 HTTP/1.1" 200 - +2025-12-29 17:03:14,570 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:03:14] "GET /api/strategies/equityCurve?id=1&_t=1766998994559 HTTP/1.1" 200 - +2025-12-29 17:03:14,875 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:03:14] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998994559 HTTP/1.1" 200 - +2025-12-29 17:03:14,897 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:03:14] "GET /api/strategies/positions?id=1&_t=1766998994566 HTTP/1.1" 200 - +2025-12-29 17:03:17,877 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:03:17] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766998997559 HTTP/1.1" 200 - +2025-12-29 17:03:19,576 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:03:19] "GET /api/strategies/positions?id=1&_t=1766998999564 HTTP/1.1" 200 - +2025-12-29 17:03:20,879 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:03:20] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999000559 HTTP/1.1" 200 - +2025-12-29 17:03:23,570 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:03:23] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999003559 HTTP/1.1" 200 - +2025-12-29 17:03:24,879 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:03:24] "GET /api/strategies/positions?id=1&_t=1766999004565 HTTP/1.1" 200 - +2025-12-29 17:03:26,572 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:03:26] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999006560 HTTP/1.1" 200 - +2025-12-29 17:03:29,874 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:03:29] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999009559 HTTP/1.1" 200 - +2025-12-29 17:03:29,884 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:03:29] "GET /api/strategies/positions?id=1&_t=1766999009564 HTTP/1.1" 200 - +2025-12-29 17:03:32,569 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:03:32] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999012559 HTTP/1.1" 200 - +2025-12-29 17:03:34,888 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:03:34] "GET /api/strategies/positions?id=1&_t=1766999014566 HTTP/1.1" 200 - +2025-12-29 17:03:35,571 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:03:35] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999015559 HTTP/1.1" 200 - +2025-12-29 17:03:39,006 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:03:39] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999018560 HTTP/1.1" 200 - +2025-12-29 17:03:39,576 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:03:39] "GET /api/strategies/positions?id=1&_t=1766999019566 HTTP/1.1" 200 - +2025-12-29 17:03:41,871 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:03:41] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999021560 HTTP/1.1" 200 - +2025-12-29 17:03:44,571 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:03:44] "GET /api/strategies/equityCurve?id=1&_t=1766999024561 HTTP/1.1" 200 - +2025-12-29 17:03:44,872 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:03:44] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999024561 HTTP/1.1" 200 - +2025-12-29 17:03:44,883 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:03:44] "GET /api/strategies/positions?id=1&_t=1766999024566 HTTP/1.1" 200 - +2025-12-29 17:03:47,871 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:03:47] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999027560 HTTP/1.1" 200 - +2025-12-29 17:03:49,575 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:03:49] "GET /api/strategies/positions?id=1&_t=1766999029566 HTTP/1.1" 200 - +2025-12-29 17:03:50,878 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:03:50] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999030559 HTTP/1.1" 200 - +2025-12-29 17:03:53,572 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:03:53] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999033560 HTTP/1.1" 200 - +2025-12-29 17:03:54,884 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:03:54] "GET /api/strategies/positions?id=1&_t=1766999034566 HTTP/1.1" 200 - +2025-12-29 17:03:56,569 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:03:56] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999036559 HTTP/1.1" 200 - +2025-12-29 17:03:59,872 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:03:59] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999039559 HTTP/1.1" 200 - +2025-12-29 17:03:59,881 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:03:59] "GET /api/strategies/positions?id=1&_t=1766999039566 HTTP/1.1" 200 - +2025-12-29 17:04:02,576 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:04:02] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999042560 HTTP/1.1" 200 - +2025-12-29 17:04:04,890 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:04:04] "GET /api/strategies/positions?id=1&_t=1766999044565 HTTP/1.1" 200 - +2025-12-29 17:04:05,569 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:04:05] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999045560 HTTP/1.1" 200 - +2025-12-29 17:04:10,083 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:04:10] "GET /api/strategies/positions?id=1&_t=1766999049572 HTTP/1.1" 200 - +2025-12-29 17:04:10,088 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:04:10] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999048560 HTTP/1.1" 200 - +2025-12-29 17:04:11,882 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:04:11] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999051563 HTTP/1.1" 200 - +2025-12-29 17:04:14,574 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:04:14] "GET /api/strategies/equityCurve?id=1&_t=1766999054561 HTTP/1.1" 200 - +2025-12-29 17:04:14,873 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:04:14] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999054561 HTTP/1.1" 200 - +2025-12-29 17:04:14,885 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:04:14] "GET /api/strategies/positions?id=1&_t=1766999054565 HTTP/1.1" 200 - +2025-12-29 17:04:17,888 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:04:17] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999057559 HTTP/1.1" 200 - +2025-12-29 17:04:19,573 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:04:19] "GET /api/strategies/positions?id=1&_t=1766999059564 HTTP/1.1" 200 - +2025-12-29 17:04:20,876 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:04:20] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999060560 HTTP/1.1" 200 - +2025-12-29 17:04:23,569 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:04:23] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999063559 HTTP/1.1" 200 - +2025-12-29 17:04:24,886 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:04:24] "GET /api/strategies/positions?id=1&_t=1766999064565 HTTP/1.1" 200 - +2025-12-29 17:04:26,976 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:04:26] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999066560 HTTP/1.1" 200 - +2025-12-29 17:04:29,889 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:04:29] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999069561 HTTP/1.1" 200 - +2025-12-29 17:04:29,895 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:04:29] "GET /api/strategies/positions?id=1&_t=1766999069565 HTTP/1.1" 200 - +2025-12-29 17:04:32,569 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:04:32] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999072559 HTTP/1.1" 200 - +2025-12-29 17:04:34,886 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:04:34] "GET /api/strategies/positions?id=1&_t=1766999074565 HTTP/1.1" 200 - +2025-12-29 17:04:35,572 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:04:35] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999075560 HTTP/1.1" 200 - +2025-12-29 17:04:38,878 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:04:38] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999078559 HTTP/1.1" 200 - +2025-12-29 17:04:39,575 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:04:39] "GET /api/strategies/positions?id=1&_t=1766999079565 HTTP/1.1" 200 - +2025-12-29 17:04:41,883 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:04:41] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999081564 HTTP/1.1" 200 - +2025-12-29 17:04:45,768 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:04:45] "GET /api/strategies/equityCurve?id=1&_t=1766999084562 HTTP/1.1" 200 - +2025-12-29 17:04:45,774 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:04:45] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999084562 HTTP/1.1" 200 - +2025-12-29 17:04:45,780 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:04:45] "GET /api/strategies/positions?id=1&_t=1766999084566 HTTP/1.1" 200 - +2025-12-29 17:04:47,872 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:04:47] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999087559 HTTP/1.1" 200 - +2025-12-29 17:04:49,572 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:04:49] "GET /api/strategies/positions?id=1&_t=1766999089564 HTTP/1.1" 200 - +2025-12-29 17:04:50,871 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:04:50] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999090559 HTTP/1.1" 200 - +2025-12-29 17:04:53,572 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:04:53] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999093564 HTTP/1.1" 200 - +2025-12-29 17:04:54,883 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:04:54] "GET /api/strategies/positions?id=1&_t=1766999094565 HTTP/1.1" 200 - +2025-12-29 17:04:56,568 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:04:56] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999096559 HTTP/1.1" 200 - +2025-12-29 17:04:59,887 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:04:59] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999099559 HTTP/1.1" 200 - +2025-12-29 17:04:59,893 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:04:59] "GET /api/strategies/positions?id=1&_t=1766999099564 HTTP/1.1" 200 - +2025-12-29 17:05:02,575 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:05:02] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999102560 HTTP/1.1" 200 - +2025-12-29 17:05:04,891 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:05:04] "GET /api/strategies/positions?id=1&_t=1766999104564 HTTP/1.1" 200 - +2025-12-29 17:05:05,569 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:05:05] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999105559 HTTP/1.1" 200 - +2025-12-29 17:05:08,871 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:05:08] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999108559 HTTP/1.1" 200 - +2025-12-29 17:05:09,578 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:05:09] "GET /api/strategies/positions?id=1&_t=1766999109565 HTTP/1.1" 200 - +2025-12-29 17:05:11,874 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:05:11] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999111560 HTTP/1.1" 200 - +2025-12-29 17:05:14,570 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:05:14] "GET /api/strategies/equityCurve?id=1&_t=1766999114559 HTTP/1.1" 200 - +2025-12-29 17:05:14,877 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:05:14] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999114560 HTTP/1.1" 200 - +2025-12-29 17:05:14,881 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:05:14] "GET /api/strategies/positions?id=1&_t=1766999114565 HTTP/1.1" 200 - +2025-12-29 17:05:17,875 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:05:17] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999117560 HTTP/1.1" 200 - +2025-12-29 17:05:19,575 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:05:19] "GET /api/strategies/positions?id=1&_t=1766999119565 HTTP/1.1" 200 - +2025-12-29 17:05:20,873 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:05:20] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999120560 HTTP/1.1" 200 - +2025-12-29 17:05:23,571 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:05:23] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999123560 HTTP/1.1" 200 - +2025-12-29 17:05:24,886 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:05:24] "GET /api/strategies/positions?id=1&_t=1766999124564 HTTP/1.1" 200 - +2025-12-29 17:05:26,566 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:05:26] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999126559 HTTP/1.1" 200 - +2025-12-29 17:05:30,020 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:05:30] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999129559 HTTP/1.1" 200 - +2025-12-29 17:05:30,027 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:05:30] "GET /api/strategies/positions?id=1&_t=1766999129564 HTTP/1.1" 200 - +2025-12-29 17:05:32,565 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:05:32] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999132559 HTTP/1.1" 200 - +2025-12-29 17:05:34,889 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:05:34] "GET /api/strategies/positions?id=1&_t=1766999134565 HTTP/1.1" 200 - +2025-12-29 17:05:35,569 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:05:35] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999135562 HTTP/1.1" 200 - +2025-12-29 17:05:38,873 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:05:38] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999138559 HTTP/1.1" 200 - +2025-12-29 17:05:39,574 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:05:39] "GET /api/strategies/positions?id=1&_t=1766999139565 HTTP/1.1" 200 - +2025-12-29 17:05:41,878 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:05:41] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999141560 HTTP/1.1" 200 - +2025-12-29 17:05:44,570 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:05:44] "GET /api/strategies/equityCurve?id=1&_t=1766999144559 HTTP/1.1" 200 - +2025-12-29 17:05:44,880 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:05:44] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999144560 HTTP/1.1" 200 - +2025-12-29 17:05:44,887 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:05:44] "GET /api/strategies/positions?id=1&_t=1766999144564 HTTP/1.1" 200 - +2025-12-29 17:05:47,888 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:05:47] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999147559 HTTP/1.1" 200 - +2025-12-29 17:05:49,574 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:05:49] "GET /api/strategies/positions?id=1&_t=1766999149565 HTTP/1.1" 200 - +2025-12-29 17:05:50,885 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:05:50] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999150559 HTTP/1.1" 200 - +2025-12-29 17:05:53,571 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:05:53] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999153564 HTTP/1.1" 200 - +2025-12-29 17:05:54,890 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:05:54] "GET /api/strategies/positions?id=1&_t=1766999154565 HTTP/1.1" 200 - +2025-12-29 17:05:57,598 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:05:57] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999156560 HTTP/1.1" 200 - +2025-12-29 17:05:59,887 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:05:59] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999159566 HTTP/1.1" 200 - +2025-12-29 17:05:59,896 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:05:59] "GET /api/strategies/positions?id=1&_t=1766999159567 HTTP/1.1" 200 - +2025-12-29 17:06:02,565 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:06:02] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999162559 HTTP/1.1" 200 - +2025-12-29 17:06:04,878 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:06:04] "GET /api/strategies/positions?id=1&_t=1766999164566 HTTP/1.1" 200 - +2025-12-29 17:06:05,568 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:06:05] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999165560 HTTP/1.1" 200 - +2025-12-29 17:06:08,876 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:06:08] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999168561 HTTP/1.1" 200 - +2025-12-29 17:06:09,575 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:06:09] "GET /api/strategies/positions?id=1&_t=1766999169566 HTTP/1.1" 200 - +2025-12-29 17:06:11,872 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:06:11] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999171560 HTTP/1.1" 200 - +2025-12-29 17:06:14,571 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:06:14] "GET /api/strategies/equityCurve?id=1&_t=1766999174560 HTTP/1.1" 200 - +2025-12-29 17:06:14,888 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:06:14] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999174560 HTTP/1.1" 200 - +2025-12-29 17:06:14,897 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:06:14] "GET /api/strategies/positions?id=1&_t=1766999174567 HTTP/1.1" 200 - +2025-12-29 17:06:17,880 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:06:17] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999177560 HTTP/1.1" 200 - +2025-12-29 17:06:19,574 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:06:19] "GET /api/strategies/positions?id=1&_t=1766999179565 HTTP/1.1" 200 - +2025-12-29 17:06:20,872 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:06:20] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999180560 HTTP/1.1" 200 - +2025-12-29 17:06:23,565 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:06:23] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999183559 HTTP/1.1" 200 - +2025-12-29 17:06:24,889 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:06:24] "GET /api/strategies/positions?id=1&_t=1766999184565 HTTP/1.1" 200 - +2025-12-29 17:06:26,565 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:06:26] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999186560 HTTP/1.1" 200 - +2025-12-29 17:06:29,871 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:06:29] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999189560 HTTP/1.1" 200 - +2025-12-29 17:06:29,879 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:06:29] "GET /api/strategies/positions?id=1&_t=1766999189567 HTTP/1.1" 200 - +2025-12-29 17:06:32,566 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:06:32] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999192561 HTTP/1.1" 200 - +2025-12-29 17:06:34,881 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:06:34] "GET /api/strategies/positions?id=1&_t=1766999194564 HTTP/1.1" 200 - +2025-12-29 17:06:35,565 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:06:35] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999195559 HTTP/1.1" 200 - +2025-12-29 17:06:38,872 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:06:38] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999198559 HTTP/1.1" 200 - +2025-12-29 17:06:39,575 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:06:39] "GET /api/strategies/positions?id=1&_t=1766999199565 HTTP/1.1" 200 - +2025-12-29 17:06:41,881 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:06:41] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999201559 HTTP/1.1" 200 - +2025-12-29 17:06:44,570 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:06:44] "GET /api/strategies/equityCurve?id=1&_t=1766999204559 HTTP/1.1" 200 - +2025-12-29 17:06:44,872 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:06:44] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999204560 HTTP/1.1" 200 - +2025-12-29 17:06:44,882 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:06:44] "GET /api/strategies/positions?id=1&_t=1766999204564 HTTP/1.1" 200 - +2025-12-29 17:06:47,866 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:06:47] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999207559 HTTP/1.1" 200 - +2025-12-29 17:06:49,573 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:06:49] "GET /api/strategies/positions?id=1&_t=1766999209564 HTTP/1.1" 200 - +2025-12-29 17:06:50,880 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:06:50] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999210559 HTTP/1.1" 200 - +2025-12-29 17:06:53,565 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:06:53] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999213559 HTTP/1.1" 200 - +2025-12-29 17:06:54,885 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:06:54] "GET /api/strategies/positions?id=1&_t=1766999214564 HTTP/1.1" 200 - +2025-12-29 17:06:56,566 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:06:56] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999216560 HTTP/1.1" 200 - +2025-12-29 17:06:59,881 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:06:59] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999219560 HTTP/1.1" 200 - +2025-12-29 17:06:59,885 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:06:59] "GET /api/strategies/positions?id=1&_t=1766999219565 HTTP/1.1" 200 - +2025-12-29 17:07:02,566 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:07:02] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999222560 HTTP/1.1" 200 - +2025-12-29 17:07:04,877 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:07:04] "GET /api/strategies/positions?id=1&_t=1766999224564 HTTP/1.1" 200 - +2025-12-29 17:07:05,565 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:07:05] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999225560 HTTP/1.1" 200 - +2025-12-29 17:07:08,881 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:07:08] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999228560 HTTP/1.1" 200 - +2025-12-29 17:07:09,574 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:07:09] "GET /api/strategies/positions?id=1&_t=1766999229565 HTTP/1.1" 200 - +2025-12-29 17:07:11,874 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:07:11] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999231560 HTTP/1.1" 200 - +2025-12-29 17:07:14,567 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:07:14] "GET /api/strategies/equityCurve?id=1&_t=1766999234560 HTTP/1.1" 200 - +2025-12-29 17:07:14,877 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:07:14] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999234560 HTTP/1.1" 200 - +2025-12-29 17:07:14,882 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:07:14] "GET /api/strategies/positions?id=1&_t=1766999234565 HTTP/1.1" 200 - +2025-12-29 17:07:17,880 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:07:17] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999237561 HTTP/1.1" 200 - +2025-12-29 17:07:19,574 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:07:19] "GET /api/strategies/positions?id=1&_t=1766999239565 HTTP/1.1" 200 - +2025-12-29 17:07:20,869 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:07:20] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999240560 HTTP/1.1" 200 - +2025-12-29 17:07:23,566 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:07:23] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999243559 HTTP/1.1" 200 - +2025-12-29 17:07:24,879 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:07:24] "GET /api/strategies/positions?id=1&_t=1766999244565 HTTP/1.1" 200 - +2025-12-29 17:07:26,565 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:07:26] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999246559 HTTP/1.1" 200 - +2025-12-29 17:07:29,879 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:07:29] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999249559 HTTP/1.1" 200 - +2025-12-29 17:07:29,882 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:07:29] "GET /api/strategies/positions?id=1&_t=1766999249564 HTTP/1.1" 200 - +2025-12-29 17:07:32,565 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:07:32] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999252559 HTTP/1.1" 200 - +2025-12-29 17:07:34,876 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:07:34] "GET /api/strategies/positions?id=1&_t=1766999254565 HTTP/1.1" 200 - +2025-12-29 17:07:35,567 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:07:35] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999255561 HTTP/1.1" 200 - +2025-12-29 17:07:38,877 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:07:38] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999258560 HTTP/1.1" 200 - +2025-12-29 17:07:39,573 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:07:39] "GET /api/strategies/positions?id=1&_t=1766999259565 HTTP/1.1" 200 - +2025-12-29 17:07:41,874 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:07:41] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999261559 HTTP/1.1" 200 - +2025-12-29 17:07:44,567 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:07:44] "GET /api/strategies/equityCurve?id=1&_t=1766999264559 HTTP/1.1" 200 - +2025-12-29 17:07:44,876 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:07:44] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999264560 HTTP/1.1" 200 - +2025-12-29 17:07:44,881 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:07:44] "GET /api/strategies/positions?id=1&_t=1766999264564 HTTP/1.1" 200 - +2025-12-29 17:07:47,876 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:07:47] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999267561 HTTP/1.1" 200 - +2025-12-29 17:07:49,571 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:07:49] "GET /api/strategies/positions?id=1&_t=1766999269564 HTTP/1.1" 200 - +2025-12-29 17:07:50,874 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:07:50] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999270559 HTTP/1.1" 200 - +2025-12-29 17:07:53,565 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:07:53] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999273559 HTTP/1.1" 200 - +2025-12-29 17:07:54,880 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:07:54] "GET /api/strategies/positions?id=1&_t=1766999274565 HTTP/1.1" 200 - +2025-12-29 17:07:56,569 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:07:56] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999276560 HTTP/1.1" 200 - +2025-12-29 17:07:59,873 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:07:59] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999279559 HTTP/1.1" 200 - +2025-12-29 17:07:59,877 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:07:59] "GET /api/strategies/positions?id=1&_t=1766999279565 HTTP/1.1" 200 - +2025-12-29 17:08:02,566 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:08:02] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999282559 HTTP/1.1" 200 - +2025-12-29 17:08:04,885 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:08:04] "GET /api/strategies/positions?id=1&_t=1766999284564 HTTP/1.1" 200 - +2025-12-29 17:08:05,565 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:08:05] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999285559 HTTP/1.1" 200 - +2025-12-29 17:08:08,877 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:08:08] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999288560 HTTP/1.1" 200 - +2025-12-29 17:08:09,573 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:08:09] "GET /api/strategies/positions?id=1&_t=1766999289565 HTTP/1.1" 200 - +2025-12-29 17:08:11,874 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:08:11] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999291560 HTTP/1.1" 200 - +2025-12-29 17:08:14,576 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:08:14] "GET /api/strategies/equityCurve?id=1&_t=1766999294559 HTTP/1.1" 200 - +2025-12-29 17:08:14,872 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:08:14] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999294559 HTTP/1.1" 200 - +2025-12-29 17:08:14,878 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:08:14] "GET /api/strategies/positions?id=1&_t=1766999294565 HTTP/1.1" 200 - +2025-12-29 17:08:17,875 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:08:17] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999297559 HTTP/1.1" 200 - +2025-12-29 17:08:19,574 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:08:19] "GET /api/strategies/positions?id=1&_t=1766999299565 HTTP/1.1" 200 - +2025-12-29 17:08:20,875 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:08:20] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999300560 HTTP/1.1" 200 - +2025-12-29 17:08:23,566 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:08:23] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999303559 HTTP/1.1" 200 - +2025-12-29 17:08:24,881 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:08:24] "GET /api/strategies/positions?id=1&_t=1766999304565 HTTP/1.1" 200 - +2025-12-29 17:08:26,565 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:08:26] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999306559 HTTP/1.1" 200 - +2025-12-29 17:08:29,884 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:08:29] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999309559 HTTP/1.1" 200 - +2025-12-29 17:08:29,891 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:08:29] "GET /api/strategies/positions?id=1&_t=1766999309565 HTTP/1.1" 200 - +2025-12-29 17:08:32,565 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:08:32] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999312559 HTTP/1.1" 200 - +2025-12-29 17:08:34,879 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:08:34] "GET /api/strategies/positions?id=1&_t=1766999314566 HTTP/1.1" 200 - +2025-12-29 17:08:35,565 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:08:35] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999315559 HTTP/1.1" 200 - +2025-12-29 17:08:38,880 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:08:38] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999318559 HTTP/1.1" 200 - +2025-12-29 17:08:39,571 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:08:39] "GET /api/strategies/positions?id=1&_t=1766999319564 HTTP/1.1" 200 - +2025-12-29 17:08:41,870 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:08:41] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999321560 HTTP/1.1" 200 - +2025-12-29 17:08:44,568 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:08:44] "GET /api/strategies/equityCurve?id=1&_t=1766999324559 HTTP/1.1" 200 - +2025-12-29 17:08:44,878 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:08:44] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999324559 HTTP/1.1" 200 - +2025-12-29 17:08:44,883 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:08:44] "GET /api/strategies/positions?id=1&_t=1766999324566 HTTP/1.1" 200 - +2025-12-29 17:08:47,869 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:08:47] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999327560 HTTP/1.1" 200 - +2025-12-29 17:08:49,574 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:08:49] "GET /api/strategies/positions?id=1&_t=1766999329564 HTTP/1.1" 200 - +2025-12-29 17:08:50,870 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:08:50] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999330560 HTTP/1.1" 200 - +2025-12-29 17:08:53,566 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:08:53] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999333559 HTTP/1.1" 200 - +2025-12-29 17:08:54,885 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:08:54] "GET /api/strategies/positions?id=1&_t=1766999334564 HTTP/1.1" 200 - +2025-12-29 17:08:56,566 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:08:56] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999336559 HTTP/1.1" 200 - +2025-12-29 17:08:59,877 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:08:59] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999339559 HTTP/1.1" 200 - +2025-12-29 17:08:59,880 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:08:59] "GET /api/strategies/positions?id=1&_t=1766999339564 HTTP/1.1" 200 - +2025-12-29 17:09:02,566 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:09:02] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999342560 HTTP/1.1" 200 - +2025-12-29 17:09:04,883 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:09:04] "GET /api/strategies/positions?id=1&_t=1766999344565 HTTP/1.1" 200 - +2025-12-29 17:09:05,566 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:09:05] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999345560 HTTP/1.1" 200 - +2025-12-29 17:09:08,889 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:09:08] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999348560 HTTP/1.1" 200 - +2025-12-29 17:09:09,573 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:09:09] "GET /api/strategies/positions?id=1&_t=1766999349564 HTTP/1.1" 200 - +2025-12-29 17:09:11,881 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:09:11] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999351559 HTTP/1.1" 200 - +2025-12-29 17:09:14,567 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:09:14] "GET /api/strategies/equityCurve?id=1&_t=1766999354559 HTTP/1.1" 200 - +2025-12-29 17:09:14,870 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:09:14] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999354559 HTTP/1.1" 200 - +2025-12-29 17:09:14,875 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:09:14] "GET /api/strategies/positions?id=1&_t=1766999354565 HTTP/1.1" 200 - +2025-12-29 17:09:17,880 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:09:17] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999357559 HTTP/1.1" 200 - +2025-12-29 17:09:19,571 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:09:19] "GET /api/strategies/positions?id=1&_t=1766999359565 HTTP/1.1" 200 - +2025-12-29 17:09:20,869 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:09:20] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999360560 HTTP/1.1" 200 - +2025-12-29 17:09:23,566 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:09:23] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999363560 HTTP/1.1" 200 - +2025-12-29 17:09:24,891 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:09:24] "GET /api/strategies/positions?id=1&_t=1766999364565 HTTP/1.1" 200 - +2025-12-29 17:09:26,566 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:09:26] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999366559 HTTP/1.1" 200 - +2025-12-29 17:09:29,882 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:09:29] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999369560 HTTP/1.1" 200 - +2025-12-29 17:09:29,887 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:09:29] "GET /api/strategies/positions?id=1&_t=1766999369564 HTTP/1.1" 200 - +2025-12-29 17:09:32,566 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:09:32] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999372559 HTTP/1.1" 200 - +2025-12-29 17:09:34,882 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:09:34] "GET /api/strategies/positions?id=1&_t=1766999374564 HTTP/1.1" 200 - +2025-12-29 17:09:35,566 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:09:35] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999375560 HTTP/1.1" 200 - +2025-12-29 17:09:38,867 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:09:38] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999378559 HTTP/1.1" 200 - +2025-12-29 17:09:39,571 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:09:39] "GET /api/strategies/positions?id=1&_t=1766999379565 HTTP/1.1" 200 - +2025-12-29 17:09:41,880 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:09:41] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999381559 HTTP/1.1" 200 - +2025-12-29 17:09:44,570 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:09:44] "GET /api/strategies/equityCurve?id=1&_t=1766999384560 HTTP/1.1" 200 - +2025-12-29 17:09:44,883 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:09:44] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999384561 HTTP/1.1" 200 - +2025-12-29 17:09:44,888 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:09:44] "GET /api/strategies/positions?id=1&_t=1766999384564 HTTP/1.1" 200 - +2025-12-29 17:09:47,879 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:09:47] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999387569 HTTP/1.1" 200 - +2025-12-29 17:09:49,570 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:09:49] "GET /api/strategies/positions?id=1&_t=1766999389564 HTTP/1.1" 200 - +2025-12-29 17:09:50,878 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:09:50] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999390561 HTTP/1.1" 200 - +2025-12-29 17:09:53,566 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:09:53] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999393560 HTTP/1.1" 200 - +2025-12-29 17:09:54,882 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:09:54] "GET /api/strategies/positions?id=1&_t=1766999394565 HTTP/1.1" 200 - +2025-12-29 17:09:56,566 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:09:56] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999396559 HTTP/1.1" 200 - +2025-12-29 17:09:59,882 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:09:59] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999399559 HTTP/1.1" 200 - +2025-12-29 17:09:59,885 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:09:59] "GET /api/strategies/positions?id=1&_t=1766999399565 HTTP/1.1" 200 - +2025-12-29 17:10:02,569 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:10:02] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999402559 HTTP/1.1" 200 - +2025-12-29 17:10:04,872 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:10:04] "GET /api/strategies/positions?id=1&_t=1766999404564 HTTP/1.1" 200 - +2025-12-29 17:10:05,566 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:10:05] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999405559 HTTP/1.1" 200 - +2025-12-29 17:10:08,880 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:10:08] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999408560 HTTP/1.1" 200 - +2025-12-29 17:10:09,573 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:10:09] "GET /api/strategies/positions?id=1&_t=1766999409566 HTTP/1.1" 200 - +2025-12-29 17:10:11,875 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:10:11] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999411560 HTTP/1.1" 200 - +2025-12-29 17:10:14,569 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:10:14] "GET /api/strategies/equityCurve?id=1&_t=1766999414559 HTTP/1.1" 200 - +2025-12-29 17:10:14,882 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:10:14] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999414560 HTTP/1.1" 200 - +2025-12-29 17:10:14,885 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:10:14] "GET /api/strategies/positions?id=1&_t=1766999414564 HTTP/1.1" 200 - +2025-12-29 17:10:17,879 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:10:17] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999417559 HTTP/1.1" 200 - +2025-12-29 17:10:19,572 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:10:19] "GET /api/strategies/positions?id=1&_t=1766999419565 HTTP/1.1" 200 - +2025-12-29 17:10:20,883 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:10:20] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999420561 HTTP/1.1" 200 - +2025-12-29 17:10:23,566 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:10:23] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999423559 HTTP/1.1" 200 - +2025-12-29 17:10:24,882 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:10:24] "GET /api/strategies/positions?id=1&_t=1766999424566 HTTP/1.1" 200 - +2025-12-29 17:10:26,567 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:10:26] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999426560 HTTP/1.1" 200 - +2025-12-29 17:10:29,869 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:10:29] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1766999429559 HTTP/1.1" 200 - +2025-12-29 17:10:29,874 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:10:29] "GET /api/strategies/positions?id=1&_t=1766999429564 HTTP/1.1" 200 - +2025-12-29 17:10:32,368 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:10:32] "GET /api/strategies?_t=1766999432358 HTTP/1.1" 200 - +2025-12-29 17:10:46,287 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-29 17:10:46,290 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-29 17:10:46,688 - app.services.strategy - INFO - Found 2 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}] +2025-12-29 17:10:46,688 - app - INFO - Restoring 2 running strategies... +2025-12-29 17:10:46,688 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-29 17:10:46,688 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-29 17:10:46,689 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-29 17:10:46,689 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-29 17:10:46,689 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-29 17:10:46,689 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-29 17:10:46,689 - app - INFO - Strategy restore completed: 2/2 restored +2025-12-29 17:10:46,690 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-29 17:10:46,693 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-29 17:10:46,718 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-29 17:10:46,718 - werkzeug - INFO - Press CTRL+C to quit +2025-12-29 17:10:50,458 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-29 17:10:50,478 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2025-12-29 17:10:50,740 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-29 17:10:50,757 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2025-12-29 17:19:45,912 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:19:45] "GET /api/settings/schema HTTP/1.1" 200 - +2025-12-29 17:20:31,542 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:20:31] "GET /api/settings/schema?_t=1767000031531 HTTP/1.1" 200 - +2025-12-29 17:20:31,769 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:20:31] "GET /api/settings/values?_t=1767000031531 HTTP/1.1" 200 - +2025-12-29 17:20:40,375 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:20:40] "GET /api/settings/schema?_t=1767000040367 HTTP/1.1" 200 - +2025-12-29 17:20:40,379 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:20:40] "GET /api/settings/values?_t=1767000040367 HTTP/1.1" 200 - +2025-12-29 17:21:33,146 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:21:33] "GET /api/settings/schema?_t=1767000093133 HTTP/1.1" 200 - +2025-12-29 17:21:33,149 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:21:33] "GET /api/settings/values?_t=1767000093133 HTTP/1.1" 200 - +2025-12-29 17:25:31,389 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:25:31] "GET /api/settings/schema?_t=1767000331381 HTTP/1.1" 200 - +2025-12-29 17:25:31,393 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:25:31] "GET /api/settings/values?_t=1767000331381 HTTP/1.1" 200 - +2025-12-29 17:26:16,820 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:26:16] "GET /api/settings/schema?_t=1767000376800 HTTP/1.1" 200 - +2025-12-29 17:26:16,829 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:26:16] "GET /api/settings/values?_t=1767000376800 HTTP/1.1" 200 - +2025-12-29 17:26:38,275 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:26:38] "GET /api/settings/schema?_t=1767000398269 HTTP/1.1" 200 - +2025-12-29 17:26:38,279 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:26:38] "GET /api/settings/values?_t=1767000398269 HTTP/1.1" 200 - +2025-12-29 17:26:59,548 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:26:59] "GET /api/settings/schema?_t=1767000419539 HTTP/1.1" 200 - +2025-12-29 17:26:59,555 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:26:59] "GET /api/settings/values?_t=1767000419539 HTTP/1.1" 200 - +2025-12-29 17:31:37,020 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:31:37] "GET /api/settings/schema?_t=1767000697014 HTTP/1.1" 200 - +2025-12-29 17:31:37,234 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:31:37] "GET /api/settings/values?_t=1767000697014 HTTP/1.1" 200 - +2025-12-29 17:32:42,499 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:32:42] "GET /api/settings/schema?_t=1767000762485 HTTP/1.1" 200 - +2025-12-29 17:32:42,505 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:32:42] "GET /api/settings/values?_t=1767000762485 HTTP/1.1" 200 - +2025-12-29 17:33:03,256 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:33:03] "GET /api/settings/schema?_t=1767000783250 HTTP/1.1" 200 - +2025-12-29 17:33:03,260 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:33:03] "GET /api/settings/values?_t=1767000783250 HTTP/1.1" 200 - +2025-12-29 17:33:21,346 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:33:21] "GET /api/settings/schema?_t=1767000801337 HTTP/1.1" 200 - +2025-12-29 17:33:21,652 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:33:21] "GET /api/settings/values?_t=1767000801337 HTTP/1.1" 200 - +2025-12-29 17:33:52,630 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:33:52] "GET /api/settings/schema?_t=1767000832620 HTTP/1.1" 200 - +2025-12-29 17:33:52,633 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:33:52] "GET /api/settings/values?_t=1767000832620 HTTP/1.1" 200 - +2025-12-29 17:35:24,041 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:35:24] "GET /api/settings/values HTTP/1.1" 200 - +2025-12-29 17:35:38,677 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-29 17:35:38,680 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-29 17:35:39,178 - app.services.strategy - INFO - Found 2 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}] +2025-12-29 17:35:39,178 - app - INFO - Restoring 2 running strategies... +2025-12-29 17:35:39,178 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-29 17:35:39,179 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-29 17:35:39,179 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-29 17:35:39,179 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-29 17:35:39,179 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-29 17:35:39,180 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-29 17:35:39,180 - app - INFO - Strategy restore completed: 2/2 restored +2025-12-29 17:35:39,180 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-29 17:35:39,181 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-29 17:35:39,216 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-29 17:35:39,216 - werkzeug - INFO - Press CTRL+C to quit +2025-12-29 17:35:42,343 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:35:42] "GET /api/settings/schema?_t=1767000941907 HTTP/1.1" 200 - +2025-12-29 17:35:42,856 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:35:42] "GET /api/settings/values?_t=1767000941907 HTTP/1.1" 200 - +2025-12-29 17:35:43,111 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-29 17:35:43,130 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2025-12-29 17:35:43,229 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-29 17:35:43,250 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2025-12-29 17:37:46,283 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:37:46] "GET /api/dashboard/summary?_t=1767001066266 HTTP/1.1" 200 - +2025-12-29 17:37:46,324 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:37:46] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1767001066266 HTTP/1.1" 200 - +2025-12-29 17:37:50,157 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:37:50] "GET /api/market/types?_t=1767001070142 HTTP/1.1" 200 - +2025-12-29 17:37:50,337 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:37:50] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 17:37:50,484 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:37:50] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 17:37:50,489 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-29 17:37:50,763 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:37:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 17:37:52,390 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 17:37:52,490 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:37:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 17:37:53,390 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 17:37:53,390 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:37:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 17:37:54,770 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 17:37:54,771 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:37:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 17:37:55,390 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 17:37:55,390 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:37:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 17:37:56,391 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 17:37:56,392 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:37:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 17:37:57,695 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 17:37:57,695 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:37:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 17:37:58,391 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 17:37:58,391 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:37:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 17:37:58,938 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:37:58] "GET /api/strategies?_t=1767001078929 HTTP/1.1" 200 - +2025-12-29 17:38:00,345 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:38:00] "GET /api/strategies/equityCurve?id=9&_t=1767001080334 HTTP/1.1" 200 - +2025-12-29 17:38:00,688 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:38:00] "GET /api/strategies/equityCurve?id=9&_t=1767001080334 HTTP/1.1" 200 - +2025-12-29 17:38:00,692 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:38:00] "GET /api/strategies/notifications?id=9&since_id=0&limit=50&_t=1767001080334 HTTP/1.1" 200 - +2025-12-29 17:38:00,695 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:38:00] "GET /api/strategies/positions?id=9&_t=1767001080338 HTTP/1.1" 200 - +2025-12-29 17:38:01,148 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:38:01] "GET /api/strategies/equityCurve?id=2&_t=1767001081140 HTTP/1.1" 200 - +2025-12-29 17:38:01,382 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:38:01] "GET /api/strategies/equityCurve?id=2&_t=1767001081140 HTTP/1.1" 200 - +2025-12-29 17:38:01,461 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:38:01] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1767001081140 HTTP/1.1" 200 - +2025-12-29 17:38:01,464 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:38:01] "GET /api/strategies/positions?id=2&_t=1767001081142 HTTP/1.1" 200 - +2025-12-29 17:38:01,910 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:38:01] "GET /api/strategies/equityCurve?id=1&_t=1767001081899 HTTP/1.1" 200 - +2025-12-29 17:38:02,219 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:38:02] "GET /api/strategies/equityCurve?id=1&_t=1767001081899 HTTP/1.1" 200 - +2025-12-29 17:38:02,224 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:38:02] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1767001081900 HTTP/1.1" 200 - +2025-12-29 17:38:02,228 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:38:02] "GET /api/strategies/positions?id=1&_t=1767001081900 HTTP/1.1" 200 - +2025-12-29 17:38:03,260 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:38:03] "GET /api/strategies/trades?id=1&_t=1767001082947 HTTP/1.1" 200 - +2025-12-29 17:38:04,915 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:38:04] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1767001084907 HTTP/1.1" 200 - +2025-12-29 17:38:07,216 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:38:07] "GET /api/strategies/positions?id=1&_t=1767001086903 HTTP/1.1" 200 - +2025-12-29 17:38:07,902 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:38:07] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1767001087896 HTTP/1.1" 200 - +2025-12-29 17:38:11,210 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:38:11] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1767001090898 HTTP/1.1" 200 - +2025-12-29 17:38:11,909 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:38:11] "GET /api/strategies/positions?id=1&_t=1767001091900 HTTP/1.1" 200 - +2025-12-29 17:38:14,215 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:38:14] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1767001093901 HTTP/1.1" 200 - +2025-12-29 17:38:16,910 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:38:16] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1767001096902 HTTP/1.1" 200 - +2025-12-29 17:38:17,225 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:38:17] "GET /api/strategies/positions?id=1&_t=1767001096903 HTTP/1.1" 200 - +2025-12-29 17:38:19,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:38:19] "GET /api/settings/schema?_t=1767001099484 HTTP/1.1" 200 - +2025-12-29 17:38:19,799 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:38:19] "GET /api/settings/values?_t=1767001099484 HTTP/1.1" 200 - +2025-12-29 17:38:22,705 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:38:22] "GET /api/dashboard/summary?_t=1767001102692 HTTP/1.1" 200 - +2025-12-29 17:38:23,019 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:38:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1767001102692 HTTP/1.1" 200 - +2025-12-29 17:40:14,070 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:40:14] "GET /api/dashboard/summary?_t=1767001214060 HTTP/1.1" 200 - +2025-12-29 17:40:14,281 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:40:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1767001214060 HTTP/1.1" 200 - +2025-12-29 17:40:24,706 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:40:24] "GET /api/dashboard/summary?_t=1767001224696 HTTP/1.1" 200 - +2025-12-29 17:40:24,717 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:40:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1767001224696 HTTP/1.1" 200 - +2025-12-29 17:42:39,420 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:42:39] "GET /api/dashboard/summary?_t=1767001359407 HTTP/1.1" 200 - +2025-12-29 17:42:39,623 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:42:39] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1767001359407 HTTP/1.1" 200 - +2025-12-29 17:42:39,680 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:42:39] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1767001359407 HTTP/1.1" 200 - +2025-12-29 17:42:39,814 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:42:39] "GET /api/dashboard/summary?_t=1767001359799 HTTP/1.1" 200 - +2025-12-29 17:42:39,822 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:42:39] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1767001359799 HTTP/1.1" 200 - +2025-12-29 17:42:39,827 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:42:39] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1767001359799 HTTP/1.1" 200 - +2025-12-29 17:42:40,160 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:42:40] "GET /api/dashboard/summary?_t=1767001360150 HTTP/1.1" 200 - +2025-12-29 17:42:40,422 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:42:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1767001360150 HTTP/1.1" 200 - +2025-12-29 17:42:40,477 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:42:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1767001360150 HTTP/1.1" 200 - +2025-12-29 17:42:45,145 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:42:45] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767001365137 HTTP/1.1" 200 - +2025-12-29 17:42:50,451 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:42:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767001370136 HTTP/1.1" 200 - +2025-12-29 17:42:55,144 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:42:55] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767001375136 HTTP/1.1" 200 - +2025-12-29 17:42:57,968 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:42:57] "GET /api/dashboard/summary?_t=1767001377947 HTTP/1.1" 200 - +2025-12-29 17:42:57,975 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:42:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1767001377948 HTTP/1.1" 200 - +2025-12-29 17:42:57,982 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:42:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1767001377948 HTTP/1.1" 200 - +2025-12-29 17:43:02,919 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767001382912 HTTP/1.1" 200 - +2025-12-29 17:43:08,225 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767001387909 HTTP/1.1" 200 - +2025-12-29 17:43:11,158 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:11] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 17:43:11,371 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:11] "GET /api/market/config?_t=1767001391140 HTTP/1.1" 200 - +2025-12-29 17:43:11,724 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-29 17:43:11,724 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-29 17:43:11,724 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-29 17:43:11,724 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-29 17:43:11,724 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-29 17:43:12,923 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (276193s) +2025-12-29 17:43:13,084 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:13] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 17:43:13,087 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:13] "GET /api/market/types?_t=1767001391384 HTTP/1.1" 200 - +2025-12-29 17:43:14,347 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:14] "GET /api/market/types?_t=1767001394341 HTTP/1.1" 200 - +2025-12-29 17:43:14,661 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:14] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 17:43:14,667 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:14] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 17:43:14,694 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-29 17:43:15,071 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 17:43:16,603 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 17:43:16,780 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 17:43:18,461 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 17:43:18,461 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 17:43:18,601 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 17:43:18,602 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 17:43:19,604 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 17:43:19,604 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 17:43:20,011 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:20] "GET /api/strategies?_t=1767001399998 HTTP/1.1" 200 - +2025-12-29 17:43:21,769 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:21] "GET /api/strategies/equityCurve?id=2&_t=1767001401310 HTTP/1.1" 200 - +2025-12-29 17:43:21,773 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:21] "GET /api/strategies/equityCurve?id=2&_t=1767001401310 HTTP/1.1" 200 - +2025-12-29 17:43:21,777 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:21] "GET /api/strategies/notifications?id=2&since_id=0&limit=50&_t=1767001401310 HTTP/1.1" 200 - +2025-12-29 17:43:21,782 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:21] "GET /api/strategies/positions?id=2&_t=1767001401313 HTTP/1.1" 200 - +2025-12-29 17:43:22,549 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:22] "GET /api/strategies/trades?id=2&_t=1767001402539 HTTP/1.1" 200 - +2025-12-29 17:43:23,969 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:23] "GET /api/strategies/equityCurve?id=1&_t=1767001403958 HTTP/1.1" 200 - +2025-12-29 17:43:24,285 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:24] "GET /api/strategies/equityCurve?id=1&_t=1767001403958 HTTP/1.1" 200 - +2025-12-29 17:43:24,288 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:24] "GET /api/strategies/notifications?id=1&since_id=0&limit=50&_t=1767001403958 HTTP/1.1" 200 - +2025-12-29 17:43:24,291 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:24] "GET /api/strategies/trades?id=1&_t=1767001403959 HTTP/1.1" 200 - +2025-12-29 17:43:24,294 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:24] "GET /api/strategies/positions?id=1&_t=1767001403959 HTTP/1.1" 200 - +2025-12-29 17:43:27,277 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:27] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1767001406960 HTTP/1.1" 200 - +2025-12-29 17:43:28,970 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:28] "GET /api/strategies/positions?id=1&_t=1767001408963 HTTP/1.1" 200 - +2025-12-29 17:43:30,276 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:30] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1767001409963 HTTP/1.1" 200 - +2025-12-29 17:43:32,970 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:32] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1767001412961 HTTP/1.1" 200 - +2025-12-29 17:43:34,286 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:34] "GET /api/strategies/positions?id=1&_t=1767001413963 HTTP/1.1" 200 - +2025-12-29 17:43:35,961 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:35] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1767001415955 HTTP/1.1" 200 - +2025-12-29 17:43:39,278 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:39] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1767001418962 HTTP/1.1" 200 - +2025-12-29 17:43:39,283 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:39] "GET /api/strategies/positions?id=1&_t=1767001418962 HTTP/1.1" 200 - +2025-12-29 17:43:41,963 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:41] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1767001421956 HTTP/1.1" 200 - +2025-12-29 17:43:44,284 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:44] "GET /api/strategies/positions?id=1&_t=1767001423963 HTTP/1.1" 200 - +2025-12-29 17:43:44,968 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:44] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1767001424961 HTTP/1.1" 200 - +2025-12-29 17:43:48,281 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:48] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1767001427963 HTTP/1.1" 200 - +2025-12-29 17:43:48,970 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:48] "GET /api/strategies/positions?id=1&_t=1767001428963 HTTP/1.1" 200 - +2025-12-29 17:43:51,279 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:51] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1767001430963 HTTP/1.1" 200 - +2025-12-29 17:43:53,970 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:53] "GET /api/strategies/equityCurve?id=1&_t=1767001433962 HTTP/1.1" 200 - +2025-12-29 17:43:54,279 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:54] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1767001433962 HTTP/1.1" 200 - +2025-12-29 17:43:54,284 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:54] "GET /api/strategies/positions?id=1&_t=1767001433962 HTTP/1.1" 200 - +2025-12-29 17:43:57,269 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:57] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1767001436954 HTTP/1.1" 200 - +2025-12-29 17:43:58,967 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:43:58] "GET /api/strategies/positions?id=1&_t=1767001438959 HTTP/1.1" 200 - +2025-12-29 17:44:00,262 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:44:00] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1767001439954 HTTP/1.1" 200 - +2025-12-29 17:44:02,960 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:44:02] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1767001442954 HTTP/1.1" 200 - +2025-12-29 17:44:04,270 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:44:04] "GET /api/strategies/positions?id=1&_t=1767001443958 HTTP/1.1" 200 - +2025-12-29 17:44:05,961 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:44:05] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1767001445955 HTTP/1.1" 200 - +2025-12-29 17:44:09,268 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:44:09] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1767001448955 HTTP/1.1" 200 - +2025-12-29 17:44:09,271 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:44:09] "GET /api/strategies/positions?id=1&_t=1767001448960 HTTP/1.1" 200 - +2025-12-29 17:44:11,961 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:44:11] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1767001451953 HTTP/1.1" 200 - +2025-12-29 17:44:14,273 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:44:14] "GET /api/strategies/positions?id=1&_t=1767001453959 HTTP/1.1" 200 - +2025-12-29 17:44:14,961 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:44:14] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1767001454954 HTTP/1.1" 200 - +2025-12-29 17:44:18,270 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:44:18] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1767001457955 HTTP/1.1" 200 - +2025-12-29 17:44:18,966 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:44:18] "GET /api/strategies/positions?id=1&_t=1767001458958 HTTP/1.1" 200 - +2025-12-29 17:44:21,270 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:44:21] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1767001460954 HTTP/1.1" 200 - +2025-12-29 17:44:23,961 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:44:23] "GET /api/strategies/equityCurve?id=1&_t=1767001463954 HTTP/1.1" 200 - +2025-12-29 17:44:24,274 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:44:24] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1767001463954 HTTP/1.1" 200 - +2025-12-29 17:44:24,278 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:44:24] "GET /api/strategies/positions?id=1&_t=1767001463959 HTTP/1.1" 200 - +2025-12-29 17:44:27,273 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:44:27] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1767001466954 HTTP/1.1" 200 - +2025-12-29 17:44:28,965 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:44:28] "GET /api/strategies/positions?id=1&_t=1767001468959 HTTP/1.1" 200 - +2025-12-29 17:44:30,271 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:44:30] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1767001469954 HTTP/1.1" 200 - +2025-12-29 17:44:32,969 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:44:32] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1767001472961 HTTP/1.1" 200 - +2025-12-29 17:44:34,270 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:44:34] "GET /api/strategies/positions?id=1&_t=1767001473959 HTTP/1.1" 200 - +2025-12-29 17:44:35,960 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:44:35] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1767001475954 HTTP/1.1" 200 - +2025-12-29 17:44:39,269 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:44:39] "GET /api/strategies/notifications?id=1&since_id=19&limit=50&_t=1767001478954 HTTP/1.1" 200 - +2025-12-29 17:44:39,273 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:44:39] "GET /api/strategies/positions?id=1&_t=1767001478959 HTTP/1.1" 200 - +2025-12-29 17:44:39,557 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:44:39] "GET /api/strategies?_t=1767001479549 HTTP/1.1" 200 - +2025-12-29 17:44:51,824 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:44:51] "GET /api/strategies?_t=1767001491810 HTTP/1.1" 200 - +2025-12-29 17:45:41,256 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:45:41] "GET /api/strategies?_t=1767001541245 HTTP/1.1" 200 - +2025-12-29 17:45:41,309 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:45:41] "GET /api/strategies?_t=1767001541301 HTTP/1.1" 200 - +2025-12-29 17:45:41,599 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:45:41] "GET /api/strategies?_t=1767001541592 HTTP/1.1" 200 - +2025-12-29 17:45:54,774 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:45:54] "GET /api/strategies?_t=1767001554766 HTTP/1.1" 200 - +2025-12-29 17:46:05,080 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:46:05] "GET /api/strategies/equityCurve?id=2&_t=1767001564761 HTTP/1.1" 200 - +2025-12-29 17:46:05,084 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:46:05] "GET /api/strategies/equityCurve?id=2&_t=1767001564761 HTTP/1.1" 200 - +2025-12-29 17:46:05,093 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:46:05] "GET /api/strategies/positions?id=2&_t=1767001564763 HTTP/1.1" 200 - +2025-12-29 17:46:05,340 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:46:05] "GET /api/strategies/equityCurve?id=1&_t=1767001565310 HTTP/1.1" 200 - +2025-12-29 17:46:05,659 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:46:05] "GET /api/strategies/equityCurve?id=1&_t=1767001565310 HTTP/1.1" 200 - +2025-12-29 17:46:05,662 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:46:05] "GET /api/strategies/positions?id=1&_t=1767001565311 HTTP/1.1" 200 - +2025-12-29 17:46:06,147 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:46:06] "GET /api/strategies/equityCurve?id=9&_t=1767001566139 HTTP/1.1" 200 - +2025-12-29 17:46:06,456 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:46:06] "GET /api/strategies/equityCurve?id=9&_t=1767001566139 HTTP/1.1" 200 - +2025-12-29 17:46:06,459 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:46:06] "GET /api/strategies/positions?id=9&_t=1767001566140 HTTP/1.1" 200 - +2025-12-29 17:46:08,777 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:46:08] "GET /api/dashboard/summary?_t=1767001568449 HTTP/1.1" 200 - +2025-12-29 17:46:08,782 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:46:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1767001568449 HTTP/1.1" 200 - +2025-12-29 17:46:08,788 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:46:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1767001568449 HTTP/1.1" 200 - +2025-12-29 17:46:13,439 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:46:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767001573430 HTTP/1.1" 200 - +2025-12-29 17:46:18,756 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:46:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767001578430 HTTP/1.1" 200 - +2025-12-29 17:46:19,883 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:46:19] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 17:46:20,194 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:46:20] "GET /api/market/config?_t=1767001579846 HTTP/1.1" 200 - +2025-12-29 17:46:20,239 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:46:20] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 17:46:20,521 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:46:20] "GET /api/market/types?_t=1767001580205 HTTP/1.1" 200 - +2025-12-29 17:46:21,182 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:46:21] "GET /api/settings/schema?_t=1767001581169 HTTP/1.1" 200 - +2025-12-29 17:46:21,403 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:46:21] "GET /api/settings/values?_t=1767001581169 HTTP/1.1" 200 - +2025-12-29 17:49:21,292 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:49:21] "GET /api/settings/schema?_t=1767001761284 HTTP/1.1" 200 - +2025-12-29 17:49:21,514 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:49:21] "GET /api/settings/values?_t=1767001761284 HTTP/1.1" 200 - +2025-12-29 17:49:33,626 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:49:33] "GET /api/settings/schema?_t=1767001773618 HTTP/1.1" 200 - +2025-12-29 17:49:33,631 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:49:33] "GET /api/settings/values?_t=1767001773618 HTTP/1.1" 200 - +2025-12-29 17:49:47,517 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:49:47] "GET /api/settings/schema?_t=1767001787504 HTTP/1.1" 200 - +2025-12-29 17:49:47,745 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:49:47] "GET /api/settings/values?_t=1767001787504 HTTP/1.1" 200 - +2025-12-29 17:49:58,807 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:49:58] "GET /api/settings/schema?_t=1767001798798 HTTP/1.1" 200 - +2025-12-29 17:49:58,810 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:49:58] "GET /api/settings/values?_t=1767001798798 HTTP/1.1" 200 - +2025-12-29 17:50:09,960 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:50:09] "GET /api/settings/schema?_t=1767001809953 HTTP/1.1" 200 - +2025-12-29 17:50:09,963 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:50:09] "GET /api/settings/values?_t=1767001809953 HTTP/1.1" 200 - +2025-12-29 17:50:31,171 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:50:31] "GET /api/settings/schema?_t=1767001831165 HTTP/1.1" 200 - +2025-12-29 17:50:31,174 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:50:31] "GET /api/settings/values?_t=1767001831165 HTTP/1.1" 200 - +2025-12-29 17:52:19,131 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-29 17:52:19,135 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-29 17:52:19,568 - app.services.strategy - INFO - Found 2 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}] +2025-12-29 17:52:19,568 - app - INFO - Restoring 2 running strategies... +2025-12-29 17:52:19,569 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-29 17:52:19,569 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-29 17:52:19,569 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-29 17:52:19,569 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-29 17:52:19,569 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-29 17:52:19,569 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-29 17:52:19,569 - app - INFO - Strategy restore completed: 2/2 restored +2025-12-29 17:52:19,570 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-29 17:52:19,573 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-29 17:52:19,603 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-29 17:52:19,603 - werkzeug - INFO - Press CTRL+C to quit +2025-12-29 17:52:21,916 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:52:21] "GET /api/settings/schema?_t=1767001941594 HTTP/1.1" 200 - +2025-12-29 17:52:21,920 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:52:21] "GET /api/settings/values?_t=1767001941594 HTTP/1.1" 200 - +2025-12-29 17:52:25,463 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-29 17:52:25,463 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-29 17:52:25,498 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2025-12-29 17:52:25,499 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2025-12-29 17:52:30,888 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:52:30] "GET /api/settings/schema?_t=1767001950881 HTTP/1.1" 200 - +2025-12-29 17:52:30,948 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:52:30] "GET /api/settings/values?_t=1767001950881 HTTP/1.1" 200 - +2025-12-29 17:54:28,591 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:54:28] "GET /api/settings/schema?_t=1767002068584 HTTP/1.1" 200 - +2025-12-29 17:54:28,810 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:54:28] "GET /api/settings/values?_t=1767002068584 HTTP/1.1" 200 - +2025-12-29 17:54:39,565 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:54:39] "GET /api/settings/schema?_t=1767002079536 HTTP/1.1" 200 - +2025-12-29 17:54:39,568 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:54:39] "GET /api/settings/values?_t=1767002079536 HTTP/1.1" 200 - +2025-12-29 17:54:53,186 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:54:53] "GET /api/settings/schema?_t=1767002093177 HTTP/1.1" 200 - +2025-12-29 17:54:53,190 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:54:53] "GET /api/settings/values?_t=1767002093177 HTTP/1.1" 200 - +2025-12-29 17:55:08,617 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:55:08] "GET /api/settings/schema?_t=1767002108608 HTTP/1.1" 200 - +2025-12-29 17:55:08,620 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:55:08] "GET /api/settings/values?_t=1767002108608 HTTP/1.1" 200 - +2025-12-29 17:55:28,443 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:55:28] "GET /api/settings/schema?_t=1767002128434 HTTP/1.1" 200 - +2025-12-29 17:55:28,447 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:55:28] "GET /api/settings/values?_t=1767002128434 HTTP/1.1" 200 - +2025-12-29 17:55:51,539 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:55:51] "GET /api/settings/schema?_t=1767002151532 HTTP/1.1" 200 - +2025-12-29 17:55:51,845 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:55:51] "GET /api/settings/values?_t=1767002151532 HTTP/1.1" 200 - +2025-12-29 17:55:57,083 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-29 17:55:57,087 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-29 17:55:57,521 - app.services.strategy - INFO - Found 2 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}] +2025-12-29 17:55:57,521 - app - INFO - Restoring 2 running strategies... +2025-12-29 17:55:57,521 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-29 17:55:57,521 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-29 17:55:57,521 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-29 17:55:57,522 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-29 17:55:57,522 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-29 17:55:57,522 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-29 17:55:57,523 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-29 17:55:57,523 - app - INFO - Strategy restore completed: 2/2 restored +2025-12-29 17:55:57,529 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-29 17:55:57,544 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-29 17:55:57,545 - werkzeug - INFO - Press CTRL+C to quit +2025-12-29 17:56:00,204 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:56:00] "GET /api/settings/schema?_t=1767002159895 HTTP/1.1" 200 - +2025-12-29 17:56:00,208 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 17:56:00] "GET /api/settings/values?_t=1767002159895 HTTP/1.1" 200 - +2025-12-29 17:56:02,879 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-29 17:56:02,896 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2025-12-29 17:56:03,383 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-29 17:56:03,401 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2025-12-29 18:02:55,604 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:02:55] "GET /api/dashboard/summary?_t=1767002575591 HTTP/1.1" 200 - +2025-12-29 18:02:55,617 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:02:55] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1767002575591 HTTP/1.1" 200 - +2025-12-29 18:02:55,663 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:02:55] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1767002575591 HTTP/1.1" 200 - +2025-12-29 18:03:00,585 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002580578 HTTP/1.1" 200 - +2025-12-29 18:03:02,626 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:02] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 18:03:02,631 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:02] "GET /api/market/config?_t=1767002582600 HTTP/1.1" 200 - +2025-12-29 18:03:03,085 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-29 18:03:03,085 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-29 18:03:03,085 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-29 18:03:03,085 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-29 18:03:03,085 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-29 18:03:04,191 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (277384s) +2025-12-29 18:03:05,651 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:05] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 18:03:05,654 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:05] "GET /api/market/types?_t=1767002582694 HTTP/1.1" 200 - +2025-12-29 18:03:05,660 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:05] "GET /api/dashboard/summary?_t=1767002583426 HTTP/1.1" 200 - +2025-12-29 18:03:05,666 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:05] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1767002583426 HTTP/1.1" 200 - +2025-12-29 18:03:05,670 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:05] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1767002583426 HTTP/1.1" 200 - +2025-12-29 18:03:05,673 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:05] "GET /api/market/types?_t=1767002584569 HTTP/1.1" 200 - +2025-12-29 18:03:05,960 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:05] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 18:03:05,965 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:05] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 18:03:05,988 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-29 18:03:07,014 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:07,018 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:07] "GET /api/strategies?_t=1767002586061 HTTP/1.1" 200 - +2025-12-29 18:03:07,765 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:07] "GET /api/strategies/equityCurve?id=2&_t=1767002587751 HTTP/1.1" 200 - +2025-12-29 18:03:07,769 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:07] "GET /api/strategies/equityCurve?id=2&_t=1767002587751 HTTP/1.1" 200 - +2025-12-29 18:03:07,773 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:07] "GET /api/strategies/positions?id=2&_t=1767002587753 HTTP/1.1" 200 - +2025-12-29 18:03:08,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:08,403 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:08,581 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:08] "GET /api/strategies/equityCurve?id=1&_t=1767002588267 HTTP/1.1" 200 - +2025-12-29 18:03:08,584 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:08] "GET /api/strategies/equityCurve?id=1&_t=1767002588267 HTTP/1.1" 200 - +2025-12-29 18:03:08,587 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:08] "GET /api/strategies/positions?id=1&_t=1767002588268 HTTP/1.1" 200 - +2025-12-29 18:03:09,357 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:09,358 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:09,483 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:09] "GET /api/strategies/trades?id=1&_t=1767002589162 HTTP/1.1" 200 - +2025-12-29 18:03:10,065 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:10,066 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:10,665 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:10] "GET /api/settings/schema?_t=1767002590350 HTTP/1.1" 200 - +2025-12-29 18:03:10,668 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:10] "GET /api/settings/values?_t=1767002590350 HTTP/1.1" 200 - +2025-12-29 18:03:11,047 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:11,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:12,067 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:12,067 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:13,151 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:13,152 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:13,597 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:13] "GET /api/dashboard/summary?_t=1767002593235 HTTP/1.1" 200 - +2025-12-29 18:03:13,605 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1767002593235 HTTP/1.1" 200 - +2025-12-29 18:03:13,613 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1767002593235 HTTP/1.1" 200 - +2025-12-29 18:03:14,046 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:14,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:15,360 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:15,361 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:16,062 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:16,063 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:17,355 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:17,355 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:18,063 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:18,063 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:18,547 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002598228 HTTP/1.1" 200 - +2025-12-29 18:03:19,047 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:19,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:20,360 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:20,361 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:21,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:21,059 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:22,365 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:22,366 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:23,055 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:23,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:23,538 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002603221 HTTP/1.1" 200 - +2025-12-29 18:03:24,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:24,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:25,367 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:25,367 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:26,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:26,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:27,373 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:27,373 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:28,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:28,061 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:28,527 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002608212 HTTP/1.1" 200 - +2025-12-29 18:03:29,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:29,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:30,368 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:30,368 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:31,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:31,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:32,357 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:32,359 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:33,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:33,061 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:33,542 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002613224 HTTP/1.1" 200 - +2025-12-29 18:03:34,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:34,059 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:35,369 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:35,370 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:36,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:36,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:37,367 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:37,368 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:38,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:38,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:38,537 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002618221 HTTP/1.1" 200 - +2025-12-29 18:03:39,048 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:39,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:40,366 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:40,367 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:41,051 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:41,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:42,366 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:42,367 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:43,051 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:43,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:43,535 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002623217 HTTP/1.1" 200 - +2025-12-29 18:03:44,055 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:44,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:45,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:45,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:46,048 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:46,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:47,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:47,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:48,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:48,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:48,537 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002628220 HTTP/1.1" 200 - +2025-12-29 18:03:49,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:49,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:50,358 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:50,358 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:51,059 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:51,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:52,365 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:52,367 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:53,048 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:53,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:53,527 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002633213 HTTP/1.1" 200 - +2025-12-29 18:03:54,055 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:54,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:55,370 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:55,371 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:56,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:56,061 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:57,369 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:57,369 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:58,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:58,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:03:58,536 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002638218 HTTP/1.1" 200 - +2025-12-29 18:03:59,049 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:03:59,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:03:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:00,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:00,364 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:01,046 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:01,046 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:02,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:02,364 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:03,048 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:03,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:03,528 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002643213 HTTP/1.1" 200 - +2025-12-29 18:04:04,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:04,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:05,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:05,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:06,049 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:06,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:07,360 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:07,361 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:08,067 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:08,067 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:08,533 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002648212 HTTP/1.1" 200 - +2025-12-29 18:04:09,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:09,059 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:10,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:10,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:11,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:11,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:12,366 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:12,366 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:13,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:13,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:13,536 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002653219 HTTP/1.1" 200 - +2025-12-29 18:04:14,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:14,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:15,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:15,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:16,049 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:16,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:17,370 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:17,371 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:18,049 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:18,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:18,531 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002658216 HTTP/1.1" 200 - +2025-12-29 18:04:19,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:19,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:20,358 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:20,358 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:21,059 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:21,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:22,360 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:22,360 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:23,061 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:23,061 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:23,538 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002663224 HTTP/1.1" 200 - +2025-12-29 18:04:24,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:24,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:25,355 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:25,356 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:26,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:26,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:27,359 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:27,360 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:28,051 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:28,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:28,534 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002668216 HTTP/1.1" 200 - +2025-12-29 18:04:29,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:29,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:30,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:30,361 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:31,059 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:31,059 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:32,365 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:32,366 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:33,047 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:33,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:33,542 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002673226 HTTP/1.1" 200 - +2025-12-29 18:04:34,051 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:34,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:35,373 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:35,373 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:36,055 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:36,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:37,370 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:37,371 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:38,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:38,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:38,536 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002678220 HTTP/1.1" 200 - +2025-12-29 18:04:39,049 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:39,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:40,364 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:40,365 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:41,048 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:41,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:42,367 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:42,367 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:43,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:43,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:43,533 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002683217 HTTP/1.1" 200 - +2025-12-29 18:04:44,062 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:44,063 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:45,371 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:45,372 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:46,057 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:46,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:47,358 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:47,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:48,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:48,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:48,537 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002688219 HTTP/1.1" 200 - +2025-12-29 18:04:49,048 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:49,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:50,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:50,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:51,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:51,059 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:52,373 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:52,373 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:53,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:53,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:53,539 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002693223 HTTP/1.1" 200 - +2025-12-29 18:04:54,049 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:54,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:55,368 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:55,369 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:56,049 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:56,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:57,370 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:57,370 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:58,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:58,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:04:58,530 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002698213 HTTP/1.1" 200 - +2025-12-29 18:04:59,062 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:04:59,063 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:04:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:00,371 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:00,372 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:01,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:01,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:02,370 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:02,371 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:03,055 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:03,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:03,536 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002703220 HTTP/1.1" 200 - +2025-12-29 18:05:04,061 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:04,062 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:05,360 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:05,360 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:06,047 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:06,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:07,364 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:07,365 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:08,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:08,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:08,528 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002708213 HTTP/1.1" 200 - +2025-12-29 18:05:09,057 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:09,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:10,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:10,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:11,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:11,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:12,368 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:12,368 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:13,055 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:13,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:13,534 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002713220 HTTP/1.1" 200 - +2025-12-29 18:05:14,051 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:14,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:15,370 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:15,370 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:16,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:16,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:17,365 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:17,366 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:18,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:18,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:18,540 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002718222 HTTP/1.1" 200 - +2025-12-29 18:05:19,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:19,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:20,366 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:20,367 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:21,046 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:21,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:22,358 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:22,359 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:23,048 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:23,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:23,529 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002723214 HTTP/1.1" 200 - +2025-12-29 18:05:24,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:24,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:25,360 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:25,360 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:26,061 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:26,062 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:27,374 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:27,375 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:28,047 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:28,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:28,530 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002728213 HTTP/1.1" 200 - +2025-12-29 18:05:29,055 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:29,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:30,359 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:30,360 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:31,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:31,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:32,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:32,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:33,051 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:33,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:33,537 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002733218 HTTP/1.1" 200 - +2025-12-29 18:05:34,048 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:34,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:35,369 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:35,369 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:36,048 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:36,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:37,367 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:37,367 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:38,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:38,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:38,536 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002738212 HTTP/1.1" 200 - +2025-12-29 18:05:39,062 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:39,063 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:40,830 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:40,830 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:41,448 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:41,448 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:42,755 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:42,756 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:43,461 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:43,461 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:43,781 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002743456 HTTP/1.1" 200 - +2025-12-29 18:05:44,759 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:44,759 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:45,459 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:45,460 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:46,771 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:46,771 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:47,457 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:47,458 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:48,764 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:48,765 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:48,769 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002748451 HTTP/1.1" 200 - +2025-12-29 18:05:49,451 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:49,451 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:50,764 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:50,765 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:51,448 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:51,449 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:52,764 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:52,764 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:53,463 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:53,463 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:53,772 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002753458 HTTP/1.1" 200 - +2025-12-29 18:05:54,771 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:54,772 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:55,459 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:55,460 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:56,773 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:56,774 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:57,462 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:57,463 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:58,762 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:58,763 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:05:58,767 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002758446 HTTP/1.1" 200 - +2025-12-29 18:05:59,449 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:05:59,450 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:05:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:06:00,764 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:06:00,765 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:06:01,457 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:06:01,457 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:06:02,764 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:06:02,765 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:06:03,453 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:06:03,454 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:06:03,762 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002763448 HTTP/1.1" 200 - +2025-12-29 18:06:04,782 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:06:04,782 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:06:05,450 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:06:05,451 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:06:06,757 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:06:06,758 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:06:07,460 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:06:07,460 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:06:08,769 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:06:08,769 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:06:08,773 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002768453 HTTP/1.1" 200 - +2025-12-29 18:06:09,460 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:06:09,460 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:06:10,775 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:06:10,776 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:06:11,459 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:06:11,459 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:06:12,760 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:06:12,760 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:06:13,459 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:06:13,460 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:06:13,773 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002773456 HTTP/1.1" 200 - +2025-12-29 18:06:14,765 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:06:14,766 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:06:15,451 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:06:15,451 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:06:16,768 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:06:16,768 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:06:17,457 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:06:17,458 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:06:18,761 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:06:18,762 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:06:18,767 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002778443 HTTP/1.1" 200 - +2025-12-29 18:06:19,451 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:06:19,451 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:06:20,763 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:06:20,764 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:06:21,450 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:06:21,451 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:06:22,770 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:06:22,770 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:06:23,456 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:06:23,457 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:06:23,767 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002783451 HTTP/1.1" 200 - +2025-12-29 18:06:24,759 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:06:24,759 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:06:25,451 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:06:25,452 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:06:26,761 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:06:26,762 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:06:27,449 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:06:27,450 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:06:28,769 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:06:28,769 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:06:28,773 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002788452 HTTP/1.1" 200 - +2025-12-29 18:06:29,448 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:06:29,448 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:06:30,758 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:06:30,758 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:06:31,460 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:06:31,461 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:06:32,758 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:06:32,758 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:06:33,450 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:06:33,450 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:06:33,758 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002793444 HTTP/1.1" 200 - +2025-12-29 18:06:34,764 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:06:34,765 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:06:35,451 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:06:35,452 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:06:36,759 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:06:36,759 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:06:37,447 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:06:37,447 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:06:38,763 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:06:38,764 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:06:38,768 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002798452 HTTP/1.1" 200 - +2025-12-29 18:06:39,452 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:06:39,453 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:06:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:07:37,761 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:07:37,762 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:07:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:07:37,767 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:07:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002857444 HTTP/1.1" 200 - +2025-12-29 18:08:37,452 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:08:37,704 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:08:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:08:37,762 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:08:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002917446 HTTP/1.1" 200 - +2025-12-29 18:09:37,766 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:09:37,767 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:09:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:09:37,771 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:09:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767002977453 HTTP/1.1" 200 - +2025-12-29 18:10:37,460 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:10:37,460 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:10:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:10:37,772 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:10:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003037456 HTTP/1.1" 200 - +2025-12-29 18:11:37,768 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:11:37,769 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:11:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:11:37,773 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:11:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003097452 HTTP/1.1" 200 - +2025-12-29 18:11:43,361 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=88243.14, pending_signals=1 +2025-12-29 18:11:43,363 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 88243.14, 'position_size': 0, 'timestamp': 1767003060}] +2025-12-29 18:11:45,924 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:11:45,924 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:11:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:11:46,236 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:11:46] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003105891 HTTP/1.1" 200 - +2025-12-29 18:11:46,358 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:11:46,358 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:11:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:11:47,360 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:11:47,360 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:11:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:11:48,061 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:11:48,061 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:11:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:11:48,527 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:11:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003108213 HTTP/1.1" 200 - +2025-12-29 18:11:49,051 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:11:49,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:11:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:11:50,360 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:11:50,361 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:11:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:11:51,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:11:51,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:11:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:11:52,367 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:11:52,367 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:11:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:11:53,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:11:53,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:11:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:11:53,076 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=88243.14, pending_signals=1 +2025-12-29 18:11:53,078 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 88243.14, 'position_size': 0, 'timestamp': 1767003060}] +2025-12-29 18:11:53,535 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:11:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003113218 HTTP/1.1" 200 - +2025-12-29 18:11:54,048 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:11:54,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:11:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:11:55,369 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:11:55,369 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:11:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:11:56,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:11:56,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:11:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:11:57,356 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:11:57,357 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:11:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:11:58,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:11:58,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:11:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:11:58,542 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:11:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003118223 HTTP/1.1" 200 - +2025-12-29 18:11:59,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:11:59,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:11:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:00,359 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:00,360 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:01,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:01,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:02,360 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:02,360 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:03,048 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:03,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:03,529 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003123215 HTTP/1.1" 200 - +2025-12-29 18:12:03,675 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=88243.15, pending_signals=2 +2025-12-29 18:12:03,676 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 88243.15, 'position_size': 0.08, 'timestamp': 1767003060}, {'type': 'close_short', 'trigger_price': 88243.15, 'position_size': 0, 'timestamp': 1767003060}] +2025-12-29 18:12:03,694 - app.services.analysis - INFO - Multi-agent coordinator initialized +2025-12-29 18:12:03,694 - app.services.analysis - INFO - Starting analysis Crypto:BTC/USDT, language=zh-CN, mode=multi-agent +2025-12-29 18:12:03,695 - app.services.analysis - INFO - Run coordinator: Crypto:BTC/USDT +2025-12-29 18:12:03,695 - app.services.agents.coordinator - INFO - Multi-agent analysis start: Crypto:BTC/USDT, model=None, language=zh-CN +2025-12-29 18:12:04,061 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:04,062 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:04,360 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2980.74, pending_signals=2 +2025-12-29 18:12:04,362 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2981.57, 'position_size': 0, 'timestamp': 1767003060}] +2025-12-29 18:12:05,365 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:05,366 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:06,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:06,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:07,360 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:07,360 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:08,032 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:BTC/USDT: binance does not have market symbol BTC/USDT/USDT +2025-12-29 18:12:08,055 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:08,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:08,537 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003128218 HTTP/1.1" 200 - +2025-12-29 18:12:09,048 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:09,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:10,368 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:10,369 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:11,055 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:11,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:12,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:12,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:13,051 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:13,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:13,529 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003133219 HTTP/1.1" 200 - +2025-12-29 18:12:13,586 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2980.74, pending_signals=2 +2025-12-29 18:12:13,588 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2981.57, 'position_size': 0, 'timestamp': 1767003060}] +2025-12-29 18:12:14,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:14,061 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:15,407 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:15,439 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:15,558 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:BTC/USDT: binance does not have market symbol BTC/USDT/USDT +2025-12-29 18:12:15,582 - app.services.agents.tools - WARNING - Finnhub news fetch failed: 'Client' object has no attribute 'crypto_news' +2025-12-29 18:12:15,582 - app.services.agents.tools - INFO - Running news search: "BTC/USDT Cryptocurrency" BTC/USDT crypto news analysis +2025-12-29 18:12:16,057 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:16,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:16,934 - app.services.search - WARNING - Google Search returned no 'items'. Full response: {"kind": "customsearch#search", "url": {"type": "application/json", "template": "https://www.googleapis.com/customsearch/v1?q={searchTerms}&num={count?}&start={startIndex?}&lr={language?}&safe={safe?}&cx={cx?}&sort={sort?}&filter={filter?}&gl={gl?}&cr={cr?}&googlehost={googleHost?}&c2coff={disableCnTwTranslation?}&hq={hq?}&hl={hl?}&siteSearch={siteSearch?}&siteSearchFilter={siteSearchFilter?}&exactTerms={exactTerms?}&excludeTerms={excludeTerms?}&linkSite={linkSite?}&orTerms={orTerms?}&dateRestrict={dateRestrict?}&lowRange={lowRange?}&highRange={highRange?}&searchType={searchType}&fileType={fileType?}&rights={rights?}&imgSize={imgSize?}&imgType={imgType?}&imgColorType={imgColorType?}&imgDominantColor={imgDominantColor?}&alt=json"}, "queries": {"request": [{"title": "Google Custom Search - \"BTC/USDT Cryptocurrency\" BTC/USDT crypto news analysis", "searchTerms": "\"BTC/USDT Cryptocurrency\" BTC/USDT crypto news analysis", "count": 10, "startIndex": 1, "inputEncoding": "utf8", "outputEncoding": "utf8", "safe": "off", "cx": "17f675b8e3b994281", "dateRestrict": "d7"}]}, "context": {"title": "Global News Search"}, "searchInformation": {"searchTime": 0.329242, "formattedSearchTime": "0.33", "totalResults": "0", "formattedTotalResults": "0"}} +2025-12-29 18:12:16,935 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2025-12-29 18:12:17,364 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:17,364 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:18,049 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:18,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:18,532 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003138213 HTTP/1.1" 200 - +2025-12-29 18:12:19,059 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:19,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:20,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:20,361 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:21,076 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:21,108 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:21,226 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:BTC/USDT: binance does not have market symbol BTC/USDT/USDT +2025-12-29 18:12:22,356 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:22,356 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:23,059 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:23,059 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:23,543 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003143225 HTTP/1.1" 200 - +2025-12-29 18:12:23,692 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2979.0, pending_signals=2 +2025-12-29 18:12:23,693 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2981.57, 'position_size': 0, 'timestamp': 1767003060}] +2025-12-29 18:12:24,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:24,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:25,407 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:25,438 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:25,672 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:BTC/USDT: binance does not have market symbol BTC/USDT/USDT +2025-12-29 18:12:26,055 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:26,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:27,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:27,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:28,049 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:28,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:28,532 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003148218 HTTP/1.1" 200 - +2025-12-29 18:12:29,062 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:29,063 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:30,352 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:30,353 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:31,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:31,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:31,218 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2025-12-29 18:12:32,366 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:32,366 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:32,608 - app.services.llm - ERROR - OpenRouter API HTTP error (openai/gpt-4o): 403 Client Error: Forbidden for url: https://openrouter.ai/api/v1/chat/completions +2025-12-29 18:12:33,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:33,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:33,538 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003153221 HTTP/1.1" 200 - +2025-12-29 18:12:33,588 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2979.0, pending_signals=2 +2025-12-29 18:12:33,590 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2981.57, 'position_size': 0, 'timestamp': 1767003060}] +2025-12-29 18:12:34,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:34,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:35,366 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:35,367 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:36,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:36,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:37,358 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:37,359 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:38,051 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:38,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:38,536 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003158219 HTTP/1.1" 200 - +2025-12-29 18:12:39,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:39,061 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:39,937 - app.services.llm - INFO - Fallback model succeeded: openai/gpt-4o-mini +2025-12-29 18:12:39,938 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2025-12-29 18:12:40,354 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:40,354 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:41,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:41,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:42,365 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:42,366 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:43,055 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:43,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:43,536 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003163217 HTTP/1.1" 200 - +2025-12-29 18:12:43,870 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2978.7, pending_signals=2 +2025-12-29 18:12:43,871 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2981.57, 'position_size': 0, 'timestamp': 1767003060}] +2025-12-29 18:12:44,026 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2025-12-29 18:12:44,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:44,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:45,367 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:45,368 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:46,059 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:46,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:47,357 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:47,358 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:47,860 - app.services.agents.coordinator - WARNING - Record reflection failed: 'NoneType' object has no attribute 'get' +2025-12-29 18:12:47,860 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: Crypto:BTC/USDT +2025-12-29 18:12:47,861 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2025-12-29 18:12:47,861 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2025-12-29 18:12:47,869 - app.services.trading_executor - INFO - AI entry filter rejected: strategy_id=2 symbol=BTC/USDT signal=open_long ai=HOLD reason=ai_hold +2025-12-29 18:12:47,870 - app.services.trading_executor - WARNING - Strategy 2 signal rejected/failed: open_long +2025-12-29 18:12:48,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:48,066 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:48,067 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=88150.01, pending_signals=2 +2025-12-29 18:12:48,070 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 88243.15, 'position_size': 0, 'timestamp': 1767003060}] +2025-12-29 18:12:48,531 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003168216 HTTP/1.1" 200 - +2025-12-29 18:12:49,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:49,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:50,371 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:50,372 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:51,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:51,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:52,358 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:52,359 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:53,062 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:53,062 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:53,531 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003173215 HTTP/1.1" 200 - +2025-12-29 18:12:53,591 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2978.7, pending_signals=2 +2025-12-29 18:12:53,593 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2981.57, 'position_size': 0, 'timestamp': 1767003060}] +2025-12-29 18:12:54,061 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:54,062 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:55,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:55,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:56,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:56,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:57,371 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:57,372 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:57,893 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=88150.01, pending_signals=2 +2025-12-29 18:12:57,894 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 88243.15, 'position_size': 0, 'timestamp': 1767003060}] +2025-12-29 18:12:58,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:58,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:12:58,541 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003178224 HTTP/1.1" 200 - +2025-12-29 18:12:59,057 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:12:59,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:12:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:00,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:00,361 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:01,062 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:01,062 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:02,368 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:02,368 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:03,066 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:03,066 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:03,532 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003183217 HTTP/1.1" 200 - +2025-12-29 18:13:04,059 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:04,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:05,364 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:05,365 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:06,049 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:06,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:07,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:07,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:08,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:08,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:08,531 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003188215 HTTP/1.1" 200 - +2025-12-29 18:13:09,059 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:09,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:10,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:10,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:11,048 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:11,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:12,373 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:12,374 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:13,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:13,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:13,532 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003193220 HTTP/1.1" 200 - +2025-12-29 18:13:14,062 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:14,063 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:15,369 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:15,369 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:16,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:16,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:17,360 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:17,360 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:18,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:18,061 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:18,538 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003198224 HTTP/1.1" 200 - +2025-12-29 18:13:19,048 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:19,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:20,366 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:20,366 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:21,047 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:21,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:22,366 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:22,367 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:23,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:23,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:23,537 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003203221 HTTP/1.1" 200 - +2025-12-29 18:13:24,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:24,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:25,367 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:25,368 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:26,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:26,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:27,359 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:27,360 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:28,047 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:28,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:28,530 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003208215 HTTP/1.1" 200 - +2025-12-29 18:13:29,057 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:29,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:30,365 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:30,366 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:31,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:31,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:32,366 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:32,367 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:33,049 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:33,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:33,545 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003213227 HTTP/1.1" 200 - +2025-12-29 18:13:34,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:34,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:35,368 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:35,368 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:36,057 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:36,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:37,367 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:37,368 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:38,051 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:38,309 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:38,536 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003218218 HTTP/1.1" 200 - +2025-12-29 18:13:39,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:39,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:40,048 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:40,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:41,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:41,361 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:42,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:42,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:43,358 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:43,359 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:43,531 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003223216 HTTP/1.1" 200 - +2025-12-29 18:13:44,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:44,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:45,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:45,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:46,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:46,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:47,366 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:47,366 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:48,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:48,059 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:48,545 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003228227 HTTP/1.1" 200 - +2025-12-29 18:13:49,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:49,059 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:50,366 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:50,367 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:51,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:51,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:52,359 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:52,360 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:53,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:53,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:53,535 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003233221 HTTP/1.1" 200 - +2025-12-29 18:13:54,049 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:54,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:55,358 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:55,359 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:56,061 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:56,061 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:57,370 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:57,370 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:58,057 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:58,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:13:58,542 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003238223 HTTP/1.1" 200 - +2025-12-29 18:13:59,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:13:59,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:13:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:00,374 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:00,375 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:01,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:01,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:02,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:02,364 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:03,049 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:03,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:03,531 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003243214 HTTP/1.1" 200 - +2025-12-29 18:14:04,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:04,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:05,364 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:05,365 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:06,064 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:06,065 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:07,368 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:07,369 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:08,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:08,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:08,536 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003248221 HTTP/1.1" 200 - +2025-12-29 18:14:09,059 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:09,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:10,364 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:10,365 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:11,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:11,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:12,360 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:12,361 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:13,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:13,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:13,539 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003253220 HTTP/1.1" 200 - +2025-12-29 18:14:14,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:14,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:15,364 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:15,365 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:16,062 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:16,063 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:17,366 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:17,367 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:18,047 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:18,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:18,540 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003258226 HTTP/1.1" 200 - +2025-12-29 18:14:19,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:19,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:20,368 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:20,369 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:21,055 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:21,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:22,357 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:22,357 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:23,059 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:23,059 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:23,542 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003263226 HTTP/1.1" 200 - +2025-12-29 18:14:24,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:24,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:25,370 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:25,370 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:26,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:26,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:27,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:27,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:28,047 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:28,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:28,539 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003268214 HTTP/1.1" 200 - +2025-12-29 18:14:29,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:29,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:30,360 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:30,361 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:31,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:31,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:32,366 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:32,366 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:33,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:33,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:33,537 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003273218 HTTP/1.1" 200 - +2025-12-29 18:14:34,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:34,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:35,369 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:35,369 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:36,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:36,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:37,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:37,364 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:38,055 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:38,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:38,545 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003278225 HTTP/1.1" 200 - +2025-12-29 18:14:39,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:39,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:40,357 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:40,358 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:41,048 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:41,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:42,359 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:42,359 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:43,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:43,061 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:43,541 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003283225 HTTP/1.1" 200 - +2025-12-29 18:14:44,049 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:44,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:45,369 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:45,369 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:46,062 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:46,062 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:47,366 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:47,366 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:48,048 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:48,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:48,533 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003288215 HTTP/1.1" 200 - +2025-12-29 18:14:49,062 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:49,063 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:50,371 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:50,371 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:51,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:51,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:52,359 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:52,360 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:53,062 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:53,062 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:53,539 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003293226 HTTP/1.1" 200 - +2025-12-29 18:14:54,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:54,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:55,366 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:55,366 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:56,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:56,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:57,366 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:57,366 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:58,051 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:58,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:14:58,539 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003298220 HTTP/1.1" 200 - +2025-12-29 18:14:59,048 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:14:59,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:14:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:00,364 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:00,365 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:01,049 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:01,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:02,360 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:02,360 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:03,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:03,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:03,540 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003303222 HTTP/1.1" 200 - +2025-12-29 18:15:04,051 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:04,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:05,366 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:05,367 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:06,057 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:06,059 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:07,353 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:07,353 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:08,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:08,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:08,531 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003308220 HTTP/1.1" 200 - +2025-12-29 18:15:09,046 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:09,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:10,374 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:10,374 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:11,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:11,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:12,364 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:12,366 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:13,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:13,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:13,532 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003313218 HTTP/1.1" 200 - +2025-12-29 18:15:14,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:14,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:15,355 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:15,356 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:16,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:16,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:17,358 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:17,358 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:18,049 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:18,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:18,531 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003318214 HTTP/1.1" 200 - +2025-12-29 18:15:19,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:19,059 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:20,358 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:20,359 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:21,046 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:21,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:22,370 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:22,370 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:23,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:23,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:23,530 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003323214 HTTP/1.1" 200 - +2025-12-29 18:15:24,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:24,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:25,369 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:25,369 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:26,057 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:26,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:27,372 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:27,373 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:28,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:28,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:28,544 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003328226 HTTP/1.1" 200 - +2025-12-29 18:15:29,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:29,059 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:30,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:30,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:31,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:31,059 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:32,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:32,364 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:33,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:33,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:33,530 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003333216 HTTP/1.1" 200 - +2025-12-29 18:15:34,051 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:34,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:35,354 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:35,355 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:36,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:36,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:37,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:37,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:38,061 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:38,062 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:38,530 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003338215 HTTP/1.1" 200 - +2025-12-29 18:15:39,059 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:39,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:40,366 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:40,366 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:41,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:41,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:42,360 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:42,360 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:43,061 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:43,062 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:43,541 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003343221 HTTP/1.1" 200 - +2025-12-29 18:15:44,051 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:44,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:45,372 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:45,373 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:46,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:46,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:47,368 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:47,368 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:48,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:48,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:48,528 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003348213 HTTP/1.1" 200 - +2025-12-29 18:15:49,055 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:49,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:50,372 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:50,373 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:51,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:51,059 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:52,369 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:52,370 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:53,051 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:53,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:53,536 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003353218 HTTP/1.1" 200 - +2025-12-29 18:15:54,062 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:54,063 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:55,368 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:55,368 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:56,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:56,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:57,360 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:57,360 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:58,063 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:58,063 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:15:58,529 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003358212 HTTP/1.1" 200 - +2025-12-29 18:15:59,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:15:59,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:15:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:00,358 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:00,359 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:01,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:01,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:02,366 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:02,369 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:03,051 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:03,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:03,533 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003363214 HTTP/1.1" 200 - +2025-12-29 18:16:04,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:04,061 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:05,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:05,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:06,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:06,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:07,366 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:07,366 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:08,051 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:08,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:08,527 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003368212 HTTP/1.1" 200 - +2025-12-29 18:16:09,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:09,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:10,358 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:10,359 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:11,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:11,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:12,358 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:12,359 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:13,055 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:13,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:13,533 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003373219 HTTP/1.1" 200 - +2025-12-29 18:16:14,048 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:14,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:15,367 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:15,368 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:16,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:16,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:17,369 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:17,369 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:18,059 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:18,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:18,541 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003378224 HTTP/1.1" 200 - +2025-12-29 18:16:19,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:19,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:20,354 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:20,355 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:21,055 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:21,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:22,369 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:22,370 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:23,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:23,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:23,532 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003383217 HTTP/1.1" 200 - +2025-12-29 18:16:24,057 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:24,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:25,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:25,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:26,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:26,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:27,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:27,361 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:28,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:28,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:28,538 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003388223 HTTP/1.1" 200 - +2025-12-29 18:16:29,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:29,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:30,373 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:30,373 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:31,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:31,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:32,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:32,361 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:33,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:33,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:33,530 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003393215 HTTP/1.1" 200 - +2025-12-29 18:16:34,061 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:34,061 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:35,355 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:35,355 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:36,046 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:36,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:37,360 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:37,360 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:38,061 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:38,062 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:38,543 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003398226 HTTP/1.1" 200 - +2025-12-29 18:16:39,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:39,059 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:40,358 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:40,358 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:41,051 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:41,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:42,358 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:42,358 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:43,046 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:43,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:43,530 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003403214 HTTP/1.1" 200 - +2025-12-29 18:16:44,059 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:44,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:45,367 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:45,368 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:46,055 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:46,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:47,368 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:47,369 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:48,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:48,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:48,537 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003408224 HTTP/1.1" 200 - +2025-12-29 18:16:49,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:49,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:50,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:50,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:51,061 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:51,062 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:52,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:52,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:53,049 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:53,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:53,525 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003413213 HTTP/1.1" 200 - +2025-12-29 18:16:54,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:54,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:55,358 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:55,358 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:56,048 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:56,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:57,366 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:57,367 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:58,051 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:58,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:16:58,538 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003418221 HTTP/1.1" 200 - +2025-12-29 18:16:59,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:16:59,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:16:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:00,357 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:00,358 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:01,065 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:01,065 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:02,364 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:02,364 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:03,051 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:03,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:03,534 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003423216 HTTP/1.1" 200 - +2025-12-29 18:17:04,049 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:04,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:05,352 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:05,353 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:06,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:06,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:07,364 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:07,365 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:08,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:08,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:08,531 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003428214 HTTP/1.1" 200 - +2025-12-29 18:17:09,061 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:09,062 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:10,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:10,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:11,048 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:11,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:12,364 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:12,365 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:13,051 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:13,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:13,542 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003433219 HTTP/1.1" 200 - +2025-12-29 18:17:14,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:14,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:15,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:15,361 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:16,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:16,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:17,359 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:17,359 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:18,048 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:18,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:18,530 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003438215 HTTP/1.1" 200 - +2025-12-29 18:17:19,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:19,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:20,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:20,361 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:21,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:21,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:22,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:22,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:23,059 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:23,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:23,526 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003443213 HTTP/1.1" 200 - +2025-12-29 18:17:24,059 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:24,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:25,357 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:25,357 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:26,061 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:26,061 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:27,369 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:27,369 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:28,055 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:28,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:28,542 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003448222 HTTP/1.1" 200 - +2025-12-29 18:17:29,055 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:29,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:30,367 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:30,367 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:31,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:31,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:32,360 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:32,360 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:33,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:33,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:33,532 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003453215 HTTP/1.1" 200 - +2025-12-29 18:17:34,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:34,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:35,364 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:35,365 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:36,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:36,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:37,358 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:37,359 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:38,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:38,061 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:38,529 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003458212 HTTP/1.1" 200 - +2025-12-29 18:17:39,057 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:39,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:40,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:40,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:41,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:41,061 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:42,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:42,364 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:43,061 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:43,062 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:43,528 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003463212 HTTP/1.1" 200 - +2025-12-29 18:17:44,057 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:44,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:45,365 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:45,366 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:46,051 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:46,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:47,364 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:47,364 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:48,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:48,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:48,541 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003468226 HTTP/1.1" 200 - +2025-12-29 18:17:49,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:49,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:50,368 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:50,368 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:51,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:51,059 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:52,365 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:52,366 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:53,047 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:53,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:53,543 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003473227 HTTP/1.1" 200 - +2025-12-29 18:17:54,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:54,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:55,354 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:55,355 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:56,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:56,061 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:57,368 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:57,369 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:58,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:58,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:17:58,536 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003478219 HTTP/1.1" 200 - +2025-12-29 18:17:59,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:17:59,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:17:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:00,369 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:00,369 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:01,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:01,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:02,359 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:02,360 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:03,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:03,061 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:03,540 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003483225 HTTP/1.1" 200 - +2025-12-29 18:18:04,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:04,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:05,360 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:05,361 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:06,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:06,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:07,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:07,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:08,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:08,061 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:08,542 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003488227 HTTP/1.1" 200 - +2025-12-29 18:18:09,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:09,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:10,353 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:10,353 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:11,049 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:11,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:12,357 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:12,357 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:13,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:13,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:13,540 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003493221 HTTP/1.1" 200 - +2025-12-29 18:18:14,049 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:14,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:15,369 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:15,370 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:16,059 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:16,059 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:17,360 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:17,361 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:18,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:18,059 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:18,545 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003498227 HTTP/1.1" 200 - +2025-12-29 18:18:19,055 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:19,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:20,367 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:20,367 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:21,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:21,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:22,365 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:22,366 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:23,047 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:23,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:23,527 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003503213 HTTP/1.1" 200 - +2025-12-29 18:18:24,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:24,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:25,372 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:25,373 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:26,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:26,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:27,364 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:27,365 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:28,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:28,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:28,543 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003508225 HTTP/1.1" 200 - +2025-12-29 18:18:29,047 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:29,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:30,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:30,364 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:31,061 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:31,062 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:32,359 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:32,360 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:33,059 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:33,059 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:33,538 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003513223 HTTP/1.1" 200 - +2025-12-29 18:18:34,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:34,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:35,356 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:35,356 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:36,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:36,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:37,357 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:37,357 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:38,055 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:38,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:38,540 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003518221 HTTP/1.1" 200 - +2025-12-29 18:18:39,059 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:39,166 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:40,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:40,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:41,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:41,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:42,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:42,368 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:43,061 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:43,061 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:43,546 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003523226 HTTP/1.1" 200 - +2025-12-29 18:18:44,059 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:44,059 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:45,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:45,364 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:46,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:46,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:47,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:47,364 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:48,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:48,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:48,535 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003528221 HTTP/1.1" 200 - +2025-12-29 18:18:49,049 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:49,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:50,368 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:50,369 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:51,051 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:51,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:52,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:52,364 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:53,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:53,059 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:53,541 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003533223 HTTP/1.1" 200 - +2025-12-29 18:18:54,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:54,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:55,364 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:55,365 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:56,059 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:56,059 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:57,353 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:57,353 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:58,057 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:58,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:18:58,540 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003538224 HTTP/1.1" 200 - +2025-12-29 18:18:59,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:18:59,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:18:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:00,356 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:00,357 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:01,047 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:01,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:02,369 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:02,370 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:03,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:03,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:03,542 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003543219 HTTP/1.1" 200 - +2025-12-29 18:19:04,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:04,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:05,357 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:05,358 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:06,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:06,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:07,367 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:07,367 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:08,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:08,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:08,540 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003548219 HTTP/1.1" 200 - +2025-12-29 18:19:09,063 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:09,063 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:10,367 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:10,368 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:11,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:11,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:12,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:12,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:13,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:13,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:13,535 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003553215 HTTP/1.1" 200 - +2025-12-29 18:19:14,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:14,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:15,372 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:15,373 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:16,057 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:16,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:17,369 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:17,369 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:18,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:18,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:18,536 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003558221 HTTP/1.1" 200 - +2025-12-29 18:19:19,059 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:19,059 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:20,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:20,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:21,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:21,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:22,365 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:22,366 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:23,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:23,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:23,533 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003563218 HTTP/1.1" 200 - +2025-12-29 18:19:24,055 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:24,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:25,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:25,361 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:26,046 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:26,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:27,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:27,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:28,059 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:28,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:28,533 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003568214 HTTP/1.1" 200 - +2025-12-29 18:19:29,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:29,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:30,358 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:30,359 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:31,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:31,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:32,370 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:32,371 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:33,062 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:33,063 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:33,529 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003573213 HTTP/1.1" 200 - +2025-12-29 18:19:34,057 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:34,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:35,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:35,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:36,049 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:36,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:37,355 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:37,356 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:38,057 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:38,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:38,544 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003578225 HTTP/1.1" 200 - +2025-12-29 18:19:39,048 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:39,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:40,354 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:40,355 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:41,057 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:41,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:42,359 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:42,359 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:43,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:43,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:43,542 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003583226 HTTP/1.1" 200 - +2025-12-29 18:19:44,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:44,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:45,358 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:45,358 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:46,047 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:46,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:47,364 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:47,365 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:48,051 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:48,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:48,534 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003588219 HTTP/1.1" 200 - +2025-12-29 18:19:49,046 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:49,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:50,370 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:50,371 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:51,055 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:51,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:52,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:52,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:53,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:53,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:53,537 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003593224 HTTP/1.1" 200 - +2025-12-29 18:19:54,051 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:54,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:55,358 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:55,359 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:56,061 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:56,061 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:57,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:57,364 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:58,049 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:58,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:19:58,531 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003598216 HTTP/1.1" 200 - +2025-12-29 18:19:59,061 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:19:59,061 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:19:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:00,366 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:00,367 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:01,055 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:01,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:02,357 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:02,358 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:03,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:03,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:03,533 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003603214 HTTP/1.1" 200 - +2025-12-29 18:20:04,055 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:04,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:05,359 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:05,359 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:06,057 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:06,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:07,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:07,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:08,047 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:08,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:08,530 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003608215 HTTP/1.1" 200 - +2025-12-29 18:20:09,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:09,061 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:10,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:10,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:11,051 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:11,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:12,369 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:12,369 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:13,055 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:13,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:13,538 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003613220 HTTP/1.1" 200 - +2025-12-29 18:20:14,051 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:14,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:15,360 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:15,361 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:16,057 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:16,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:17,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:17,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:18,059 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:18,059 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:18,546 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003618227 HTTP/1.1" 200 - +2025-12-29 18:20:19,049 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:19,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:20,372 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:20,372 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:21,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:21,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:22,370 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:22,371 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:23,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:23,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:23,535 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003623221 HTTP/1.1" 200 - +2025-12-29 18:20:24,062 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:24,062 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:25,370 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:25,370 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:26,046 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:26,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:27,370 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:27,370 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:28,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:28,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:28,537 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003628220 HTTP/1.1" 200 - +2025-12-29 18:20:29,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:29,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:30,364 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:30,365 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:31,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:31,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:32,364 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:32,364 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:33,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:33,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:33,540 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003633224 HTTP/1.1" 200 - +2025-12-29 18:20:34,051 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:34,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:35,371 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:35,372 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:36,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:36,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:37,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:37,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:38,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:38,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:38,543 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003638222 HTTP/1.1" 200 - +2025-12-29 18:20:39,051 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:39,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:40,366 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:40,367 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:41,057 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:41,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:42,357 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:42,358 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:43,457 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:43,458 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:43,788 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003643453 HTTP/1.1" 200 - +2025-12-29 18:20:44,761 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:44,762 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:45,446 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:45,446 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:46,760 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:46,761 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:47,462 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:47,463 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:48,754 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:48,754 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:48,759 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003648444 HTTP/1.1" 200 - +2025-12-29 18:20:49,458 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:49,459 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:50,772 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:50,773 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:51,454 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:51,455 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:52,763 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:52,763 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:53,449 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:53,449 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:53,774 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003653444 HTTP/1.1" 200 - +2025-12-29 18:20:54,457 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:54,457 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:55,764 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:55,765 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:56,454 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:56,455 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:57,753 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:57,754 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:58,453 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:58,454 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:20:58,759 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003658446 HTTP/1.1" 200 - +2025-12-29 18:20:59,769 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:20:59,769 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:20:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:00,457 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:00,458 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:01,767 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:01,767 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:02,450 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:02,450 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:03,768 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:03,769 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:03,773 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003663449 HTTP/1.1" 200 - +2025-12-29 18:21:04,464 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:04,464 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:05,757 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:05,757 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:06,457 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:06,458 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:07,769 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:07,770 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:08,458 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:08,459 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:08,774 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003668454 HTTP/1.1" 200 - +2025-12-29 18:21:09,767 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:09,767 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:10,460 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:10,461 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:11,765 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:11,765 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:12,461 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:12,461 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:13,772 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:13,773 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:13,777 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003673457 HTTP/1.1" 200 - +2025-12-29 18:21:14,456 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:14,457 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:15,760 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:15,761 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:16,457 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:16,457 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:17,756 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:17,757 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:18,457 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:18,457 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:18,769 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003678451 HTTP/1.1" 200 - +2025-12-29 18:21:19,449 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:19,449 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:20,761 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:20,762 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:21,451 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:21,451 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:22,757 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:22,758 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:23,451 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:23,452 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:23,765 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003683446 HTTP/1.1" 200 - +2025-12-29 18:21:24,449 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:24,450 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:25,757 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:25,758 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:26,453 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:26,454 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:27,759 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:27,759 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:28,454 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:28,454 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:28,768 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003688450 HTTP/1.1" 200 - +2025-12-29 18:21:29,761 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:29,762 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:30,456 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:30,456 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:31,752 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:31,753 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:32,457 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:32,457 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:33,763 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:33,764 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:33,768 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003693448 HTTP/1.1" 200 - +2025-12-29 18:21:34,452 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:34,453 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:35,764 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:35,765 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:36,455 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:36,456 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:37,756 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:37,757 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:38,464 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:38,465 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:38,784 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003698456 HTTP/1.1" 200 - +2025-12-29 18:21:39,770 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:39,770 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:40,458 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:40,459 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:41,766 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:41,766 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:21:42,451 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:21:42,452 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:21:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:22:37,760 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:22:37,761 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:22:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:22:37,765 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:22:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003757451 HTTP/1.1" 200 - +2025-12-29 18:23:37,455 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:23:37,456 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:23:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:23:37,780 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:23:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003817450 HTTP/1.1" 200 - +2025-12-29 18:24:37,453 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:24:37,562 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:24:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:24:37,764 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:24:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003877448 HTTP/1.1" 200 - +2025-12-29 18:25:37,768 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:25:37,769 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:25:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:25:37,775 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:25:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003937452 HTTP/1.1" 200 - +2025-12-29 18:25:46,117 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:25:46,118 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:25:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:25:46,453 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:25:46] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003946120 HTTP/1.1" 200 - +2025-12-29 18:25:47,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:25:47,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:25:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:25:48,765 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:25:48,766 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:25:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:25:48,770 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:25:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003948453 HTTP/1.1" 200 - +2025-12-29 18:25:49,161 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:25:49,162 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:25:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:25:50,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:25:50,361 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:25:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:25:51,061 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:25:51,062 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:25:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:25:52,371 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:25:52,372 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:25:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:25:53,057 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:25:53,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:25:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:25:53,540 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:25:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003953224 HTTP/1.1" 200 - +2025-12-29 18:25:54,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:25:54,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:25:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:25:55,370 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:25:55,371 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:25:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:25:56,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:25:56,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:25:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:25:57,356 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:25:57,357 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:25:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:25:58,055 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:25:58,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:25:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:25:58,537 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:25:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003958222 HTTP/1.1" 200 - +2025-12-29 18:25:59,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:25:59,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:25:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:00,365 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:00,365 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:01,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:01,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:02,358 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:02,359 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:03,047 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:03,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:03,548 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003963227 HTTP/1.1" 200 - +2025-12-29 18:26:04,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:04,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:05,365 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:05,365 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:06,057 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:06,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:07,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:07,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:08,062 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:08,062 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:08,542 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003968226 HTTP/1.1" 200 - +2025-12-29 18:26:09,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:09,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:10,366 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:10,366 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:11,062 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:11,063 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:12,372 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:12,372 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:13,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:13,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:13,540 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003973221 HTTP/1.1" 200 - +2025-12-29 18:26:14,046 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:14,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:15,360 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:15,360 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:16,057 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:16,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:17,369 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:17,370 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:18,051 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:18,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:18,532 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003978214 HTTP/1.1" 200 - +2025-12-29 18:26:19,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:19,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:20,356 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:20,356 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:21,055 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:21,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:22,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:22,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:23,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:23,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:23,537 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003983223 HTTP/1.1" 200 - +2025-12-29 18:26:24,061 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:24,061 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:25,368 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:25,369 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:26,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:26,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:27,369 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:27,369 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:28,048 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:28,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:28,542 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003988227 HTTP/1.1" 200 - +2025-12-29 18:26:29,055 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:29,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:30,367 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:30,367 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:31,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:31,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:32,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:32,364 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:33,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:33,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:33,537 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767003993220 HTTP/1.1" 200 - +2025-12-29 18:26:34,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:34,061 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:35,359 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:35,359 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:36,059 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:36,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:37,358 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:37,359 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:38,153 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:38] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 18:26:38,460 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:38,461 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:38,465 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:38] "GET /api/market/config?_t=1767003998125 HTTP/1.1" 200 - +2025-12-29 18:26:38,545 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (278799s) +2025-12-29 18:26:40,596 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:40] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 18:26:40,598 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:40] "GET /api/market/types?_t=1767003998482 HTTP/1.1" 200 - +2025-12-29 18:26:40,601 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:40] "GET /api/market/types?_t=1767003999128 HTTP/1.1" 200 - +2025-12-29 18:26:40,604 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:40] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 18:26:40,609 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:40] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 18:26:40,613 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:40,614 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:40,915 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:40] "GET /api/strategies?_t=1767003999819 HTTP/1.1" 200 - +2025-12-29 18:26:40,917 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:40,917 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:41,360 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:41,360 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:41,623 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:41] "GET /api/settings/schema?_t=1767004001416 HTTP/1.1" 200 - +2025-12-29 18:26:41,732 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:41] "GET /api/settings/values?_t=1767004001416 HTTP/1.1" 200 - +2025-12-29 18:26:42,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:42,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:42,871 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:42] "GET /api/dashboard/summary?_t=1767004002546 HTTP/1.1" 200 - +2025-12-29 18:26:42,878 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:42] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1767004002546 HTTP/1.1" 200 - +2025-12-29 18:26:42,884 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:42] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1767004002546 HTTP/1.1" 200 - +2025-12-29 18:26:43,131 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:43,131 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:44,051 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:44,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:45,371 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:45,372 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:46,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:46,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:47,355 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:47,356 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:47,621 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:47] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004007538 HTTP/1.1" 200 - +2025-12-29 18:26:48,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:48,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:49,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:49,364 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:50,061 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:50,061 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:51,353 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:51,354 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:52,061 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:52,061 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:52,846 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004012533 HTTP/1.1" 200 - +2025-12-29 18:26:53,105 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:53,106 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:54,061 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:54,061 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:55,353 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:55,354 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:56,049 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:56,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:57,366 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:57,367 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:57,631 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004017534 HTTP/1.1" 200 - +2025-12-29 18:26:58,046 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:58,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:26:59,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:26:59,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:26:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:00,063 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:00,063 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:01,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:01,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:02,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:02,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:02,848 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004022531 HTTP/1.1" 200 - +2025-12-29 18:27:03,110 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:03,111 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:04,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:04,057 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:05,369 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:05,370 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:06,048 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:06,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:07,369 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:07,369 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:07,635 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004027536 HTTP/1.1" 200 - +2025-12-29 18:27:08,046 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:08,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:09,356 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:09,357 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:10,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:10,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:11,366 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:11,367 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:12,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:12,061 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:12,851 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:12] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004032536 HTTP/1.1" 200 - +2025-12-29 18:27:13,111 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:13,111 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:14,059 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:14,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:15,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:15,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:16,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:16,059 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:17,358 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:17,359 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:17,623 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:17] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004037540 HTTP/1.1" 200 - +2025-12-29 18:27:18,055 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:18,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:19,371 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:19,371 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:20,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:20,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:21,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:21,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:22,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:22,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:22,841 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004042529 HTTP/1.1" 200 - +2025-12-29 18:27:23,101 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:23,101 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:24,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:24,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:25,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:25,362 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:26,064 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:26,064 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:27,393 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:27,394 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:27,654 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004047534 HTTP/1.1" 200 - +2025-12-29 18:27:28,047 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:28,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:29,354 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:29,355 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:30,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:30,061 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:31,350 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:31,351 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:32,049 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:32,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:32,843 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004052529 HTTP/1.1" 200 - +2025-12-29 18:27:33,105 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:33,105 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:34,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:34,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:35,367 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:35,367 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:36,057 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:36,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:37,368 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:37,369 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:37,631 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004057533 HTTP/1.1" 200 - +2025-12-29 18:27:38,049 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:38,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:39,365 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:39,366 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:40,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:40,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:41,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:41,364 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:42,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:42,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:42,838 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:42] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004062528 HTTP/1.1" 200 - +2025-12-29 18:27:43,099 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:43,099 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:44,051 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:44,051 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:45,769 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:45,770 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:46,449 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:46,449 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:47,498 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:47,499 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:47,719 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:47] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004067544 HTTP/1.1" 200 - +2025-12-29 18:27:48,046 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:48,046 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:49,365 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:49,366 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:50,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:50,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:51,370 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:51,371 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:52,048 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:52,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:52,857 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004072541 HTTP/1.1" 200 - +2025-12-29 18:27:53,118 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:53,118 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:54,057 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:54,059 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:55,355 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:55,356 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:56,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:56,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:57,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:57,361 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:57,625 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004077541 HTTP/1.1" 200 - +2025-12-29 18:27:58,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:58,055 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:27:59,370 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:27:59,370 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:27:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:00,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:00,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:01,368 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:01,368 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:02,048 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:02,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:02,841 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004082528 HTTP/1.1" 200 - +2025-12-29 18:28:03,100 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:03,101 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:04,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:04,058 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:05,351 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:05,352 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:06,047 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:06,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:07,365 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:07,365 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:07,629 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004087531 HTTP/1.1" 200 - +2025-12-29 18:28:08,049 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:08,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:09,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:09,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:10,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:10,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:11,358 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:11,359 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:12,061 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:12,061 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:12,841 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:12] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004092528 HTTP/1.1" 200 - +2025-12-29 18:28:13,098 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:13,099 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:14,059 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:14,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:15,368 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:15,369 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:16,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:16,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:17,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:17,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:17,619 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:17] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004097543 HTTP/1.1" 200 - +2025-12-29 18:28:18,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:18,056 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:19,367 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:19,367 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:20,049 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:20,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:21,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:21,361 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:22,059 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:22,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:22,844 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004102528 HTTP/1.1" 200 - +2025-12-29 18:28:23,103 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:23,104 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:24,059 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:24,060 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:25,357 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:25,357 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:26,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:26,052 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:27,366 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:27,367 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:27,636 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004107535 HTTP/1.1" 200 - +2025-12-29 18:28:28,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:28,054 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:29,369 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:29,370 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:30,048 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:30,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:31,357 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:31,357 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:32,059 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:32,059 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:32,848 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004112534 HTTP/1.1" 200 - +2025-12-29 18:28:33,108 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:33,109 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:34,062 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:34,062 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:35,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:35,364 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:36,049 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:36,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:37,365 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:37,366 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:37,612 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004117530 HTTP/1.1" 200 - +2025-12-29 18:28:38,459 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:38,459 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:39,756 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:39,757 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:40,454 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:40,454 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:41,759 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:41,760 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:42,459 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:42,459 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:43,756 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004123446 HTTP/1.1" 200 - +2025-12-29 18:28:43,759 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:43,759 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:44,454 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:44,455 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:45,785 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:45,785 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:46,458 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:46,459 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:47,767 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:47,768 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:48,485 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004128447 HTTP/1.1" 200 - +2025-12-29 18:28:48,930 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:48,930 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:49,763 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:49,764 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:50,445 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:50,446 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:51,771 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:51,771 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:52,521 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:52,521 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:53,479 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:53] "GET /api/dashboard/summary?_t=1767004133462 HTTP/1.1" 200 - +2025-12-29 18:28:53,507 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1767004133462 HTTP/1.1" 200 - +2025-12-29 18:28:53,788 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1767004133462 HTTP/1.1" 200 - +2025-12-29 18:28:53,790 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:53,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:54,459 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:54,459 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:55,766 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:55,766 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:56,449 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:56,449 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:57,767 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:57,768 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:58,451 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:58,452 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:28:58,759 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004138448 HTTP/1.1" 200 - +2025-12-29 18:28:59,767 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:28:59,768 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:28:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:29:00,451 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:29:00,452 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:29:01,767 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:29:01,767 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:29:02,461 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:29:02,462 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:29:03,753 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:29:03,753 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:29:03,757 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004143444 HTTP/1.1" 200 - +2025-12-29 18:29:04,450 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:29:04,451 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:29:05,753 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:29:05,753 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:29:06,447 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:29:06,447 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:29:07,763 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:29:07,763 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:29:08,464 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:29:08,465 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:29:08,769 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004148456 HTTP/1.1" 200 - +2025-12-29 18:29:09,754 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:29:09,755 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:29:10,453 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:29:10,453 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:29:11,765 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:29:11,765 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:29:12,447 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:29:12,447 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:29:13,757 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:29:13,757 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:29:13,762 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004153446 HTTP/1.1" 200 - +2025-12-29 18:29:14,451 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:29:14,451 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:29:15,765 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:29:15,765 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:29:16,449 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:29:16,450 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:29:17,759 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:29:17,760 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:29:18,446 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:29:18,447 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:29:18,755 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004158442 HTTP/1.1" 200 - +2025-12-29 18:29:19,762 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:29:19,762 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:29:20,445 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:29:20,446 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:29:21,754 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:29:21,755 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:29:22,450 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:29:22,451 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:29:23,757 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:29:23,757 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:29:23,761 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004163447 HTTP/1.1" 200 - +2025-12-29 18:29:24,455 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:29:24,455 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:29:25,766 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:29:25,767 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:29:26,450 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:29:26,451 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:29:27,759 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:29:27,760 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:29:28,457 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:29:28,457 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:29:28,765 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004168453 HTTP/1.1" 200 - +2025-12-29 18:29:29,762 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:29:29,762 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:29:30,460 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:29:30,461 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:29:31,758 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:29:31,758 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:29:32,450 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:29:32,451 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:29:33,760 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:29:33,761 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:29:33,766 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004173451 HTTP/1.1" 200 - +2025-12-29 18:29:34,460 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:29:34,460 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:29:35,762 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:29:35,762 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:29:36,453 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:29:36,453 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:29:37,759 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:29:37,867 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:29:46,189 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:46] "GET /api/dashboard/summary?_t=1767004186176 HTTP/1.1" 200 - +2025-12-29 18:29:46,499 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:46] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1767004186176 HTTP/1.1" 200 - +2025-12-29 18:29:46,503 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:46] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1767004186176 HTTP/1.1" 200 - +2025-12-29 18:29:51,758 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:51] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004191447 HTTP/1.1" 200 - +2025-12-29 18:29:56,454 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:29:56] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004196447 HTTP/1.1" 200 - +2025-12-29 18:30:01,759 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:30:01] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004201443 HTTP/1.1" 200 - +2025-12-29 18:30:06,451 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:30:06] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004206442 HTTP/1.1" 200 - +2025-12-29 18:30:11,758 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:30:11] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004211445 HTTP/1.1" 200 - +2025-12-29 18:30:16,448 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:30:16] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004216441 HTTP/1.1" 200 - +2025-12-29 18:30:37,765 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:30:37,766 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:30:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:30:37,771 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:30:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004237447 HTTP/1.1" 200 - +2025-12-29 18:31:37,452 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:31:37,452 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:31:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:31:37,761 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:31:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004297446 HTTP/1.1" 200 - +2025-12-29 18:32:37,766 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:32:37,767 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:32:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:32:37,771 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:32:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004357452 HTTP/1.1" 200 - +2025-12-29 18:33:37,463 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:33:37,464 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:33:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:33:37,768 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:33:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004417459 HTTP/1.1" 200 - +2025-12-29 18:34:37,760 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:34:37,760 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:34:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:34:37,765 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:34:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004477444 HTTP/1.1" 200 - +2025-12-29 18:35:28,449 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87889.23, pending_signals=1 +2025-12-29 18:35:28,452 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87889.23, 'position_size': 0, 'timestamp': 1767004500}] +2025-12-29 18:35:37,448 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:35:37,554 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:35:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:35:37,768 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:35:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004537448 HTTP/1.1" 200 - +2025-12-29 18:35:38,126 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87889.23, pending_signals=1 +2025-12-29 18:35:38,128 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87889.23, 'position_size': 0, 'timestamp': 1767004500}] +2025-12-29 18:35:48,303 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87920.0, pending_signals=1 +2025-12-29 18:35:48,304 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87920.0, 'position_size': 0, 'timestamp': 1767004500}] +2025-12-29 18:35:58,126 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87920.0, pending_signals=1 +2025-12-29 18:35:58,128 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87920.0, 'position_size': 0, 'timestamp': 1767004500}] +2025-12-29 18:36:08,936 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87912.41, pending_signals=2 +2025-12-29 18:36:08,938 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87919.99, 'position_size': 0, 'timestamp': 1767004500}, {'type': 'open_short', 'trigger_price': 87919.99, 'position_size': 0.08, 'timestamp': 1767004500}] +2025-12-29 18:36:08,946 - app.services.analysis - INFO - Multi-agent coordinator initialized +2025-12-29 18:36:08,946 - app.services.analysis - INFO - Starting analysis Crypto:BTC/USDT, language=zh-CN, mode=multi-agent +2025-12-29 18:36:08,946 - app.services.analysis - INFO - Run coordinator: Crypto:BTC/USDT +2025-12-29 18:36:08,946 - app.services.agents.coordinator - INFO - Multi-agent analysis start: Crypto:BTC/USDT, model=None, language=zh-CN +2025-12-29 18:36:15,223 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:BTC/USDT: binance does not have market symbol BTC/USDT/USDT +2025-12-29 18:36:21,210 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:BTC/USDT: binance does not have market symbol BTC/USDT/USDT +2025-12-29 18:36:21,233 - app.services.agents.tools - WARNING - Finnhub news fetch failed: 'Client' object has no attribute 'crypto_news' +2025-12-29 18:36:21,234 - app.services.agents.tools - INFO - Running news search: "BTC/USDT Cryptocurrency" BTC/USDT crypto news analysis +2025-12-29 18:36:22,336 - app.services.search - WARNING - Google Search returned no 'items'. Full response: {"kind": "customsearch#search", "url": {"type": "application/json", "template": "https://www.googleapis.com/customsearch/v1?q={searchTerms}&num={count?}&start={startIndex?}&lr={language?}&safe={safe?}&cx={cx?}&sort={sort?}&filter={filter?}&gl={gl?}&cr={cr?}&googlehost={googleHost?}&c2coff={disableCnTwTranslation?}&hq={hq?}&hl={hl?}&siteSearch={siteSearch?}&siteSearchFilter={siteSearchFilter?}&exactTerms={exactTerms?}&excludeTerms={excludeTerms?}&linkSite={linkSite?}&orTerms={orTerms?}&dateRestrict={dateRestrict?}&lowRange={lowRange?}&highRange={highRange?}&searchType={searchType}&fileType={fileType?}&rights={rights?}&imgSize={imgSize?}&imgType={imgType?}&imgColorType={imgColorType?}&imgDominantColor={imgDominantColor?}&alt=json"}, "queries": {"request": [{"title": "Google Custom Search - \"BTC/USDT Cryptocurrency\" BTC/USDT crypto news analysis", "searchTerms": "\"BTC/USDT Cryptocurrency\" BTC/USDT crypto news analysis", "count": 10, "startIndex": 1, "inputEncoding": "utf8", "outputEncoding": "utf8", "safe": "off", "cx": "17f675b8e3b994281", "dateRestrict": "d7"}]}, "context": {"title": "Global News Search"}, "searchInformation": {"searchTime": 0.311933, "formattedSearchTime": "0.31", "totalResults": "0", "formattedTotalResults": "0"}} +2025-12-29 18:36:22,337 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2025-12-29 18:36:23,869 - app.services.llm - ERROR - OpenRouter API HTTP error (openai/gpt-4o): 403 Client Error: Forbidden for url: https://openrouter.ai/api/v1/chat/completions +2025-12-29 18:36:23,945 - app.services.llm - ERROR - OpenRouter API HTTP error (openai/gpt-4o): 403 Client Error: Forbidden for url: https://openrouter.ai/api/v1/chat/completions +2025-12-29 18:36:24,213 - app.services.llm - ERROR - OpenRouter API HTTP error (openai/gpt-4o): 403 Client Error: Forbidden for url: https://openrouter.ai/api/v1/chat/completions +2025-12-29 18:36:24,610 - app.services.llm - ERROR - OpenRouter API HTTP error (openai/gpt-4o): 403 Client Error: Forbidden for url: https://openrouter.ai/api/v1/chat/completions +2025-12-29 18:36:27,940 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:BTC/USDT: binance does not have market symbol BTC/USDT/USDT +2025-12-29 18:36:28,276 - app.services.llm - INFO - Fallback model succeeded: openai/gpt-4o-mini +2025-12-29 18:36:30,448 - app.services.llm - INFO - Fallback model succeeded: openai/gpt-4o-mini +2025-12-29 18:36:30,560 - app.services.llm - INFO - Fallback model succeeded: openai/gpt-4o-mini +2025-12-29 18:36:31,097 - app.services.llm - INFO - Fallback model succeeded: openai/gpt-4o-mini +2025-12-29 18:36:32,699 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:BTC/USDT: binance does not have market symbol BTC/USDT/USDT +2025-12-29 18:36:37,762 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:36:37,763 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:36:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:36:37,767 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:36:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004597450 HTTP/1.1" 200 - +2025-12-29 18:36:39,225 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2025-12-29 18:36:41,517 - app.services.llm - ERROR - OpenRouter API HTTP error (openai/gpt-4o): 403 Client Error: Forbidden for url: https://openrouter.ai/api/v1/chat/completions +2025-12-29 18:36:48,905 - app.services.llm - INFO - Fallback model succeeded: openai/gpt-4o-mini +2025-12-29 18:36:48,906 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2025-12-29 18:36:54,697 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2025-12-29 18:36:59,605 - app.services.agents.coordinator - WARNING - Record reflection failed: 'NoneType' object has no attribute 'get' +2025-12-29 18:36:59,606 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: Crypto:BTC/USDT +2025-12-29 18:36:59,606 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2025-12-29 18:36:59,606 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2025-12-29 18:36:59,621 - app.services.trading_executor - INFO - AI entry filter rejected: strategy_id=2 symbol=BTC/USDT signal=open_short ai=HOLD reason=ai_hold +2025-12-29 18:36:59,621 - app.services.trading_executor - WARNING - Strategy 2 signal rejected/failed: open_short +2025-12-29 18:36:59,917 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=87962.03, pending_signals=2 +2025-12-29 18:36:59,919 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 87919.99, 'position_size': 0, 'timestamp': 1767004500}] +2025-12-29 18:37:37,451 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:37:37,452 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:37:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:37:37,759 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:37:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004657447 HTTP/1.1" 200 - +2025-12-29 18:38:37,767 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:38:37,768 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:38:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:38:37,772 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:38:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004717455 HTTP/1.1" 200 - +2025-12-29 18:39:00,482 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:39:00,482 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:39:04,062 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:39:04,062 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:39:09,889 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:39:09,890 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:39:14,064 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:39:14,064 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:39:19,908 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:39:19,909 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:39:24,080 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:39:24,081 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:39:24,274 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:39:24,275 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:39:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:39:24,608 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:39:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004764287 HTTP/1.1" 200 - +2025-12-29 18:39:25,046 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:39:25,047 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:39:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:39:26,357 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:39:26,357 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:39:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:39:26,405 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:39:26] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004766090 HTTP/1.1" 200 - +2025-12-29 18:39:27,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:39:27,053 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:39:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:39:28,354 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:39:28,354 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:39:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:39:29,048 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:39:29,049 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:39:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:39:29,908 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:39:29,909 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:39:30,365 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:39:30,366 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:39:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:39:31,448 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:39:31,448 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:39:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:39:31,761 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:39:31] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004771443 HTTP/1.1" 200 - +2025-12-29 18:39:32,853 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:39:32,854 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:39:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:39:33,458 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:39:33,459 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:39:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:39:34,069 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:39:34,070 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:39:34,761 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:39:34,761 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:39:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:39:35,461 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:39:35,462 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:39:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:39:36,762 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:39:36,762 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:39:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:39:36,766 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:39:36] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004776453 HTTP/1.1" 200 - +2025-12-29 18:39:37,447 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:39:37,447 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:39:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:39:38,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:39:38,363 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:39:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:39:39,047 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:39:39,048 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:39:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:39:40,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-29 18:39:40,364 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:39:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:39:40,603 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:39:40,603 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:39:41,357 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:39:41] "GET /api/dashboard/summary?_t=1767004781337 HTTP/1.1" 200 - +2025-12-29 18:39:41,365 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:39:41] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1767004781337 HTTP/1.1" 200 - +2025-12-29 18:39:41,378 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:39:41] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1767004781337 HTTP/1.1" 200 - +2025-12-29 18:39:44,082 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:39:44,082 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:39:46,311 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:39:46] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004786303 HTTP/1.1" 200 - +2025-12-29 18:39:49,912 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:39:49,912 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:39:51,629 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:39:51] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004791314 HTTP/1.1" 200 - +2025-12-29 18:39:54,083 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:39:54,084 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:39:56,311 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:39:56] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004796303 HTTP/1.1" 200 - +2025-12-29 18:39:59,913 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:39:59,913 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:40:01,628 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:40:01] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004801311 HTTP/1.1" 200 - +2025-12-29 18:40:04,086 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:40:04,087 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:40:06,313 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:40:06] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004806305 HTTP/1.1" 200 - +2025-12-29 18:40:10,462 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:40:10,462 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:40:11,631 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:40:11] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004811318 HTTP/1.1" 200 - +2025-12-29 18:40:14,088 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:40:14,088 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:40:16,316 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:40:16] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004816307 HTTP/1.1" 200 - +2025-12-29 18:40:19,899 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:40:19,899 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:40:21,631 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:40:21] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004821315 HTTP/1.1" 200 - +2025-12-29 18:40:24,072 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:40:24,073 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:40:26,323 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:40:26] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004826313 HTTP/1.1" 200 - +2025-12-29 18:40:29,901 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:40:29,901 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:40:31,628 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:40:31] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004831315 HTTP/1.1" 200 - +2025-12-29 18:40:34,076 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:40:34,076 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:40:36,319 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:40:36] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004836311 HTTP/1.1" 200 - +2025-12-29 18:40:39,527 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:40:39] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 18:40:39,532 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:40:39] "GET /api/market/config?_t=1767004839507 HTTP/1.1" 200 - +2025-12-29 18:40:39,714 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (279640s) +2025-12-29 18:40:39,915 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:40:39,915 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:40:40,905 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 18:40:40,920 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 18:40:40,936 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BNBUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 18:40:41,153 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BTCUSDT&startTime=1766797480906 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:40:41,153 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-29 18:40:41,171 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=ETHUSDT&startTime=1766797480920 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:40:41,172 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 18:40:41,192 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=2&symbol=BNBUSDT&startTime=1766797480937 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:40:41,193 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BNB/USDT +2025-12-29 18:40:42,433 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:40:42] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-29 18:40:42,436 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:40:42] "GET /api/market/types?_t=1767004839581 HTTP/1.1" 200 - +2025-12-29 18:40:44,074 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:40:44,075 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:40:49,910 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:40:49,911 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:40:51,366 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:40:51] "POST /api/analysis/getHistoryList HTTP/1.1" 200 - +2025-12-29 18:40:54,089 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:40:54,090 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:40:54,296 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:40:54] "POST /api/analysis/getTaskStatus HTTP/1.1" 200 - +2025-12-29 18:40:59,914 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:40:59,915 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:41:02,579 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:02] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 18:41:02,886 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:02] "GET /api/market/types?_t=1767004862566 HTTP/1.1" 200 - +2025-12-29 18:41:02,893 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:02] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 18:41:02,896 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-29 18:41:03,141 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=500&symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 18:41:03,386 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=500&symbol=ETHUSDT&startTime=1715164863141 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:41:03,386 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 18:41:03,386 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:04,083 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:41:04,083 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:41:05,938 - app.routes.kline - INFO - Requesting K-lines: Futures:SI, timeframe=1D, limit=500 +2025-12-29 18:41:06,748 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:07,791 - app.routes.kline - INFO - Requesting K-lines: Futures:SI, timeframe=1D, limit=5 +2025-12-29 18:41:08,095 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:08,791 - app.routes.kline - INFO - Requesting K-lines: Futures:SI, timeframe=1D, limit=5 +2025-12-29 18:41:08,792 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:09,914 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:41:09,914 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:41:10,109 - app.routes.kline - INFO - Requesting K-lines: Futures:SI, timeframe=1D, limit=5 +2025-12-29 18:41:10,110 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:10,790 - app.routes.kline - INFO - Requesting K-lines: Futures:SI, timeframe=1D, limit=5 +2025-12-29 18:41:10,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:11,252 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:11] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 18:41:11,257 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:11] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 18:41:11,260 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:11] "GET /api/market/types?_t=1767004870934 HTTP/1.1" 200 - +2025-12-29 18:41:11,511 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-29 18:41:11,755 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=500&symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 18:41:12,000 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=500&symbol=ETHUSDT&startTime=1715164871756 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:41:12,000 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 18:41:12,000 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:14,015 - app.routes.kline - INFO - Requesting K-lines: Futures:SI, timeframe=1D, limit=500 +2025-12-29 18:41:14,017 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:14,086 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:41:14,087 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:41:15,391 - app.routes.kline - INFO - Requesting K-lines: Futures:SI, timeframe=1D, limit=5 +2025-12-29 18:41:15,391 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:16,070 - app.routes.kline - INFO - Requesting K-lines: Futures:SI, timeframe=1D, limit=5 +2025-12-29 18:41:16,071 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:17,376 - app.routes.kline - INFO - Requesting K-lines: Futures:SI, timeframe=1D, limit=5 +2025-12-29 18:41:17,377 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:19,143 - app.routes.kline - INFO - Requesting K-lines: Futures:SI, timeframe=1D, limit=5 +2025-12-29 18:41:19,143 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:19,915 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:41:19,915 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:41:20,388 - app.routes.kline - INFO - Requesting K-lines: Futures:SI, timeframe=1D, limit=5 +2025-12-29 18:41:20,388 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:21,071 - app.routes.kline - INFO - Requesting K-lines: Futures:SI, timeframe=1D, limit=5 +2025-12-29 18:41:21,072 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:22,377 - app.routes.kline - INFO - Requesting K-lines: Futures:SI, timeframe=1D, limit=5 +2025-12-29 18:41:22,377 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:23,073 - app.routes.kline - INFO - Requesting K-lines: Futures:SI, timeframe=1D, limit=5 +2025-12-29 18:41:23,073 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:24,087 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:41:24,088 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:41:24,376 - app.routes.kline - INFO - Requesting K-lines: Futures:SI, timeframe=1D, limit=5 +2025-12-29 18:41:24,377 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:25,074 - app.routes.kline - INFO - Requesting K-lines: Futures:SI, timeframe=1D, limit=5 +2025-12-29 18:41:25,075 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:26,411 - app.routes.kline - INFO - Requesting K-lines: Futures:SI, timeframe=1D, limit=5 +2025-12-29 18:41:26,412 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:27,067 - app.routes.kline - INFO - Requesting K-lines: Futures:SI, timeframe=1D, limit=5 +2025-12-29 18:41:27,067 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:28,378 - app.routes.kline - INFO - Requesting K-lines: Futures:SI, timeframe=1D, limit=5 +2025-12-29 18:41:28,378 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:29,067 - app.routes.kline - INFO - Requesting K-lines: Futures:SI, timeframe=1D, limit=5 +2025-12-29 18:41:29,067 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:29,424 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=500 +2025-12-29 18:41:29,784 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (279690s) +2025-12-29 18:41:29,786 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:29,917 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:41:29,917 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:41:30,746 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1H, limit=500 +2025-12-29 18:41:31,049 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (223891s) +2025-12-29 18:41:31,050 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:31,403 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1H, limit=500 +2025-12-29 18:41:31,669 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (2038292s) +2025-12-29 18:41:31,670 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:31,750 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1H, limit=500 +2025-12-29 18:41:32,022 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (3852692s) +2025-12-29 18:41:32,023 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:32,410 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1H, limit=500 +2025-12-29 18:41:32,680 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (5670693s) +2025-12-29 18:41:32,681 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:32,685 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1H, limit=5 +2025-12-29 18:41:32,941 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1h 2025-12-27 -> 2025-12-29) +2025-12-29 18:41:32,941 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2025-12-29 18:41:32,942 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:32,945 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1H, limit=500 +2025-12-29 18:41:33,212 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (7485093s) +2025-12-29 18:41:33,212 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:33,399 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1H, limit=5 +2025-12-29 18:41:33,400 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1h 2025-12-27 -> 2025-12-29) +2025-12-29 18:41:33,401 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2025-12-29 18:41:33,401 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:34,088 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:41:34,088 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:41:34,402 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1H, limit=5 +2025-12-29 18:41:34,403 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1h 2025-12-27 -> 2025-12-29) +2025-12-29 18:41:34,404 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2025-12-29 18:41:34,405 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:35,085 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1H, limit=5 +2025-12-29 18:41:35,086 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1h 2025-12-27 -> 2025-12-29) +2025-12-29 18:41:35,087 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2025-12-29 18:41:35,087 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:36,396 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1H, limit=5 +2025-12-29 18:41:36,397 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1h 2025-12-27 -> 2025-12-29) +2025-12-29 18:41:36,397 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2025-12-29 18:41:36,398 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:37,087 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1H, limit=5 +2025-12-29 18:41:37,088 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1h 2025-12-27 -> 2025-12-29) +2025-12-29 18:41:37,089 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2025-12-29 18:41:37,089 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:37,862 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=4H, limit=500 +2025-12-29 18:41:38,137 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (231098s) +2025-12-29 18:41:38,139 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:38,168 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=4H, limit=500 +2025-12-29 18:41:38,435 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (7492298s) +2025-12-29 18:41:38,436 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:39,478 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=4H, limit=5 +2025-12-29 18:41:39,788 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (4h 2025-12-27 -> 2025-12-29) +2025-12-29 18:41:39,789 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2025-12-29 18:41:39,790 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:39,921 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:41:39,922 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:41:40,181 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=4H, limit=5 +2025-12-29 18:41:40,182 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (4h 2025-12-27 -> 2025-12-29) +2025-12-29 18:41:40,182 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2025-12-29 18:41:40,183 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:41,479 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=4H, limit=5 +2025-12-29 18:41:41,481 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (4h 2025-12-27 -> 2025-12-29) +2025-12-29 18:41:41,481 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2025-12-29 18:41:41,481 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:42,183 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=4H, limit=5 +2025-12-29 18:41:42,184 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (4h 2025-12-27 -> 2025-12-29) +2025-12-29 18:41:42,184 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2025-12-29 18:41:42,185 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:43,491 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=4H, limit=5 +2025-12-29 18:41:43,492 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (4h 2025-12-27 -> 2025-12-29) +2025-12-29 18:41:43,493 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2025-12-29 18:41:43,493 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:43,643 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=500 +2025-12-29 18:41:43,644 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:44,090 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:41:44,090 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:41:44,673 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2025-12-29 18:41:45,068 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (279705s) +2025-12-29 18:41:45,068 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:45,980 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2025-12-29 18:41:45,980 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:46,676 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2025-12-29 18:41:46,676 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:47,983 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2025-12-29 18:41:47,983 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:48,670 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2025-12-29 18:41:48,671 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:49,917 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:41:49,917 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:41:49,993 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2025-12-29 18:41:49,994 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:50,676 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2025-12-29 18:41:50,676 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:51,113 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:51] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-29 18:41:51,117 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:51] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-29 18:41:51,119 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:51] "GET /api/market/types?_t=1767004910794 HTTP/1.1" 200 - +2025-12-29 18:41:51,379 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-29 18:41:51,624 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=500&symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-29 18:41:51,870 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/klines?interval=1d&limit=500&symbol=ETHUSDT&startTime=1715164911624 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:41:51,870 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-29 18:41:51,871 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:53,120 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1D, limit=500 +2025-12-29 18:41:54,091 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:41:54,091 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:41:54,547 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:55,881 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1D, limit=5 +2025-12-29 18:41:56,774 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:56,777 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1D, limit=5 +2025-12-29 18:41:56,777 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:57,879 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1D, limit=5 +2025-12-29 18:41:57,879 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:58,576 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1D, limit=5 +2025-12-29 18:41:58,576 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:59,882 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1D, limit=5 +2025-12-29 18:41:59,883 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:41:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:41:59,922 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:41:59,923 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:42:00,576 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1D, limit=5 +2025-12-29 18:42:00,577 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:01,951 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1D, limit=5 +2025-12-29 18:42:01,952 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:02,577 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1D, limit=5 +2025-12-29 18:42:02,577 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:03,876 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1D, limit=5 +2025-12-29 18:42:03,877 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:04,092 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:42:04,092 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:42:04,581 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1D, limit=5 +2025-12-29 18:42:04,581 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:05,882 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1D, limit=5 +2025-12-29 18:42:05,883 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:06,593 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1D, limit=5 +2025-12-29 18:42:06,593 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:07,064 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=4H, limit=500 +2025-12-29 18:42:09,516 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:09,928 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:42:09,928 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:42:10,543 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=4H, limit=5 +2025-12-29 18:42:11,459 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:11,868 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=4H, limit=5 +2025-12-29 18:42:11,869 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:11,947 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1D, limit=500 +2025-12-29 18:42:11,949 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:12,976 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1D, limit=5 +2025-12-29 18:42:12,977 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:14,093 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:42:14,094 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:42:14,279 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1D, limit=5 +2025-12-29 18:42:14,279 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:14,981 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1D, limit=5 +2025-12-29 18:42:14,982 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:16,277 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1D, limit=5 +2025-12-29 18:42:16,278 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:16,978 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1D, limit=5 +2025-12-29 18:42:16,978 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:18,283 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1D, limit=5 +2025-12-29 18:42:18,283 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:18,974 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1D, limit=5 +2025-12-29 18:42:18,974 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:19,926 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:42:19,926 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:42:20,290 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1D, limit=5 +2025-12-29 18:42:20,291 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:20,976 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1D, limit=5 +2025-12-29 18:42:20,977 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:22,286 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1D, limit=5 +2025-12-29 18:42:22,287 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:22,977 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1D, limit=5 +2025-12-29 18:42:22,977 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:24,096 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:42:24,096 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:42:24,280 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1D, limit=5 +2025-12-29 18:42:24,280 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:24,977 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1D, limit=5 +2025-12-29 18:42:24,978 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:26,280 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1D, limit=5 +2025-12-29 18:42:26,281 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:26,978 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1D, limit=5 +2025-12-29 18:42:26,978 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:27,696 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=500 +2025-12-29 18:42:27,698 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:28,734 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2025-12-29 18:42:28,734 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:29,935 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:42:29,935 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:42:30,044 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2025-12-29 18:42:30,045 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:30,727 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2025-12-29 18:42:30,727 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:32,034 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2025-12-29 18:42:32,035 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:32,728 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2025-12-29 18:42:32,728 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:34,030 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2025-12-29 18:42:34,030 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:34,096 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:42:34,096 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:42:34,726 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2025-12-29 18:42:34,727 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:36,041 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2025-12-29 18:42:36,041 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:36,728 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2025-12-29 18:42:36,728 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:38,041 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2025-12-29 18:42:38,042 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:38,743 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2025-12-29 18:42:38,744 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:39,928 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:42:39,928 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:42:40,033 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2025-12-29 18:42:40,033 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:40,727 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2025-12-29 18:42:40,728 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:42,040 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2025-12-29 18:42:42,040 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:42,727 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2025-12-29 18:42:42,728 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:44,035 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2025-12-29 18:42:44,035 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:44,098 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:42:44,098 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:42:44,729 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2025-12-29 18:42:44,730 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:46,031 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2025-12-29 18:42:46,032 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:46,730 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2025-12-29 18:42:46,730 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:48,043 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2025-12-29 18:42:48,043 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:48,729 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2025-12-29 18:42:48,730 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:49,929 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:42:49,930 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:42:50,046 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2025-12-29 18:42:50,046 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:50,730 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2025-12-29 18:42:50,730 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:51,176 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:51] "POST /api/indicator/backtest/history HTTP/1.1" 200 - +2025-12-29 18:42:51,729 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2025-12-29 18:42:51,729 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:53,044 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2025-12-29 18:42:53,044 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:53,730 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2025-12-29 18:42:53,730 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:54,400 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:42:54,400 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:42:54,795 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2025-12-29 18:42:54,796 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-29 18:42:55,104 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:55] "GET /api/strategies?_t=1767004975098 HTTP/1.1" 200 - +2025-12-29 18:42:56,163 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:56] "GET /api/strategies/equityCurve?id=9&_t=1767004976154 HTTP/1.1" 200 - +2025-12-29 18:42:56,478 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:56] "GET /api/strategies/equityCurve?id=9&_t=1767004976154 HTTP/1.1" 200 - +2025-12-29 18:42:56,481 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:56] "GET /api/strategies/positions?id=9&_t=1767004976156 HTTP/1.1" 200 - +2025-12-29 18:42:57,345 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:57] "GET /api/strategies/equityCurve?id=2&_t=1767004977028 HTTP/1.1" 200 - +2025-12-29 18:42:57,349 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:57] "GET /api/strategies/equityCurve?id=2&_t=1767004977028 HTTP/1.1" 200 - +2025-12-29 18:42:57,353 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:57] "GET /api/strategies/positions?id=2&_t=1767004977030 HTTP/1.1" 200 - +2025-12-29 18:42:57,713 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:57] "GET /api/strategies/equityCurve?id=1&_t=1767004977704 HTTP/1.1" 200 - +2025-12-29 18:42:58,025 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:58] "GET /api/strategies/equityCurve?id=1&_t=1767004977704 HTTP/1.1" 200 - +2025-12-29 18:42:58,029 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:58] "GET /api/strategies/positions?id=1&_t=1767004977705 HTTP/1.1" 200 - +2025-12-29 18:42:58,912 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:42:58] "GET /api/strategies/trades?id=1&_t=1767004978596 HTTP/1.1" 200 - +2025-12-29 18:42:59,930 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:42:59,931 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:43:02,713 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:43:02] "GET /api/strategies/positions?id=1&_t=1767004982706 HTTP/1.1" 200 - +2025-12-29 18:43:04,103 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:43:04,103 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:43:06,725 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:43:06] "GET /api/settings/schema?_t=1767004986715 HTTP/1.1" 200 - +2025-12-29 18:43:06,953 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:43:06] "GET /api/settings/values?_t=1767004986715 HTTP/1.1" 200 - +2025-12-29 18:43:08,320 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:43:08] "GET /api/dashboard/summary?_t=1767004988303 HTTP/1.1" 200 - +2025-12-29 18:43:08,624 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:43:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1767004988303 HTTP/1.1" 200 - +2025-12-29 18:43:08,633 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:43:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1767004988303 HTTP/1.1" 200 - +2025-12-29 18:43:09,933 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:43:09,934 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:43:13,615 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:43:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004993296 HTTP/1.1" 200 - +2025-12-29 18:43:14,109 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:43:14,109 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:43:18,305 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:43:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767004998297 HTTP/1.1" 200 - +2025-12-29 18:43:19,934 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:43:19,935 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:43:23,610 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:43:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005003298 HTTP/1.1" 200 - +2025-12-29 18:43:24,112 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:43:24,112 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:43:28,309 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:43:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005008298 HTTP/1.1" 200 - +2025-12-29 18:43:29,934 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:43:29,934 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:43:33,620 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:43:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005013293 HTTP/1.1" 200 - +2025-12-29 18:43:34,112 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:43:34,112 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:43:38,302 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:43:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005018295 HTTP/1.1" 200 - +2025-12-29 18:43:39,937 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:43:39,937 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:43:43,612 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:43:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005023297 HTTP/1.1" 200 - +2025-12-29 18:43:44,112 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:43:44,113 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:43:48,299 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:43:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005028292 HTTP/1.1" 200 - +2025-12-29 18:43:49,926 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:43:49,926 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:43:53,605 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:43:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005033289 HTTP/1.1" 200 - +2025-12-29 18:43:54,114 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:43:54,114 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:43:58,304 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:43:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005038297 HTTP/1.1" 200 - +2025-12-29 18:43:59,939 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:43:59,939 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:44:03,605 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:44:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005043292 HTTP/1.1" 200 - +2025-12-29 18:44:04,115 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:44:04,115 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:44:08,293 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:44:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005048286 HTTP/1.1" 200 - +2025-12-29 18:44:09,943 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:44:09,943 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:44:13,610 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:44:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005053293 HTTP/1.1" 200 - +2025-12-29 18:44:14,117 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:44:14,117 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:44:18,303 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:44:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005058296 HTTP/1.1" 200 - +2025-12-29 18:44:19,972 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:44:19,972 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:44:23,606 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:44:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005063292 HTTP/1.1" 200 - +2025-12-29 18:44:24,117 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:44:24,117 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:44:28,297 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:44:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005068288 HTTP/1.1" 200 - +2025-12-29 18:44:29,949 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:44:29,949 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:44:33,601 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:44:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005073284 HTTP/1.1" 200 - +2025-12-29 18:44:34,119 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:44:34,121 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:44:38,299 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:44:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005078291 HTTP/1.1" 200 - +2025-12-29 18:44:39,947 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:44:39,948 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:44:43,610 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:44:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005083293 HTTP/1.1" 200 - +2025-12-29 18:44:44,121 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:44:44,121 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:44:48,303 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:44:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005088296 HTTP/1.1" 200 - +2025-12-29 18:44:49,949 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:44:49,949 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:44:53,609 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:44:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005093298 HTTP/1.1" 200 - +2025-12-29 18:44:54,122 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:44:54,122 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:44:58,301 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:44:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005098294 HTTP/1.1" 200 - +2025-12-29 18:44:59,963 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:44:59,964 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:45:03,606 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:45:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005103287 HTTP/1.1" 200 - +2025-12-29 18:45:04,123 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:45:04,123 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:45:08,298 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:45:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005108289 HTTP/1.1" 200 - +2025-12-29 18:45:09,951 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:45:09,951 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:45:13,614 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:45:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005113296 HTTP/1.1" 200 - +2025-12-29 18:45:14,124 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:45:14,124 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:45:18,304 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:45:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005118295 HTTP/1.1" 200 - +2025-12-29 18:45:19,952 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:45:19,952 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:45:23,602 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:45:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005123290 HTTP/1.1" 200 - +2025-12-29 18:45:24,126 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:45:24,126 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:45:28,300 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:45:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005128292 HTTP/1.1" 200 - +2025-12-29 18:45:30,178 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:45:30,179 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:45:33,600 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:45:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005133283 HTTP/1.1" 200 - +2025-12-29 18:45:34,121 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:45:34,122 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:45:38,299 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:45:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005138291 HTTP/1.1" 200 - +2025-12-29 18:45:39,957 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:45:39,957 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:45:43,614 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:45:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005143295 HTTP/1.1" 200 - +2025-12-29 18:45:44,145 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:45:44,146 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:45:48,305 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:45:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005148298 HTTP/1.1" 200 - +2025-12-29 18:45:49,975 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:45:49,975 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:45:53,608 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:45:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005153293 HTTP/1.1" 200 - +2025-12-29 18:45:54,146 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:45:54,146 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:45:58,302 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:45:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005158294 HTTP/1.1" 200 - +2025-12-29 18:45:59,973 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:45:59,973 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:46:03,602 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:46:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005163287 HTTP/1.1" 200 - +2025-12-29 18:46:04,147 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:46:04,147 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:46:08,297 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:46:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005168290 HTTP/1.1" 200 - +2025-12-29 18:46:09,974 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:46:09,974 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:46:13,604 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:46:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005173292 HTTP/1.1" 200 - +2025-12-29 18:46:14,149 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:46:14,149 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:46:18,306 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:46:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005178298 HTTP/1.1" 200 - +2025-12-29 18:46:19,977 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:46:19,977 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:46:23,638 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:46:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005183288 HTTP/1.1" 200 - +2025-12-29 18:46:24,151 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:46:24,151 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:46:28,295 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:46:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005188285 HTTP/1.1" 200 - +2025-12-29 18:46:29,979 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:46:29,980 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:46:33,614 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:46:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005193296 HTTP/1.1" 200 - +2025-12-29 18:46:34,153 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:46:34,154 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:46:38,299 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:46:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005198290 HTTP/1.1" 200 - +2025-12-29 18:46:39,966 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:46:39,967 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:46:43,615 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:46:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005203298 HTTP/1.1" 200 - +2025-12-29 18:46:44,139 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:46:44,139 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:46:48,308 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:46:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005208299 HTTP/1.1" 200 - +2025-12-29 18:46:49,968 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:46:49,968 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:46:53,601 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:46:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005213287 HTTP/1.1" 200 - +2025-12-29 18:46:54,401 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:46:54,401 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:46:58,295 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:46:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005218288 HTTP/1.1" 200 - +2025-12-29 18:46:59,968 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:46:59,969 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:47:03,607 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:47:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005223291 HTTP/1.1" 200 - +2025-12-29 18:47:04,141 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:47:04,142 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:47:08,304 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:47:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005228296 HTTP/1.1" 200 - +2025-12-29 18:47:09,970 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:47:09,971 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:47:13,609 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:47:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005233294 HTTP/1.1" 200 - +2025-12-29 18:47:14,142 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:47:14,143 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:47:18,296 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:47:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005238289 HTTP/1.1" 200 - +2025-12-29 18:47:19,971 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:47:19,972 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:47:23,600 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:47:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005243287 HTTP/1.1" 200 - +2025-12-29 18:47:24,144 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:47:24,145 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:47:28,294 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:47:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005248286 HTTP/1.1" 200 - +2025-12-29 18:47:29,973 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:47:29,973 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:47:33,612 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:47:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005253297 HTTP/1.1" 200 - +2025-12-29 18:47:34,145 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:47:34,146 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:47:38,305 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:47:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005258297 HTTP/1.1" 200 - +2025-12-29 18:47:39,973 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:47:39,974 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:47:43,612 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:47:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005263294 HTTP/1.1" 200 - +2025-12-29 18:47:44,152 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:47:44,153 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:47:48,295 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:47:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005268287 HTTP/1.1" 200 - +2025-12-29 18:47:50,227 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:47:50,228 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:47:53,605 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:47:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005273287 HTTP/1.1" 200 - +2025-12-29 18:47:54,148 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:47:54,148 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:47:58,299 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:47:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005278287 HTTP/1.1" 200 - +2025-12-29 18:47:59,982 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:47:59,983 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:48:03,606 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:48:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005283291 HTTP/1.1" 200 - +2025-12-29 18:48:04,149 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:48:04,149 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:48:08,298 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:48:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005288290 HTTP/1.1" 200 - +2025-12-29 18:48:09,980 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:48:09,980 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:48:13,605 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:48:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005293290 HTTP/1.1" 200 - +2025-12-29 18:48:14,151 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:48:14,152 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:48:18,299 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:48:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005298290 HTTP/1.1" 200 - +2025-12-29 18:48:19,987 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:48:19,988 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:48:23,612 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:48:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005303294 HTTP/1.1" 200 - +2025-12-29 18:48:24,158 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:48:24,158 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:48:28,306 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:48:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005308297 HTTP/1.1" 200 - +2025-12-29 18:48:29,996 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:48:29,997 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:48:33,602 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:48:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005313288 HTTP/1.1" 200 - +2025-12-29 18:48:34,156 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:48:34,156 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:48:38,293 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:48:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005318284 HTTP/1.1" 200 - +2025-12-29 18:48:39,985 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:48:39,985 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:48:43,612 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:48:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005323298 HTTP/1.1" 200 - +2025-12-29 18:48:44,163 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:48:44,164 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:48:48,298 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:48:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005328290 HTTP/1.1" 200 - +2025-12-29 18:48:49,986 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:48:49,986 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:48:53,613 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:48:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005333297 HTTP/1.1" 200 - +2025-12-29 18:48:54,157 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:48:54,157 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:48:58,294 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:48:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005338287 HTTP/1.1" 200 - +2025-12-29 18:48:59,987 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:48:59,987 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:49:03,606 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:49:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005343290 HTTP/1.1" 200 - +2025-12-29 18:49:04,160 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:49:04,160 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:49:08,298 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:49:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005348291 HTTP/1.1" 200 - +2025-12-29 18:49:09,986 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:49:09,986 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:49:13,609 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:49:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005353293 HTTP/1.1" 200 - +2025-12-29 18:49:14,164 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:49:14,164 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:49:18,293 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:49:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005358285 HTTP/1.1" 200 - +2025-12-29 18:49:19,989 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:49:19,990 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:49:23,607 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:49:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005363293 HTTP/1.1" 200 - +2025-12-29 18:49:24,573 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:49:24,573 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:49:28,305 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:49:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005368297 HTTP/1.1" 200 - +2025-12-29 18:49:29,992 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:49:29,992 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:49:33,603 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:49:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005373284 HTTP/1.1" 200 - +2025-12-29 18:49:34,163 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:49:34,163 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:49:38,304 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:49:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005378297 HTTP/1.1" 200 - +2025-12-29 18:49:39,992 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:49:39,992 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:49:43,612 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:49:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005383295 HTTP/1.1" 200 - +2025-12-29 18:49:44,165 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:49:44,165 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:49:48,296 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:49:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005388288 HTTP/1.1" 200 - +2025-12-29 18:49:49,992 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:49:49,992 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:49:53,614 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:49:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005393296 HTTP/1.1" 200 - +2025-12-29 18:49:54,168 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:49:54,168 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:49:58,300 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:49:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005398293 HTTP/1.1" 200 - +2025-12-29 18:49:59,996 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:49:59,996 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:50:03,595 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:50:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005403285 HTTP/1.1" 200 - +2025-12-29 18:50:04,167 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:50:04,168 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:50:08,302 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:50:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005408293 HTTP/1.1" 200 - +2025-12-29 18:50:09,996 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:50:09,996 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:50:13,613 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:50:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005413297 HTTP/1.1" 200 - +2025-12-29 18:50:14,170 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:50:14,170 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:50:18,301 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:50:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005418293 HTTP/1.1" 200 - +2025-12-29 18:50:19,998 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:50:19,998 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:50:23,607 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:50:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005423294 HTTP/1.1" 200 - +2025-12-29 18:50:24,171 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:50:24,172 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:50:28,301 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:50:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005428294 HTTP/1.1" 200 - +2025-12-29 18:50:29,998 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:50:29,999 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:50:33,605 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:50:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005433291 HTTP/1.1" 200 - +2025-12-29 18:50:34,170 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:50:34,174 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:50:38,303 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:50:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005438295 HTTP/1.1" 200 - +2025-12-29 18:50:40,001 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:50:40,001 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:50:43,613 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:50:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005443299 HTTP/1.1" 200 - +2025-12-29 18:50:44,421 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:50:44,423 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:50:48,297 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:50:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005448290 HTTP/1.1" 200 - +2025-12-29 18:50:50,001 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:50:50,001 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:50:53,608 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:50:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005453293 HTTP/1.1" 200 - +2025-12-29 18:50:54,174 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:50:54,174 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:50:58,295 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:50:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005458287 HTTP/1.1" 200 - +2025-12-29 18:51:00,004 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:51:00,005 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:51:03,616 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:51:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005463299 HTTP/1.1" 200 - +2025-12-29 18:51:04,432 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:51:04,432 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:51:08,303 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:51:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005468295 HTTP/1.1" 200 - +2025-12-29 18:51:10,257 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:51:10,258 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:51:13,607 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:51:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005473291 HTTP/1.1" 200 - +2025-12-29 18:51:14,178 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:51:14,179 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:51:18,293 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:51:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005478285 HTTP/1.1" 200 - +2025-12-29 18:51:20,009 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:51:20,009 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:51:23,611 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:51:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005483293 HTTP/1.1" 200 - +2025-12-29 18:51:24,435 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:51:24,435 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:51:28,297 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:51:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005488288 HTTP/1.1" 200 - +2025-12-29 18:51:30,011 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:51:30,011 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:51:33,611 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:51:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005493296 HTTP/1.1" 200 - +2025-12-29 18:51:34,179 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:51:34,179 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:51:38,295 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:51:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005498287 HTTP/1.1" 200 - +2025-12-29 18:51:40,012 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:51:40,012 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:51:43,610 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:51:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005503299 HTTP/1.1" 200 - +2025-12-29 18:51:44,180 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:51:44,180 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:51:48,306 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:51:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005508299 HTTP/1.1" 200 - +2025-12-29 18:51:50,014 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:51:50,014 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:51:53,612 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:51:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005513293 HTTP/1.1" 200 - +2025-12-29 18:51:54,180 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:51:54,180 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:51:58,300 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:51:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005518293 HTTP/1.1" 200 - +2025-12-29 18:52:00,040 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:52:00,040 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:52:03,608 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:52:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005523295 HTTP/1.1" 200 - +2025-12-29 18:52:04,184 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:52:04,184 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:52:08,300 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:52:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005528289 HTTP/1.1" 200 - +2025-12-29 18:52:10,016 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:52:10,017 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:52:13,615 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:52:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005533298 HTTP/1.1" 200 - +2025-12-29 18:52:14,185 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:52:14,185 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:52:18,306 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:52:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005538298 HTTP/1.1" 200 - +2025-12-29 18:52:20,019 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:52:20,019 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:52:23,598 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:52:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005543284 HTTP/1.1" 200 - +2025-12-29 18:52:24,442 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:52:24,443 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:52:28,301 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:52:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005548294 HTTP/1.1" 200 - +2025-12-29 18:52:30,024 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:52:30,024 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:52:33,615 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:52:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005553298 HTTP/1.1" 200 - +2025-12-29 18:52:34,188 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:52:34,188 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:52:38,296 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:52:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005558288 HTTP/1.1" 200 - +2025-12-29 18:52:40,024 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:52:40,024 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:52:43,611 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:52:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005563298 HTTP/1.1" 200 - +2025-12-29 18:52:44,190 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:52:44,190 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:52:48,306 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:52:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005568297 HTTP/1.1" 200 - +2025-12-29 18:52:50,026 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:52:50,026 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:52:53,612 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:52:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005573296 HTTP/1.1" 200 - +2025-12-29 18:52:54,190 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:52:54,191 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:52:58,306 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:52:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005578298 HTTP/1.1" 200 - +2025-12-29 18:53:00,026 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:53:00,027 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:53:03,613 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:53:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005583294 HTTP/1.1" 200 - +2025-12-29 18:53:04,191 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:53:04,192 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:53:08,300 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:53:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005588289 HTTP/1.1" 200 - +2025-12-29 18:53:10,030 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:53:10,030 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:53:13,606 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:53:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005593291 HTTP/1.1" 200 - +2025-12-29 18:53:14,199 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:53:14,199 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:53:18,306 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:53:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005598293 HTTP/1.1" 200 - +2025-12-29 18:53:20,029 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:53:20,030 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:53:23,617 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:53:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005603297 HTTP/1.1" 200 - +2025-12-29 18:53:24,517 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:53:24,518 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:53:28,300 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:53:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005608292 HTTP/1.1" 200 - +2025-12-29 18:53:30,046 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:53:30,047 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:53:33,605 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:53:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005613285 HTTP/1.1" 200 - +2025-12-29 18:53:34,213 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:53:34,213 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:53:38,292 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:53:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005618285 HTTP/1.1" 200 - +2025-12-29 18:53:40,047 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:53:40,048 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:53:43,615 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:53:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005623297 HTTP/1.1" 200 - +2025-12-29 18:53:44,214 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:53:44,214 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:53:48,308 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:53:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005628298 HTTP/1.1" 200 - +2025-12-29 18:53:50,064 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:53:50,064 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:53:53,609 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:53:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005633287 HTTP/1.1" 200 - +2025-12-29 18:53:54,215 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:53:54,215 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:53:58,295 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:53:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005638287 HTTP/1.1" 200 - +2025-12-29 18:54:00,051 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:54:00,051 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:54:03,609 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:54:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005643292 HTTP/1.1" 200 - +2025-12-29 18:54:04,217 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:54:04,217 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:54:08,297 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:54:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005648287 HTTP/1.1" 200 - +2025-12-29 18:54:10,317 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:54:10,318 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:54:13,605 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:54:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005653287 HTTP/1.1" 200 - +2025-12-29 18:54:14,210 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:54:14,210 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:54:18,309 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:54:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005658301 HTTP/1.1" 200 - +2025-12-29 18:54:20,047 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:54:20,048 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:54:23,607 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:54:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005663292 HTTP/1.1" 200 - +2025-12-29 18:54:24,203 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:54:24,203 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:54:28,305 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:54:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005668298 HTTP/1.1" 200 - +2025-12-29 18:54:30,039 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:54:30,039 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:54:33,607 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:54:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005673288 HTTP/1.1" 200 - +2025-12-29 18:54:34,205 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:54:34,205 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:54:38,295 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:54:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005678287 HTTP/1.1" 200 - +2025-12-29 18:54:40,041 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:54:40,041 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:54:43,604 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:54:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005683287 HTTP/1.1" 200 - +2025-12-29 18:54:44,205 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:54:44,205 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:54:48,304 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:54:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005688296 HTTP/1.1" 200 - +2025-12-29 18:54:50,042 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:54:50,042 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:54:53,603 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:54:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005693286 HTTP/1.1" 200 - +2025-12-29 18:54:54,208 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:54:54,208 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:54:58,297 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:54:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005698285 HTTP/1.1" 200 - +2025-12-29 18:55:00,043 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:55:00,044 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:55:03,614 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:55:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005703297 HTTP/1.1" 200 - +2025-12-29 18:55:04,209 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:55:04,209 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:55:08,301 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:55:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005708293 HTTP/1.1" 200 - +2025-12-29 18:55:10,044 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:55:10,044 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:55:13,607 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:55:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005713293 HTTP/1.1" 200 - +2025-12-29 18:55:14,209 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:55:14,209 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:55:18,307 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:55:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005718299 HTTP/1.1" 200 - +2025-12-29 18:55:20,051 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:55:20,051 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:55:23,609 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:55:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005723293 HTTP/1.1" 200 - +2025-12-29 18:55:24,211 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:55:24,211 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:55:28,298 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:55:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005728290 HTTP/1.1" 200 - +2025-12-29 18:55:30,049 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:55:30,049 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:55:33,616 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:55:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005733295 HTTP/1.1" 200 - +2025-12-29 18:55:34,216 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:55:34,217 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:55:38,301 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:55:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005738294 HTTP/1.1" 200 - +2025-12-29 18:55:40,048 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:55:40,049 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:55:43,614 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:55:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005743298 HTTP/1.1" 200 - +2025-12-29 18:55:44,218 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:55:44,218 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:55:48,299 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:55:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005748292 HTTP/1.1" 200 - +2025-12-29 18:55:50,051 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:55:50,051 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:55:53,613 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:55:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005753294 HTTP/1.1" 200 - +2025-12-29 18:55:54,221 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:55:54,222 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:55:58,296 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:55:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005758289 HTTP/1.1" 200 - +2025-12-29 18:56:00,052 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:56:00,052 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:56:03,615 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:56:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005763296 HTTP/1.1" 200 - +2025-12-29 18:56:04,220 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:56:04,221 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:56:08,302 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:56:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005768293 HTTP/1.1" 200 - +2025-12-29 18:56:10,053 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:56:10,053 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:56:13,615 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:56:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005773298 HTTP/1.1" 200 - +2025-12-29 18:56:14,222 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:56:14,223 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:56:18,303 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:56:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005778295 HTTP/1.1" 200 - +2025-12-29 18:56:20,054 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:56:20,054 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:56:23,603 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:56:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005783289 HTTP/1.1" 200 - +2025-12-29 18:56:24,224 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:56:24,224 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:56:28,295 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:56:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005788288 HTTP/1.1" 200 - +2025-12-29 18:56:30,056 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:56:30,056 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:56:33,601 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:56:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005793286 HTTP/1.1" 200 - +2025-12-29 18:56:34,224 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:56:34,224 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:56:38,305 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:56:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005798298 HTTP/1.1" 200 - +2025-12-29 18:56:40,314 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:56:40,314 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:56:43,602 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:56:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005803284 HTTP/1.1" 200 - +2025-12-29 18:56:44,225 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:56:44,225 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:56:48,304 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:56:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005808295 HTTP/1.1" 200 - +2025-12-29 18:56:50,057 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:56:50,057 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:56:53,604 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:56:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005813286 HTTP/1.1" 200 - +2025-12-29 18:56:54,227 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:56:54,228 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:56:58,320 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:56:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005818296 HTTP/1.1" 200 - +2025-12-29 18:57:00,060 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:57:00,060 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:57:03,606 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:57:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005823292 HTTP/1.1" 200 - +2025-12-29 18:57:04,228 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:57:04,229 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:57:08,322 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:57:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005828291 HTTP/1.1" 200 - +2025-12-29 18:57:10,061 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:57:10,062 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:57:13,609 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:57:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005833297 HTTP/1.1" 200 - +2025-12-29 18:57:14,230 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:57:14,230 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:57:18,293 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:57:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005838285 HTTP/1.1" 200 - +2025-12-29 18:57:20,063 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:57:20,064 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:57:23,607 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:57:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005843288 HTTP/1.1" 200 - +2025-12-29 18:57:24,235 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:57:24,237 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:57:28,296 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:57:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005848289 HTTP/1.1" 200 - +2025-12-29 18:57:30,064 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:57:30,064 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:57:33,614 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:57:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005853297 HTTP/1.1" 200 - +2025-12-29 18:57:34,236 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:57:34,236 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:57:38,306 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:57:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005858299 HTTP/1.1" 200 - +2025-12-29 18:57:40,328 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:57:40,328 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:57:43,601 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:57:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005863288 HTTP/1.1" 200 - +2025-12-29 18:57:44,239 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:57:44,239 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:57:48,296 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:57:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005868289 HTTP/1.1" 200 - +2025-12-29 18:57:50,067 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:57:50,068 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:57:53,608 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:57:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005873291 HTTP/1.1" 200 - +2025-12-29 18:57:54,240 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:57:54,241 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:57:58,292 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:57:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005878284 HTTP/1.1" 200 - +2025-12-29 18:58:00,069 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:58:00,069 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:58:03,611 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:58:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005883294 HTTP/1.1" 200 - +2025-12-29 18:58:04,239 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:58:04,240 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:58:08,297 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:58:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005888289 HTTP/1.1" 200 - +2025-12-29 18:58:10,069 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:58:10,070 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:58:13,613 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:58:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005893294 HTTP/1.1" 200 - +2025-12-29 18:58:14,241 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:58:14,242 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:58:18,305 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:58:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005898297 HTTP/1.1" 200 - +2025-12-29 18:58:20,072 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:58:20,073 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:58:23,608 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:58:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005903292 HTTP/1.1" 200 - +2025-12-29 18:58:24,243 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:58:24,243 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:58:28,303 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:58:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005908296 HTTP/1.1" 200 - +2025-12-29 18:58:30,074 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:58:30,074 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:58:33,602 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:58:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005913285 HTTP/1.1" 200 - +2025-12-29 18:58:34,243 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:58:34,244 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:58:38,300 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:58:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005918293 HTTP/1.1" 200 - +2025-12-29 18:58:40,073 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:58:40,073 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:58:43,604 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:58:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005923285 HTTP/1.1" 200 - +2025-12-29 18:58:44,245 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:58:44,245 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:58:48,305 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:58:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005928296 HTTP/1.1" 200 - +2025-12-29 18:58:50,075 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:58:50,075 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:58:53,601 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:58:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005933287 HTTP/1.1" 200 - +2025-12-29 18:58:54,265 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:58:54,266 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:58:58,291 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:58:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005938284 HTTP/1.1" 200 - +2025-12-29 18:59:00,078 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:59:00,078 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:59:03,614 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:59:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005943296 HTTP/1.1" 200 - +2025-12-29 18:59:04,249 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:59:04,250 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:59:08,297 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:59:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005948289 HTTP/1.1" 200 - +2025-12-29 18:59:10,327 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:59:10,328 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:59:13,601 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:59:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005953287 HTTP/1.1" 200 - +2025-12-29 18:59:14,252 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:59:14,253 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:59:18,300 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:59:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005958292 HTTP/1.1" 200 - +2025-12-29 18:59:20,081 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:59:20,081 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:59:23,606 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:59:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005963290 HTTP/1.1" 200 - +2025-12-29 18:59:24,252 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:59:24,252 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:59:28,296 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:59:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005968289 HTTP/1.1" 200 - +2025-12-29 18:59:30,080 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:59:30,080 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:59:33,606 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:59:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005973289 HTTP/1.1" 200 - +2025-12-29 18:59:34,253 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:59:34,253 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:59:38,296 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:59:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005978289 HTTP/1.1" 200 - +2025-12-29 18:59:40,081 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:59:40,082 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:59:43,603 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:59:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005983293 HTTP/1.1" 200 - +2025-12-29 18:59:44,255 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:59:44,255 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:59:48,302 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:59:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005988295 HTTP/1.1" 200 - +2025-12-29 18:59:50,090 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:59:50,090 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 18:59:53,611 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:59:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005993293 HTTP/1.1" 200 - +2025-12-29 18:59:54,256 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 18:59:54,256 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 18:59:58,294 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 18:59:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767005998286 HTTP/1.1" 200 - +2025-12-29 19:00:00,085 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:00:00,085 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:00:03,614 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:00:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006003298 HTTP/1.1" 200 - +2025-12-29 19:00:04,258 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:00:04,258 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:00:08,306 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:00:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006008299 HTTP/1.1" 200 - +2025-12-29 19:00:10,087 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:00:10,087 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:00:13,611 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:00:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006013293 HTTP/1.1" 200 - +2025-12-29 19:00:14,259 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:00:14,260 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:00:18,294 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:00:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006018286 HTTP/1.1" 200 - +2025-12-29 19:00:20,088 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:00:20,089 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:00:23,613 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:00:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006023298 HTTP/1.1" 200 - +2025-12-29 19:00:24,260 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:00:24,260 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:00:28,302 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:00:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006028293 HTTP/1.1" 200 - +2025-12-29 19:00:30,089 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:00:30,089 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:00:33,620 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:00:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006033298 HTTP/1.1" 200 - +2025-12-29 19:00:34,261 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:00:34,261 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:00:38,302 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:00:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006038292 HTTP/1.1" 200 - +2025-12-29 19:00:40,090 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:00:40,090 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:00:43,616 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:00:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006043295 HTTP/1.1" 200 - +2025-12-29 19:00:44,266 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:00:44,267 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:00:48,301 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:00:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006048293 HTTP/1.1" 200 - +2025-12-29 19:00:50,090 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:00:50,090 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:00:53,613 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:00:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006053293 HTTP/1.1" 200 - +2025-12-29 19:00:54,735 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:00:54,736 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:00:58,294 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:00:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006058287 HTTP/1.1" 200 - +2025-12-29 19:01:00,093 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:01:00,093 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:01:03,598 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:01:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006063285 HTTP/1.1" 200 - +2025-12-29 19:01:04,266 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:01:04,267 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:01:08,306 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:01:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006068297 HTTP/1.1" 200 - +2025-12-29 19:01:10,094 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:01:10,094 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:01:13,602 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:01:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006073286 HTTP/1.1" 200 - +2025-12-29 19:01:14,268 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:01:14,269 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:01:18,298 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:01:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006078290 HTTP/1.1" 200 - +2025-12-29 19:01:20,095 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:01:20,096 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:01:23,609 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:01:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006083289 HTTP/1.1" 200 - +2025-12-29 19:01:24,269 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:01:24,270 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:01:28,292 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:01:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006088285 HTTP/1.1" 200 - +2025-12-29 19:01:30,095 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:01:30,096 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:01:33,611 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:01:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006093290 HTTP/1.1" 200 - +2025-12-29 19:01:34,271 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:01:34,272 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:01:38,297 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:01:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006098289 HTTP/1.1" 200 - +2025-12-29 19:01:40,097 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:01:40,097 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:01:43,609 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:01:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006103292 HTTP/1.1" 200 - +2025-12-29 19:01:44,275 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:01:44,275 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:01:48,303 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:01:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006108296 HTTP/1.1" 200 - +2025-12-29 19:01:50,100 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:01:50,100 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:01:53,611 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:01:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006113294 HTTP/1.1" 200 - +2025-12-29 19:01:54,275 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:01:54,275 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:01:58,307 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:01:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006118298 HTTP/1.1" 200 - +2025-12-29 19:02:00,106 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:02:00,106 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:02:03,615 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:02:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006123299 HTTP/1.1" 200 - +2025-12-29 19:02:04,277 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:02:04,278 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:02:08,295 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:02:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006128287 HTTP/1.1" 200 - +2025-12-29 19:02:10,102 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:02:10,103 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:02:13,609 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:02:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006133291 HTTP/1.1" 200 - +2025-12-29 19:02:14,277 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:02:14,278 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:02:18,298 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:02:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006138291 HTTP/1.1" 200 - +2025-12-29 19:02:20,103 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:02:20,103 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:02:23,613 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:02:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006143294 HTTP/1.1" 200 - +2025-12-29 19:02:24,280 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:02:24,281 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:02:28,293 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:02:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006148285 HTTP/1.1" 200 - +2025-12-29 19:02:30,104 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:02:30,105 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:02:33,610 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:02:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006153300 HTTP/1.1" 200 - +2025-12-29 19:02:34,281 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:02:34,281 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:02:38,305 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:02:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006158298 HTTP/1.1" 200 - +2025-12-29 19:02:40,106 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:02:40,106 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:02:43,604 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:02:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006163285 HTTP/1.1" 200 - +2025-12-29 19:02:44,296 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:02:44,296 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:02:48,294 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:02:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006168286 HTTP/1.1" 200 - +2025-12-29 19:02:50,107 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:02:50,108 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:02:53,609 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:02:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006173294 HTTP/1.1" 200 - +2025-12-29 19:02:54,298 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:02:54,298 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:02:58,298 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:02:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006178291 HTTP/1.1" 200 - +2025-12-29 19:03:00,109 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:03:00,109 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:03:03,598 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:03:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006183286 HTTP/1.1" 200 - +2025-12-29 19:03:04,300 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:03:04,300 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:03:08,296 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:03:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006188288 HTTP/1.1" 200 - +2025-12-29 19:03:10,110 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:03:10,111 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:03:13,598 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:03:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006193284 HTTP/1.1" 200 - +2025-12-29 19:03:14,301 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:03:14,301 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:03:18,293 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:03:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006198285 HTTP/1.1" 200 - +2025-12-29 19:03:20,112 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:03:20,112 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:03:23,618 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:03:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006203299 HTTP/1.1" 200 - +2025-12-29 19:03:24,303 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:03:24,304 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:03:28,300 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:03:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006208291 HTTP/1.1" 200 - +2025-12-29 19:03:30,113 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:03:30,113 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:03:33,611 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:03:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006213292 HTTP/1.1" 200 - +2025-12-29 19:03:34,304 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:03:34,304 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:03:38,307 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:03:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006218298 HTTP/1.1" 200 - +2025-12-29 19:03:40,115 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:03:40,115 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:03:43,603 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:03:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006223288 HTTP/1.1" 200 - +2025-12-29 19:03:44,306 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:03:44,307 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:03:48,306 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:03:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006228298 HTTP/1.1" 200 - +2025-12-29 19:03:50,116 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:03:50,116 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:03:53,606 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:03:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006233288 HTTP/1.1" 200 - +2025-12-29 19:03:54,306 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:03:54,307 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:03:58,299 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:03:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006238291 HTTP/1.1" 200 - +2025-12-29 19:04:00,120 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:04:00,120 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:04:03,604 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:04:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006243288 HTTP/1.1" 200 - +2025-12-29 19:04:04,308 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:04:04,308 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:04:08,299 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:04:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006248292 HTTP/1.1" 200 - +2025-12-29 19:04:10,118 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:04:10,119 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:04:13,614 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:04:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006253295 HTTP/1.1" 200 - +2025-12-29 19:04:14,314 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:04:14,314 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:04:18,292 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:04:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006258285 HTTP/1.1" 200 - +2025-12-29 19:04:20,121 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:04:20,121 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:04:23,604 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:04:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006263285 HTTP/1.1" 200 - +2025-12-29 19:04:24,311 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:04:24,312 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:04:28,297 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:04:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006268289 HTTP/1.1" 200 - +2025-12-29 19:04:30,121 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:04:30,122 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:04:33,608 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:04:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006273292 HTTP/1.1" 200 - +2025-12-29 19:04:34,314 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:04:34,315 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:04:38,292 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:04:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006278284 HTTP/1.1" 200 - +2025-12-29 19:04:40,123 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:04:40,123 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:04:43,619 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:04:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006283299 HTTP/1.1" 200 - +2025-12-29 19:04:44,314 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:04:44,315 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:04:48,306 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:04:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006288298 HTTP/1.1" 200 - +2025-12-29 19:04:50,125 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:04:50,125 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:04:53,605 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:04:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006293284 HTTP/1.1" 200 - +2025-12-29 19:04:54,316 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:04:54,316 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:04:58,299 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:04:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006298291 HTTP/1.1" 200 - +2025-12-29 19:05:00,126 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:05:00,126 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:05:03,611 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:05:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006303298 HTTP/1.1" 200 - +2025-12-29 19:05:04,317 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:05:04,317 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:05:08,304 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:05:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006308295 HTTP/1.1" 200 - +2025-12-29 19:05:10,128 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:05:10,128 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:05:13,616 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:05:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006313298 HTTP/1.1" 200 - +2025-12-29 19:05:14,318 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:05:14,318 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:05:18,314 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:05:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006318297 HTTP/1.1" 200 - +2025-12-29 19:05:20,130 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:05:20,130 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:05:23,610 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:05:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006323287 HTTP/1.1" 200 - +2025-12-29 19:05:24,320 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:05:24,320 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:05:28,452 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:05:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006328445 HTTP/1.1" 200 - +2025-12-29 19:05:30,130 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:05:30,131 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:05:33,776 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:05:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006333453 HTTP/1.1" 200 - +2025-12-29 19:05:34,323 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:05:34,323 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:05:38,454 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:05:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006338446 HTTP/1.1" 200 - +2025-12-29 19:05:40,132 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:05:40,132 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:05:43,770 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:05:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006343453 HTTP/1.1" 200 - +2025-12-29 19:05:44,324 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:05:44,325 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:05:48,460 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:05:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006348448 HTTP/1.1" 200 - +2025-12-29 19:05:50,133 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:05:50,133 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:05:53,772 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:05:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006353454 HTTP/1.1" 200 - +2025-12-29 19:05:54,326 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:05:54,327 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:05:58,450 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:05:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006358441 HTTP/1.1" 200 - +2025-12-29 19:06:00,136 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:06:00,137 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:06:03,755 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:06:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006363442 HTTP/1.1" 200 - +2025-12-29 19:06:04,328 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:06:04,329 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:06:08,456 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:06:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006368448 HTTP/1.1" 200 - +2025-12-29 19:06:10,136 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:06:10,136 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:06:13,762 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:06:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006373446 HTTP/1.1" 200 - +2025-12-29 19:06:14,331 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:06:14,331 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:06:18,461 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:06:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006378452 HTTP/1.1" 200 - +2025-12-29 19:06:20,140 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:06:20,141 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:06:23,760 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:06:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006383444 HTTP/1.1" 200 - +2025-12-29 19:06:24,341 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:06:24,342 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:06:30,138 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:06:30,138 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:06:34,580 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:06:34,580 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:06:37,451 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:06:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006397442 HTTP/1.1" 200 - +2025-12-29 19:06:40,140 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:06:40,140 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:06:44,333 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:06:44,333 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:06:50,156 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:06:50,156 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:06:54,342 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:06:54,342 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:07:00,429 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:07:00,429 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:07:04,352 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:07:04,353 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:07:10,158 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:07:10,158 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:07:14,351 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:07:14,352 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:07:20,157 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:07:20,158 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:07:24,339 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:07:24,339 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:07:30,161 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:07:30,161 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:07:34,355 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:07:34,356 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:07:37,754 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:07:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006457443 HTTP/1.1" 200 - +2025-12-29 19:07:40,160 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:07:40,160 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:07:44,341 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:07:44,341 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:07:50,149 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:07:50,150 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:07:54,593 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:07:54,593 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:08:00,150 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:08:00,150 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:08:04,344 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:08:04,345 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:08:10,152 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:08:10,152 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:08:14,347 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:08:14,347 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:08:20,153 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:08:20,153 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:08:24,348 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:08:24,348 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:08:30,155 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:08:30,156 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:08:34,844 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:08:34,844 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:08:37,461 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:08:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006517452 HTTP/1.1" 200 - +2025-12-29 19:08:40,155 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:08:40,155 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:08:44,348 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:08:44,349 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:08:50,159 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:08:50,159 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:08:54,349 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:08:54,350 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:09:00,409 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:09:00,409 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:09:04,351 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:09:04,351 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:09:10,162 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:09:10,163 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:09:14,354 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:09:14,354 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:09:20,158 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:09:20,158 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:09:24,354 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:09:24,354 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:09:30,163 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:09:30,163 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:09:34,355 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:09:34,356 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:09:37,759 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:09:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006577441 HTTP/1.1" 200 - +2025-12-29 19:09:40,164 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:09:40,165 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:09:44,358 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:09:44,358 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:09:50,172 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:09:50,172 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:09:54,612 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:09:54,612 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:10:00,168 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:10:00,168 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:10:04,360 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:10:04,361 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:10:10,169 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:10:10,169 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:10:14,360 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:10:14,360 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:10:20,171 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:10:20,171 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:10:24,362 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:10:24,362 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:10:30,171 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:10:30,171 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:10:34,364 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:10:34,365 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:10:37,456 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:10:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006637445 HTTP/1.1" 200 - +2025-12-29 19:10:40,174 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:10:40,175 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:10:44,366 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:10:44,366 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:10:50,177 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:10:50,177 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:10:54,367 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:10:54,367 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:11:00,178 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:11:00,179 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:11:04,369 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:11:04,369 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:11:10,179 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:11:10,179 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:11:14,372 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:11:14,372 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:11:20,436 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:11:20,436 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:11:24,747 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:11:24,748 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:11:30,181 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:11:30,181 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:11:34,374 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:11:34,374 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:11:37,772 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:11:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006697455 HTTP/1.1" 200 - +2025-12-29 19:11:40,182 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:11:40,182 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:11:44,374 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:11:44,374 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:11:50,183 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:11:50,184 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:11:54,375 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:11:54,376 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:12:00,413 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:12:00,413 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:12:04,377 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:12:04,378 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:12:10,187 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:12:10,187 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:12:14,378 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:12:14,379 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:12:20,189 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:12:20,189 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:12:24,381 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:12:24,381 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:12:30,192 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:12:30,193 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:12:34,382 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:12:34,382 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:12:37,451 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:12:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006757442 HTTP/1.1" 200 - +2025-12-29 19:12:40,192 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:12:40,192 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:12:44,384 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:12:44,384 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:12:50,445 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:12:50,446 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:12:54,384 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:12:54,384 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:13:00,196 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:13:00,196 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:13:04,636 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:13:04,637 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:13:10,196 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:13:10,197 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:13:14,388 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:13:14,388 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:13:20,198 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:13:20,198 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:13:24,389 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:13:24,390 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:13:30,198 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:13:30,198 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:13:34,392 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:13:34,392 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:13:37,758 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:13:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006817443 HTTP/1.1" 200 - +2025-12-29 19:13:40,199 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:13:40,199 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:13:44,393 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:13:44,394 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:13:50,201 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:13:50,201 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:13:54,975 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:13:54,975 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:14:00,203 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:14:00,203 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:14:04,394 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:14:04,395 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:14:10,206 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:14:10,206 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:14:14,397 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:14:14,398 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:14:20,208 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:14:20,208 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:14:24,399 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:14:24,399 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:14:30,209 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:14:30,209 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:14:34,400 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:14:34,400 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:14:37,463 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:14:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006877455 HTTP/1.1" 200 - +2025-12-29 19:14:40,210 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:14:40,211 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:14:44,401 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:14:44,401 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:14:50,212 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:14:50,213 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:14:54,651 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:14:54,652 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:15:00,213 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:15:00,213 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:15:04,653 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:15:04,653 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:15:10,215 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:15:10,215 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:15:14,407 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:15:14,407 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:15:20,466 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:15:20,466 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:15:24,408 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:15:24,408 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:15:30,219 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:15:30,219 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:15:34,692 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:15:34,692 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:15:37,757 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:15:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006937444 HTTP/1.1" 200 - +2025-12-29 19:15:40,221 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:15:40,222 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:15:44,659 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:15:44,659 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:15:50,222 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:15:50,222 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:15:54,412 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:15:54,412 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:16:00,227 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:16:00,228 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:16:04,413 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:16:04,414 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:16:10,229 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:16:10,230 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:16:14,415 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:16:14,416 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:16:20,231 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:16:20,232 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:16:24,417 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:16:24,417 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:16:30,228 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:16:30,229 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:16:34,419 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:16:34,419 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:16:37,450 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:16:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767006997442 HTTP/1.1" 200 - +2025-12-29 19:16:40,746 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:16:40,746 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:16:44,803 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:16:44,804 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:16:50,231 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:16:50,231 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:16:54,423 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:16:54,423 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:17:00,233 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:17:00,234 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:17:04,425 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:17:04,425 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:17:10,235 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:17:10,235 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:17:14,441 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:17:14,442 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:17:20,698 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:17:20,699 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:17:24,444 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:17:24,445 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:17:30,253 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:17:30,254 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:17:34,446 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:17:34,446 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:17:37,761 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:17:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767007057445 HTTP/1.1" 200 - +2025-12-29 19:17:40,255 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:17:40,256 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:17:44,447 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:17:44,447 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:17:50,242 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:17:50,242 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:17:54,448 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:17:54,449 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:18:00,257 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:18:00,257 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:18:04,451 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:18:04,452 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:18:10,260 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:18:10,261 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:18:14,438 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:18:14,438 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:18:20,246 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:18:20,246 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:18:24,438 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:18:24,438 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:18:30,248 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:18:30,248 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:18:34,439 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:18:34,440 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:18:37,451 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:18:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767007117443 HTTP/1.1" 200 - +2025-12-29 19:18:40,249 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:18:40,249 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:18:44,441 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:18:44,441 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:18:50,250 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:18:50,250 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:18:54,443 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:18:54,443 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:19:00,253 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:19:00,254 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:19:04,444 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:19:04,445 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:19:10,254 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:19:10,255 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:19:14,446 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:19:14,446 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:19:20,257 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:19:20,257 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:19:24,447 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:19:24,447 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:19:30,257 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:19:30,258 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:19:34,467 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:19:34,468 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:19:37,793 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:19:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767007177448 HTTP/1.1" 200 - +2025-12-29 19:19:40,276 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:19:40,277 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:19:44,470 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:19:44,470 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:19:50,278 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:19:50,279 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:19:55,291 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:19:55,291 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:20:00,287 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:20:00,288 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:20:04,472 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:20:04,472 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:20:10,284 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:20:10,285 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:20:14,474 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:20:14,474 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:20:20,285 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:20:20,286 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:20:24,474 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:20:24,474 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:20:30,288 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:20:30,288 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:20:34,458 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:20:34,459 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:20:37,477 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:20:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767007237451 HTTP/1.1" 200 - +2025-12-29 19:20:40,273 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:20:40,273 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:20:44,463 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:20:44,463 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:20:50,273 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:20:50,273 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:20:54,462 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:20:54,463 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:21:00,274 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:21:00,275 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:21:04,463 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:21:04,464 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:21:10,276 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:21:10,276 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:21:14,465 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:21:14,465 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:21:20,278 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:21:20,278 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:21:24,466 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:21:24,466 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:21:30,279 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:21:30,279 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:21:34,469 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:21:34,469 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:21:37,759 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:21:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767007297448 HTTP/1.1" 200 - +2025-12-29 19:21:40,282 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:21:40,282 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:21:44,469 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:21:44,470 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:21:50,282 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:21:50,283 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:21:54,471 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:21:54,471 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:22:00,284 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:22:00,284 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:22:04,473 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:22:04,473 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:22:10,286 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:22:10,287 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:22:14,473 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:22:14,473 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:22:20,288 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:22:20,288 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:22:24,724 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:22:24,724 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:22:30,602 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:22:30,602 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:22:34,476 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:22:34,476 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:22:37,457 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:22:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767007357448 HTTP/1.1" 200 - +2025-12-29 19:22:40,291 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:22:40,291 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:22:44,478 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:22:44,478 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:22:50,292 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:22:50,292 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:22:54,478 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:22:54,479 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:23:00,294 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:23:00,294 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:23:04,481 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:23:04,481 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:23:10,754 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:23:10,754 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:23:14,483 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:23:14,483 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:23:20,297 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:23:20,297 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:23:24,484 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:23:24,485 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:23:30,299 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:23:30,300 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:23:34,487 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:23:34,488 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:23:37,767 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:23:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767007417449 HTTP/1.1" 200 - +2025-12-29 19:23:40,301 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:23:40,301 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:23:44,487 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:23:44,488 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:23:50,300 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:23:50,300 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:23:54,494 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:23:54,494 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:24:00,303 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:24:00,303 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:24:04,494 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:24:04,495 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:24:10,304 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:24:10,304 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:24:14,495 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:24:14,495 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:24:20,307 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:24:20,308 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:24:24,497 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:24:24,498 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:24:30,307 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:24:30,307 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:24:34,497 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:24:34,498 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:24:37,456 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:24:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767007477446 HTTP/1.1" 200 - +2025-12-29 19:24:40,309 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:24:40,310 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:24:44,500 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:24:44,501 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:24:50,312 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:24:50,312 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:24:54,501 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:24:54,501 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:25:00,313 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:25:00,313 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:25:04,502 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:25:04,503 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:25:10,313 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:25:10,313 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:25:14,778 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:25:14,778 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:25:20,315 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:25:20,315 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:25:24,504 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:25:24,505 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:25:30,316 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:25:30,316 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:25:34,506 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:25:34,507 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:25:37,782 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:25:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767007537463 HTTP/1.1" 200 - +2025-12-29 19:25:40,317 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:25:40,318 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:25:44,507 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:25:44,507 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:25:49,463 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:25:49] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767007549436 HTTP/1.1" 200 - +2025-12-29 19:25:50,319 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:25:50,319 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:25:53,758 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:25:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767007553443 HTTP/1.1" 200 - +2025-12-29 19:25:54,952 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:25:54,953 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:25:58,461 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:25:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767007558451 HTTP/1.1" 200 - +2025-12-29 19:26:00,322 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:26:00,323 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:26:03,757 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:26:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767007563442 HTTP/1.1" 200 - +2025-12-29 19:26:04,510 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:26:04,510 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:26:08,460 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:26:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767007568452 HTTP/1.1" 200 - +2025-12-29 19:26:10,322 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:26:10,322 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:26:13,766 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:26:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767007573450 HTTP/1.1" 200 - +2025-12-29 19:26:14,512 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:26:14,512 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:26:18,459 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:26:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767007578451 HTTP/1.1" 200 - +2025-12-29 19:26:20,336 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:26:20,336 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:26:23,766 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:26:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767007583446 HTTP/1.1" 200 - +2025-12-29 19:26:24,512 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:26:24,512 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:26:28,456 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:26:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767007588447 HTTP/1.1" 200 - +2025-12-29 19:26:30,325 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:26:30,326 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:26:33,769 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:26:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767007593449 HTTP/1.1" 200 - +2025-12-29 19:26:34,513 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:26:34,513 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:26:38,462 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:26:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767007598454 HTTP/1.1" 200 - +2025-12-29 19:26:40,327 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:26:40,327 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:26:43,777 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:26:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767007603455 HTTP/1.1" 200 - +2025-12-29 19:26:44,515 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:26:44,516 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:26:48,449 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:26:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767007608441 HTTP/1.1" 200 - +2025-12-29 19:26:50,326 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:26:50,327 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:26:53,772 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:26:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767007613451 HTTP/1.1" 200 - +2025-12-29 19:26:54,517 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:26:54,517 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:26:58,464 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:26:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767007618456 HTTP/1.1" 200 - +2025-12-29 19:27:00,344 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:27:00,345 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:27:03,767 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:27:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767007623453 HTTP/1.1" 200 - +2025-12-29 19:27:05,091 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:27:05,091 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:27:08,449 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:27:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767007628441 HTTP/1.1" 200 - +2025-12-29 19:27:10,346 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:27:10,346 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:27:13,767 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:27:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767007633448 HTTP/1.1" 200 - +2025-12-29 19:27:15,067 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:27:15,067 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:27:18,459 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:27:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767007638452 HTTP/1.1" 200 - +2025-12-29 19:27:20,348 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:27:20,349 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:27:23,765 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:27:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767007643445 HTTP/1.1" 200 - +2025-12-29 19:27:24,539 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:27:24,539 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:27:28,462 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:27:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767007648454 HTTP/1.1" 200 - +2025-12-29 19:27:30,349 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:27:30,350 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:27:33,766 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:27:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767007653448 HTTP/1.1" 200 - +2025-12-29 19:27:34,539 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:27:34,540 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:27:38,449 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:27:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767007658441 HTTP/1.1" 200 - +2025-12-29 19:27:40,350 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:27:40,351 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:27:43,761 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:27:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767007663445 HTTP/1.1" 200 - +2025-12-29 19:27:44,810 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:27:44,810 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:27:50,352 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:27:50,353 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:27:54,542 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:27:54,542 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:28:00,337 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:28:00,337 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:28:04,799 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:28:04,799 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:28:10,338 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:28:10,339 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:28:14,530 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:28:14,530 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:28:20,340 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:28:20,340 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:28:24,533 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:28:24,534 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:28:30,342 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:28:30,342 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:28:34,822 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:28:34,823 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:28:37,454 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:28:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767007717445 HTTP/1.1" 200 - +2025-12-29 19:28:40,596 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:28:40,596 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:28:44,535 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:28:44,535 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:28:50,345 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:28:50,345 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:28:54,536 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:28:54,537 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:29:00,342 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:29:00,342 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:29:04,539 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:29:04,540 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:29:10,596 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:29:10,596 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:29:14,540 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:29:14,541 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:29:20,349 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:29:20,349 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:29:24,542 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:29:24,542 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:29:30,598 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:29:30,599 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:29:34,543 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:29:34,543 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:29:37,764 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:29:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767007777448 HTTP/1.1" 200 - +2025-12-29 19:29:40,650 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:29:40,650 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:29:44,544 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:29:44,544 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:29:50,355 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:29:50,356 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:29:54,547 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:29:54,548 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:30:00,355 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:30:00,355 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:30:04,546 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:30:04,547 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:30:10,357 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:30:10,357 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:30:14,553 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:30:14,553 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:30:20,358 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:30:20,359 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:30:24,549 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:30:24,549 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:30:30,359 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:30:30,360 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:30:34,551 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:30:34,551 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:30:37,453 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:30:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767007837441 HTTP/1.1" 200 - +2025-12-29 19:30:40,609 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:30:40,609 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:30:44,553 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:30:44,553 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:30:50,362 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:30:50,362 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:30:54,574 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:30:54,575 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:31:00,645 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:31:00,645 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:31:04,572 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:31:04,572 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:31:10,381 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:31:10,382 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:31:14,574 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:31:14,575 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:31:20,383 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:31:20,384 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:31:24,575 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:31:24,575 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:31:30,383 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:31:30,383 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:31:34,576 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:31:34,577 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:31:37,775 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:31:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767007897449 HTTP/1.1" 200 - +2025-12-29 19:31:40,393 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:31:40,394 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:31:44,580 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:31:44,580 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:31:50,379 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:31:50,379 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:31:54,563 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:31:54,564 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:32:00,381 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:32:00,381 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:32:04,566 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:32:04,567 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:32:10,384 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:32:10,384 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:32:14,566 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:32:14,566 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:32:20,384 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:32:20,384 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:32:24,570 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:32:24,570 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:32:30,385 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:32:30,385 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:32:34,569 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:32:34,569 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:32:37,462 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:32:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767007957451 HTTP/1.1" 200 - +2025-12-29 19:32:40,386 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:32:40,386 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:32:44,574 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:32:44,575 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:32:50,388 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:32:50,389 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:32:54,573 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:32:54,573 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:33:00,397 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:33:00,398 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:33:04,823 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:33:04,823 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:33:10,640 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:33:10,641 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:33:14,577 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:33:14,577 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:33:20,392 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:33:20,392 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:33:24,577 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:33:24,578 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:33:30,393 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:33:30,394 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:33:34,579 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:33:34,579 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:33:37,759 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:33:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767008017445 HTTP/1.1" 200 - +2025-12-29 19:33:40,395 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:33:40,395 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:33:44,580 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:33:44,581 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:33:50,397 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:33:50,398 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:33:54,580 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:33:54,580 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:34:00,399 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:34:00,400 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:34:04,583 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:34:04,584 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:34:10,400 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:34:10,401 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:34:14,584 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:34:14,586 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:34:20,401 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:34:20,401 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:34:24,585 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:34:24,585 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:34:30,404 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:34:30,404 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:34:34,586 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:34:34,587 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:34:37,455 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:34:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767008077446 HTTP/1.1" 200 - +2025-12-29 19:34:40,404 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:34:40,404 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:34:44,588 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:34:44,589 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:34:50,405 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:34:50,405 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:34:54,590 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:34:54,590 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:35:00,408 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:35:00,409 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:35:04,593 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:35:04,593 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:35:10,408 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:35:10,408 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:35:14,592 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:35:14,592 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:35:20,411 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:35:20,411 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:35:24,594 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:35:24,594 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:35:30,413 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:35:30,414 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:35:34,595 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:35:34,596 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:35:37,756 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:35:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767008137446 HTTP/1.1" 200 - +2025-12-29 19:35:40,413 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:35:40,413 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:35:44,596 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:35:44,597 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:35:50,415 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:35:50,416 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:35:54,598 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:35:54,598 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:36:00,416 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:36:00,416 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:36:04,600 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:36:04,600 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:36:10,423 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:36:10,424 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:36:14,610 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:36:14,611 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:36:20,424 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:36:20,424 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:36:24,603 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:36:24,603 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:36:30,426 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:36:30,426 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:36:34,603 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:36:34,603 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:36:37,451 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:36:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767008197443 HTTP/1.1" 200 - +2025-12-29 19:36:40,427 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:36:40,427 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:36:44,605 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:36:44,605 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:36:50,428 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:36:50,428 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:36:54,605 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:36:54,605 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:37:00,430 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:37:00,431 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:37:04,607 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:37:04,608 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:37:10,432 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:37:10,433 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:37:14,610 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:37:14,611 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:37:20,433 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:37:20,433 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:37:24,880 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:37:24,881 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:37:30,434 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:37:30,435 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:37:34,612 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:37:34,612 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:37:37,762 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:37:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767008257445 HTTP/1.1" 200 - +2025-12-29 19:37:40,436 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:37:40,436 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:37:44,613 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:37:44,614 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:37:50,439 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:37:50,439 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:37:54,616 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:37:54,616 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:38:00,751 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:38:00,751 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:38:04,617 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:38:04,617 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:38:10,441 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:38:10,442 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:38:14,621 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:38:14,621 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:38:20,441 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:38:20,441 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:38:24,620 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:38:24,620 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:38:30,443 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:38:30,443 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:38:34,620 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:38:34,620 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:38:37,457 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:38:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767008317449 HTTP/1.1" 200 - +2025-12-29 19:38:40,446 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:38:40,446 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:38:44,623 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:38:44,623 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:38:50,446 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:38:50,446 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:38:54,623 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:38:54,623 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:39:00,447 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:39:00,447 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:39:04,625 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:39:04,625 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:39:10,448 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:39:10,448 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:39:14,631 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:39:14,631 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:39:20,450 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:39:20,450 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:39:24,631 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:39:24,631 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:39:30,451 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:39:30,451 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:39:34,630 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:39:34,631 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:39:37,761 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:39:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767008377442 HTTP/1.1" 200 - +2025-12-29 19:39:40,453 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:39:40,453 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:39:44,632 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:39:44,633 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:39:50,455 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:39:50,456 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:39:54,639 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:39:54,639 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:40:00,460 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:40:00,460 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:40:04,635 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:40:04,635 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:40:10,460 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:40:10,460 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:40:14,635 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:40:14,636 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:40:20,690 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:40:20,690 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:40:24,637 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:40:24,637 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:40:30,461 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:40:30,462 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:40:34,639 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:40:34,640 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:40:37,461 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:40:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767008437453 HTTP/1.1" 200 - +2025-12-29 19:40:40,463 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:40:40,463 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:40:44,642 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:40:44,642 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:40:50,464 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:40:50,464 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:40:54,641 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:40:54,641 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:41:00,467 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:41:00,467 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:41:04,651 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:41:04,652 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:41:10,467 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:41:10,467 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:41:14,649 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:41:14,649 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:41:20,467 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:41:20,467 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:41:24,650 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:41:24,650 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:41:30,469 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:41:30,469 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:41:34,652 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:41:34,653 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:41:37,763 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:41:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767008497447 HTTP/1.1" 200 - +2025-12-29 19:41:40,473 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:41:40,473 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:41:44,655 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:41:44,655 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:41:50,473 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:41:50,474 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:41:54,656 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:41:54,656 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:42:00,477 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:42:00,477 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:42:04,658 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:42:04,658 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:42:10,478 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:42:10,478 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:42:14,659 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:42:14,659 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:42:20,706 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:42:20,707 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:42:24,659 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:42:24,659 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:42:30,480 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:42:30,480 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:42:34,661 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:42:34,662 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:42:37,465 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:42:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767008557457 HTTP/1.1" 200 - +2025-12-29 19:42:40,490 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:42:40,491 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:42:44,664 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:42:44,664 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:42:50,499 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:42:50,499 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:42:54,681 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:42:54,681 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:43:00,501 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:43:00,502 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:43:04,682 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:43:04,682 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:43:10,503 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:43:10,503 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:43:14,682 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:43:14,683 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:43:20,805 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:43:20,806 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:43:24,684 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:43:24,685 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:43:30,506 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:43:30,507 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:43:34,684 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:43:34,685 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:43:37,768 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:43:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767008617451 HTTP/1.1" 200 - +2025-12-29 19:43:40,492 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:43:40,492 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:43:44,672 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:43:44,672 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:43:50,495 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:43:50,496 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:43:54,674 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:43:54,674 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:44:00,495 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:44:00,496 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:44:05,049 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:44:05,049 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:44:10,496 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:44:10,497 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:44:14,677 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:44:14,677 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:44:20,498 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:44:20,499 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:44:24,679 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:44:24,679 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:44:30,501 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:44:30,501 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:44:34,679 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:44:34,679 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:44:37,452 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:44:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767008677443 HTTP/1.1" 200 - +2025-12-29 19:44:40,502 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:44:40,502 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:44:44,681 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:44:44,682 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:44:50,501 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:44:50,502 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:44:54,683 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:44:54,684 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:45:00,504 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:45:00,504 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:45:04,685 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:45:04,685 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:45:10,505 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:45:10,505 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:45:14,699 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:45:14,700 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:45:20,511 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:45:20,511 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:45:24,688 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:45:24,688 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:45:30,508 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:45:30,509 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:45:34,689 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:45:34,689 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:45:37,755 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:45:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767008737441 HTTP/1.1" 200 - +2025-12-29 19:45:40,510 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:45:40,511 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:45:44,690 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:45:44,690 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:45:50,511 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:45:50,511 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:45:54,691 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:45:54,691 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:46:00,515 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:46:00,515 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:46:04,693 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:46:04,694 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:46:10,515 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:46:10,515 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:46:14,696 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:46:14,697 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:46:20,515 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:46:20,516 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:46:24,946 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:46:24,947 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:46:30,517 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:46:30,518 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:46:34,703 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:46:34,703 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:46:37,464 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:46:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767008797456 HTTP/1.1" 200 - +2025-12-29 19:46:40,520 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:46:40,520 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:46:44,700 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:46:44,700 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:46:50,520 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:46:50,520 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:46:54,701 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:46:54,702 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:47:00,522 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:47:00,522 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:47:04,703 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:47:04,703 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:47:10,524 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:47:10,525 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:47:14,706 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:47:14,706 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:47:20,525 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:47:20,525 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:47:24,706 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:47:24,706 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:47:30,528 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:47:30,528 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:47:34,708 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:47:34,708 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:47:37,756 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:47:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767008857443 HTTP/1.1" 200 - +2025-12-29 19:47:40,529 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:47:40,530 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:47:44,709 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:47:44,709 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:47:50,530 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:47:50,530 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:47:54,710 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:47:54,711 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:48:00,532 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:48:00,532 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:48:04,712 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:48:04,713 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:48:10,534 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:48:10,534 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:48:14,976 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:48:14,976 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:48:20,539 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:48:20,540 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:48:24,971 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:48:24,971 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:48:30,536 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:48:30,536 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:48:34,717 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:48:34,718 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:48:37,451 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:48:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767008917443 HTTP/1.1" 200 - +2025-12-29 19:48:40,782 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:48:40,782 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:48:44,718 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:48:44,718 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:48:50,839 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:48:50,839 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:48:54,736 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:48:54,736 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:49:00,559 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:49:00,559 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:49:04,738 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:49:04,739 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:49:10,881 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:49:10,881 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:49:14,740 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:49:14,741 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:49:21,399 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:49:21,399 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:49:24,742 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:49:24,742 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:49:30,563 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:49:30,564 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:49:34,742 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:49:34,742 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:49:37,760 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:49:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767008977448 HTTP/1.1" 200 - +2025-12-29 19:49:40,565 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:49:40,566 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:49:44,744 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:49:44,744 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:49:50,550 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:49:50,551 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:49:54,729 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:49:54,729 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:50:00,551 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:50:00,551 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:50:04,731 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:50:04,732 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:50:10,552 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:50:10,553 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:50:15,100 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:50:15,100 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:50:20,553 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:50:20,553 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:50:24,733 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:50:24,737 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:50:30,556 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:50:30,556 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:50:35,004 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:50:35,005 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:50:37,460 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:50:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009037452 HTTP/1.1" 200 - +2025-12-29 19:50:40,808 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:50:40,808 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:50:44,736 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:50:44,736 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:50:50,557 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:50:50,558 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:50:54,741 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:50:54,741 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:51:00,560 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:51:00,560 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:51:04,740 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:51:04,741 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:51:10,563 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:51:10,564 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:51:14,990 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:51:14,990 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:51:20,563 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:51:20,563 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:51:24,742 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:51:24,743 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:51:30,564 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:51:30,564 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:51:34,744 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:51:34,744 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:51:37,762 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:51:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009097451 HTTP/1.1" 200 - +2025-12-29 19:51:40,564 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:51:40,564 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:51:44,749 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:51:44,749 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:51:50,565 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:51:50,565 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:51:54,750 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:51:54,751 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:52:00,568 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:52:00,568 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:52:04,752 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:52:04,753 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:52:10,568 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:52:10,568 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:52:14,756 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:52:14,756 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:52:20,572 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:52:20,586 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:52:24,758 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:52:24,758 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:52:30,571 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:52:30,571 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:52:34,758 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:52:34,758 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:52:37,463 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:52:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009157455 HTTP/1.1" 200 - +2025-12-29 19:52:40,572 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:52:40,572 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:52:44,759 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:52:44,759 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:52:50,572 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:52:50,572 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:52:54,760 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:52:54,760 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:53:00,574 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:53:00,574 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:53:04,762 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:53:04,763 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:53:10,577 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:53:10,577 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:53:14,762 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:53:14,763 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:53:14,990 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:53:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009194649 HTTP/1.1" 200 - +2025-12-29 19:53:18,465 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:53:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009198456 HTTP/1.1" 200 - +2025-12-29 19:53:20,576 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:53:20,576 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:53:23,771 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:53:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009203454 HTTP/1.1" 200 - +2025-12-29 19:53:24,764 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:53:24,764 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:53:28,451 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:53:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009208443 HTTP/1.1" 200 - +2025-12-29 19:53:30,579 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:53:30,579 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:53:33,762 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:53:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009213450 HTTP/1.1" 200 - +2025-12-29 19:53:35,023 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:53:35,023 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:53:38,476 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:53:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009218451 HTTP/1.1" 200 - +2025-12-29 19:53:40,927 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:53:40,927 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:53:43,780 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:53:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009223452 HTTP/1.1" 200 - +2025-12-29 19:53:44,769 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:53:44,769 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:53:48,452 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:53:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009228444 HTTP/1.1" 200 - +2025-12-29 19:53:50,581 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:53:50,582 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:53:53,758 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:53:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009233442 HTTP/1.1" 200 - +2025-12-29 19:53:54,769 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:53:54,769 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:53:58,463 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:53:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009238454 HTTP/1.1" 200 - +2025-12-29 19:54:00,584 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:54:00,584 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:54:03,759 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:54:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009243441 HTTP/1.1" 200 - +2025-12-29 19:54:04,771 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:54:04,771 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:54:08,453 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:54:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009248446 HTTP/1.1" 200 - +2025-12-29 19:54:10,587 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:54:10,587 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:54:13,771 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:54:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009253453 HTTP/1.1" 200 - +2025-12-29 19:54:14,773 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:54:14,773 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:54:18,460 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:54:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009258448 HTTP/1.1" 200 - +2025-12-29 19:54:20,861 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:54:20,861 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:54:23,763 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:54:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009263449 HTTP/1.1" 200 - +2025-12-29 19:54:24,774 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:54:24,775 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:54:28,462 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:54:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009268454 HTTP/1.1" 200 - +2025-12-29 19:54:30,588 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:54:30,588 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:54:34,777 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:54:34,777 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:54:37,817 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:54:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009277455 HTTP/1.1" 200 - +2025-12-29 19:54:41,634 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:54:41,635 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:54:44,778 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:54:44,778 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:54:50,593 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:54:50,593 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:54:55,029 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:54:55,029 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:55:00,594 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:55:00,594 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:55:04,782 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:55:04,782 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:55:10,595 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:55:10,595 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:55:14,786 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:55:14,786 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:55:20,596 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:55:20,596 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:55:24,785 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:55:24,785 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:55:30,600 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:55:30,600 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:55:35,038 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:55:35,038 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:55:37,463 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:55:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009337451 HTTP/1.1" 200 - +2025-12-29 19:55:40,925 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:55:40,926 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:55:44,789 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:55:44,789 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:55:50,600 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:55:50,600 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:55:54,790 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:55:54,790 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:56:00,603 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:56:00,603 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:56:04,791 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:56:04,791 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:56:10,604 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:56:10,605 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:56:14,792 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:56:14,793 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:56:20,607 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:56:20,607 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:56:24,794 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:56:24,795 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:56:30,607 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:56:30,607 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:56:34,796 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:56:34,796 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:56:37,761 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:56:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009397451 HTTP/1.1" 200 - +2025-12-29 19:56:40,609 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:56:40,610 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:56:44,798 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:56:44,798 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:56:50,611 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:56:50,612 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:56:54,799 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:56:54,800 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:57:00,613 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:57:00,613 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:57:04,801 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:57:04,801 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:57:10,614 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:57:10,614 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:57:14,808 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:57:14,808 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:57:20,613 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:57:20,614 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:57:24,803 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:57:24,803 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:57:30,626 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:57:30,626 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:57:34,805 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:57:34,805 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:57:37,454 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:57:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009457444 HTTP/1.1" 200 - +2025-12-29 19:57:39,876 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:57:39] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009459543 HTTP/1.1" 200 - +2025-12-29 19:57:40,619 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:57:40,619 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:57:43,463 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:57:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009463452 HTTP/1.1" 200 - +2025-12-29 19:57:44,806 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:57:44,806 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:57:48,755 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:57:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009468443 HTTP/1.1" 200 - +2025-12-29 19:57:50,620 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:57:50,621 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:57:53,451 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:57:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009473442 HTTP/1.1" 200 - +2025-12-29 19:57:54,808 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:57:54,808 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:57:58,768 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:57:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009478453 HTTP/1.1" 200 - +2025-12-29 19:58:00,624 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:58:00,624 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:58:03,452 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:58:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009483443 HTTP/1.1" 200 - +2025-12-29 19:58:05,154 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:58:05,154 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:58:08,765 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:58:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009488453 HTTP/1.1" 200 - +2025-12-29 19:58:10,625 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:58:10,626 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:58:13,459 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:58:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009493450 HTTP/1.1" 200 - +2025-12-29 19:58:14,810 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:58:14,810 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:58:18,760 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:58:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009498443 HTTP/1.1" 200 - +2025-12-29 19:58:20,637 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:58:20,637 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:58:23,455 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:58:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009503442 HTTP/1.1" 200 - +2025-12-29 19:58:24,830 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:58:24,830 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:58:28,770 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:58:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009508455 HTTP/1.1" 200 - +2025-12-29 19:58:30,977 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:58:30,977 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:58:33,457 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:58:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009513449 HTTP/1.1" 200 - +2025-12-29 19:58:34,813 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:58:34,813 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:58:38,610 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:58:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009518285 HTTP/1.1" 200 - +2025-12-29 19:58:40,630 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:58:40,630 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:58:43,458 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:58:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009523449 HTTP/1.1" 200 - +2025-12-29 19:58:44,816 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:58:44,816 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:58:48,766 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:58:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009528450 HTTP/1.1" 200 - +2025-12-29 19:58:50,630 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:58:50,630 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:58:53,462 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:58:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009533454 HTTP/1.1" 200 - +2025-12-29 19:58:54,816 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:58:54,817 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:58:58,758 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:58:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009538443 HTTP/1.1" 200 - +2025-12-29 19:59:00,632 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:59:00,633 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:59:03,451 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:59:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009543442 HTTP/1.1" 200 - +2025-12-29 19:59:05,093 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:59:05,093 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:59:08,757 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:59:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009548442 HTTP/1.1" 200 - +2025-12-29 19:59:10,634 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:59:10,634 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:59:13,457 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:59:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009553448 HTTP/1.1" 200 - +2025-12-29 19:59:14,820 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:59:14,820 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:59:18,757 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:59:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009558443 HTTP/1.1" 200 - +2025-12-29 19:59:20,636 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:59:20,637 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:59:23,461 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:59:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009563453 HTTP/1.1" 200 - +2025-12-29 19:59:24,821 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:59:24,821 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:59:28,762 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:59:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009568449 HTTP/1.1" 200 - +2025-12-29 19:59:30,644 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:59:30,644 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:59:33,461 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:59:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009573453 HTTP/1.1" 200 - +2025-12-29 19:59:35,105 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:59:35,105 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:59:38,781 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:59:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009578446 HTTP/1.1" 200 - +2025-12-29 19:59:40,643 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:59:40,643 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:59:44,825 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:59:44,826 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:59:50,309 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:59:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009590280 HTTP/1.1" 200 - +2025-12-29 19:59:50,648 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:59:50,649 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 19:59:53,762 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:59:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009593448 HTTP/1.1" 200 - +2025-12-29 19:59:54,827 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 19:59:54,827 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 19:59:58,460 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 19:59:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009598447 HTTP/1.1" 200 - +2025-12-29 20:00:00,652 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:00:00,652 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:00:03,760 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 20:00:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009603448 HTTP/1.1" 200 - +2025-12-29 20:00:04,828 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:00:04,829 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:00:08,452 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 20:00:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009608442 HTTP/1.1" 200 - +2025-12-29 20:00:10,646 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:00:10,647 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:00:13,770 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 20:00:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009613451 HTTP/1.1" 200 - +2025-12-29 20:00:14,829 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:00:14,830 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:00:18,459 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 20:00:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009618449 HTTP/1.1" 200 - +2025-12-29 20:00:20,652 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:00:20,653 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:00:23,756 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 20:00:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009623442 HTTP/1.1" 200 - +2025-12-29 20:00:24,832 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:00:24,833 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:00:28,448 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 20:00:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009628441 HTTP/1.1" 200 - +2025-12-29 20:00:30,649 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:00:30,649 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:00:33,775 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 20:00:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009633457 HTTP/1.1" 200 - +2025-12-29 20:00:34,833 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:00:34,834 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:00:38,448 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 20:00:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009638440 HTTP/1.1" 200 - +2025-12-29 20:00:41,103 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:00:41,104 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:00:43,901 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 20:00:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009643447 HTTP/1.1" 200 - +2025-12-29 20:00:44,836 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:00:44,836 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:00:48,462 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 20:00:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009648453 HTTP/1.1" 200 - +2025-12-29 20:00:50,658 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:00:50,659 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:00:53,651 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 20:00:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009653299 HTTP/1.1" 200 - +2025-12-29 20:00:54,836 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:00:54,836 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:00:58,455 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 20:00:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009658447 HTTP/1.1" 200 - +2025-12-29 20:01:00,917 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:01:00,917 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:01:03,875 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 20:01:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009663442 HTTP/1.1" 200 - +2025-12-29 20:01:04,837 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:01:04,837 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:01:08,552 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 20:01:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009668449 HTTP/1.1" 200 - +2025-12-29 20:01:10,904 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:01:10,905 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:01:13,774 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 20:01:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009673456 HTTP/1.1" 200 - +2025-12-29 20:01:14,840 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:01:14,841 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:01:18,461 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 20:01:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009678453 HTTP/1.1" 200 - +2025-12-29 20:01:21,565 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT +2025-12-29 20:01:21,566 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:01:23,913 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 20:01:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009683590 HTTP/1.1" 200 - +2025-12-29 20:01:25,469 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:01:25,469 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:01:28,761 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 20:01:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009688447 HTTP/1.1" 200 - +2025-12-29 20:01:31,280 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:01:31,280 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:01:33,463 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 20:01:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009693452 HTTP/1.1" 200 - +2025-12-29 20:01:34,833 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:01:34,834 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:01:38,775 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 20:01:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009698452 HTTP/1.1" 200 - +2025-12-29 20:01:40,649 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:01:40,649 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:01:43,459 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 20:01:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009703450 HTTP/1.1" 200 - +2025-12-29 20:01:44,837 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:01:44,837 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:01:48,763 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 20:01:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009708449 HTTP/1.1" 200 - +2025-12-29 20:01:50,898 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:01:50,899 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:01:54,835 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:01:54,836 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:02:00,653 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:02:00,653 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:02:04,838 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:02:04,838 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:02:10,657 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:02:10,658 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:02:14,840 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:02:14,841 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:02:20,660 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:02:20,660 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:02:24,842 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:02:24,842 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:02:30,659 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:02:30,659 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:02:34,841 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:02:34,842 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:02:37,460 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 20:02:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009757450 HTTP/1.1" 200 - +2025-12-29 20:02:40,661 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:02:40,661 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:02:44,845 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:02:44,846 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:02:50,660 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:02:50,660 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:02:54,846 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:02:54,846 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:03:00,664 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:03:00,664 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:03:04,848 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:03:04,848 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:03:10,664 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:03:10,664 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:03:14,848 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:03:14,848 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:03:20,670 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:03:20,670 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:03:24,849 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:03:24,849 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:03:30,668 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:03:30,668 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:03:34,850 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:03:34,850 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:03:37,764 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 20:03:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009817451 HTTP/1.1" 200 - +2025-12-29 20:03:41,295 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:03:41,295 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:03:44,892 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:03:44,894 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:03:51,326 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:03:51,326 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:03:54,882 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:03:54,882 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:04:01,324 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:04:01,324 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:04:04,885 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:04:04,886 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:04:11,327 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:04:11,328 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:04:14,857 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:04:14,857 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:04:21,544 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:04:21,544 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:04:24,855 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:04:24,855 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:04:31,304 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:04:31,304 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:04:34,859 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:04:34,859 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:04:38,836 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 20:04:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009878828 HTTP/1.1" 200 - +2025-12-29 20:04:41,303 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:04:41,304 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:04:44,860 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:04:44,860 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:04:51,308 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:04:51,309 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:04:54,862 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:04:54,863 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:05:01,317 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:05:01,318 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:05:04,863 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:05:04,864 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:05:11,308 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:05:11,308 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:05:14,866 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:05:14,866 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:05:21,307 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:05:21,307 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:05:24,866 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:05:24,867 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:05:31,314 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:05:31,314 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:05:34,868 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:05:34,868 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:05:39,131 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 20:05:39] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009938817 HTTP/1.1" 200 - +2025-12-29 20:05:41,321 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:05:41,321 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:05:44,882 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:05:44,882 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:05:51,329 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:05:51,329 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:05:54,880 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:05:54,880 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:06:01,358 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:06:01,358 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:06:04,872 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:06:04,872 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:06:11,318 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:06:11,319 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:06:14,873 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:06:14,874 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:06:21,319 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:06:21,320 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:06:22,819 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 20:06:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009982786 HTTP/1.1" 200 - +2025-12-29 20:06:24,875 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:06:24,875 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:06:25,145 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 20:06:25] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009984819 HTTP/1.1" 200 - +2025-12-29 20:06:29,989 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 20:06:29] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009989825 HTTP/1.1" 200 - +2025-12-29 20:06:31,324 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:06:31,325 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:06:34,877 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:06:34,878 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:06:35,139 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 20:06:35] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009994821 HTTP/1.1" 200 - +2025-12-29 20:06:39,834 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 20:06:39] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767009999824 HTTP/1.1" 200 - +2025-12-29 20:06:41,321 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:06:41,322 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:06:44,879 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:06:44,879 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:06:45,140 - werkzeug - INFO - 127.0.0.1 - - [29/Dec/2025 20:06:45] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767010004829 HTTP/1.1" 200 - +2025-12-29 20:06:51,347 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:06:51,347 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:06:54,882 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:06:54,883 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:07:01,328 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:07:01,328 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:07:04,883 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:07:04,884 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:07:11,327 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:07:11,327 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:07:14,884 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:07:14,885 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:07:21,328 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:07:21,328 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:07:24,885 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:07:24,885 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:07:31,594 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:07:31,595 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-29 20:07:34,887 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:07:34,887 - app.services.trading_executor - WARNING - Strategy 1 failed to fetch current price +2025-12-29 20:07:41,334 - app.services.trading_executor - WARNING - Failed to fetch price: binance GET https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-29 20:07:41,334 - app.services.trading_executor - WARNING - Strategy 2 failed to fetch current price +2025-12-30 16:47:28,711 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-30 16:47:28,729 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-30 16:47:29,191 - app.services.strategy - INFO - Found 2 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}] +2025-12-30 16:47:29,191 - app - INFO - Restoring 2 running strategies... +2025-12-30 16:47:29,192 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-30 16:47:29,192 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-30 16:47:29,192 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-30 16:47:29,192 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-30 16:47:29,192 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-30 16:47:29,192 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-30 16:47:29,192 - app - INFO - Strategy restore completed: 2/2 restored +2025-12-30 16:47:29,195 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-30 16:47:29,204 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-30 16:47:29,215 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-30 16:47:29,215 - werkzeug - INFO - Press CTRL+C to quit +2025-12-30 16:47:30,068 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-30 16:47:30,293 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-30 16:47:30,293 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-30 16:47:30,293 - app.services.trading_executor - ERROR - Strategy 1 failed to fetch K-lines +2025-12-30 16:47:30,294 - app.services.trading_executor - INFO - Strategy 1 loop exited +2025-12-30 16:47:30,517 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-30 16:47:30,743 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-30 16:47:30,744 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-30 16:47:30,744 - app.services.trading_executor - ERROR - Strategy 2 failed to fetch K-lines +2025-12-30 16:47:30,744 - app.services.trading_executor - INFO - Strategy 2 loop exited +2025-12-30 16:48:15,705 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-30 16:48:15,710 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-30 16:48:16,009 - app.services.strategy - INFO - Found 2 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}] +2025-12-30 16:48:16,010 - app - INFO - Restoring 2 running strategies... +2025-12-30 16:48:16,010 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-30 16:48:16,010 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-30 16:48:16,011 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-30 16:48:16,011 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-30 16:48:16,011 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-30 16:48:16,011 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-30 16:48:16,012 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-30 16:48:16,012 - app - INFO - Strategy restore completed: 2/2 restored +2025-12-30 16:48:16,013 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-30 16:48:16,038 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-30 16:48:16,038 - werkzeug - INFO - Press CTRL+C to quit +2025-12-30 16:48:17,108 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-30 16:48:17,137 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-30 16:48:17,333 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-30 16:48:17,333 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-30 16:48:17,333 - app.services.trading_executor - ERROR - Strategy 2 failed to fetch K-lines +2025-12-30 16:48:17,333 - app.services.trading_executor - INFO - Strategy 2 loop exited +2025-12-30 16:48:17,624 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-30 16:48:17,624 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-30 16:48:17,625 - app.services.trading_executor - ERROR - Strategy 1 failed to fetch K-lines +2025-12-30 16:48:17,626 - app.services.trading_executor - INFO - Strategy 1 loop exited +2025-12-30 16:49:19,829 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:49:19] "GET /api/dashboard/summary?_t=1767084559799 HTTP/1.1" 200 - +2025-12-30 16:49:19,837 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:49:19] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1767084559799 HTTP/1.1" 200 - +2025-12-30 16:49:19,845 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:49:19] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1767084559799 HTTP/1.1" 200 - +2025-12-30 16:49:23,687 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:49:23] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-30 16:49:23,692 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:49:23] "GET /api/market/types?_t=1767084563673 HTTP/1.1" 200 - +2025-12-30 16:49:23,811 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:49:23] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-30 16:49:23,995 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-30 16:49:24,527 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +}; trying fallback +2025-12-30 16:49:24,742 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-30 16:49:24,742 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-30 16:49:24,742 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:49:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:51:26,775 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-30 16:51:26,780 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-30 16:51:27,079 - app.services.strategy - INFO - Found 2 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}] +2025-12-30 16:51:27,079 - app - INFO - Restoring 2 running strategies... +2025-12-30 16:51:27,079 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-30 16:51:27,079 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-30 16:51:27,079 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-30 16:51:27,080 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-30 16:51:27,080 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-30 16:51:27,080 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-30 16:51:27,080 - app - INFO - Strategy restore completed: 2/2 restored +2025-12-30 16:51:27,080 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-30 16:51:27,084 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-30 16:51:27,098 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-30 16:51:27,098 - werkzeug - INFO - Press CTRL+C to quit +2025-12-30 16:51:30,268 - app.data_sources.base - WARNING - Warning: BTC/USDT data is delayed (450s) +2025-12-30 16:51:30,274 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-30 16:51:30,280 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2025-12-30 16:51:30,895 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-30 16:51:30,903 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2025-12-30 16:51:35,196 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:51:35] "GET /api/dashboard/summary?_t=1767084694868 HTTP/1.1" 200 - +2025-12-30 16:51:35,201 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:51:35] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1767084694868 HTTP/1.1" 200 - +2025-12-30 16:51:35,207 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:51:35] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1767084694868 HTTP/1.1" 200 - +2025-12-30 16:51:38,461 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:51:38] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-30 16:51:38,777 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:51:38] "GET /api/market/config?_t=1767084698444 HTTP/1.1" 200 - +2025-12-30 16:51:38,807 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: coinbase does not have market symbol BNB/USDT; trying fallback +2025-12-30 16:51:38,808 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: coinbase does not have market symbol BNB/USDT +2025-12-30 16:51:38,809 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BNB/USDT +2025-12-30 16:51:38,959 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-30 16:51:38,960 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-30 16:51:38,960 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-30 16:51:38,960 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-30 16:51:38,960 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-30 16:51:49,770 - urllib3.connectionpool - WARNING - Retrying (Retry(total=2, connect=3, read=3, redirect=None, status=None)) after connection broken by 'SSLError(SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1020)'))': /api/qt/stock/kline/get?secid=0.000858&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2025-12-30 16:51:51,535 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:51:51] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 16:51:51,539 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:51:51] "GET /api/market/types?_t=1767084698783 HTTP/1.1" 200 - +2025-12-30 16:51:58,551 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:51:58] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-30 16:51:58,555 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:51:58] "GET /api/market/config?_t=1767084718228 HTTP/1.1" 200 - +2025-12-30 16:51:58,796 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: coinbase does not have market symbol BNB/USDT; trying fallback +2025-12-30 16:51:58,796 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: coinbase does not have market symbol BNB/USDT +2025-12-30 16:51:58,796 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BNB/USDT +2025-12-30 16:51:58,797 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:51:58] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 16:51:58,873 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:51:58] "GET /api/market/types?_t=1767084718565 HTTP/1.1" 200 - +2025-12-30 16:52:28,225 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: coinbase does not have market symbol BNB/USDT; trying fallback +2025-12-30 16:52:28,226 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: coinbase does not have market symbol BNB/USDT +2025-12-30 16:52:28,226 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BNB/USDT +2025-12-30 16:52:28,226 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:52:28] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 16:52:30,883 - app.data_sources.base - WARNING - Warning: BTC/USDT data is delayed (511s) +2025-12-30 16:52:31,872 - app.data_sources.base - WARNING - Warning: ETH/USDT data is delayed (152s) +2025-12-30 16:52:58,531 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: coinbase does not have market symbol BNB/USDT; trying fallback +2025-12-30 16:52:58,531 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: coinbase does not have market symbol BNB/USDT +2025-12-30 16:52:58,531 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BNB/USDT +2025-12-30 16:52:58,532 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:52:58] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 16:53:28,227 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: coinbase does not have market symbol BNB/USDT; trying fallback +2025-12-30 16:53:28,228 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: coinbase does not have market symbol BNB/USDT +2025-12-30 16:53:28,228 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BNB/USDT +2025-12-30 16:53:28,228 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:53:28] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 16:53:31,512 - app.data_sources.base - WARNING - Warning: ETH/USDT data is delayed (212s) +2025-12-30 16:53:50,201 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-30 16:53:50,207 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-30 16:53:50,589 - app.services.strategy - INFO - Found 2 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}] +2025-12-30 16:53:50,590 - app - INFO - Restoring 2 running strategies... +2025-12-30 16:53:50,590 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-30 16:53:50,590 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-30 16:53:50,590 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-30 16:53:50,591 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-30 16:53:50,591 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-30 16:53:50,591 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-30 16:53:50,591 - app - INFO - Strategy restore completed: 2/2 restored +2025-12-30 16:53:50,592 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-30 16:53:50,595 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-30 16:53:50,616 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-30 16:53:50,616 - werkzeug - INFO - Press CTRL+C to quit +2025-12-30 16:53:53,898 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:53:53] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-30 16:53:53,900 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:53:53] "GET /api/market/config?_t=1767084833579 HTTP/1.1" 200 - +2025-12-30 16:53:54,247 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-30 16:53:54,247 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-30 16:53:54,247 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-30 16:53:54,248 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-30 16:53:54,248 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-30 16:53:54,269 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-30 16:53:54,285 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2025-12-30 16:53:55,174 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-30 16:53:55,188 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2025-12-30 16:53:59,670 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:53:59] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 16:53:59,674 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:53:59] "GET /api/market/types?_t=1767084833916 HTTP/1.1" 200 - +2025-12-30 16:54:09,435 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:09] "GET /api/market/types?_t=1767084849427 HTTP/1.1" 200 - +2025-12-30 16:54:09,753 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:09] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-30 16:54:09,760 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:09] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-30 16:54:10,085 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-30 16:54:10,515 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:11,566 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:11,996 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:12,869 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:12,869 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:14,107 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:14,107 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:14,871 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:14,872 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:15,554 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:15,555 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:16,866 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:16,867 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:17,561 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:17,562 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:18,861 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:18,861 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:19,555 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:19,556 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:20,860 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:20,861 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:21,561 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:21,562 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:22,870 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:22,871 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:23,560 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:23,561 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:24,865 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:24,865 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:25,561 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:25,561 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:26,871 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:26,872 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:27,560 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:27,560 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:28,864 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:28,864 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:29,561 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:29,562 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:30,860 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:30,861 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:31,554 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:31,555 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:32,870 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:32,871 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:33,561 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:33,561 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:34,864 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:34,865 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:35,555 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:35,556 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:36,862 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:36,862 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:37,560 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:37,560 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:38,867 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:38,867 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:39,562 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:39,562 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:40,860 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:40,861 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:41,563 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:41,563 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:42,861 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:42,861 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:43,551 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:43,551 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:44,871 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:44,871 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:45,552 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:45,553 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:46,862 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:46,863 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:47,562 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:47,562 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:48,865 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:48,865 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:49,559 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:49,560 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:50,866 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:50,866 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:51,562 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:51,563 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:52,864 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:52,865 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:53,562 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:53,563 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:54,870 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:54,870 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:55,561 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:55,562 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:56,870 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:56,870 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:57,555 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:57,556 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:58,872 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:58,873 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:54:59,553 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:54:59,553 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:54:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:00,863 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:00,863 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:01,563 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:01,563 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:02,879 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:02,879 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:03,560 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:03,561 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:04,871 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:04,872 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:05,563 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:05,563 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:06,862 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:06,863 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:07,556 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:07,557 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:08,871 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:08,871 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:09,552 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:09,552 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:10,864 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:10,865 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:11,564 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:11,564 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:12,860 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:12,861 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:13,560 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:13,561 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:14,867 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:14,868 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:15,563 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:15,563 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:16,862 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:16,862 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:17,552 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:17,552 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:18,870 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:18,870 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:19,562 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:19,563 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:20,870 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:20,870 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:21,552 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:21,553 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:22,861 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:22,862 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:23,554 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:23,554 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:24,866 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:24,866 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:25,563 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:25,564 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:26,875 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:26,876 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:27,556 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:27,556 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:28,870 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:28,870 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:29,563 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:29,564 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:30,869 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:30,869 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:31,564 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:31,564 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:32,865 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:32,866 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:33,564 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:33,564 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:34,866 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:34,866 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:35,564 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:35,564 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:36,860 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:36,860 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:37,556 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:37,557 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:38,863 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:38,863 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:39,564 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:39,564 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:40,870 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:40,871 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:41,563 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:41,564 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:42,870 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:42,870 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:43,557 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:43,557 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:44,864 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:44,864 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:45,560 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:45,561 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:46,876 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:46,877 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:47,564 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:47,564 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:48,865 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:48,865 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:49,558 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:49,559 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:50,863 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:50,863 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:51,560 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:51,561 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:52,863 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:52,863 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:53,562 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:53,562 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:54,859 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:54,861 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:55,564 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:55,564 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:56,873 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:56,874 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:57,560 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:57,561 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:58,866 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:58,867 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:55:59,550 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:55:59,551 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:55:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:00,866 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:00,866 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:01,565 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:01,565 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:02,873 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:02,874 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:03,558 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:03,558 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:04,866 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:04,867 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:05,555 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:05,555 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:06,875 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:06,876 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:07,554 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:07,555 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:08,861 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:08,862 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:09,556 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:09,556 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:10,870 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:10,870 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:11,553 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:11,554 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:12,864 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:12,865 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:13,565 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:13,565 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:14,862 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:14,863 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:15,558 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:15,558 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:16,874 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:16,874 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:17,552 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:17,553 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:18,864 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:18,864 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:19,561 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:19,561 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:20,865 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:20,866 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:21,559 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:21,559 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:22,865 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:22,866 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:23,565 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:23,565 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:24,863 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:24,864 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:25,562 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:25,563 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:26,862 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:26,863 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:27,557 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:27,558 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:28,868 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:28,869 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:29,563 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:29,563 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:30,870 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:30,871 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:31,552 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:31,552 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:32,865 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:32,865 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:33,558 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:33,558 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:34,875 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:34,875 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:35,555 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:35,555 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:36,870 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:36,871 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:37,566 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:37,566 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:38,868 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:38,869 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:39,561 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:39,562 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:40,865 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:40,865 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:41,558 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:41,559 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:42,869 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:42,869 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:43,564 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:43,564 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:44,876 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:44,876 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:45,557 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:45,557 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:46,867 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:46,868 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:47,566 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:47,567 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:48,859 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:48,859 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:49,563 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:49,564 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:50,873 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:50,874 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:51,560 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:51,560 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:52,866 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:52,866 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:53,555 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:53,556 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:54,868 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:54,869 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:55,564 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:55,565 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:56,863 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:56,863 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:57,555 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:57,555 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:58,866 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:58,867 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:56:59,565 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:56:59,565 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:56:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:00,860 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:00,860 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:01,558 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:01,559 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:02,869 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:02,869 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:03,551 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:03,552 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:04,859 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:04,859 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:05,567 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:05,568 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:06,861 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:06,861 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:07,561 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:07,562 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:08,871 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:08,872 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:09,560 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:09,561 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:10,860 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:10,861 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:11,553 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:11,553 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:12,867 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:12,867 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:13,566 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:13,567 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:14,865 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:14,866 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:15,560 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:15,561 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:16,860 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:16,860 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:17,553 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:17,554 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:18,869 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:18,869 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:19,564 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:19,565 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:20,869 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:20,869 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:21,551 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:21,552 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:22,869 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:22,870 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:23,566 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:23,567 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:24,868 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:24,869 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:25,566 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:25,566 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:26,872 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:26,872 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:27,553 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:27,553 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:28,861 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:28,861 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:29,557 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:29,557 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:30,867 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:30,867 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:31,557 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:31,558 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:32,864 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:32,865 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:33,552 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:33,553 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:34,868 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:34,868 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:35,565 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:35,566 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:36,863 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:36,863 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:37,562 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:37,563 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:38,862 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:38,863 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:39,552 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:39,552 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:40,853 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:40,854 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:41,552 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:41,552 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:42,859 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:42,859 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:43,552 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:43,552 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:44,868 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:44,868 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:45,552 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:45,552 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:46,863 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:46,864 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:47,552 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:47,552 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:48,854 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:48,854 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:49,552 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:49,553 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:50,854 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:50,855 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:51,553 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:51,553 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:52,866 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:52,867 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:53,552 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:53,552 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:54,868 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:54,868 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:55,552 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:55,553 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:56,861 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:56,861 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:57,553 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:57,553 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:58,854 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:58,855 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:57:59,552 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:57:59,552 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:57:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:00,862 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:00,862 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:01,552 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:01,553 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:02,855 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:02,856 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:03,553 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:03,554 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:04,858 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:04,858 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:05,552 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:05,553 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:06,860 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:06,860 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:07,552 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:07,553 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:08,861 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:08,862 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:09,553 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:09,553 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:10,862 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:10,862 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:11,553 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:11,553 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:12,868 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:12,868 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:13,553 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:13,554 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:14,864 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:14,864 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:15,552 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:15,553 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:16,863 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:16,863 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:17,553 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:17,553 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:18,858 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:18,859 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:19,553 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:19,553 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:20,854 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:20,855 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:21,554 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:21,554 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:22,863 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:22,863 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:23,553 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:23,554 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:24,859 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:24,860 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:25,553 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:25,553 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:26,862 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:26,862 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:27,553 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:27,553 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:28,855 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:28,855 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:29,554 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:29,554 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:30,862 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:30,863 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:31,554 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:31,554 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:32,860 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:32,861 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:33,553 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:33,554 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:34,867 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:34,868 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:35,554 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:35,554 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:36,856 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:36,856 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:37,554 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:37,554 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:38,862 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:38,863 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:39,554 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:39,555 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:40,867 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:40,867 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:41,552 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:41,553 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:42,858 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:42,859 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:43,554 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:43,554 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:44,867 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:44,867 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:45,554 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:45,554 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:46,858 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:46,858 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:47,554 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:47,554 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:48,860 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:48,860 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:49,554 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:49,555 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:50,861 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:50,862 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:51,554 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:51,554 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:52,863 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:52,863 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:53,555 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:53,555 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:54,862 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:54,862 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:55,554 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:55,555 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:56,865 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:56,866 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:57,556 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:57,556 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:58,857 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:58,858 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:58:59,555 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:58:59,555 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:58:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:00,868 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:00,868 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:01,555 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:01,555 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:02,870 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:02,871 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:03,554 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:03,555 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:04,863 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:04,863 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:05,556 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:05,556 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:06,868 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:06,869 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:07,555 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:07,555 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:08,863 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:08,864 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:09,555 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:09,555 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:10,871 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:10,872 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:11,555 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:11,555 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:12,859 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:13,268 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:13,556 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:13,557 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:14,870 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:14,870 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:15,555 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:15,555 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:16,862 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:16,863 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:17,555 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:17,556 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:18,862 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:18,862 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:19,553 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:19,554 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:20,870 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:20,870 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:21,556 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:21,557 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:22,861 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:22,862 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:23,555 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:23,556 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:24,868 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:24,868 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:25,555 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:25,556 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:26,861 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:26,862 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:27,555 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:27,556 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:28,868 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:28,868 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:29,558 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:29,559 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:30,870 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:30,871 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:31,554 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:31,554 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:32,863 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:32,864 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:33,556 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:33,557 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:34,867 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:34,868 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:35,555 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:35,556 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:36,866 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:36,867 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:37,555 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:37,556 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:38,863 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:38,864 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:39,558 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:39,558 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:40,860 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:40,860 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:41,556 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:41,556 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:42,856 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:42,857 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:43,556 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:43,557 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:44,866 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:44,867 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:45,556 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:45,557 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:46,855 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:46,856 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:47,553 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:47,553 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:48,862 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:48,862 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:49,556 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:49,557 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:50,860 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:50,860 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:51,555 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:51,556 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:52,863 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:52,863 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:53,556 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:53,557 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:54,865 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:54,866 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:55,556 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:55,556 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:56,872 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:56,873 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:57,553 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:57,553 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:58,861 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:58,862 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 16:59:59,556 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 16:59:59,557 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 16:59:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:00,866 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:00,867 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:01,556 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:01,557 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:02,873 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:02,873 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:03,554 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:03,554 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:04,861 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:04,862 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:05,556 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:05,557 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:06,868 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:06,868 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:07,557 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:07,558 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:08,872 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:08,873 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:09,552 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:09,552 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:10,867 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:10,867 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:11,558 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:11,559 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:13,529 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:13,529 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:14,219 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:14,219 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:15,529 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:15,529 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:16,228 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:16,228 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:17,530 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:17,531 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:18,219 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:18,220 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:19,533 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:19,533 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:20,224 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:20,225 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:21,530 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:21,530 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:22,226 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:22,227 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:23,523 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:23,523 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:24,229 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:24,230 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:25,526 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:25,527 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:26,216 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:26,217 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:27,537 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:27,538 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:28,219 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:28,219 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:29,523 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:29,523 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:30,300 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:30,300 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:31,543 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:31,543 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:32,222 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:32,224 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:33,532 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:33,532 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:34,227 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:34,228 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:35,524 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:35,525 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:36,225 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:36,225 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:37,534 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:37,535 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:38,227 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:38,228 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:39,524 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:39,524 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:40,221 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:40,221 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:41,533 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:41,533 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:42,226 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:42,226 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:43,529 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:43,530 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:44,226 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:44,226 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:45,525 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:45,525 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:46,218 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:46,219 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:47,529 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:47,530 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:48,226 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:48,226 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:49,527 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:49,527 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:50,229 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:50,229 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:51,530 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:51,531 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:52,219 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:52,219 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:53,526 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:53,526 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:54,222 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:54,222 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:55,520 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:55,520 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:56,224 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:56,225 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:57,526 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:57,526 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:58,222 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:58,223 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:00:59,533 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:00:59,534 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:00:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:01:00,393 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:01:00,394 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:01:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:01:01,247 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:01:01,247 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:01:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:01:02,218 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:01:02,218 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:01:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:01:03,217 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:01:03,218 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:01:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:01:04,534 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:01:04,535 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:01:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:01:05,216 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:01:05,217 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:01:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:01:06,687 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:01:06,688 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:01:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:01:07,295 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:01:07,295 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:01:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:01:08,228 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:01:08,229 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:01:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:01:09,228 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:01:09,228 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:01:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:01:10,523 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:01:10,523 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:01:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:01:11,219 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:01:11,220 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:01:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:01:12,546 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:01:12,547 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:01:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:01:49,223 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:01:49,223 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:01:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:02:49,535 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:02:49,536 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:02:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:02:59,904 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:02:59,905 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:02:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:00,868 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:00,868 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:01,563 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:01,563 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:02,974 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:02,975 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:03,552 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:03,553 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:04,868 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:04,869 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:05,554 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:05,554 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:06,868 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:06,868 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:07,563 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:07,563 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:08,864 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:08,864 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:09,553 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:09,554 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:10,866 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:10,866 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:11,564 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:11,564 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:12,870 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:12,871 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:13,552 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:13,552 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:14,865 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:14,866 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:15,564 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:15,564 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:16,875 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:16,875 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:17,559 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:17,560 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:18,864 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:18,865 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:19,564 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:19,565 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:20,867 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:20,868 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:21,564 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:21,565 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:22,878 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:22,879 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:23,554 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:23,554 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:24,865 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:24,866 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:25,565 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:25,565 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:26,874 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:26,874 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:27,560 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:27,561 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:29,527 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:29,528 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:29,788 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:29,789 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:30,553 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:30,554 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:31,870 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:31,870 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:33,217 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:33,218 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:34,530 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:34,530 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:35,218 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:35,219 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:36,520 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:36,520 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:37,223 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:37,224 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:38,533 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:38,533 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:39,224 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:39,224 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:40,523 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:40,523 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:41,221 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:41,221 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:42,524 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:42,525 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:43,217 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:43,218 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:44,534 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:44,534 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:45,220 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:45,221 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:46,535 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:46,536 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:47,242 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:47,243 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:47,909 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:47,910 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:48,553 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:48,553 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:49,865 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:49,866 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:50,557 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:50,558 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:51,860 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:51,860 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:52,565 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:52,566 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:53,864 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:53,864 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:54,554 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:54,554 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:56,566 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:56,566 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:57,228 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:57,228 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:58,524 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:58,525 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:03:59,218 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:03:59,218 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:03:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:00,526 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:00,527 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:01,225 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:01,226 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:02,535 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:02,535 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:03,228 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:03,229 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:04,528 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:04,529 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:05,222 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:05,223 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:06,567 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:06,568 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:07,220 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:07,220 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:08,530 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:08,531 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:09,215 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:09,216 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:10,524 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:10,525 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:11,217 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:11,218 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:12,529 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:12,529 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:13,227 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:13,227 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:14,528 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:14,934 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:15,222 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:15,222 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:16,532 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:16,532 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:17,220 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:17,221 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:18,528 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:18,529 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:19,227 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:19,227 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:20,537 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:20,537 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:21,217 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:21,218 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:22,539 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:22,539 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:23,221 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:23,222 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:24,531 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:24,531 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:25,223 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:25,223 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:26,527 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:26,527 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:27,219 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:27,219 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:28,533 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:28,534 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:29,221 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:29,222 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:30,519 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:30,520 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:31,219 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:31,219 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:32,538 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:32,539 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:33,225 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:33,226 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:34,536 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:34,536 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:35,235 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:35,235 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:36,528 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:36,529 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:37,218 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:37,218 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:38,537 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:38,538 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:39,214 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:39,215 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:40,520 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:40,521 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:41,227 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:41,227 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:42,536 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:42,536 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:43,216 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:43,216 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:44,534 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:44,535 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:45,261 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:45,261 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:46,521 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:46,522 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:47,220 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:47,221 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:48,537 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:48,537 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:49,226 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:49,227 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:50,533 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:50,534 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:51,220 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:51,221 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:52,532 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:52,533 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:53,215 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:53,216 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:04:54,525 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:04:54,526 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:04:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:05:49,225 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:05:49,225 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:05:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:06:49,536 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:06:49,536 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:06:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:07:49,227 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:07:49,227 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:07:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:07:55,225 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2982.22, pending_signals=1 +2025-12-30 17:07:55,227 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2982.21, 'position_size': 0, 'timestamp': 1767085620}] +2025-12-30 17:07:58,008 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:07:58] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-30 17:07:58,013 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:07:58] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-30 17:07:58,016 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:07:58] "GET /api/market/types?_t=1767085677996 HTTP/1.1" 200 - +2025-12-30 17:07:58,320 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-30 17:07:58,723 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:07:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:08:01,217 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:08:01,218 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:08:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:08:02,224 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:08:02,224 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:08:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:08:03,226 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:08:03,227 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:08:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:08:04,215 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:08:04,216 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:08:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:08:04,406 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2982.22, pending_signals=2 +2025-12-30 17:08:04,407 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 2982.21, 'position_size': 0.08, 'timestamp': 1767085620}, {'type': 'close_short', 'trigger_price': 2982.21, 'position_size': 0, 'timestamp': 1767085620}] +2025-12-30 17:08:04,424 - app.services.analysis - INFO - Multi-agent coordinator initialized +2025-12-30 17:08:04,425 - app.services.analysis - INFO - Starting analysis Crypto:ETH/USDT, language=zh-CN, mode=multi-agent +2025-12-30 17:08:04,425 - app.services.analysis - INFO - Run coordinator: Crypto:ETH/USDT +2025-12-30 17:08:04,425 - app.services.agents.coordinator - INFO - Multi-agent analysis start: Crypto:ETH/USDT, model=None, language=zh-CN +2025-12-30 17:08:05,256 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:ETH/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-30 17:08:05,530 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:08:05,530 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:08:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:08:07,246 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:ETH/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-30 17:08:07,248 - app.services.agents.tools - WARNING - Finnhub news fetch failed: 'Client' object has no attribute 'crypto_news' +2025-12-30 17:08:07,249 - app.services.agents.tools - INFO - Running news search: "ETH/USDT Cryptocurrency" ETH/USDT crypto news analysis +2025-12-30 17:08:08,484 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:08:08] "GET /api/market/types?_t=1767085688476 HTTP/1.1" 200 - +2025-12-30 17:08:08,488 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:08:08] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-30 17:08:08,492 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:08:08] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-30 17:08:08,521 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-30 17:08:08,523 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:08:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:08:08,671 - app.services.search - WARNING - Google Search returned no 'items'. Full response: {"kind": "customsearch#search", "url": {"type": "application/json", "template": "https://www.googleapis.com/customsearch/v1?q={searchTerms}&num={count?}&start={startIndex?}&lr={language?}&safe={safe?}&cx={cx?}&sort={sort?}&filter={filter?}&gl={gl?}&cr={cr?}&googlehost={googleHost?}&c2coff={disableCnTwTranslation?}&hq={hq?}&hl={hl?}&siteSearch={siteSearch?}&siteSearchFilter={siteSearchFilter?}&exactTerms={exactTerms?}&excludeTerms={excludeTerms?}&linkSite={linkSite?}&orTerms={orTerms?}&dateRestrict={dateRestrict?}&lowRange={lowRange?}&highRange={highRange?}&searchType={searchType}&fileType={fileType?}&rights={rights?}&imgSize={imgSize?}&imgType={imgType?}&imgColorType={imgColorType?}&imgDominantColor={imgDominantColor?}&alt=json"}, "queries": {"request": [{"title": "Google Custom Search - \"ETH/USDT Cryptocurrency\" ETH/USDT crypto news analysis", "searchTerms": "\"ETH/USDT Cryptocurrency\" ETH/USDT crypto news analysis", "count": 10, "startIndex": 1, "inputEncoding": "utf8", "outputEncoding": "utf8", "safe": "off", "cx": "17f675b8e3b994281", "dateRestrict": "d7"}]}, "context": {"title": "Global News Search"}, "searchInformation": {"searchTime": 0.189752, "formattedSearchTime": "0.19", "totalResults": "0", "formattedTotalResults": "0"}} +2025-12-30 17:08:08,672 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2025-12-30 17:08:09,725 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:ETH/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-30 17:08:10,352 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:08:10,352 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:08:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:08:10,532 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:ETH/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-30 17:08:11,417 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:08:11,418 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:08:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:08:12,226 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:08:12,226 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:08:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:08:13,237 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:08:13,237 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:08:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:08:14,217 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:08:14,217 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:08:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:08:17,988 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2025-12-30 17:08:24,274 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:08:24] "GET /api/market/types?_t=1767085704263 HTTP/1.1" 200 - +2025-12-30 17:08:24,277 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:08:24] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-30 17:08:24,282 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:08:24] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-30 17:08:24,317 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-30 17:08:24,319 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:08:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:08:26,091 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2025-12-30 17:08:26,197 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:08:26,197 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:08:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:08:27,222 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:08:27,222 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:08:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:08:28,219 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:08:28,219 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:08:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:08:29,219 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:08:29,219 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:08:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:08:30,226 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:08:30,226 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:08:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:08:33,020 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2025-12-30 17:08:36,589 - app.services.agents.coordinator - WARNING - Record reflection failed: 'NoneType' object has no attribute 'get' +2025-12-30 17:08:36,589 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: Crypto:ETH/USDT +2025-12-30 17:08:36,589 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2025-12-30 17:08:36,589 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2025-12-30 17:08:36,596 - app.services.trading_executor - INFO - AI entry filter rejected: strategy_id=1 symbol=ETH/USDT signal=open_long ai=HOLD reason=ai_hold +2025-12-30 17:08:36,596 - app.services.trading_executor - WARNING - Strategy 1 signal rejected/failed: open_long +2025-12-30 17:08:37,027 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2979.9, pending_signals=2 +2025-12-30 17:08:37,029 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2982.21, 'position_size': 0, 'timestamp': 1767085620}] +2025-12-30 17:08:46,612 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2979.9, pending_signals=2 +2025-12-30 17:08:46,613 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2982.21, 'position_size': 0, 'timestamp': 1767085620}] +2025-12-30 17:08:49,230 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:08:49,230 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:08:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:09:15,242 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:09:15] "GET /api/market/types?_t=1767085755232 HTTP/1.1" 200 - +2025-12-30 17:09:15,248 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:09:15] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-30 17:09:15,253 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:09:15] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-30 17:09:15,557 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2025-12-30 17:09:15,558 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:09:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:09:16,762 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2025-12-30 17:09:17,181 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:09:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2025-12-30 17:09:17,786 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:09:17] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-30 17:09:17,791 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:09:17] "GET /api/market/config?_t=1767085757768 HTTP/1.1" 200 - +2025-12-30 17:09:28,959 - urllib3.connectionpool - WARNING - Retrying (Retry(total=2, connect=3, read=3, redirect=None, status=None)) after connection broken by 'SSLError(SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1020)'))': /api/qt/stock/kline/get?secid=0.300475&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2025-12-30 17:09:45,239 - urllib3.connectionpool - WARNING - Retrying (Retry(total=2, connect=3, read=2, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Read timed out. (read timeout=15)")': /api/qt/stock/kline/get?secid=1.600519&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2025-12-30 17:09:46,905 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:09:46] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 17:09:46,910 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:09:46] "GET /api/market/types?_t=1767085757830 HTTP/1.1" 200 - +2025-12-30 17:09:46,919 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:09:46] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-30 17:09:46,927 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:09:46] "GET /api/market/config?_t=1767085760071 HTTP/1.1" 200 - +2025-12-30 17:09:46,946 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:09:46] "GET /api/market/config?_t=1767085762496 HTTP/1.1" 200 - +2025-12-30 17:09:46,955 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:09:46] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-30 17:09:46,963 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:09:46] "GET /api/market/config?_t=1767085764168 HTTP/1.1" 200 - +2025-12-30 17:09:46,971 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:09:46] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-30 17:09:46,980 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:09:46] "GET /api/market/config?_t=1767085764926 HTTP/1.1" 200 - +2025-12-30 17:09:46,988 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:09:46] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-30 17:09:47,000 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:09:47] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-30 17:09:47,008 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:09:47] "GET /api/market/config?_t=1767085765863 HTTP/1.1" 200 - +2025-12-30 17:09:47,014 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:09:47] "GET /api/market/config?_t=1767085766701 HTTP/1.1" 200 - +2025-12-30 17:09:47,025 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:09:47] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-30 17:09:47,035 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:09:47] "GET /api/market/config?_t=1767085767525 HTTP/1.1" 200 - +2025-12-30 17:09:47,045 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:09:47] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-30 17:09:47,063 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:09:47] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-30 17:09:47,072 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:09:47] "GET /api/market/config?_t=1767085771918 HTTP/1.1" 200 - +2025-12-30 17:09:47,093 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:09:47] "GET /api/market/types?_t=1767085787071 HTTP/1.1" 200 - +2025-12-30 17:09:47,431 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:09:47] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 17:09:47,455 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:09:47] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 17:09:47,460 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:09:47] "GET /api/market/types?_t=1767085787126 HTTP/1.1" 200 - +2025-12-30 17:09:58,230 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:09:58] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 17:10:02,530 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:10:02] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 17:10:28,230 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:10:28] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 17:10:32,523 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:10:32] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 17:10:58,537 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:10:58] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 17:11:05,730 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:11:05] "POST /api/user/login HTTP/1.1" 200 - +2025-12-30 17:11:06,677 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:11:06] "GET /api/dashboard/summary?_t=1767085866605 HTTP/1.1" 200 - +2025-12-30 17:11:06,688 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:11:06] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1767085866605 HTTP/1.1" 200 - +2025-12-30 17:11:06,698 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:11:06] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1767085866605 HTTP/1.1" 200 - +2025-12-30 17:11:28,221 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:11:28] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 17:11:58,533 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 17:11:58] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 20:17:56,802 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-30 20:17:56,803 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2025-12-30 20:17:56,816 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-30 20:17:57,284 - app.services.strategy - INFO - Found 2 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}] +2025-12-30 20:17:57,284 - app - INFO - Restoring 2 running strategies... +2025-12-30 20:17:57,285 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-30 20:17:57,285 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-30 20:17:57,285 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-30 20:17:57,285 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-30 20:17:57,285 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-30 20:17:57,286 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-30 20:17:57,286 - app - INFO - Strategy restore completed: 2/2 restored +2025-12-30 20:17:57,286 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-30 20:17:57,286 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-30 20:17:59,342 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: okx GET https://www.okx.com/api/v5/public/instruments?instType=SPOT; trying fallback +2025-12-30 20:17:59,343 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: okx GET https://www.okx.com/api/v5/public/instruments?instType=SPOT; trying fallback +2025-12-30 20:18:00,666 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-30 20:18:00,666 - werkzeug - INFO - Press CTRL+C to quit +2025-12-30 20:18:01,383 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: okx GET https://www.okx.com/api/v5/public/instruments?instType=SPOT +2025-12-30 20:18:01,383 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-30 20:18:01,383 - app.services.trading_executor - ERROR - Strategy 1 failed to fetch K-lines +2025-12-30 20:18:01,383 - app.services.trading_executor - INFO - Strategy 1 loop exited +2025-12-30 20:18:01,398 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: okx GET https://www.okx.com/api/v5/public/instruments?instType=SPOT +2025-12-30 20:18:01,399 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-30 20:18:01,399 - app.services.trading_executor - ERROR - Strategy 2 failed to fetch K-lines +2025-12-30 20:18:01,399 - app.services.trading_executor - INFO - Strategy 2 loop exited +2025-12-30 20:19:00,881 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-30 20:19:00,882 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2025-12-30 20:19:00,892 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-30 20:19:01,316 - app.services.strategy - INFO - Found 2 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}] +2025-12-30 20:19:01,316 - app - INFO - Restoring 2 running strategies... +2025-12-30 20:19:01,317 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-30 20:19:01,317 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-30 20:19:01,317 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-30 20:19:01,317 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-30 20:19:01,317 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-30 20:19:01,318 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-30 20:19:01,318 - app - INFO - Strategy restore completed: 2/2 restored +2025-12-30 20:19:01,318 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-30 20:19:01,318 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-30 20:19:02,615 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-30 20:19:02,615 - werkzeug - INFO - Press CTRL+C to quit +2025-12-30 20:19:03,383 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: okx GET https://www.okx.com/api/v5/public/instruments?instType=SPOT; trying fallback +2025-12-30 20:19:03,383 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: okx GET https://www.okx.com/api/v5/public/instruments?instType=SPOT; trying fallback +2025-12-30 20:19:05,426 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: okx GET https://www.okx.com/api/v5/public/instruments?instType=SPOT +2025-12-30 20:19:05,426 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2025-12-30 20:19:05,426 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: okx GET https://www.okx.com/api/v5/public/instruments?instType=SPOT +2025-12-30 20:19:05,427 - app.services.trading_executor - ERROR - Strategy 1 failed to fetch K-lines +2025-12-30 20:19:05,427 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-30 20:19:05,427 - app.services.trading_executor - INFO - Strategy 1 loop exited +2025-12-30 20:19:05,427 - app.services.trading_executor - ERROR - Strategy 2 failed to fetch K-lines +2025-12-30 20:19:05,428 - app.services.trading_executor - INFO - Strategy 2 loop exited +2025-12-30 20:22:16,496 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:16,497 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:17,500 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:17,500 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:18,502 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:18,502 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:19,503 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:19,503 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:20,505 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:20,505 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:21,506 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:21,506 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:21,507 - app.utils.db - ERROR - Database operation error: no such table: qd_strategy_positions +2025-12-30 20:22:21,507 - app.services.pending_order_worker - INFO - position sync skipped/failed: no such table: qd_strategy_positions +2025-12-30 20:22:22,508 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:22,509 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:23,511 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:23,511 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:24,513 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:24,513 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:25,515 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:25,516 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:26,517 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:26,518 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:27,519 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:27,520 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:28,521 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:28,521 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:29,522 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:29,523 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:30,524 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:30,524 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:31,525 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:31,525 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:31,526 - app.utils.db - ERROR - Database operation error: no such table: qd_strategy_positions +2025-12-30 20:22:31,526 - app.services.pending_order_worker - INFO - position sync skipped/failed: no such table: qd_strategy_positions +2025-12-30 20:22:32,529 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:32,529 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:33,531 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:33,531 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:34,533 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:34,534 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:35,535 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:35,536 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:36,537 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:36,537 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:37,539 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:37,539 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:38,540 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:38,540 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:39,542 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:39,542 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:40,543 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:40,543 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:41,545 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:41,545 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:41,546 - app.utils.db - ERROR - Database operation error: no such table: qd_strategy_positions +2025-12-30 20:22:41,546 - app.services.pending_order_worker - INFO - position sync skipped/failed: no such table: qd_strategy_positions +2025-12-30 20:22:42,547 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:42,548 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:43,549 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:43,550 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:44,551 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:44,552 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:45,553 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:45,553 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:46,555 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:46,555 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:47,556 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:47,557 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:48,560 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:48,561 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:49,567 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:49,567 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:50,569 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:50,569 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:51,570 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:51,571 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:51,571 - app.utils.db - ERROR - Database operation error: no such table: qd_strategy_positions +2025-12-30 20:22:51,572 - app.services.pending_order_worker - INFO - position sync skipped/failed: no such table: qd_strategy_positions +2025-12-30 20:22:52,573 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:52,573 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:53,574 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:53,575 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:54,576 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:54,576 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:55,578 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:55,578 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:56,580 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:56,580 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:57,581 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:57,581 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:58,583 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:58,583 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:22:59,585 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:22:59,586 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:00,587 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:00,587 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:01,589 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:01,589 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:01,590 - app.utils.db - ERROR - Database operation error: no such table: qd_strategy_positions +2025-12-30 20:23:01,590 - app.services.pending_order_worker - INFO - position sync skipped/failed: no such table: qd_strategy_positions +2025-12-30 20:23:02,591 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:02,591 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:03,592 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:03,593 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:04,594 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:04,594 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:05,596 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:05,596 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:06,598 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:06,598 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:07,599 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:07,599 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:08,600 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:08,601 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:09,602 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:09,602 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:10,603 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:10,603 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:11,604 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:11,605 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:11,605 - app.utils.db - ERROR - Database operation error: no such table: qd_strategy_positions +2025-12-30 20:23:11,606 - app.services.pending_order_worker - INFO - position sync skipped/failed: no such table: qd_strategy_positions +2025-12-30 20:23:12,607 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:12,607 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:13,609 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:13,609 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:14,610 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:14,610 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:15,611 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:15,613 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:16,614 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:16,615 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:17,620 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:17,620 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:18,622 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:18,622 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:19,624 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:19,624 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:20,625 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:20,626 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:21,627 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:21,627 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:21,628 - app.utils.db - ERROR - Database operation error: no such table: qd_strategy_positions +2025-12-30 20:23:21,628 - app.services.pending_order_worker - INFO - position sync skipped/failed: no such table: qd_strategy_positions +2025-12-30 20:23:22,630 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:22,630 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:23,632 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:23,633 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:24,634 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:24,634 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:25,635 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:25,636 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:26,637 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:26,637 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:27,638 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:27,638 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:28,640 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:28,640 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:29,641 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:29,642 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:30,643 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:30,643 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:31,644 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:31,645 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:31,645 - app.utils.db - ERROR - Database operation error: no such table: qd_strategy_positions +2025-12-30 20:23:31,646 - app.services.pending_order_worker - INFO - position sync skipped/failed: no such table: qd_strategy_positions +2025-12-30 20:23:32,647 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:32,648 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:33,649 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:33,650 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:34,651 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:34,651 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:35,652 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:35,653 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:36,654 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:36,654 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:37,655 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:37,656 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:38,656 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:38,657 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:39,658 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:39,658 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:40,660 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:40,660 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:41,661 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:41,661 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:41,662 - app.utils.db - ERROR - Database operation error: no such table: qd_strategy_positions +2025-12-30 20:23:41,662 - app.services.pending_order_worker - INFO - position sync skipped/failed: no such table: qd_strategy_positions +2025-12-30 20:23:42,664 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:42,664 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:43,666 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:43,666 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:44,667 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:44,668 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:45,669 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:45,669 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:46,671 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:46,671 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:47,672 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:47,672 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:48,674 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:48,674 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:49,675 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:49,675 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:50,676 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:50,677 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:51,679 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:51,679 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:51,680 - app.utils.db - ERROR - Database operation error: no such table: qd_strategy_positions +2025-12-30 20:23:51,680 - app.services.pending_order_worker - INFO - position sync skipped/failed: no such table: qd_strategy_positions +2025-12-30 20:23:52,681 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:52,682 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:53,683 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:53,684 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:54,685 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:54,685 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:55,686 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:55,687 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:56,688 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:56,688 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:57,690 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:57,690 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:58,691 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:58,692 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:23:59,693 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:23:59,694 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:00,695 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:00,696 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:01,697 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:01,697 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:01,698 - app.utils.db - ERROR - Database operation error: no such table: qd_strategy_positions +2025-12-30 20:24:01,698 - app.services.pending_order_worker - INFO - position sync skipped/failed: no such table: qd_strategy_positions +2025-12-30 20:24:02,699 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:02,700 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:03,701 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:03,701 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:04,703 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:04,703 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:05,705 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:05,705 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:06,708 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:06,709 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:07,710 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:07,710 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:08,711 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:08,712 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:09,713 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:09,713 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:10,715 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:10,715 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:11,717 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:11,717 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:11,718 - app.utils.db - ERROR - Database operation error: no such table: qd_strategy_positions +2025-12-30 20:24:11,718 - app.services.pending_order_worker - INFO - position sync skipped/failed: no such table: qd_strategy_positions +2025-12-30 20:24:12,719 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:12,720 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:13,721 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:13,721 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:14,722 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:14,723 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:15,724 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:15,727 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:16,728 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:16,728 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:17,730 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:17,730 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:18,736 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:18,737 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:19,738 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:19,739 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:20,741 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:20,741 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:21,742 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:21,743 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:21,743 - app.utils.db - ERROR - Database operation error: no such table: qd_strategy_positions +2025-12-30 20:24:21,744 - app.services.pending_order_worker - INFO - position sync skipped/failed: no such table: qd_strategy_positions +2025-12-30 20:24:22,745 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:22,745 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:23,746 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:23,746 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:24,748 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:24,748 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:25,750 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:25,750 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:26,752 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:26,752 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:27,753 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:27,754 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:28,755 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:28,755 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:29,756 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:29,757 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:30,758 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:30,758 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:31,759 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:31,760 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:31,763 - app.utils.db - ERROR - Database operation error: no such table: qd_strategy_positions +2025-12-30 20:24:31,763 - app.services.pending_order_worker - INFO - position sync skipped/failed: no such table: qd_strategy_positions +2025-12-30 20:24:32,765 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:32,765 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:33,766 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:33,767 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:34,768 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:34,768 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:35,770 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:35,770 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:36,771 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:36,771 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:37,772 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:37,773 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:38,774 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:38,774 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:39,776 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:39,776 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:40,777 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:40,777 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:41,778 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:41,779 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:41,779 - app.utils.db - ERROR - Database operation error: no such table: qd_strategy_positions +2025-12-30 20:24:41,779 - app.services.pending_order_worker - INFO - position sync skipped/failed: no such table: qd_strategy_positions +2025-12-30 20:24:42,780 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:42,781 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:43,782 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:43,783 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:44,784 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:44,785 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:45,787 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:45,787 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:46,788 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:46,789 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:47,790 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:47,790 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:48,792 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:48,797 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:49,799 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:49,799 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:50,801 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:50,801 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:51,803 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:51,803 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:51,803 - app.utils.db - ERROR - Database operation error: no such table: qd_strategy_positions +2025-12-30 20:24:51,804 - app.services.pending_order_worker - INFO - position sync skipped/failed: no such table: qd_strategy_positions +2025-12-30 20:24:52,805 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:52,805 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:53,806 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:53,806 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:54,808 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:24:54,808 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:24:57,727 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-30 20:24:57,728 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2025-12-30 20:24:57,812 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-30 20:24:58,072 - app.services.strategy - INFO - Found 0 running strategies: [] +2025-12-30 20:24:58,072 - app - INFO - No running strategies to restore. +2025-12-30 20:25:01,426 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-30 20:25:01,427 - werkzeug - INFO - Press CTRL+C to quit +2025-12-30 20:29:55,529 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-30 20:29:55,529 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2025-12-30 20:29:55,536 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-30 20:29:55,911 - app.services.strategy - INFO - Found 0 running strategies: [] +2025-12-30 20:29:55,911 - app - INFO - No running strategies to restore. +2025-12-30 20:29:59,243 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-30 20:29:59,243 - werkzeug - INFO - Press CTRL+C to quit +2025-12-30 20:30:14,238 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:30:14] "GET /api/dashboard/summary?_t=1767097814219 HTTP/1.1" 200 - +2025-12-30 20:30:14,243 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:30:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1767097814219 HTTP/1.1" 200 - +2025-12-30 20:30:14,249 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:30:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1767097814219 HTTP/1.1" 200 - +2025-12-30 20:30:17,586 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:30:17] "GET /api/market/config?_t=1767097817563 HTTP/1.1" 200 - +2025-12-30 20:30:17,592 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:30:17] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-30 20:30:17,693 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:30:17] "GET /api/market/types?_t=1767097817655 HTTP/1.1" 200 - +2025-12-30 20:30:19,207 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:30:19] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-30 20:30:22,786 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:30:22] "GET /api/market/types?_t=1767097822770 HTTP/1.1" 200 - +2025-12-30 20:30:22,792 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:30:22] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-30 20:30:23,099 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:30:23] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-30 20:34:10,180 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:34:10,180 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:34:11,182 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:34:11,182 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:34:12,183 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:34:12,183 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:34:13,185 - app.utils.db - ERROR - Database operation error: no such table: pending_orders +2025-12-30 20:34:13,185 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: no such table: pending_orders +2025-12-30 20:34:15,827 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-30 20:34:15,827 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2025-12-30 20:34:15,929 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-30 20:34:16,248 - app.services.strategy - INFO - Found 0 running strategies: [] +2025-12-30 20:34:16,248 - app - INFO - No running strategies to restore. +2025-12-30 20:34:17,543 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-30 20:34:17,544 - werkzeug - INFO - Press CTRL+C to quit +2025-12-30 20:34:21,625 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:34:21] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-30 20:34:21,629 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:34:21] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2025-12-30 20:34:21,631 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:34:21] "GET /api/market/types?_t=1767098061303 HTTP/1.1" 200 - +2025-12-30 20:34:24,724 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:34:24] "GET /api/dashboard/summary?_t=1767098064712 HTTP/1.1" 200 - +2025-12-30 20:34:25,039 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:34:25] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1767098064712 HTTP/1.1" 200 - +2025-12-30 20:34:25,046 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:34:25] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1767098064712 HTTP/1.1" 200 - +2025-12-30 20:34:26,283 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:34:26] "GET /api/market/config?_t=1767098065962 HTTP/1.1" 200 - +2025-12-30 20:34:26,290 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:34:26] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-30 20:34:26,545 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:34:26] "GET /api/market/types?_t=1767098066301 HTTP/1.1" 200 - +2025-12-30 20:35:00,706 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-30 20:35:00,707 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2025-12-30 20:35:00,807 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-30 20:35:01,156 - app.services.strategy - INFO - Found 0 running strategies: [] +2025-12-30 20:35:01,157 - app - INFO - No running strategies to restore. +2025-12-30 20:35:02,435 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-30 20:35:02,435 - werkzeug - INFO - Press CTRL+C to quit +2025-12-30 20:35:05,567 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:35:05] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-30 20:35:05,865 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:35:05] "GET /api/market/config?_t=1767098105551 HTTP/1.1" 200 - +2025-12-30 20:35:06,195 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:35:06] "GET /api/market/types?_t=1767098105871 HTTP/1.1" 200 - +2025-12-30 20:36:30,987 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:36:30] "POST /api/analysis/getHistoryList HTTP/1.1" 200 - +2025-12-30 20:36:45,625 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:36:45] "POST /api/analysis/getHistoryList HTTP/1.1" 200 - +2025-12-30 20:40:10,468 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:40:10] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-30 20:40:12,094 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:40:12] "POST /api/market/watchlist/add HTTP/1.1" 200 - +2025-12-30 20:40:12,486 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:40:12] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-30 20:40:12,915 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-30 20:40:15,171 - app.data_sources.us_stock - WARNING - yfinance fetch failed: 'NoneType' object is not subscriptable +2025-12-30 20:40:17,227 - app.data_sources.us_stock - ERROR - Finnhub fetch failed: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//stock/candle?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=AAPL&resolution=D&from=1766839212&to=1767098412 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [WinError 10061] ็”ฑไบŽ็›ฎๆ ‡่ฎก็ฎ—ๆœบ็งฏๆžๆ‹’็ป๏ผŒๆ— ๆณ•่ฟžๆŽฅใ€‚")) +2025-12-30 20:40:17,228 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2025-12-30 20:40:17,228 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:40:17] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 20:40:37,587 - app.data_sources.us_stock - WARNING - yfinance fetch failed: 'NoneType' object is not subscriptable +2025-12-30 20:40:39,654 - app.data_sources.us_stock - ERROR - Finnhub fetch failed: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//stock/candle?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=AAPL&resolution=D&from=1766839235&to=1767098435 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [WinError 10061] ็”ฑไบŽ็›ฎๆ ‡่ฎก็ฎ—ๆœบ็งฏๆžๆ‹’็ป๏ผŒๆ— ๆณ•่ฟžๆŽฅใ€‚")) +2025-12-30 20:40:39,655 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2025-12-30 20:40:39,655 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:40:39] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 20:40:46,950 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:40:46] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-30 20:40:46,955 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:40:46] "GET /api/market/config?_t=1767098446629 HTTP/1.1" 200 - +2025-12-30 20:40:49,242 - app.data_sources.us_stock - WARNING - yfinance fetch failed: 'NoneType' object is not subscriptable +2025-12-30 20:40:51,284 - app.data_sources.us_stock - ERROR - Finnhub fetch failed: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//stock/candle?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=AAPL&resolution=D&from=1766839247&to=1767098447 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [WinError 10061] ็”ฑไบŽ็›ฎๆ ‡่ฎก็ฎ—ๆœบ็งฏๆžๆ‹’็ป๏ผŒๆ— ๆณ•่ฟžๆŽฅใ€‚")) +2025-12-30 20:40:51,284 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2025-12-30 20:40:51,285 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:40:51] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 20:40:51,289 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:40:51] "GET /api/market/types?_t=1767098446968 HTTP/1.1" 200 - +2025-12-30 20:41:10,896 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:41:10] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-30 20:41:12,958 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:41:12] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-30 20:41:14,701 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:41:14] "POST /api/market/watchlist/add HTTP/1.1" 200 - +2025-12-30 20:41:15,045 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:41:15] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-30 20:41:17,372 - app.data_sources.us_stock - WARNING - yfinance fetch failed: 'NoneType' object is not subscriptable +2025-12-30 20:41:17,386 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: okx GET https://www.okx.com/api/v5/public/instruments?instType=SPOT; trying fallback +2025-12-30 20:41:19,411 - app.data_sources.us_stock - ERROR - Finnhub fetch failed: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//stock/candle?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=AAPL&resolution=D&from=1766839275&to=1767098475 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [WinError 10061] ็”ฑไบŽ็›ฎๆ ‡่ฎก็ฎ—ๆœบ็งฏๆžๆ‹’็ป๏ผŒๆ— ๆณ•่ฟžๆŽฅใ€‚")) +2025-12-30 20:41:19,411 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2025-12-30 20:41:19,441 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: okx GET https://www.okx.com/api/v5/public/instruments?instType=SPOT +2025-12-30 20:41:19,442 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-30 20:41:19,442 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:41:19] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 20:41:21,479 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: okx GET https://www.okx.com/api/v5/public/instruments?instType=SPOT; trying fallback +2025-12-30 20:41:21,480 - app.data_sources.us_stock - WARNING - yfinance fetch failed: 'NoneType' object is not subscriptable +2025-12-30 20:41:23,526 - app.data_sources.us_stock - ERROR - Finnhub fetch failed: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//stock/candle?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=AAPL&resolution=D&from=1766839279&to=1767098479 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [WinError 10061] ็”ฑไบŽ็›ฎๆ ‡่ฎก็ฎ—ๆœบ็งฏๆžๆ‹’็ป๏ผŒๆ— ๆณ•่ฟžๆŽฅใ€‚")) +2025-12-30 20:41:23,526 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: okx GET https://www.okx.com/api/v5/public/instruments?instType=SPOT +2025-12-30 20:41:23,526 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2025-12-30 20:41:23,526 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-30 20:41:23,527 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:41:23] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 20:41:48,978 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: okx GET https://www.okx.com/api/v5/public/instruments?instType=SPOT; trying fallback +2025-12-30 20:41:48,978 - app.data_sources.us_stock - WARNING - yfinance fetch failed: 'NoneType' object is not subscriptable +2025-12-30 20:41:51,023 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: okx GET https://www.okx.com/api/v5/public/instruments?instType=SPOT +2025-12-30 20:41:51,023 - app.data_sources.us_stock - ERROR - Finnhub fetch failed: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//stock/candle?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=AAPL&resolution=D&from=1766839306&to=1767098506 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [WinError 10061] ็”ฑไบŽ็›ฎๆ ‡่ฎก็ฎ—ๆœบ็งฏๆžๆ‹’็ป๏ผŒๆ— ๆณ•่ฟžๆŽฅใ€‚")) +2025-12-30 20:41:51,023 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2025-12-30 20:41:51,023 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2025-12-30 20:41:51,024 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:41:51] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 20:42:37,776 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-30 20:42:37,777 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2025-12-30 20:42:37,783 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-30 20:42:38,229 - app.services.strategy - INFO - Found 2 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}] +2025-12-30 20:42:38,230 - app - INFO - Restoring 2 running strategies... +2025-12-30 20:42:38,230 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-30 20:42:38,230 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-30 20:42:38,230 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-30 20:42:38,230 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-30 20:42:38,230 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-30 20:42:38,231 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-30 20:42:38,231 - app - INFO - Strategy restore completed: 2/2 restored +2025-12-30 20:42:38,231 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-30 20:42:38,234 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-30 20:42:39,557 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-30 20:42:39,557 - werkzeug - INFO - Press CTRL+C to quit +2025-12-30 20:42:41,958 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-30 20:42:41,974 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2025-12-30 20:42:42,336 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-30 20:42:42,349 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2025-12-30 20:42:42,840 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:42:42] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-30 20:42:42,845 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:42:42] "GET /api/market/config?_t=1767098562512 HTTP/1.1" 200 - +2025-12-30 20:42:43,277 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-30 20:42:43,278 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-30 20:42:43,278 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-30 20:42:43,278 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-30 20:42:43,278 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-30 20:42:47,229 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:42:47] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 20:42:47,231 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:42:47] "GET /api/market/types?_t=1767098562859 HTTP/1.1" 200 - +2025-12-30 20:43:12,506 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:43:12] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 20:43:42,816 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:43:42] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 20:44:09,388 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-30 20:44:09,388 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2025-12-30 20:44:09,397 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-30 20:44:09,798 - app.services.strategy - INFO - Found 2 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}] +2025-12-30 20:44:09,798 - app - INFO - Restoring 2 running strategies... +2025-12-30 20:44:09,798 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-30 20:44:09,798 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-30 20:44:09,798 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-30 20:44:09,799 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-30 20:44:09,799 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-30 20:44:09,799 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-30 20:44:09,799 - app - INFO - Strategy restore completed: 2/2 restored +2025-12-30 20:44:09,803 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-30 20:44:09,803 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-30 20:44:11,140 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-30 20:44:11,140 - werkzeug - INFO - Press CTRL+C to quit +2025-12-30 20:44:12,601 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-30 20:44:12,601 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-30 20:44:12,602 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-30 20:44:12,602 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-30 20:44:12,602 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-30 20:44:14,398 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-30 20:44:14,414 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2025-12-30 20:44:14,766 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-30 20:44:14,783 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2025-12-30 20:44:18,343 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:44:18] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 20:44:18,349 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:44:18] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-30 20:44:18,352 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:44:18] "GET /api/market/config?_t=1767098654606 HTTP/1.1" 200 - +2025-12-30 20:44:18,372 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:44:18] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 20:44:18,683 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:44:18] "GET /api/market/types?_t=1767098658372 HTTP/1.1" 200 - +2025-12-30 20:44:24,619 - app.routes.analysis - INFO - Analyze request: AShare:600519, use_multi_agent=True, model=openai/gpt-4o-mini +2025-12-30 20:44:24,678 - app.services.agents.memory - ERROR - ๅˆๅง‹ๅŒ–่ฎฐๅฟ†ๆ•ฐๆฎๅบ“ๅคฑ่ดฅ: no such column: market +2025-12-30 20:44:24,681 - app.services.agents.memory - ERROR - ๅˆๅง‹ๅŒ–่ฎฐๅฟ†ๆ•ฐๆฎๅบ“ๅคฑ่ดฅ: no such column: market +2025-12-30 20:44:24,683 - app.services.agents.memory - ERROR - ๅˆๅง‹ๅŒ–่ฎฐๅฟ†ๆ•ฐๆฎๅบ“ๅคฑ่ดฅ: no such column: market +2025-12-30 20:44:24,688 - app.services.agents.memory - ERROR - ๅˆๅง‹ๅŒ–่ฎฐๅฟ†ๆ•ฐๆฎๅบ“ๅคฑ่ดฅ: no such column: market +2025-12-30 20:44:24,690 - app.services.agents.memory - ERROR - ๅˆๅง‹ๅŒ–่ฎฐๅฟ†ๆ•ฐๆฎๅบ“ๅคฑ่ดฅ: no such column: market +2025-12-30 20:44:24,692 - app.services.agents.memory - ERROR - ๅˆๅง‹ๅŒ–่ฎฐๅฟ†ๆ•ฐๆฎๅบ“ๅคฑ่ดฅ: no such column: market +2025-12-30 20:44:24,693 - app.services.agents.memory - ERROR - ๅˆๅง‹ๅŒ–่ฎฐๅฟ†ๆ•ฐๆฎๅบ“ๅคฑ่ดฅ: no such column: market +2025-12-30 20:44:24,696 - app.services.agents.memory - ERROR - ๅˆๅง‹ๅŒ–่ฎฐๅฟ†ๆ•ฐๆฎๅบ“ๅคฑ่ดฅ: no such column: market +2025-12-30 20:44:24,697 - app.services.analysis - INFO - Multi-agent coordinator initialized +2025-12-30 20:44:24,697 - app.services.analysis - INFO - Starting analysis AShare:600519, language=zh-TW, mode=multi-agent +2025-12-30 20:44:24,697 - app.services.analysis - INFO - Run coordinator: AShare:600519 +2025-12-30 20:44:24,697 - app.services.agents.coordinator - INFO - Multi-agent analysis start: AShare:600519, model=openai/gpt-4o-mini, language=zh-TW +2025-12-30 20:44:45,373 - app.services.agents.tools - WARNING - akshare AShare spot failed (600519): SOCKSHTTPSConnectionPool(host='82.push2.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/clist/get?pn=3&pz=100&po=1&np=1&ut=bd1d9ddb04089700cf9c27f6f7426281&fltt=2&invt=2&fid=f12&fs=m%3A0+t%3A6%2Cm%3A0+t%3A80%2Cm%3A1+t%3A2%2Cm%3A1+t%3A23%2Cm%3A0+t%3A81+s%3A2048&fields=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6%2Cf7%2Cf8%2Cf9%2Cf10%2Cf12%2Cf13%2Cf14%2Cf15%2Cf16%2Cf17%2Cf18%2Cf20%2Cf21%2Cf23%2Cf24%2Cf25%2Cf22%2Cf11%2Cf62%2Cf128%2Cf136%2Cf115%2Cf152 (Caused by SSLError(SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1020)'))) +2025-12-30 20:46:09,483 - app.services.agents.tools - WARNING - akshare AShare kline failed (600519): SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61%2Cf116&ut=7eea3edcaed734bea9cbfc24409ed989&klt=101&fqt=1&secid=1.600519&beg=20251120&end=20251230 (Caused by SSLError(SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1020)'))) +2025-12-30 20:46:27,382 - app.services.agents.tools - INFO - Running news search: "600519" 600519 (ๅˆฉๅฅฝ OR ๅˆฉ็ฉบ OR ่ดขๆŠฅ OR ๅ…ฌๅ‘Š OR ไธš็ปฉ) after:2024 +2025-12-30 20:46:28,723 - app.services.agents.tools - INFO - Deep reading: ่ดตๅทž่Œ…ๅฐ(600519)ๅˆ†็บข้…่‚ก_ๆ–ฐๆตช่ดข็ป_ๆ–ฐๆตช็ฝ‘ +2025-12-30 20:46:31,565 - app.services.agents.tools - INFO - Deep reading: XD่ดตๅทž่Œ…1410.00(0.21%)_ๅนดๅบฆๆŠฅๅ‘Š_ๆ–ฐๆตช่ดข็ป_ๆ–ฐๆตช็ฝ‘ +2025-12-30 20:46:34,641 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2025-12-30 20:46:34,644 - app.services.agents.memory - ERROR - ๆฃ€็ดข่ฎฐๅฟ†ๅคฑ่ดฅ: no such column: market +2025-12-30 20:46:45,442 - app.services.agents.tools - WARNING - akshare AShare spot failed (600519): SOCKSHTTPSConnectionPool(host='82.push2.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/clist/get?pn=1&pz=100&po=1&np=1&ut=bd1d9ddb04089700cf9c27f6f7426281&fltt=2&invt=2&fid=f12&fs=m%3A0+t%3A6%2Cm%3A0+t%3A80%2Cm%3A1+t%3A2%2Cm%3A1+t%3A23%2Cm%3A0+t%3A81+s%3A2048&fields=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6%2Cf7%2Cf8%2Cf9%2Cf10%2Cf12%2Cf13%2Cf14%2Cf15%2Cf16%2Cf17%2Cf18%2Cf20%2Cf21%2Cf23%2Cf24%2Cf25%2Cf22%2Cf11%2Cf62%2Cf128%2Cf136%2Cf115%2Cf152 (Caused by SSLError(SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1020)'))) +2025-12-30 20:46:52,873 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2025-12-30 20:46:52,875 - app.services.agents.memory - ERROR - ๆฃ€็ดข่ฎฐๅฟ†ๅคฑ่ดฅ: no such column: market +2025-12-30 20:46:52,875 - app.services.agents.memory - ERROR - ๆฃ€็ดข่ฎฐๅฟ†ๅคฑ่ดฅ: no such column: market +2025-12-30 20:47:05,604 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2025-12-30 20:47:05,606 - app.services.agents.memory - ERROR - ๆฃ€็ดข่ฎฐๅฟ†ๅคฑ่ดฅ: no such column: market +2025-12-30 20:47:12,432 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2025-12-30 20:47:19,556 - app.services.agents.coordinator - WARNING - Record reflection failed: 'NoneType' object has no attribute 'get' +2025-12-30 20:47:19,557 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: AShare:600519 +2025-12-30 20:47:19,557 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2025-12-30 20:47:19,558 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2025-12-30 20:47:19,567 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:47:19] "POST /api/analysis/multiAnalysis HTTP/1.1" 200 - +2025-12-30 20:47:19,572 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:47:19] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 20:47:19,585 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:47:19] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 20:47:19,592 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:47:19] "GET /api/dashboard/summary?_t=1767098738654 HTTP/1.1" 200 - +2025-12-30 20:47:19,597 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:47:19] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1767098738654 HTTP/1.1" 200 - +2025-12-30 20:47:19,604 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:47:19] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1767098738654 HTTP/1.1" 200 - +2025-12-30 20:47:19,606 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:47:19] "GET /api/market/types?_t=1767098816340 HTTP/1.1" 200 - +2025-12-30 20:47:19,633 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:47:19] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-30 20:47:19,638 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:47:19] "GET /api/market/config?_t=1767098817300 HTTP/1.1" 200 - +2025-12-30 20:47:19,643 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:47:19] "POST /api/analysis/getHistoryList HTTP/1.1" 200 - +2025-12-30 20:47:19,657 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:47:19] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 20:47:19,669 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:47:19] "GET /api/market/types?_t=1767098839660 HTTP/1.1" 200 - +2025-12-30 20:47:24,936 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:47:24] "POST /api/analysis/getTaskStatus HTTP/1.1" 200 - +2025-12-30 20:47:27,275 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:47:27] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 20:47:57,591 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:47:57] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 20:48:27,273 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:48:27] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 20:48:57,584 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:48:57] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 20:49:07,032 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:49:07] "GET /api/dashboard/summary?_t=1767098947015 HTTP/1.1" 200 - +2025-12-30 20:49:07,055 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:49:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1767098947015 HTTP/1.1" 200 - +2025-12-30 20:49:07,347 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:49:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1767098947015 HTTP/1.1" 200 - +2025-12-30 20:49:12,004 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:49:12] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767098951996 HTTP/1.1" 200 - +2025-12-30 20:49:17,311 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:49:17] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767098956994 HTTP/1.1" 200 - +2025-12-30 20:49:22,003 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:49:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767098961995 HTTP/1.1" 200 - +2025-12-30 20:49:27,318 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:49:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767098967001 HTTP/1.1" 200 - +2025-12-30 20:49:32,009 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:49:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767098971999 HTTP/1.1" 200 - +2025-12-30 20:49:37,313 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:49:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767098976997 HTTP/1.1" 200 - +2025-12-30 20:49:42,005 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:49:42] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767098981997 HTTP/1.1" 200 - +2025-12-30 20:49:47,357 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:49:47] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-30 20:49:47,363 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:49:47] "GET /api/market/config?_t=1767098987033 HTTP/1.1" 200 - +2025-12-30 20:49:50,539 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:49:50] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 20:49:50,543 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:49:50] "GET /api/market/types?_t=1767098987383 HTTP/1.1" 200 - +2025-12-30 20:49:53,266 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:49:53] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-30 20:49:56,580 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:49:56] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-30 20:49:57,604 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:49:57] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2025-12-30 20:50:17,316 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:50:17] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 20:50:47,014 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:50:47] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 20:51:00,842 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-30 20:51:00,843 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2025-12-30 20:51:00,850 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-30 20:51:01,238 - app.services.strategy - INFO - Found 2 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}] +2025-12-30 20:51:01,239 - app - INFO - Restoring 2 running strategies... +2025-12-30 20:51:01,239 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-30 20:51:01,239 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-30 20:51:01,239 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-30 20:51:01,240 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-30 20:51:01,240 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-30 20:51:01,240 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-30 20:51:01,240 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-30 20:51:01,241 - app - INFO - Strategy restore completed: 2/2 restored +2025-12-30 20:51:01,248 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-30 20:51:02,531 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-30 20:51:02,531 - werkzeug - INFO - Press CTRL+C to quit +2025-12-30 20:51:05,509 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-30 20:51:05,543 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2025-12-30 20:51:05,849 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:51:05] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-30 20:51:05,854 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:51:05] "GET /api/market/config?_t=1767099065840 HTTP/1.1" 200 - +2025-12-30 20:51:06,173 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-30 20:51:06,173 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-30 20:51:06,173 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-30 20:51:06,173 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-30 20:51:06,173 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-30 20:51:06,906 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-30 20:51:06,922 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2025-12-30 20:51:10,260 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:51:10] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 20:51:10,263 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:51:10] "GET /api/market/types?_t=1767099065877 HTTP/1.1" 200 - +2025-12-30 20:51:23,028 - app.routes.analysis - INFO - Analyze request: USStock:AAPL, use_multi_agent=True, model=openai/gpt-4o-mini +2025-12-30 20:51:23,385 - app.services.analysis - INFO - Multi-agent coordinator initialized +2025-12-30 20:51:23,385 - app.services.analysis - INFO - Starting analysis USStock:AAPL, language=zh-TW, mode=multi-agent +2025-12-30 20:51:23,385 - app.services.analysis - INFO - Run coordinator: USStock:AAPL +2025-12-30 20:51:23,385 - app.services.agents.coordinator - INFO - Multi-agent analysis start: USStock:AAPL, model=openai/gpt-4o-mini, language=zh-TW +2025-12-30 20:51:31,055 - app.services.agents.tools - INFO - Running news search: "Apple Inc" AAPL stock news +2025-12-30 20:51:33,087 - app.services.agents.tools - INFO - Deep reading: AAPL Stock Quote Price and Forecast | CNN +2025-12-30 20:51:34,782 - app.services.agents.tools - INFO - Deep reading: Buy or Sell Apple Stock - AAPL Stock Price Quote & News | Robinhood +2025-12-30 20:51:41,684 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2025-12-30 20:51:54,153 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2025-12-30 20:52:10,601 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2025-12-30 20:52:19,501 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2025-12-30 20:52:26,512 - app.services.agents.reflection - INFO - Recorded analysis for reflection: USStock:AAPL, will verify after 7 day(s) +2025-12-30 20:52:26,513 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: USStock:AAPL +2025-12-30 20:52:26,513 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2025-12-30 20:52:26,515 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2025-12-30 20:52:26,525 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:52:26] "POST /api/analysis/multiAnalysis HTTP/1.1" 200 - +2025-12-30 20:52:26,529 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:52:26] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 20:52:26,534 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:52:26] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 20:52:36,131 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:52:36] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 20:53:05,820 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:53:05] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 20:53:36,138 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:53:36] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 20:53:58,717 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2025-12-30 20:53:58,718 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2025-12-30 20:53:58,724 - app.utils.db - INFO - Database schema initialized (SQLite) +2025-12-30 20:53:59,112 - app.services.strategy - INFO - Found 2 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}] +2025-12-30 20:53:59,113 - app - INFO - Restoring 2 running strategies... +2025-12-30 20:53:59,113 - app.services.trading_executor - INFO - Strategy 1 loop starting +2025-12-30 20:53:59,113 - app.services.trading_executor - INFO - Strategy 1 started +2025-12-30 20:53:59,113 - app - INFO - [OK] IndicatorStrategy 1 restored +2025-12-30 20:53:59,114 - app.services.trading_executor - INFO - Strategy 2 loop starting +2025-12-30 20:53:59,114 - app.services.trading_executor - INFO - Strategy 2 started +2025-12-30 20:53:59,114 - app - INFO - [OK] IndicatorStrategy 2 restored +2025-12-30 20:53:59,114 - app - INFO - Strategy restore completed: 2/2 restored +2025-12-30 20:53:59,119 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2025-12-30 20:53:59,119 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2025-12-30 20:54:00,403 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.9:5000 +2025-12-30 20:54:00,403 - werkzeug - INFO - Press CTRL+C to quit +2025-12-30 20:54:04,376 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-30 20:54:04,390 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2025-12-30 20:54:04,436 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2025-12-30 20:54:04,449 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2025-12-30 20:54:05,985 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-30 20:54:05,985 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-30 20:54:05,985 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-30 20:54:05,985 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-30 20:54:05,985 - app.data_sources.us_stock - INFO - Finnhub client initialized +2025-12-30 20:54:16,779 - urllib3.connectionpool - WARNING - Retrying (Retry(total=2, connect=3, read=3, redirect=None, status=None)) after connection broken by 'SSLError(SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1020)'))': /api/qt/stock/kline/get?secid=1.600519&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2025-12-30 20:54:19,856 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:54:19] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 20:54:36,131 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:54:36] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 20:54:46,935 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:54:46] "GET /api/settings/schema?_t=1767099286924 HTTP/1.1" 200 - +2025-12-30 20:54:47,245 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 20:54:47] "GET /api/settings/values?_t=1767099286924 HTTP/1.1" 200 - +2025-12-30 20:55:45,071 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=88013.9, pending_signals=1 +2025-12-30 20:55:45,073 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 88013.9, 'position_size': 0, 'timestamp': 1767099300}] +2025-12-30 20:55:54,421 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=88013.9, pending_signals=1 +2025-12-30 20:55:54,423 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 88013.9, 'position_size': 0, 'timestamp': 1767099300}] +2025-12-30 20:59:24,853 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=88013.9, pending_signals=1 +2025-12-30 20:59:24,856 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 88013.9, 'position_size': 0, 'timestamp': 1767099540}] +2025-12-30 20:59:34,448 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=88013.9, pending_signals=1 +2025-12-30 20:59:34,450 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 88013.9, 'position_size': 0, 'timestamp': 1767099540}] +2025-12-30 20:59:44,854 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=88013.9, pending_signals=1 +2025-12-30 20:59:44,856 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 88013.9, 'position_size': 0, 'timestamp': 1767099540}] +2025-12-30 20:59:54,455 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=88013.9, pending_signals=1 +2025-12-30 20:59:54,457 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 88013.9, 'position_size': 0, 'timestamp': 1767099540}] +2025-12-30 21:00:05,272 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=88022.9, pending_signals=2 +2025-12-30 21:00:05,274 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 88022.7, 'position_size': 0.08, 'timestamp': 1767099540}, {'type': 'close_short', 'trigger_price': 88022.7, 'position_size': 0, 'timestamp': 1767099540}] +2025-12-30 21:00:05,288 - app.services.analysis - INFO - Multi-agent coordinator initialized +2025-12-30 21:00:05,288 - app.services.analysis - INFO - Starting analysis Crypto:BTC/USDT, language=zh-CN, mode=multi-agent +2025-12-30 21:00:05,288 - app.services.analysis - INFO - Run coordinator: Crypto:BTC/USDT +2025-12-30 21:00:05,288 - app.services.agents.coordinator - INFO - Multi-agent analysis start: Crypto:BTC/USDT, model=None, language=zh-CN +2025-12-30 21:00:06,100 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-30 21:00:08,093 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-30 21:00:08,094 - app.services.agents.tools - WARNING - Finnhub news fetch failed: 'Client' object has no attribute 'crypto_news' +2025-12-30 21:00:08,095 - app.services.agents.tools - INFO - Running news search: "BTC/USDT Cryptocurrency" BTC/USDT crypto news analysis +2025-12-30 21:00:09,288 - app.services.agents.tools - INFO - Deep reading: "#Lynthex" - Results on X | Live Posts & Updates +2025-12-30 21:00:16,827 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2025-12-30 21:00:17,834 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-30 21:00:18,645 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2025-12-30 21:00:27,531 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2025-12-30 21:00:30,602 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 21:00:30] "GET /api/dashboard/summary?_t=1767099630589 HTTP/1.1" 200 - +2025-12-30 21:00:30,609 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 21:00:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1767099630589 HTTP/1.1" 200 - +2025-12-30 21:00:30,652 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 21:00:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1767099630589 HTTP/1.1" 200 - +2025-12-30 21:00:32,842 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 21:00:32] "GET /api/market/config?_t=1767099632835 HTTP/1.1" 200 - +2025-12-30 21:00:33,193 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 21:00:33] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2025-12-30 21:00:33,198 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 21:00:33] "GET /api/market/types?_t=1767099632865 HTTP/1.1" 200 - +2025-12-30 21:00:37,704 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 21:00:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 21:00:44,805 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2025-12-30 21:00:44,929 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2981.34, pending_signals=1 +2025-12-30 21:00:44,932 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2981.34, 'position_size': 0, 'timestamp': 1767099600}] +2025-12-30 21:00:53,132 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2025-12-30 21:00:54,522 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2981.34, pending_signals=1 +2025-12-30 21:00:54,524 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2981.34, 'position_size': 0, 'timestamp': 1767099600}] +2025-12-30 21:00:59,505 - app.services.agents.coordinator - WARNING - Record reflection failed: 'NoneType' object has no attribute 'get' +2025-12-30 21:00:59,505 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: Crypto:BTC/USDT +2025-12-30 21:00:59,505 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2025-12-30 21:00:59,506 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2025-12-30 21:00:59,514 - app.services.trading_executor - INFO - AI entry filter rejected: strategy_id=2 symbol=BTC/USDT signal=open_long ai=HOLD reason=ai_hold +2025-12-30 21:00:59,514 - app.services.trading_executor - WARNING - Strategy 2 signal rejected/failed: open_long +2025-12-30 21:00:59,946 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=88017.1, pending_signals=2 +2025-12-30 21:00:59,949 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 88022.7, 'position_size': 0, 'timestamp': 1767099540}] +2025-12-30 21:01:02,802 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 21:01:02] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 21:01:24,934 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2981.8, pending_signals=1 +2025-12-30 21:01:24,936 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2981.8, 'position_size': 0, 'timestamp': 1767099660}] +2025-12-30 21:01:33,120 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 21:01:33] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 21:01:34,529 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=2981.8, pending_signals=1 +2025-12-30 21:01:34,532 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 2981.8, 'position_size': 0, 'timestamp': 1767099660}] +2025-12-30 21:02:02,804 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 21:02:02] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 21:02:33,121 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 21:02:33] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2025-12-30 21:03:02,803 - werkzeug - INFO - 127.0.0.1 - - [30/Dec/2025 21:03:02] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-06 19:44:02,482 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-06 19:44:02,483 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-06 19:44:02,494 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-06 19:44:02,974 - app.services.strategy - INFO - Found 2 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}] +2026-01-06 19:44:02,975 - app - INFO - Restoring 2 running strategies... +2026-01-06 19:44:02,975 - app.services.trading_executor - INFO - Strategy 1 loop starting +2026-01-06 19:44:02,975 - app.services.trading_executor - INFO - Strategy 1 started +2026-01-06 19:44:02,975 - app - INFO - [OK] IndicatorStrategy 1 restored +2026-01-06 19:44:02,975 - app.services.trading_executor - INFO - Strategy 2 loop starting +2026-01-06 19:44:02,975 - app.services.trading_executor - INFO - Strategy 2 started +2026-01-06 19:44:02,976 - app - INFO - [OK] IndicatorStrategy 2 restored +2026-01-06 19:44:02,976 - app - INFO - Strategy restore completed: 2/2 restored +2026-01-06 19:44:02,976 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2026-01-06 19:44:02,980 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2026-01-06 19:44:03,005 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-06 19:44:03,005 - werkzeug - INFO - Press CTRL+C to quit +2026-01-06 19:44:06,685 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:06] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1767699846630 HTTP/1.1" 200 - +2026-01-06 19:44:06,687 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:06] "GET /api/dashboard/summary?_t=1767699846630 HTTP/1.1" 200 - +2026-01-06 19:44:06,954 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:06] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1767699846630 HTTP/1.1" 200 - +2026-01-06 19:44:07,330 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-06 19:44:07,345 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2026-01-06 19:44:07,351 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-06 19:44:07,365 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2026-01-06 19:44:11,623 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:11] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767699851613 HTTP/1.1" 200 - +2026-01-06 19:44:16,634 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:16] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767699856623 HTTP/1.1" 200 - +2026-01-06 19:44:21,941 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:21] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767699861626 HTTP/1.1" 200 - +2026-01-06 19:44:26,626 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:26] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1767699866617 HTTP/1.1" 200 - +2026-01-06 19:44:27,936 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:27] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-06 19:44:27,939 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:27] "GET /api/market/types?_t=1767699867924 HTTP/1.1" 200 - +2026-01-06 19:44:27,997 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:27] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-06 19:44:28,258 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-06 19:44:28,902 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:44:30,171 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:44:30,840 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:44:31,182 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:44:31,183 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:44:32,175 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:44:32,176 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:44:33,172 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:44:33,172 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:44:34,174 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:44:34,174 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:44:35,482 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:44:35,482 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:44:36,169 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:44:36,170 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:44:37,479 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:44:37,479 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:44:38,172 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:44:38,172 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:44:39,510 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:44:39,510 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:44:40,174 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:44:40,175 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:44:41,482 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:44:41,483 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:44:42,174 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:44:42,175 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:44:43,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:44:43,484 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:44:44,170 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:44:44,171 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:44:45,946 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:44:45,947 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:44:46,197 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:44:46,198 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:44:47,178 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:44:47,178 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:44:48,482 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:44:48,482 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:44:49,174 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:44:49,174 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:44:50,173 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:44:50,173 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:44:51,491 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:44:51,491 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:44:52,175 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:44:52,175 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:44:53,476 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:44:53,476 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:44:54,174 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:44:54,175 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:44:55,488 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:44:55,488 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:44:56,170 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:44:56,170 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:44:57,476 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:44:57,477 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:44:58,173 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:44:58,173 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:44:59,477 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:44:59,478 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:44:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:00,174 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:00,175 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:01,489 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:01,490 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:02,175 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:02,175 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:03,479 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:03,480 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:04,175 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:04,175 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:05,483 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:05,484 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:06,172 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:06,173 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:07,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:07,485 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:08,173 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:08,173 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:09,480 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:09,480 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:10,175 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:10,175 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:11,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:11,485 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:12,174 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:12,175 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:13,491 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:13,492 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:14,177 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:14,177 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:15,479 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:15,480 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:16,175 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:16,176 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:17,482 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:17,483 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:18,176 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:18,177 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:19,477 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:19,478 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:20,175 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:20,175 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:21,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:21,487 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:22,176 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:22,177 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:23,490 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:23,490 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:24,172 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:24,173 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:25,493 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:25,494 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:26,175 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:26,175 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:27,484 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:27,484 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:28,168 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:28,169 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:29,483 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:29,484 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:30,176 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:30,176 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:31,481 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:31,481 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:32,174 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:32,174 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:33,480 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:33,480 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:34,175 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:34,176 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:35,491 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:35,491 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:36,174 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:36,175 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:37,492 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:37,492 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:38,542 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:38,543 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:39,393 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:39,394 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:40,175 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:40,176 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:41,179 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:41,180 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:42,173 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:42,173 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:43,177 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:43,177 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:43,799 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:43] "POST /api/indicator/verifyCode HTTP/1.1" 200 - +2026-01-06 19:45:44,169 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:44,169 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:45,481 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:45,482 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:46,257 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:46,257 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:47,180 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:47,180 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:48,178 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:48,178 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:49,177 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:49,177 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:50,618 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:50,619 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:51,168 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:51,168 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:52,482 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:52,483 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:53,176 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:53,177 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:54,479 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:54,480 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:55,175 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:55,176 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:56,489 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:56,490 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:57,177 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:57,178 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:45:58,489 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:45:58,490 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:45:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:02,233 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-06 19:46:02,233 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-06 19:46:02,240 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-06 19:46:02,587 - app.services.strategy - INFO - Found 2 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}] +2026-01-06 19:46:02,588 - app - INFO - Restoring 2 running strategies... +2026-01-06 19:46:02,588 - app.services.trading_executor - INFO - Strategy 1 loop starting +2026-01-06 19:46:02,588 - app.services.trading_executor - INFO - Strategy 1 started +2026-01-06 19:46:02,589 - app - INFO - [OK] IndicatorStrategy 1 restored +2026-01-06 19:46:02,589 - app.services.trading_executor - INFO - Strategy 2 loop starting +2026-01-06 19:46:02,589 - app.services.trading_executor - INFO - Strategy 2 started +2026-01-06 19:46:02,589 - app - INFO - [OK] IndicatorStrategy 2 restored +2026-01-06 19:46:02,589 - app - INFO - Strategy restore completed: 2/2 restored +2026-01-06 19:46:02,590 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2026-01-06 19:46:02,594 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2026-01-06 19:46:02,627 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-06 19:46:02,628 - werkzeug - INFO - Press CTRL+C to quit +2026-01-06 19:46:03,174 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:04,485 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:05,480 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:06,493 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:06,954 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:07,021 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-06 19:46:07,035 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2026-01-06 19:46:07,123 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-06 19:46:07,137 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2026-01-06 19:46:07,334 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:07] "POST /api/indicator/verifyCode HTTP/1.1" 200 - +2026-01-06 19:46:07,482 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:07,483 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:08,483 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:08,484 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:08,886 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:09,560 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:09,576 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:10,036 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:10,493 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:10,494 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:10,802 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:11,489 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:11,490 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:12,170 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:12,171 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:13,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:13,488 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:14,177 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:14,177 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:15,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:15,487 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:16,169 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:16,170 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:17,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:17,486 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:18,177 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:18,177 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:19,488 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:19,488 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:20,177 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:20,177 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:21,478 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:21,478 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:22,174 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:22,175 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:23,477 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:23,478 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:24,173 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:24,173 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:25,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:25,488 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:26,173 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:26,173 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:27,486 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:27,486 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:28,168 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:28,169 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:29,479 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:29,479 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:30,178 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:30,178 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:31,478 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:31,478 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:32,177 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:32,178 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:33,477 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:33,478 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:34,178 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:34,179 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:35,482 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:35,482 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:36,179 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:36,180 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:37,477 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:37,478 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:38,171 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:38,172 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:39,481 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:39,482 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:40,178 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:40,179 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:41,483 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:41,484 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:42,179 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:42,179 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:43,477 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:43,477 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:44,178 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:44,178 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:45,495 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:45,495 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:46,179 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:46,180 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:47,474 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:47,475 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:48,169 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:48,169 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:49,478 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:49,478 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:50,179 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:50,179 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:51,491 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:51,491 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:52,172 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:52,172 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:53,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:53,487 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:54,179 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:54,179 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:55,489 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:55,490 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:56,183 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:56,184 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:57,490 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:57,491 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:58,171 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:58,171 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:46:59,481 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:46:59,481 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:46:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:00,179 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:00,180 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:01,481 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:01,482 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:02,177 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:02,178 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:03,477 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:03,478 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:04,171 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:04,171 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:05,490 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:05,490 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:06,176 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:06,177 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:07,489 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:07,489 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:08,180 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:08,180 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:09,489 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:09,490 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:10,172 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:10,172 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:11,487 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:11,487 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:12,169 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:12,169 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:13,489 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:13,490 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:14,186 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:14,186 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:15,331 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:15,332 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:16,570 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:16] "GET /api/market/types?_t=1767700036561 HTTP/1.1" 200 - +2026-01-06 19:47:16,573 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:16] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-06 19:47:16,573 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:16] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-06 19:47:16,632 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-06 19:47:17,297 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:18,464 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:18,465 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:19,455 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:19,456 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:20,460 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:20,460 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:21,454 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:21,454 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:22,464 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:22,464 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:23,757 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:23,758 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:24,451 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:24,452 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:25,771 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:25,771 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:26,460 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:26,460 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:27,769 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:27,769 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:28,450 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:28,450 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:29,766 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:29,767 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:30,457 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:30,458 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:31,759 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:31,759 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:32,459 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:32,460 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:33,768 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:33,768 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:34,450 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:34,450 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:35,771 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:35,771 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:36,455 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:36,455 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:37,761 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:37,762 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:38,454 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:38,455 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:39,770 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:39,771 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:40,460 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:40,460 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:41,761 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:41,761 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:42,458 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:42,459 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:43,760 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:43,760 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:44,462 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:44,462 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:45,776 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:45,777 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:46,463 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:46,463 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:47,768 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:47,769 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:48,464 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:48,465 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:49,756 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:49,757 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:50,451 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:50,452 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:51,761 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:51,761 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:52,453 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:52,454 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:53,769 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:53,770 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:54,453 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:54,454 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:55,763 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:55,764 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:56,460 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:56,460 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:57,767 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:57,768 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:58,449 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:58,450 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:47:59,766 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:47:59,766 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:47:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:00,465 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:00,466 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:01,761 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:01,762 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:02,461 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:02,462 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:03,767 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:03,767 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:04,464 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:04,464 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:05,766 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:05,766 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:06,460 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:06,461 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:07,766 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:07,766 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:08,461 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:08,461 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:09,763 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:09,764 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:10,458 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:10,459 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:11,766 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:11,766 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:12,471 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:12,472 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:13,760 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:13,760 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:14,462 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:14,462 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:15,767 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:15,767 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:16,449 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:16,449 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:17,769 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:17,770 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:18,656 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:18,656 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:19,970 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:19] "GET /api/market/types?_t=1767700099956 HTTP/1.1" 200 - +2026-01-06 19:48:19,972 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:19] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-06 19:48:19,972 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:19] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-06 19:48:20,029 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-06 19:48:20,030 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:21,168 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:21,170 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:22,127 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:22,128 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:23,131 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:23,131 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:24,117 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:24,117 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:25,123 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:25,123 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:26,438 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:26,439 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:27,125 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:27,125 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:28,771 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:28,771 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:29,132 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:29,133 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:30,432 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:30,432 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:31,136 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:31,136 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:32,427 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:32,427 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:33,121 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:33,122 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:34,438 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:34,439 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:35,118 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:35,118 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:36,432 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:36,433 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:37,117 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:37,118 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:38,456 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:38,457 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:39,125 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:39,127 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:40,433 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:40,433 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:41,121 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:41,121 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:42,438 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:42,439 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:43,117 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:43,118 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:44,434 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:44,434 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:45,118 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:45,118 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:46,435 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:46,436 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:47,119 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:47,120 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:48,433 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:48,433 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:49,130 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:49,131 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:50,442 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:50,443 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:51,124 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:51,124 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:52,440 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:52,441 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:53,119 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:53,120 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:54,433 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:54,433 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:55,126 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:55,126 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:56,668 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:56,669 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:57,117 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:57,118 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:58,428 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:58,429 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:48:59,127 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:48:59,128 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:48:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:00,430 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:00,430 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:01,126 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:01,127 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:02,439 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:02,440 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:03,120 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:03,121 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:04,424 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:04,424 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:05,569 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:05,569 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:06,118 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:06,119 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:07,117 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:07,118 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:08,118 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:08,118 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:09,422 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:09,423 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:10,118 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:10,118 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:11,433 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:11,434 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:12,118 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:12,118 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:13,468 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:13,468 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:14,512 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:14,513 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:15,276 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:15,277 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:16,321 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:16] "GET /api/market/types?_t=1767700156303 HTTP/1.1" 200 - +2026-01-06 19:49:16,323 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:16] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-06 19:49:16,325 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:16] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-06 19:49:16,399 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-06 19:49:16,401 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:17,789 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:17,790 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:18,518 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:18,519 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:19,517 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:19,518 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:20,519 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:20,520 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:21,517 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:21,518 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:22,832 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:22,833 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:23,518 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:23,519 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:24,834 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:24,835 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:25,517 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:25,518 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:26,819 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:26,820 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:27,517 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:27,518 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:28,822 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:28,822 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:29,518 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:29,519 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:30,833 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:30,833 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:31,518 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:31,518 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:32,824 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:32,824 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:33,524 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:33,524 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:34,830 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:34,831 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:35,518 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:35,518 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:36,834 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:36,835 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:37,517 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:37,518 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:38,822 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:38,823 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:39,518 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:39,519 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:40,942 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:40,943 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:41,518 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:41,518 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:42,821 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:42,822 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:43,518 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:43,518 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:44,835 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:44,835 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:45,517 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:45,517 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:46,821 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:46,822 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:47,520 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:47,522 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:48,831 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:48,832 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:49,519 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:49,519 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:50,825 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:50,826 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:51,519 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:51,520 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:52,822 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:52,823 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:53,520 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:53,520 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:54,833 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:54,833 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:55,523 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:55,524 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:56,833 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:56,833 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:57,521 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:57,521 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:58,779 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:58] "POST /api/indicator/verifyCode HTTP/1.1" 200 - +2026-01-06 19:49:58,836 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:58,837 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:49:59,519 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:49:59,520 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:49:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:00,830 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:00,831 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:01,519 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:01,519 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:02,836 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:02,837 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:03,519 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:03,519 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:04,823 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:04,824 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:05,519 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:05,520 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:06,823 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:06,823 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:07,624 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:07,625 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:08,825 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:08,826 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:09,524 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:09,525 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:10,518 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:10,519 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:11,520 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:11,521 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:12,823 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:12,823 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:13,521 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:13,521 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:14,837 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:14,837 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:15,519 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:15,520 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:16,848 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:16,849 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:17,798 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:17,799 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:18,519 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:18,520 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:19,520 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:19,520 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:20,521 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:20,522 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:21,821 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:21,822 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:22,519 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:22,520 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:23,822 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:23,822 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:24,521 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:24,521 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:25,825 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:25,826 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:26,519 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:26,520 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:27,824 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:27,824 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:28,517 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:28,518 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:29,829 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:29,830 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:30,519 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:30,520 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:31,824 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:31,824 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:32,519 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:32,520 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:33,836 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:33,837 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:34,518 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:34,518 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:35,829 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:35,829 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:36,520 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:36,521 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:37,825 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:37,826 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:38,520 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:38,521 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:39,826 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:39,827 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:40,520 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:40,520 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:41,826 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:41,826 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:42,520 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:42,521 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:43,824 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:43,825 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:44,520 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:44,520 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:45,829 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:45,830 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:46,520 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:46,520 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:47,827 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:47,828 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:48,521 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:48,521 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:49,828 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:49,828 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:50,520 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:50,520 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:51,832 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:51,833 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:52,523 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:52,524 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:53,823 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:53,823 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:54,520 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:54,521 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:55,838 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:55,838 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:56,520 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:56,521 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:57,821 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:57,822 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:58,521 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:58,522 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:50:59,824 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:50:59,824 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:50:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:00,521 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:00,521 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:01,825 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:01,826 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:02,520 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:02,521 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:03,822 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:03,822 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:04,522 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:04,522 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:05,837 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:05,838 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:06,521 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:06,522 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:07,835 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:07,836 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:08,521 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:08,522 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:09,833 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:09,834 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:10,522 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:10,522 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:11,134 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:11] "POST /api/indicator/verifyCode HTTP/1.1" 200 - +2026-01-06 19:51:11,521 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:11,938 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:12,829 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:12,830 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:13,524 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:13,525 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:15,742 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:15,743 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:15,836 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:15,837 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:16,520 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:16,521 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:17,828 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:17,829 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:18,522 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:18,523 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:19,837 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:19,838 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:20,519 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:20,519 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:21,839 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:21,839 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:22,312 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:22] "POST /api/indicator/verifyCode HTTP/1.1" 200 - +2026-01-06 19:51:22,827 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:22,827 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:23,522 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:23,523 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:24,834 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:24,834 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:25,528 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:25,528 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:25,913 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-06 19:51:26,518 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:26,518 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:27,203 - app.data_sources.base - WARNING - Warning: ETH/USDT data is delayed (25962687s) +2026-01-06 19:51:27,205 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:27,826 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:27,827 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:28,525 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:28,525 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:29,836 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:29,837 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:30,519 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:30,519 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:31,831 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:31,832 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:32,518 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:32,519 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:33,832 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:33,833 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:33,847 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:33] "POST /api/indicator/verifyCode HTTP/1.1" 200 - +2026-01-06 19:51:34,522 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:34,522 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:35,827 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:35,827 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:36,523 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:36,524 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:37,841 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:37,842 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:38,518 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:38,519 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:39,828 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:39,829 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:40,528 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:40,528 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:41,825 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:41,826 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:42,517 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:42,518 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:43,825 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:43,825 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:44,520 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:44,521 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:45,835 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:45,835 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:46,517 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:46,518 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:47,825 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:47,825 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:48,526 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:48,527 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:49,836 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:49,837 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:50,523 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:50,523 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:51,835 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:51,836 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:52,523 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:52,524 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:53,823 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:53,824 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:54,531 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:54,532 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:55,837 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:55,837 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:56,522 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:56,522 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:57,833 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:57,834 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:58,523 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:58,524 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:51:59,829 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:51:59,830 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:51:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:00,525 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:00,525 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:01,833 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:01,834 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:02,516 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:02,516 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:03,823 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:03,824 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:04,525 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:04,526 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:05,830 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:05,830 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:06,524 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:06,525 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:07,834 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:07,835 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:08,525 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:08,525 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:09,832 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:09,832 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:10,524 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:10,525 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:11,826 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:11,827 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:12,524 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:12,524 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:13,824 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:13,824 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:14,523 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:14,523 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:15,836 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:15,836 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:16,523 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:16,524 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:17,836 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:17,837 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:18,519 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:18,519 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:19,835 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:19,836 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:20,518 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:20,518 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:21,826 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:21,827 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:22,518 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:22,518 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:23,824 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:23,825 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:24,526 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:24,527 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:25,836 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:25,837 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:26,519 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:26,520 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:27,833 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:27,834 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:28,525 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:28,525 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:29,828 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:29,829 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:30,530 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:30,531 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:31,840 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:31,840 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:32,525 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:32,525 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:33,824 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:33,825 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:34,523 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:34,524 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:35,843 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:35,843 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:36,523 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:36,524 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:37,833 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:37,834 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:38,528 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:38,529 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:39,830 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:39,831 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:40,521 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:40,522 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:41,844 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:41,845 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:42,525 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:42,526 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:43,834 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:43,835 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:44,528 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:44,529 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:45,838 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:45,839 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:46,523 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:46,523 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:47,829 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:47,829 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:48,527 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:48,528 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:49,829 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:49,830 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:50,526 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:50,527 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:51,831 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:51,831 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:52,521 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:52,522 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:53,845 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:53,846 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:54,521 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:54,523 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:55,842 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:55,843 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:56,527 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:56,528 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:57,833 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:57,833 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:58,529 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:58,529 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:52:59,833 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:52:59,834 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:52:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:00,526 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:00,528 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:01,838 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:01,839 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:02,529 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:02,530 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:03,831 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:03,832 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:04,530 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:04,531 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:05,829 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:05,831 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:06,528 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:06,530 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:07,836 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:07,837 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:08,528 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:08,529 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:09,842 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:09,843 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:10,525 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:10,526 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:11,843 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:11,843 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:12,523 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:12,524 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:13,827 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:13,827 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:14,527 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:14,527 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:15,835 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:15,835 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:16,521 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:16,522 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:17,835 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:17,836 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:18,527 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:18,527 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:19,831 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:19,832 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:20,521 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:20,522 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:21,824 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:21,824 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:22,522 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:22,523 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:23,834 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:23,835 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:24,530 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:24,530 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:25,832 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:25,832 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:26,529 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:26,529 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:27,582 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3237.69, pending_signals=1 +2026-01-06 19:53:27,585 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3237.69, 'position_size': 0, 'timestamp': 1767700380}] +2026-01-06 19:53:27,847 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:27,847 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:28,523 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:28,524 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:29,832 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:29,832 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:30,530 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:30,531 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:31,889 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:31,890 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:33,422 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:33,422 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:34,726 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:34,727 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:35,414 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:35,414 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:36,722 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:36,723 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:37,126 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3237.69, pending_signals=1 +2026-01-06 19:53:37,128 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3237.69, 'position_size': 0, 'timestamp': 1767700380}] +2026-01-06 19:53:37,423 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:37,423 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:38,715 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:38,716 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:39,543 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:39,544 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:40,727 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:40,728 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:41,421 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:41,422 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:42,718 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:42,718 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:43,417 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:43,418 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:44,725 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:44,726 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:45,408 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:45,409 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:46,730 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:46,731 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:47,417 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:47,417 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:47,878 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3237.6, pending_signals=1 +2026-01-06 19:53:47,880 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3237.6, 'position_size': 0, 'timestamp': 1767700380}] +2026-01-06 19:53:48,714 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:48,715 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:49,416 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:49,416 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:50,717 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:50,717 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:51,407 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:51,408 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:52,716 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:52,716 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:53,416 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:53,416 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:54,723 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:54,724 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:55,419 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:55,420 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:56,722 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:56,722 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:57,126 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3237.6, pending_signals=1 +2026-01-06 19:53:57,128 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3237.6, 'position_size': 0, 'timestamp': 1767700380}] +2026-01-06 19:53:57,409 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:57,410 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:58,717 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:58,717 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:53:59,421 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:53:59,421 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:53:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:54:00,729 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:54:00,730 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:54:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:54:01,409 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:54:01,410 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:54:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:54:02,720 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:54:02,720 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:54:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:54:03,406 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:54:03,407 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:54:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:54:04,717 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:54:04,717 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:54:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:54:05,411 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:54:05,411 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:54:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:54:06,727 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:54:06,728 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:54:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:54:07,408 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:54:07,409 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:54:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:54:08,730 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:54:08,731 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:54:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:54:09,417 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:54:09,417 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:54:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:54:10,727 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:54:10,728 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:54:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:54:11,409 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:54:11,410 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:54:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:54:12,727 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:54:12,727 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:54:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:54:13,424 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:54:13,425 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:54:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:54:14,723 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:54:14,723 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:54:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:54:15,410 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:54:15,411 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:54:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:54:16,727 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:54:16,727 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:54:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:54:17,411 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:54:17,412 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:54:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:54:18,716 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:54:18,717 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:54:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:54:19,415 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:54:19,416 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:54:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:54:20,721 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:54:20,722 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:54:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:54:21,420 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:54:21,421 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:54:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:54:22,715 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:54:22,715 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:54:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:54:23,418 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:54:23,419 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:54:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:54:24,719 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:54:24,720 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:54:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:54:25,418 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:54:25,419 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:54:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:54:26,728 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:54:26,728 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:54:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:54:27,412 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:54:27,412 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:54:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:54:28,722 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:54:28,722 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:54:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:54:29,408 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:54:29,409 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:54:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:54:30,728 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:54:30,728 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:54:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:54:31,422 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:54:31,425 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:54:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:55:08,771 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=93828.4, pending_signals=2 +2026-01-06 19:55:08,774 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 93828.4, 'position_size': 0, 'timestamp': 1767700440}, {'type': 'open_short', 'trigger_price': 93828.4, 'position_size': 0.08, 'timestamp': 1767700440}] +2026-01-06 19:55:08,935 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-06 19:55:08,935 - app.services.analysis - INFO - Starting analysis Crypto:BTC/USDT, language=zh-CN, mode=multi-agent +2026-01-06 19:55:08,935 - app.services.analysis - INFO - Run coordinator: Crypto:BTC/USDT +2026-01-06 19:55:08,935 - app.services.agents.coordinator - INFO - Multi-agent analysis start: Crypto:BTC/USDT, model=None, language=zh-CN +2026-01-06 19:55:10,006 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-06 19:55:12,753 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-06 19:55:12,754 - app.services.agents.tools - WARNING - Finnhub news fetch failed: 'Client' object has no attribute 'crypto_news' +2026-01-06 19:55:12,755 - app.services.agents.tools - INFO - Running news search: "BTC/USDT Cryptocurrency" BTC/USDT crypto news analysis +2026-01-06 19:55:15,339 - app.services.search - WARNING - Google Search returned no 'items'. Full response: {"kind": "customsearch#search", "url": {"type": "application/json", "template": "https://www.googleapis.com/customsearch/v1?q={searchTerms}&num={count?}&start={startIndex?}&lr={language?}&safe={safe?}&cx={cx?}&sort={sort?}&filter={filter?}&gl={gl?}&cr={cr?}&googlehost={googleHost?}&c2coff={disableCnTwTranslation?}&hq={hq?}&hl={hl?}&siteSearch={siteSearch?}&siteSearchFilter={siteSearchFilter?}&exactTerms={exactTerms?}&excludeTerms={excludeTerms?}&linkSite={linkSite?}&orTerms={orTerms?}&dateRestrict={dateRestrict?}&lowRange={lowRange?}&highRange={highRange?}&searchType={searchType}&fileType={fileType?}&rights={rights?}&imgSize={imgSize?}&imgType={imgType?}&imgColorType={imgColorType?}&imgDominantColor={imgDominantColor?}&alt=json"}, "queries": {"request": [{"title": "Google Custom Search - \"BTC/USDT Cryptocurrency\" BTC/USDT crypto news analysis", "searchTerms": "\"BTC/USDT Cryptocurrency\" BTC/USDT crypto news analysis", "count": 10, "startIndex": 1, "inputEncoding": "utf8", "outputEncoding": "utf8", "safe": "off", "cx": "17f675b8e3b994281", "dateRestrict": "d7"}]}, "context": {"title": "Global News Search"}, "searchInformation": {"searchTime": 0.228155, "formattedSearchTime": "0.23", "totalResults": "0", "formattedTotalResults": "0"}} +2026-01-06 19:55:15,340 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-06 19:55:16,761 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-06 19:55:16,802 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-06 19:55:16,923 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-06 19:55:16,973 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-06 19:55:16,990 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-06 19:55:18,526 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-06 19:55:19,901 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-06 19:55:22,725 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-06 19:55:22,725 - werkzeug - INFO - 127.0.0.1 - - [06/Jan/2026 19:55:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-06 19:55:23,407 - app.services.llm - INFO - Fallback model succeeded: openai/gpt-4o-mini +2026-01-06 19:55:23,902 - app.services.llm - INFO - Fallback model succeeded: openai/gpt-4o-mini +2026-01-06 19:55:24,716 - app.services.llm - INFO - Fallback model succeeded: openai/gpt-4o-mini +2026-01-06 19:55:24,772 - app.services.llm - INFO - Fallback model succeeded: openai/gpt-4o-mini +2026-01-06 19:55:27,657 - app.services.llm - INFO - Fallback model succeeded: openai/gpt-4o-mini +2026-01-06 19:55:27,659 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-06 19:55:28,638 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-06 19:55:29,059 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-06 19:55:36,991 - app.services.llm - INFO - Fallback model succeeded: openai/gpt-4o-mini +2026-01-06 19:55:41,855 - app.services.llm - INFO - Fallback model succeeded: openai/gpt-4o-mini +2026-01-06 19:55:41,856 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-06 19:55:43,415 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:02:56,588 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-11 21:02:56,588 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-11 21:02:56,596 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-11 21:02:57,099 - app.services.strategy - INFO - Found 2 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}] +2026-01-11 21:02:57,099 - app - INFO - Restoring 2 running strategies... +2026-01-11 21:02:57,099 - app.services.trading_executor - INFO - Strategy 1 loop starting +2026-01-11 21:02:57,099 - app.services.trading_executor - INFO - Strategy 1 started +2026-01-11 21:02:57,099 - app - INFO - [OK] IndicatorStrategy 1 restored +2026-01-11 21:02:57,100 - app.services.trading_executor - INFO - Strategy 2 loop starting +2026-01-11 21:02:57,100 - app.services.trading_executor - INFO - Strategy 2 started +2026-01-11 21:02:57,100 - app - INFO - [OK] IndicatorStrategy 2 restored +2026-01-11 21:02:57,100 - app - INFO - Strategy restore completed: 2/2 restored +2026-01-11 21:02:57,100 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2026-01-11 21:02:57,101 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2026-01-11 21:02:57,130 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-11 21:02:57,130 - werkzeug - INFO - Press CTRL+C to quit +2026-01-11 21:03:01,538 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-11 21:03:01,552 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2026-01-11 21:03:01,706 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-11 21:03:01,718 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2026-01-11 21:03:25,087 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:03:25] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768136605065 HTTP/1.1" 200 - +2026-01-11 21:03:25,088 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:03:25] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768136605065 HTTP/1.1" 200 - +2026-01-11 21:03:25,090 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:03:25] "GET /api/dashboard/summary?_t=1768136605065 HTTP/1.1" 200 - +2026-01-11 21:03:30,170 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:03:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768136610025 HTTP/1.1" 200 - +2026-01-11 21:03:30,268 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:03:30] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-11 21:03:30,424 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:03:30] "GET /api/market/config?_t=1768136610250 HTTP/1.1" 200 - +2026-01-11 21:03:30,604 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:03:30] "GET /api/market/types?_t=1768136610436 HTTP/1.1" 200 - +2026-01-11 21:03:30,749 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-11 21:03:30,749 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-11 21:03:30,749 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-11 21:03:30,750 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-11 21:03:30,751 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-11 21:03:31,691 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:03:31] "GET /api/market/types?_t=1768136611671 HTTP/1.1" 200 - +2026-01-11 21:03:31,698 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:03:31] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-11 21:03:31,784 - app.data_sources.base - WARNING - Warning: 000858 data is delayed (248612s) +2026-01-11 21:03:31,853 - app.data_sources.base - WARNING - Warning: 00700 data is delayed (248612s) +2026-01-11 21:03:31,965 - app.data_sources.base - WARNING - Warning: 300475 data is delayed (248612s) +2026-01-11 21:03:32,005 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:03:32] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-11 21:03:32,052 - app.data_sources.base - WARNING - Warning: 600519 data is delayed (248612s) +2026-01-11 21:03:32,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-11 21:03:32,507 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:03:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-11 21:03:32,742 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (201813s) +2026-01-11 21:03:32,743 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:03:32] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-11 21:03:42,025 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90935.1, pending_signals=1 +2026-01-11 21:03:42,028 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90935.1, 'position_size': 0, 'timestamp': 1768136580}] +2026-01-11 21:03:43,749 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:03:43] "GET /api/strategies?_t=1768136623738 HTTP/1.1" 200 - +2026-01-11 21:03:44,855 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:03:44] "GET /api/strategies/equityCurve?id=9&_t=1768136624838 HTTP/1.1" 200 - +2026-01-11 21:03:45,221 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:03:45] "GET /api/strategies/positions?id=9&_t=1768136624841 HTTP/1.1" 200 - +2026-01-11 21:03:45,221 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:03:45] "GET /api/strategies/equityCurve?id=9&_t=1768136624838 HTTP/1.1" 200 - +2026-01-11 21:03:47,834 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:03:47] "GET /api/strategies/equityCurve?id=9&_t=1768136627508 HTTP/1.1" 200 - +2026-01-11 21:03:47,834 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:03:47] "GET /api/strategies/equityCurve?id=9&_t=1768136627508 HTTP/1.1" 200 - +2026-01-11 21:03:49,848 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:03:49] "GET /api/strategies/positions?id=9&_t=1768136629840 HTTP/1.1" 200 - +2026-01-11 21:03:51,574 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90935.1, pending_signals=1 +2026-01-11 21:03:51,577 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90935.1, 'position_size': 0, 'timestamp': 1768136580}] +2026-01-11 21:03:55,164 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:03:55] "GET /api/strategies/positions?id=9&_t=1768136634841 HTTP/1.1" 200 - +2026-01-11 21:03:59,844 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:03:59] "GET /api/strategies/positions?id=9&_t=1768136639836 HTTP/1.1" 200 - +2026-01-11 21:04:02,474 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90932.8, pending_signals=2 +2026-01-11 21:04:02,477 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90932.8, 'position_size': 0, 'timestamp': 1768136580}, {'type': 'open_short', 'trigger_price': 90932.8, 'position_size': 0.08, 'timestamp': 1768136580}] +2026-01-11 21:04:02,501 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-11 21:04:02,501 - app.services.analysis - INFO - Starting analysis Crypto:BTC/USDT, language=zh-CN, mode=multi-agent +2026-01-11 21:04:02,501 - app.services.analysis - INFO - Run coordinator: Crypto:BTC/USDT +2026-01-11 21:04:02,501 - app.services.agents.coordinator - INFO - Multi-agent analysis start: Crypto:BTC/USDT, model=None, language=zh-CN +2026-01-11 21:04:03,660 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 21:04:05,157 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:04:05] "GET /api/strategies/positions?id=9&_t=1768136644841 HTTP/1.1" 200 - +2026-01-11 21:04:06,424 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 21:04:06,426 - app.services.agents.tools - WARNING - Finnhub news fetch failed: 'Client' object has no attribute 'crypto_news' +2026-01-11 21:04:06,426 - app.services.agents.tools - INFO - Running news search: "BTC/USDT Cryptocurrency" BTC/USDT crypto news analysis +2026-01-11 21:04:07,519 - app.services.agents.tools - INFO - Deep reading: Bitcoin Vs Tether Comparison - BTC/USDT Cryptocurrency ... +2026-01-11 21:04:09,844 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:04:09] "GET /api/strategies/positions?id=9&_t=1768136649836 HTTP/1.1" 200 - +2026-01-11 21:04:15,161 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:04:15] "GET /api/strategies/positions?id=9&_t=1768136654841 HTTP/1.1" 200 - +2026-01-11 21:04:17,518 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:04:17] "GET /api/strategies/equityCurve?id=9&_t=1768136657509 HTTP/1.1" 200 - +2026-01-11 21:04:20,165 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:04:20] "GET /api/strategies/positions?id=9&_t=1768136659844 HTTP/1.1" 200 - +2026-01-11 21:04:23,115 - app.services.agents.tools - WARNING - Jina Reader content fetch failed https://walletinvestor.com/compare/bitcoin-vs-tether: SOCKSHTTPSConnectionPool(host='r.jina.ai', port=443): Read timed out. (read timeout=15) +2026-01-11 21:04:23,115 - app.services.agents.tools - INFO - Deep reading: Fxnl Trading Review | TikTok +2026-01-11 21:04:24,847 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:04:24] "GET /api/strategies/positions?id=9&_t=1768136664839 HTTP/1.1" 200 - +2026-01-11 21:04:30,151 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:04:30] "GET /api/strategies/positions?id=9&_t=1768136669842 HTTP/1.1" 200 - +2026-01-11 21:04:32,022 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-11 21:04:33,130 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:04:33,137 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:04:33,144 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:04:33,147 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:04:33,376 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 21:04:34,204 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:04:34,204 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:04:34,204 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:04:34,207 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:04:34,207 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:04:34,207 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:04:34,318 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 21:04:34,686 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:04:34,686 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:04:34,686 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:04:34,764 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:04:34,765 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:04:34,765 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:04:34,850 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:04:34] "GET /api/strategies/positions?id=9&_t=1768136674842 HTTP/1.1" 200 - +2026-01-11 21:04:35,215 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:04:36,420 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:04:36,420 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:04:36,420 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:04:36,422 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-11 21:04:37,715 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:04:37,728 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:04:38,688 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:04:38,688 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:04:38,689 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:04:38,921 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:04:38] "GET /api/strategies/equityCurve?id=9&_t=1768136678603 HTTP/1.1" 200 - +2026-01-11 21:04:38,921 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:04:38] "GET /api/strategies/equityCurve?id=9&_t=1768136678603 HTTP/1.1" 200 - +2026-01-11 21:04:38,986 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:04:38,986 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:04:38,986 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:04:38,987 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-11 21:04:39,846 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:04:39] "GET /api/strategies/positions?id=9&_t=1768136679837 HTTP/1.1" 200 - +2026-01-11 21:04:40,615 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:04:41,796 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:04:41,796 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:04:41,796 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:04:41,797 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-11 21:04:43,053 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:04:43,069 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:04:43,107 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:04:44,071 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:04:44,071 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:04:44,071 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:04:44,095 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:04:44,095 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:04:44,096 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:04:44,128 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:04:44,128 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:04:44,128 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:04:44,130 - app.services.agents.coordinator - WARNING - Record reflection failed: 'NoneType' object has no attribute 'get' +2026-01-11 21:04:44,130 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: Crypto:BTC/USDT +2026-01-11 21:04:44,131 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-11 21:04:44,131 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-11 21:04:44,138 - app.services.trading_executor - INFO - AI entry filter rejected: strategy_id=2 symbol=BTC/USDT signal=open_short ai=HOLD reason=ai_hold +2026-01-11 21:04:44,139 - app.services.trading_executor - WARNING - Strategy 2 signal rejected/failed: open_short +2026-01-11 21:04:44,597 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90932.8, pending_signals=2 +2026-01-11 21:04:44,599 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90932.8, 'position_size': 0, 'timestamp': 1768136580}, {'type': 'open_short', 'trigger_price': 90932.8, 'position_size': 0.08, 'timestamp': 1768136580}] +2026-01-11 21:04:45,167 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:04:45] "GET /api/strategies/positions?id=9&_t=1768136684843 HTTP/1.1" 200 - +2026-01-11 21:04:49,850 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:04:49] "GET /api/strategies/positions?id=9&_t=1768136689843 HTTP/1.1" 200 - +2026-01-11 21:04:54,155 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90932.8, pending_signals=2 +2026-01-11 21:04:54,157 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90932.8, 'position_size': 0, 'timestamp': 1768136580}, {'type': 'open_short', 'trigger_price': 90932.8, 'position_size': 0.08, 'timestamp': 1768136580}] +2026-01-11 21:04:55,164 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:04:55] "GET /api/strategies/positions?id=9&_t=1768136694843 HTTP/1.1" 200 - +2026-01-11 21:04:59,848 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:04:59] "GET /api/strategies/positions?id=9&_t=1768136699840 HTTP/1.1" 200 - +2026-01-11 21:05:05,161 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:05:05] "GET /api/strategies/positions?id=9&_t=1768136704843 HTTP/1.1" 200 - +2026-01-11 21:05:08,619 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:05:08] "GET /api/strategies/equityCurve?id=9&_t=1768136708610 HTTP/1.1" 200 - +2026-01-11 21:05:10,158 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:05:10] "GET /api/strategies/positions?id=9&_t=1768136709844 HTTP/1.1" 200 - +2026-01-11 21:05:14,851 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:05:14] "GET /api/strategies/positions?id=9&_t=1768136714844 HTTP/1.1" 200 - +2026-01-11 21:05:20,152 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:05:20] "GET /api/strategies/positions?id=9&_t=1768136719838 HTTP/1.1" 200 - +2026-01-11 21:05:24,853 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:05:24] "GET /api/strategies/positions?id=9&_t=1768136724844 HTTP/1.1" 200 - +2026-01-11 21:05:30,159 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:05:30] "GET /api/strategies/positions?id=9&_t=1768136729844 HTTP/1.1" 200 - +2026-01-11 21:05:34,843 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:05:34] "GET /api/strategies/positions?id=9&_t=1768136734836 HTTP/1.1" 200 - +2026-01-11 21:05:38,930 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:05:38] "GET /api/strategies/equityCurve?id=9&_t=1768136738611 HTTP/1.1" 200 - +2026-01-11 21:05:39,850 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:05:39] "GET /api/strategies/positions?id=9&_t=1768136739842 HTTP/1.1" 200 - +2026-01-11 21:05:40,730 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:05:40] "GET /api/strategies/positions?id=1&_t=1768136740412 HTTP/1.1" 200 - +2026-01-11 21:05:40,731 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:05:40] "GET /api/strategies/equityCurve?id=1&_t=1768136740405 HTTP/1.1" 200 - +2026-01-11 21:05:40,733 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:05:40] "GET /api/strategies/equityCurve?id=1&_t=1768136740405 HTTP/1.1" 200 - +2026-01-11 21:05:45,419 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:05:45] "GET /api/strategies/positions?id=1&_t=1768136745412 HTTP/1.1" 200 - +2026-01-11 21:05:50,728 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:05:50] "GET /api/strategies/positions?id=1&_t=1768136750412 HTTP/1.1" 200 - +2026-01-11 21:05:55,420 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:05:55] "GET /api/strategies/positions?id=1&_t=1768136755412 HTTP/1.1" 200 - +2026-01-11 21:06:00,721 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:06:00] "GET /api/strategies/positions?id=1&_t=1768136760406 HTTP/1.1" 200 - +2026-01-11 21:06:05,425 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:06:05] "GET /api/strategies/positions?id=1&_t=1768136765418 HTTP/1.1" 200 - +2026-01-11 21:06:10,729 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:06:10] "GET /api/strategies/positions?id=1&_t=1768136770413 HTTP/1.1" 200 - +2026-01-11 21:06:10,730 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:06:10] "GET /api/strategies/equityCurve?id=1&_t=1768136770413 HTTP/1.1" 200 - +2026-01-11 21:06:15,420 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:06:15] "GET /api/strategies/positions?id=1&_t=1768136775412 HTTP/1.1" 200 - +2026-01-11 21:06:20,730 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:06:20] "GET /api/strategies/positions?id=1&_t=1768136780413 HTTP/1.1" 200 - +2026-01-11 21:06:25,419 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:06:25] "GET /api/strategies/positions?id=1&_t=1768136785411 HTTP/1.1" 200 - +2026-01-11 21:06:30,735 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:06:30] "GET /api/strategies/positions?id=1&_t=1768136790413 HTTP/1.1" 200 - +2026-01-11 21:06:35,420 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:06:35] "GET /api/strategies/positions?id=1&_t=1768136795412 HTTP/1.1" 200 - +2026-01-11 21:06:40,719 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:06:40] "GET /api/strategies/equityCurve?id=1&_t=1768136800400 HTTP/1.1" 200 - +2026-01-11 21:06:40,725 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:06:40] "GET /api/strategies/positions?id=1&_t=1768136800414 HTTP/1.1" 200 - +2026-01-11 21:06:45,419 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:06:45] "GET /api/strategies/positions?id=1&_t=1768136805411 HTTP/1.1" 200 - +2026-01-11 21:06:50,732 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:06:50] "GET /api/strategies/positions?id=1&_t=1768136810414 HTTP/1.1" 200 - +2026-01-11 21:06:56,326 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:06:56] "GET /api/strategies/positions?id=1&_t=1768136816319 HTTP/1.1" 200 - +2026-01-11 21:07:01,411 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:07:01] "GET /api/strategies/positions?id=1&_t=1768136821312 HTTP/1.1" 200 - +2026-01-11 21:07:01,716 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:07:01] "GET /api/strategies?_t=1768136821708 HTTP/1.1" 200 - +2026-01-11 21:07:16,827 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:07:16] "GET /api/strategies?_t=1768136836814 HTTP/1.1" 200 - +2026-01-11 21:13:01,308 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:13:01] "GET /api/strategies/positions?id=9&_t=1768137180988 HTTP/1.1" 200 - +2026-01-11 21:13:01,309 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:13:01] "GET /api/strategies/equityCurve?id=9&_t=1768137180983 HTTP/1.1" 200 - +2026-01-11 21:13:01,317 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:13:01] "GET /api/strategies/equityCurve?id=9&_t=1768137180983 HTTP/1.1" 200 - +2026-01-11 21:13:03,302 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:13:03] "GET /api/strategies/equityCurve?id=2&_t=1768137183284 HTTP/1.1" 200 - +2026-01-11 21:13:03,608 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:13:03] "GET /api/strategies/positions?id=2&_t=1768137183290 HTTP/1.1" 200 - +2026-01-11 21:13:03,608 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:13:03] "GET /api/strategies/equityCurve?id=2&_t=1768137183284 HTTP/1.1" 200 - +2026-01-11 21:13:08,602 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:13:08] "GET /api/strategies/positions?id=2&_t=1768137188285 HTTP/1.1" 200 - +2026-01-11 21:13:13,292 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:13:13] "GET /api/strategies/positions?id=2&_t=1768137193285 HTTP/1.1" 200 - +2026-01-11 21:13:18,614 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:13:18] "GET /api/strategies/positions?id=2&_t=1768137198296 HTTP/1.1" 200 - +2026-01-11 21:13:23,303 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:13:23] "GET /api/strategies/positions?id=2&_t=1768137203295 HTTP/1.1" 200 - +2026-01-11 21:13:28,611 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:13:28] "GET /api/strategies/positions?id=2&_t=1768137208291 HTTP/1.1" 200 - +2026-01-11 21:13:33,298 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:13:33] "GET /api/strategies/equityCurve?id=2&_t=1768137213290 HTTP/1.1" 200 - +2026-01-11 21:13:33,600 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:13:33] "GET /api/strategies/positions?id=2&_t=1768137213290 HTTP/1.1" 200 - +2026-01-11 21:13:38,611 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:13:38] "GET /api/strategies/positions?id=2&_t=1768137218296 HTTP/1.1" 200 - +2026-01-11 21:13:43,292 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:13:43] "GET /api/strategies/positions?id=2&_t=1768137223285 HTTP/1.1" 200 - +2026-01-11 21:13:48,603 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:13:48] "GET /api/strategies/positions?id=2&_t=1768137228286 HTTP/1.1" 200 - +2026-01-11 21:13:53,301 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:13:53] "GET /api/strategies/positions?id=2&_t=1768137233292 HTTP/1.1" 200 - +2026-01-11 21:13:58,603 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:13:58] "GET /api/strategies/positions?id=2&_t=1768137238287 HTTP/1.1" 200 - +2026-01-11 21:14:03,291 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:14:03] "GET /api/strategies/equityCurve?id=2&_t=1768137243280 HTTP/1.1" 200 - +2026-01-11 21:14:03,618 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:14:03] "GET /api/strategies/positions?id=2&_t=1768137243293 HTTP/1.1" 200 - +2026-01-11 21:14:08,294 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:14:08] "GET /api/strategies/positions?id=2&_t=1768137248287 HTTP/1.1" 200 - +2026-01-11 21:14:13,604 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:14:13] "GET /api/strategies/positions?id=2&_t=1768137253291 HTTP/1.1" 200 - +2026-01-11 21:14:18,298 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:14:18] "GET /api/strategies/positions?id=2&_t=1768137258288 HTTP/1.1" 200 - +2026-01-11 21:14:23,612 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:14:23] "GET /api/strategies/positions?id=2&_t=1768137263296 HTTP/1.1" 200 - +2026-01-11 21:14:28,303 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:14:28] "GET /api/strategies/positions?id=2&_t=1768137268295 HTTP/1.1" 200 - +2026-01-11 21:14:33,603 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:14:33] "GET /api/strategies/positions?id=2&_t=1768137273287 HTTP/1.1" 200 - +2026-01-11 21:14:33,604 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:14:33] "GET /api/strategies/equityCurve?id=2&_t=1768137273281 HTTP/1.1" 200 - +2026-01-11 21:14:38,297 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:14:38] "GET /api/strategies/positions?id=2&_t=1768137278289 HTTP/1.1" 200 - +2026-01-11 21:14:43,601 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:14:43] "GET /api/strategies/positions?id=2&_t=1768137283289 HTTP/1.1" 200 - +2026-01-11 21:14:48,299 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:14:48] "GET /api/strategies/positions?id=2&_t=1768137288292 HTTP/1.1" 200 - +2026-01-11 21:14:53,611 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:14:53] "GET /api/strategies/positions?id=2&_t=1768137293298 HTTP/1.1" 200 - +2026-01-11 21:14:58,297 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:14:58] "GET /api/strategies/positions?id=2&_t=1768137298291 HTTP/1.1" 200 - +2026-01-11 21:15:03,602 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:15:03] "GET /api/strategies/positions?id=2&_t=1768137303285 HTTP/1.1" 200 - +2026-01-11 21:15:03,603 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:15:03] "GET /api/strategies/equityCurve?id=2&_t=1768137303282 HTTP/1.1" 200 - +2026-01-11 21:15:08,300 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:15:08] "GET /api/strategies/positions?id=2&_t=1768137308292 HTTP/1.1" 200 - +2026-01-11 21:15:13,614 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:15:13] "GET /api/strategies/positions?id=2&_t=1768137313296 HTTP/1.1" 200 - +2026-01-11 21:15:18,296 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:15:18] "GET /api/strategies/positions?id=2&_t=1768137318289 HTTP/1.1" 200 - +2026-01-11 21:15:23,604 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:15:23] "GET /api/strategies/positions?id=2&_t=1768137323290 HTTP/1.1" 200 - +2026-01-11 21:15:28,305 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:15:28] "GET /api/strategies/positions?id=2&_t=1768137328296 HTTP/1.1" 200 - +2026-01-11 21:15:33,595 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:15:33] "GET /api/strategies/equityCurve?id=2&_t=1768137333283 HTTP/1.1" 200 - +2026-01-11 21:15:33,602 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:15:33] "GET /api/strategies/positions?id=2&_t=1768137333294 HTTP/1.1" 200 - +2026-01-11 21:15:38,292 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:15:38] "GET /api/strategies/positions?id=2&_t=1768137338285 HTTP/1.1" 200 - +2026-01-11 21:15:43,601 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:15:43] "GET /api/strategies/positions?id=2&_t=1768137343285 HTTP/1.1" 200 - +2026-01-11 21:15:48,303 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:15:48] "GET /api/strategies/positions?id=2&_t=1768137348296 HTTP/1.1" 200 - +2026-01-11 21:15:53,617 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:15:53] "GET /api/strategies/positions?id=2&_t=1768137353297 HTTP/1.1" 200 - +2026-01-11 21:15:58,296 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:15:58] "GET /api/strategies/positions?id=2&_t=1768137358289 HTTP/1.1" 200 - +2026-01-11 21:15:59,481 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:15:59] "GET /api/settings/schema?_t=1768137359470 HTTP/1.1" 200 - +2026-01-11 21:15:59,696 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:15:59] "GET /api/settings/values?_t=1768137359470 HTTP/1.1" 200 - +2026-01-11 21:16:05,144 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90971.9, pending_signals=2 +2026-01-11 21:16:05,148 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 90971.8, 'position_size': 0.08, 'timestamp': 1768137300}, {'type': 'close_short', 'trigger_price': 90971.8, 'position_size': 0, 'timestamp': 1768137300}] +2026-01-11 21:16:05,159 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-11 21:16:05,159 - app.services.analysis - INFO - Starting analysis Crypto:BTC/USDT, language=zh-CN, mode=multi-agent +2026-01-11 21:16:05,159 - app.services.analysis - INFO - Run coordinator: Crypto:BTC/USDT +2026-01-11 21:16:05,159 - app.services.agents.coordinator - INFO - Multi-agent analysis start: Crypto:BTC/USDT, model=None, language=zh-CN +2026-01-11 21:16:06,057 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 21:16:09,188 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 21:16:09,189 - app.services.agents.tools - WARNING - Finnhub news fetch failed: 'Client' object has no attribute 'crypto_news' +2026-01-11 21:16:09,189 - app.services.agents.tools - INFO - Running news search: "BTC/USDT Cryptocurrency" BTC/USDT crypto news analysis +2026-01-11 21:16:10,536 - app.services.agents.tools - INFO - Deep reading: Bitcoin Vs Tether Comparison - BTC/USDT Cryptocurrency ... +2026-01-11 21:16:11,721 - app.services.agents.tools - INFO - Deep reading: Fxnl Trading Review | TikTok +2026-01-11 21:16:12,942 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-11 21:16:14,415 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:16:14,433 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:16:14,524 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 21:16:14,820 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:16:15,371 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:16:15,526 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 21:16:15,720 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:16:15,720 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:16:15,720 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:16:16,045 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:16:16,045 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:16:16,045 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:16:16,400 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:16:16,400 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:16:16,400 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:16:16,588 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:16:16,588 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:16:16,589 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:16:17,336 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:16:18,809 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:16:18,810 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:16:18,810 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:16:18,812 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-11 21:16:20,071 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:16:20,309 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:16:21,281 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:16:21,281 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:16:21,282 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:16:22,388 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:16:22,389 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:16:22,389 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:16:22,390 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-11 21:16:23,819 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:16:25,260 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:16:25,260 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:16:25,260 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:16:25,261 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-11 21:16:27,105 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:16:27,336 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:16:27,340 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:16:28,602 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:16:28,603 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:16:28,603 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:16:28,830 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:16:28,831 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:16:28,831 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:16:29,075 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:16:29,075 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:16:29,076 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:16:29,077 - app.services.agents.coordinator - WARNING - Record reflection failed: 'NoneType' object has no attribute 'get' +2026-01-11 21:16:29,077 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: Crypto:BTC/USDT +2026-01-11 21:16:29,077 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-11 21:16:29,078 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-11 21:16:29,086 - app.services.trading_executor - INFO - AI entry filter rejected: strategy_id=2 symbol=BTC/USDT signal=open_long ai=HOLD reason=ai_hold +2026-01-11 21:16:29,087 - app.services.trading_executor - WARNING - Strategy 2 signal rejected/failed: open_long +2026-01-11 21:16:29,549 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90971.9, pending_signals=2 +2026-01-11 21:16:29,550 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 90971.8, 'position_size': 0.08, 'timestamp': 1768137300}, {'type': 'close_short', 'trigger_price': 90971.8, 'position_size': 0, 'timestamp': 1768137300}] +2026-01-11 21:16:39,103 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90971.9, pending_signals=2 +2026-01-11 21:16:39,105 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 90971.8, 'position_size': 0.08, 'timestamp': 1768137300}, {'type': 'close_short', 'trigger_price': 90971.8, 'position_size': 0, 'timestamp': 1768137300}] +2026-01-11 21:16:49,551 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90971.8, pending_signals=2 +2026-01-11 21:16:49,554 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 90971.8, 'position_size': 0.08, 'timestamp': 1768137300}, {'type': 'close_short', 'trigger_price': 90971.8, 'position_size': 0, 'timestamp': 1768137300}] +2026-01-11 21:16:59,106 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90971.8, pending_signals=2 +2026-01-11 21:16:59,108 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 90971.8, 'position_size': 0.08, 'timestamp': 1768137300}, {'type': 'close_short', 'trigger_price': 90971.8, 'position_size': 0, 'timestamp': 1768137300}] +2026-01-11 21:19:19,487 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:19:19] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768137559167 HTTP/1.1" 200 - +2026-01-11 21:19:19,488 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:19:19] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768137559167 HTTP/1.1" 200 - +2026-01-11 21:19:19,489 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:19:19] "GET /api/dashboard/summary?_t=1768137559167 HTTP/1.1" 200 - +2026-01-11 21:19:24,164 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:19:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768137564153 HTTP/1.1" 200 - +2026-01-11 21:19:29,461 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:19:29] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768137569140 HTTP/1.1" 200 - +2026-01-11 21:19:34,153 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:19:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768137574143 HTTP/1.1" 200 - +2026-01-11 21:19:34,631 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:19:34] "GET /api/market/config?_t=1768137574304 HTTP/1.1" 200 - +2026-01-11 21:19:34,632 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:19:34] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-11 21:19:34,889 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:19:34] "GET /api/market/types?_t=1768137574640 HTTP/1.1" 200 - +2026-01-11 21:19:34,963 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (202775s) +2026-01-11 21:19:35,407 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:19:35] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-11 21:19:35,867 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:19:35] "GET /api/market/types?_t=1768137575393 HTTP/1.1" 200 - +2026-01-11 21:19:35,867 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-11 21:19:35,869 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:19:35] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-11 21:19:35,925 - app.data_sources.base - WARNING - Warning: 600519 data is delayed (249576s) +2026-01-11 21:19:35,963 - app.data_sources.base - WARNING - Warning: 000858 data is delayed (249576s) +2026-01-11 21:19:36,067 - app.data_sources.base - WARNING - Warning: 00700 data is delayed (249576s) +2026-01-11 21:19:36,989 - app.data_sources.base - WARNING - Warning: 300475 data is delayed (249577s) +2026-01-11 21:19:37,256 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:19:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-11 21:19:37,377 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:19:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-11 21:19:39,759 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:19:39] "GET /api/strategies?_t=1768137579448 HTTP/1.1" 200 - +2026-01-11 21:19:40,535 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:19:40] "GET /api/strategies/equityCurve?id=9&_t=1768137580518 HTTP/1.1" 200 - +2026-01-11 21:19:40,919 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:19:40] "GET /api/strategies/positions?id=9&_t=1768137580523 HTTP/1.1" 200 - +2026-01-11 21:19:40,920 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:19:40] "GET /api/strategies/equityCurve?id=9&_t=1768137580518 HTTP/1.1" 200 - +2026-01-11 21:19:41,496 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:19:41] "GET /api/strategies/positions?id=2&_t=1768137581183 HTTP/1.1" 200 - +2026-01-11 21:19:41,497 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:19:41] "GET /api/strategies/equityCurve?id=2&_t=1768137581181 HTTP/1.1" 200 - +2026-01-11 21:19:41,497 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:19:41] "GET /api/strategies/equityCurve?id=2&_t=1768137581181 HTTP/1.1" 200 - +2026-01-11 21:19:42,106 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:19:42] "GET /api/strategies/equityCurve?id=1&_t=1768137582097 HTTP/1.1" 200 - +2026-01-11 21:19:42,413 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:19:42] "GET /api/strategies/positions?id=1&_t=1768137582097 HTTP/1.1" 200 - +2026-01-11 21:19:42,413 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:19:42] "GET /api/strategies/equityCurve?id=1&_t=1768137582097 HTTP/1.1" 200 - +2026-01-11 21:19:44,026 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:19:44] "GET /api/strategies/trades?id=1&_t=1768137583709 HTTP/1.1" 200 - +2026-01-11 21:21:29,864 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90928.9, pending_signals=1 +2026-01-11 21:21:29,866 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90928.9, 'position_size': 0, 'timestamp': 1768137660}] +2026-01-11 21:21:39,143 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90928.9, pending_signals=1 +2026-01-11 21:21:39,145 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90928.9, 'position_size': 0, 'timestamp': 1768137660}] +2026-01-11 21:21:42,331 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3113.56, pending_signals=1 +2026-01-11 21:21:42,333 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3113.56, 'position_size': 0, 'timestamp': 1768137660}] +2026-01-11 21:21:49,594 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90897.1, pending_signals=1 +2026-01-11 21:21:49,595 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90897.1, 'position_size': 0, 'timestamp': 1768137660}] +2026-01-11 21:21:51,888 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3113.56, pending_signals=1 +2026-01-11 21:21:51,890 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3113.56, 'position_size': 0, 'timestamp': 1768137660}] +2026-01-11 21:21:59,145 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90897.1, pending_signals=1 +2026-01-11 21:21:59,147 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90897.1, 'position_size': 0, 'timestamp': 1768137660}] +2026-01-11 21:22:03,306 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3113.56, pending_signals=2 +2026-01-11 21:22:03,307 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3113.56, 'position_size': 0, 'timestamp': 1768137660}, {'type': 'open_short', 'trigger_price': 3113.56, 'position_size': 0.08, 'timestamp': 1768137660}] +2026-01-11 21:22:03,316 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-11 21:22:03,316 - app.services.analysis - INFO - Starting analysis Crypto:ETH/USDT, language=zh-CN, mode=multi-agent +2026-01-11 21:22:03,317 - app.services.analysis - INFO - Run coordinator: Crypto:ETH/USDT +2026-01-11 21:22:03,317 - app.services.agents.coordinator - INFO - Multi-agent analysis start: Crypto:ETH/USDT, model=None, language=zh-CN +2026-01-11 21:22:04,242 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:ETH/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 21:22:06,917 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:ETH/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 21:22:06,918 - app.services.agents.tools - WARNING - Finnhub news fetch failed: 'Client' object has no attribute 'crypto_news' +2026-01-11 21:22:06,919 - app.services.agents.tools - INFO - Running news search: "ETH/USDT Cryptocurrency" ETH/USDT crypto news analysis +2026-01-11 21:22:08,027 - app.services.search - WARNING - Google Search returned no 'items'. Full response: {"kind": "customsearch#search", "url": {"type": "application/json", "template": "https://www.googleapis.com/customsearch/v1?q={searchTerms}&num={count?}&start={startIndex?}&lr={language?}&safe={safe?}&cx={cx?}&sort={sort?}&filter={filter?}&gl={gl?}&cr={cr?}&googlehost={googleHost?}&c2coff={disableCnTwTranslation?}&hq={hq?}&hl={hl?}&siteSearch={siteSearch?}&siteSearchFilter={siteSearchFilter?}&exactTerms={exactTerms?}&excludeTerms={excludeTerms?}&linkSite={linkSite?}&orTerms={orTerms?}&dateRestrict={dateRestrict?}&lowRange={lowRange?}&highRange={highRange?}&searchType={searchType}&fileType={fileType?}&rights={rights?}&imgSize={imgSize?}&imgType={imgType?}&imgColorType={imgColorType?}&imgDominantColor={imgDominantColor?}&alt=json"}, "queries": {"request": [{"title": "Google Custom Search - \"ETH/USDT Cryptocurrency\" ETH/USDT crypto news analysis", "searchTerms": "\"ETH/USDT Cryptocurrency\" ETH/USDT crypto news analysis", "count": 10, "startIndex": 1, "inputEncoding": "utf8", "outputEncoding": "utf8", "safe": "off", "cx": "17f675b8e3b994281", "dateRestrict": "d7"}]}, "context": {"title": "Global News Search"}, "searchInformation": {"searchTime": 0.165393, "formattedSearchTime": "0.17", "totalResults": "0", "formattedTotalResults": "0"}} +2026-01-11 21:22:08,028 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-11 21:22:09,121 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:ETH/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 21:22:09,209 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:22:09,215 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:22:09,217 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:22:09,248 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:22:10,264 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90897.0, pending_signals=2 +2026-01-11 21:22:10,265 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90897.1, 'position_size': 0, 'timestamp': 1768137660}, {'type': 'open_short', 'trigger_price': 90897.1, 'position_size': 0.08, 'timestamp': 1768137660}] +2026-01-11 21:22:10,275 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-11 21:22:10,275 - app.services.analysis - INFO - Starting analysis Crypto:BTC/USDT, language=zh-CN, mode=multi-agent +2026-01-11 21:22:10,275 - app.services.analysis - INFO - Run coordinator: Crypto:BTC/USDT +2026-01-11 21:22:10,275 - app.services.agents.coordinator - INFO - Multi-agent analysis start: Crypto:BTC/USDT, model=None, language=zh-CN +2026-01-11 21:22:10,498 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:ETH/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 21:22:10,715 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:22:10,715 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:10,716 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:10,724 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:22:10,725 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:10,725 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:10,936 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:22:10,936 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:10,936 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:10,954 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:22:10,954 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:10,954 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:11,438 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 21:22:11,992 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:22:13,441 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:22:13,441 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:13,441 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:13,442 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-11 21:22:14,000 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 21:22:14,001 - app.services.agents.tools - WARNING - Finnhub news fetch failed: 'Client' object has no attribute 'crypto_news' +2026-01-11 21:22:14,001 - app.services.agents.tools - INFO - Running news search: "BTC/USDT Cryptocurrency" BTC/USDT crypto news analysis +2026-01-11 21:22:14,462 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:22:14,585 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:22:15,081 - app.services.agents.tools - INFO - Deep reading: Bitcoin Vs Tether Comparison - BTC/USDT Cryptocurrency ... +2026-01-11 21:22:15,433 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:22:15,433 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:15,434 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:15,556 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:22:15,556 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:15,556 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:15,557 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-11 21:22:16,785 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:22:17,702 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:22:17,702 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:17,702 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:17,703 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-11 21:22:17,948 - app.services.agents.tools - INFO - Deep reading: Fxnl Trading Review | TikTok +2026-01-11 21:22:18,830 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:22:19,129 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:22:19,153 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:22:19,252 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-11 21:22:19,785 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:22:19,785 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:19,785 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:20,426 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:22:20,426 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:20,426 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:20,439 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:22:20,439 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:20,439 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:20,440 - app.services.agents.coordinator - WARNING - Record reflection failed: 'NoneType' object has no attribute 'get' +2026-01-11 21:22:20,441 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: Crypto:ETH/USDT +2026-01-11 21:22:20,441 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-11 21:22:20,441 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-11 21:22:20,448 - app.services.trading_executor - INFO - AI entry filter rejected: strategy_id=1 symbol=ETH/USDT signal=open_short ai=HOLD reason=ai_hold +2026-01-11 21:22:20,449 - app.services.trading_executor - WARNING - Strategy 1 signal rejected/failed: open_short +2026-01-11 21:22:20,510 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 21:22:20,574 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:22:20,580 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:22:20,593 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:22:20,870 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:22:20,908 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3114.3, pending_signals=2 +2026-01-11 21:22:20,911 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3113.56, 'position_size': 0, 'timestamp': 1768137660}] +2026-01-11 21:22:21,680 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:22:21,681 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:21,681 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:21,822 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 21:22:21,926 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:22:21,926 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:21,926 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:21,949 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:22:21,949 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:21,949 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:22,401 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:22:22,402 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:22,402 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:22,722 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:22:23,975 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:22:23,976 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:23,976 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:23,978 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-11 21:22:24,967 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:22:25,255 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:22:25,908 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:22:25,909 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:25,909 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:27,038 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:22:27,039 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:27,039 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:27,040 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-11 21:22:27,957 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:22:28,886 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:22:28,887 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:28,887 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:28,888 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-11 21:22:29,945 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:22:29,957 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:22:30,355 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:22:30,473 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3114.3, pending_signals=2 +2026-01-11 21:22:30,476 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3113.56, 'position_size': 0, 'timestamp': 1768137660}] +2026-01-11 21:22:31,003 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:22:31,003 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:31,004 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:31,293 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:22:31,293 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:31,293 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:31,532 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:22:31,532 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:31,533 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:22:31,534 - app.services.agents.coordinator - WARNING - Record reflection failed: 'NoneType' object has no attribute 'get' +2026-01-11 21:22:31,534 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: Crypto:BTC/USDT +2026-01-11 21:22:31,534 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-11 21:22:31,534 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-11 21:22:31,541 - app.services.trading_executor - INFO - AI entry filter rejected: strategy_id=2 symbol=BTC/USDT signal=open_short ai=HOLD reason=ai_hold +2026-01-11 21:22:31,542 - app.services.trading_executor - WARNING - Strategy 2 signal rejected/failed: open_short +2026-01-11 21:22:31,995 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90919.2, pending_signals=2 +2026-01-11 21:22:31,997 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90897.1, 'position_size': 0, 'timestamp': 1768137660}] +2026-01-11 21:22:40,909 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3114.25, pending_signals=2 +2026-01-11 21:22:40,911 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3113.56, 'position_size': 0, 'timestamp': 1768137660}] +2026-01-11 21:22:41,557 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90919.2, pending_signals=2 +2026-01-11 21:22:41,559 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90897.1, 'position_size': 0, 'timestamp': 1768137660}] +2026-01-11 21:22:50,468 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3114.25, pending_signals=2 +2026-01-11 21:22:50,470 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3113.56, 'position_size': 0, 'timestamp': 1768137660}] +2026-01-11 21:22:52,004 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90919.3, pending_signals=2 +2026-01-11 21:22:52,006 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90897.1, 'position_size': 0, 'timestamp': 1768137660}] +2026-01-11 21:40:01,085 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3112.59, pending_signals=1 +2026-01-11 21:40:01,087 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 3112.59, 'position_size': 0, 'timestamp': 1768138800}] +2026-01-11 21:40:11,598 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3112.59, pending_signals=1 +2026-01-11 21:40:11,600 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 3112.73, 'position_size': 0, 'timestamp': 1768138800}] +2026-01-11 21:40:19,603 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:40:19] "GET /api/strategies?_t=1768138819586 HTTP/1.1" 200 - +2026-01-11 21:40:22,381 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:40:22] "GET /api/strategies?_t=1768138822372 HTTP/1.1" 200 - +2026-01-11 21:40:28,548 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:40:28] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-11 21:40:28,852 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:40:28] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-11 21:40:28,864 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:40:28] "GET /api/credentials/list?user_id=1&_t=1768138828537 HTTP/1.1" 200 - +2026-01-11 21:41:01,080 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3111.5, pending_signals=2 +2026-01-11 21:41:01,081 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 3112.73, 'position_size': 0, 'timestamp': 1768138800}] +2026-01-11 21:41:17,216 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:41:17] "POST /api/strategies/batch-create HTTP/1.1" 404 - +2026-01-11 21:41:27,382 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:41:27] "POST /api/strategies/batch-create HTTP/1.1" 404 - +2026-01-11 21:41:34,153 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-11 21:41:34,154 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-11 21:41:34,176 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-11 21:41:34,490 - app.services.strategy - INFO - Found 2 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}] +2026-01-11 21:41:34,490 - app - INFO - Restoring 2 running strategies... +2026-01-11 21:41:34,491 - app.services.trading_executor - INFO - Strategy 1 loop starting +2026-01-11 21:41:34,491 - app.services.trading_executor - INFO - Strategy 1 started +2026-01-11 21:41:34,491 - app - INFO - [OK] IndicatorStrategy 1 restored +2026-01-11 21:41:34,491 - app.services.trading_executor - INFO - Strategy 2 loop starting +2026-01-11 21:41:34,491 - app.services.trading_executor - INFO - Strategy 2 started +2026-01-11 21:41:34,492 - app - INFO - [OK] IndicatorStrategy 2 restored +2026-01-11 21:41:34,492 - app - INFO - Strategy restore completed: 2/2 restored +2026-01-11 21:41:34,492 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2026-01-11 21:41:34,496 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2026-01-11 21:41:34,524 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-11 21:41:34,524 - werkzeug - INFO - Press CTRL+C to quit +2026-01-11 21:41:37,386 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:41:37] "POST /api/strategies/batch-create HTTP/1.1" 200 - +2026-01-11 21:41:37,737 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:41:37] "GET /api/strategies?_t=1768138897410 HTTP/1.1" 200 - +2026-01-11 21:41:39,618 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-11 21:41:39,631 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2026-01-11 21:41:40,699 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-11 21:41:40,711 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2026-01-11 21:41:55,085 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:41:55] "GET /api/strategies/equityCurve?id=12&_t=1768138915065 HTTP/1.1" 200 - +2026-01-11 21:41:55,399 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:41:55] "GET /api/strategies/positions?id=12&_t=1768138915077 HTTP/1.1" 200 - +2026-01-11 21:41:55,400 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:41:55] "GET /api/strategies/equityCurve?id=12&_t=1768138915065 HTTP/1.1" 200 - +2026-01-11 21:41:56,355 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:41:56] "GET /api/strategies/equityCurve?id=13&_t=1768138916031 HTTP/1.1" 200 - +2026-01-11 21:41:56,355 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:41:56] "GET /api/strategies/positions?id=13&_t=1768138916043 HTTP/1.1" 200 - +2026-01-11 21:41:56,355 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:41:56] "GET /api/strategies/equityCurve?id=13&_t=1768138916032 HTTP/1.1" 200 - +2026-01-11 21:41:57,849 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:41:57] "GET /api/strategies/equityCurve?id=11&_t=1768138917830 HTTP/1.1" 200 - +2026-01-11 21:41:58,159 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:41:58] "GET /api/strategies/positions?id=11&_t=1768138917842 HTTP/1.1" 200 - +2026-01-11 21:41:58,159 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:41:58] "GET /api/strategies/equityCurve?id=11&_t=1768138917830 HTTP/1.1" 200 - +2026-01-11 21:41:59,093 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:41:59] "GET /api/strategies/positions?id=10&_t=1768138918770 HTTP/1.1" 200 - +2026-01-11 21:41:59,094 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:41:59] "GET /api/strategies/equityCurve?id=10&_t=1768138918759 HTTP/1.1" 200 - +2026-01-11 21:41:59,094 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:41:59] "GET /api/strategies/equityCurve?id=10&_t=1768138918759 HTTP/1.1" 200 - +2026-01-11 21:42:00,218 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:42:00] "GET /api/strategies/equityCurve?id=13&_t=1768138920197 HTTP/1.1" 200 - +2026-01-11 21:42:00,522 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:42:00] "GET /api/strategies/positions?id=13&_t=1768138920207 HTTP/1.1" 200 - +2026-01-11 21:42:00,522 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:42:00] "GET /api/strategies/equityCurve?id=13&_t=1768138920197 HTTP/1.1" 200 - +2026-01-11 21:42:05,526 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:42:05] "GET /api/strategies/positions?id=13&_t=1768138925210 HTTP/1.1" 200 - +2026-01-11 21:42:05,944 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:42:05] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-11 21:42:06,258 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:42:06] "GET /api/credentials/list?user_id=1&_t=1768138925926 HTTP/1.1" 200 - +2026-01-11 21:42:10,514 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:42:10] "GET /api/strategies/positions?id=13&_t=1768138930198 HTTP/1.1" 200 - +2026-01-11 21:42:15,210 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:42:15] "GET /api/strategies/positions?id=13&_t=1768138935203 HTTP/1.1" 200 - +2026-01-11 21:42:16,346 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:42:16] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-11 21:42:16,346 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:42:16] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-11 21:42:16,347 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:42:16] "GET /api/credentials/list?user_id=1&_t=1768138936021 HTTP/1.1" 200 - +2026-01-11 21:42:20,210 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:42:20] "GET /api/strategies/positions?id=13&_t=1768138940203 HTTP/1.1" 200 - +2026-01-11 21:42:25,513 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:42:25] "GET /api/strategies/positions?id=13&_t=1768138945201 HTTP/1.1" 200 - +2026-01-11 21:42:30,185 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:42:30] "GET /api/strategies/equityCurve?id=13&_t=1768138950178 HTTP/1.1" 200 - +2026-01-11 21:42:30,527 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:42:30] "GET /api/strategies/positions?id=13&_t=1768138950210 HTTP/1.1" 200 - +2026-01-11 21:42:35,205 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:42:35] "GET /api/strategies/positions?id=13&_t=1768138955198 HTTP/1.1" 200 - +2026-01-11 21:42:40,522 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:42:40] "GET /api/strategies/positions?id=13&_t=1768138960206 HTTP/1.1" 200 - +2026-01-11 21:42:45,216 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:42:45] "GET /api/strategies/positions?id=13&_t=1768138965208 HTTP/1.1" 200 - +2026-01-11 21:42:50,518 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:42:50] "GET /api/strategies/positions?id=13&_t=1768138970203 HTTP/1.1" 200 - +2026-01-11 21:42:55,208 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:42:55] "GET /api/strategies/positions?id=13&_t=1768138975201 HTTP/1.1" 200 - +2026-01-11 21:43:00,495 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:43:00] "GET /api/strategies/equityCurve?id=13&_t=1768138980182 HTTP/1.1" 200 - +2026-01-11 21:43:00,525 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:43:00] "GET /api/strategies/positions?id=13&_t=1768138980212 HTTP/1.1" 200 - +2026-01-11 21:43:02,089 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:43:02] "POST /api/strategies/batch-create HTTP/1.1" 200 - +2026-01-11 21:43:02,442 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:43:02] "GET /api/strategies?_t=1768138982116 HTTP/1.1" 200 - +2026-01-11 21:43:05,222 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:43:05] "GET /api/strategies/positions?id=13&_t=1768138985212 HTTP/1.1" 200 - +2026-01-11 21:43:10,519 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:43:10] "GET /api/strategies/positions?id=13&_t=1768138990199 HTTP/1.1" 200 - +2026-01-11 21:43:12,996 - app.services.trading_executor - INFO - Strategy 14 loop starting +2026-01-11 21:43:12,996 - app.services.trading_executor - INFO - Strategy 14 started +2026-01-11 21:43:12,997 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:43:12] "POST /api/strategies/start?id=14 HTTP/1.1" 200 - +2026-01-11 21:43:12,999 - app.services.trading_executor - INFO - Strategy 14 leverage=1; auto-switch market_type to spot +2026-01-11 21:43:12,999 - app.services.trading_executor - INFO - Strategy 14 spot trading; force trade_direction=long +2026-01-11 21:43:13,346 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:43:13] "GET /api/strategies?_t=1768138993021 HTTP/1.1" 200 - +2026-01-11 21:43:13,709 - app.services.trading_executor - INFO - ็ญ–็•ฅ 14 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-11 21:43:13,720 - app.services.trading_executor - INFO - Strategy 14 initialized; pending_signals=1 +2026-01-11 21:43:13,720 - app.services.trading_executor - INFO - Initial signals: [{'type': 'open_long', 'trigger_price': 3114.26, 'position_size': 0.08, 'timestamp': 1768132800}] +2026-01-11 21:43:14,180 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3109.66, pending_signals=1 +2026-01-11 21:43:14,724 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:43:14] "GET /api/strategies/equityCurve?id=14&_t=1768138994702 HTTP/1.1" 200 - +2026-01-11 21:43:15,028 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:43:15] "GET /api/strategies/positions?id=14&_t=1768138994716 HTTP/1.1" 200 - +2026-01-11 21:43:15,028 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:43:15] "GET /api/strategies/equityCurve?id=14&_t=1768138994702 HTTP/1.1" 200 - +2026-01-11 21:43:20,017 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:43:20] "GET /api/strategies/positions?id=14&_t=1768138999701 HTTP/1.1" 200 - +2026-01-11 21:43:20,418 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:43:20] "GET /api/strategies/trades?id=14&_t=1768139000410 HTTP/1.1" 200 - +2026-01-11 21:43:23,738 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3109.66, pending_signals=1 +2026-01-11 21:43:25,035 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:43:25] "GET /api/strategies/positions?id=14&_t=1768139004712 HTTP/1.1" 200 - +2026-01-11 21:43:25,556 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:43:25] "GET /api/strategies/equityCurve?id=12&_t=1768139005534 HTTP/1.1" 200 - +2026-01-11 21:43:25,872 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:43:25] "GET /api/strategies/trades?id=12&_t=1768139005546 HTTP/1.1" 200 - +2026-01-11 21:43:25,873 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:43:25] "GET /api/strategies/positions?id=12&_t=1768139005546 HTTP/1.1" 200 - +2026-01-11 21:43:25,873 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:43:25] "GET /api/strategies/equityCurve?id=12&_t=1768139005534 HTTP/1.1" 200 - +2026-01-11 21:43:26,537 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:43:26] "GET /api/strategies/trades?id=13&_t=1768139006210 HTTP/1.1" 200 - +2026-01-11 21:43:26,537 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:43:26] "GET /api/strategies/positions?id=13&_t=1768139006209 HTTP/1.1" 200 - +2026-01-11 21:43:26,538 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:43:26] "GET /api/strategies/equityCurve?id=13&_t=1768139006197 HTTP/1.1" 200 - +2026-01-11 21:43:26,538 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:43:26] "GET /api/strategies/equityCurve?id=13&_t=1768139006198 HTTP/1.1" 200 - +2026-01-11 21:43:31,204 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:43:31] "GET /api/strategies/positions?id=13&_t=1768139011196 HTTP/1.1" 200 - +2026-01-11 21:43:32,324 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:43:32] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-11 21:43:32,325 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:43:32] "GET /api/credentials/list?user_id=1&_t=1768139011987 HTTP/1.1" 200 - +2026-01-11 21:43:33,738 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3109.08, pending_signals=1 +2026-01-11 21:43:36,206 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:43:36] "GET /api/strategies/positions?id=13&_t=1768139016196 HTTP/1.1" 200 - +2026-01-11 21:43:41,514 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:43:41] "GET /api/strategies/positions?id=13&_t=1768139021196 HTTP/1.1" 200 - +2026-01-11 21:43:44,189 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3109.0, pending_signals=1 +2026-01-11 21:43:46,206 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:43:46] "GET /api/strategies/positions?id=13&_t=1768139026199 HTTP/1.1" 200 - +2026-01-11 21:43:51,526 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:43:51] "GET /api/strategies/positions?id=13&_t=1768139031206 HTTP/1.1" 200 - +2026-01-11 21:43:53,739 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3109.0, pending_signals=1 +2026-01-11 21:43:56,186 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:43:56] "GET /api/strategies/equityCurve?id=13&_t=1768139036179 HTTP/1.1" 200 - +2026-01-11 21:43:56,523 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:43:56] "GET /api/strategies/positions?id=13&_t=1768139036209 HTTP/1.1" 200 - +2026-01-11 21:44:01,213 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:44:01] "GET /api/strategies/positions?id=13&_t=1768139041206 HTTP/1.1" 200 - +2026-01-11 21:44:03,741 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3108.85, pending_signals=1 +2026-01-11 21:44:06,515 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:44:06] "GET /api/strategies/positions?id=13&_t=1768139046200 HTTP/1.1" 200 - +2026-01-11 21:44:11,205 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:44:11] "GET /api/strategies/positions?id=13&_t=1768139051198 HTTP/1.1" 200 - +2026-01-11 21:44:14,195 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3108.88, pending_signals=1 +2026-01-11 21:44:16,514 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:44:16] "GET /api/strategies/positions?id=13&_t=1768139056198 HTTP/1.1" 200 - +2026-01-11 21:44:21,208 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:44:21] "GET /api/strategies/positions?id=13&_t=1768139061198 HTTP/1.1" 200 - +2026-01-11 21:44:23,745 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3108.88, pending_signals=1 +2026-01-11 21:44:26,499 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:44:26] "GET /api/strategies/equityCurve?id=13&_t=1768139066181 HTTP/1.1" 200 - +2026-01-11 21:44:26,505 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:44:26] "GET /api/strategies/positions?id=13&_t=1768139066197 HTTP/1.1" 200 - +2026-01-11 21:44:31,213 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:44:31] "GET /api/strategies/positions?id=13&_t=1768139071206 HTTP/1.1" 200 - +2026-01-11 21:44:33,746 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3107.63, pending_signals=1 +2026-01-11 21:44:36,516 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:44:36] "GET /api/strategies/positions?id=13&_t=1768139076199 HTTP/1.1" 200 - +2026-01-11 21:44:37,622 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:44:37] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-11 21:44:37,924 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:44:37] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-11 21:44:37,925 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:44:37] "GET /api/credentials/list?user_id=1&_t=1768139077598 HTTP/1.1" 200 - +2026-01-11 21:44:41,521 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:44:41] "GET /api/strategies/positions?id=13&_t=1768139081198 HTTP/1.1" 200 - +2026-01-11 21:44:44,205 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3107.52, pending_signals=1 +2026-01-11 21:44:46,212 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:44:46] "GET /api/strategies/positions?id=13&_t=1768139086205 HTTP/1.1" 200 - +2026-01-11 21:44:51,522 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:44:51] "GET /api/strategies/positions?id=13&_t=1768139091205 HTTP/1.1" 200 - +2026-01-11 21:44:53,748 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3107.52, pending_signals=1 +2026-01-11 21:44:56,195 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:44:56] "GET /api/strategies/equityCurve?id=13&_t=1768139096187 HTTP/1.1" 200 - +2026-01-11 21:44:56,517 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:44:56] "GET /api/strategies/positions?id=13&_t=1768139096196 HTTP/1.1" 200 - +2026-01-11 21:45:01,214 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:45:01] "GET /api/strategies/positions?id=13&_t=1768139101208 HTTP/1.1" 200 - +2026-01-11 21:45:03,750 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3107.4, pending_signals=1 +2026-01-11 21:45:06,519 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:45:06] "GET /api/strategies/positions?id=13&_t=1768139106201 HTTP/1.1" 200 - +2026-01-11 21:45:11,207 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:45:11] "GET /api/strategies/positions?id=13&_t=1768139111199 HTTP/1.1" 200 - +2026-01-11 21:45:14,894 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3107.99, pending_signals=1 +2026-01-11 21:45:16,521 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:45:16] "GET /api/strategies/positions?id=13&_t=1768139116202 HTTP/1.1" 200 - +2026-01-11 21:45:21,210 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:45:21] "GET /api/strategies/positions?id=13&_t=1768139121203 HTTP/1.1" 200 - +2026-01-11 21:45:23,753 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3107.99, pending_signals=1 +2026-01-11 21:45:26,500 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:45:26] "GET /api/strategies/equityCurve?id=13&_t=1768139126186 HTTP/1.1" 200 - +2026-01-11 21:45:26,515 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:45:26] "GET /api/strategies/positions?id=13&_t=1768139126202 HTTP/1.1" 200 - +2026-01-11 21:45:31,209 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:45:31] "GET /api/strategies/positions?id=13&_t=1768139131203 HTTP/1.1" 200 - +2026-01-11 21:45:33,756 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3108.76, pending_signals=1 +2026-01-11 21:45:36,316 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:45:36] "GET /api/strategies?_t=1768139136301 HTTP/1.1" 200 - +2026-01-11 21:45:44,200 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3108.74, pending_signals=1 +2026-01-11 21:45:53,758 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3108.74, pending_signals=1 +2026-01-11 21:46:03,759 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3107.85, pending_signals=1 +2026-01-11 21:46:14,827 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3108.29, pending_signals=1 +2026-01-11 21:46:23,763 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3108.29, pending_signals=1 +2026-01-11 21:46:33,763 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3108.38, pending_signals=1 +2026-01-11 21:46:44,219 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3108.89, pending_signals=1 +2026-01-11 21:46:53,103 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:46:53] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-11 21:46:53,277 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:46:53] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-11 21:46:53,277 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:46:53] "GET /api/credentials/list?user_id=1&_t=1768139212962 HTTP/1.1" 200 - +2026-01-11 21:46:53,767 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3108.89, pending_signals=1 +2026-01-11 21:47:03,767 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3108.32, pending_signals=1 +2026-01-11 21:47:14,219 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3108.54, pending_signals=1 +2026-01-11 21:47:23,774 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3108.54, pending_signals=1 +2026-01-11 21:47:33,772 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3108.54, pending_signals=1 +2026-01-11 21:47:44,497 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3108.61, pending_signals=1 +2026-01-11 21:47:53,774 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3108.61, pending_signals=1 +2026-01-11 21:48:03,776 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3108.65, pending_signals=1 +2026-01-11 21:48:14,228 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3108.61, pending_signals=1 +2026-01-11 21:48:15,807 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:48:15] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-11 21:48:16,110 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:48:16] "GET /api/credentials/list?user_id=1&_t=1768139295797 HTTP/1.1" 200 - +2026-01-11 21:48:16,110 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:48:16] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-11 21:48:23,779 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3108.61, pending_signals=1 +2026-01-11 21:48:24,589 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:48:24] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-11 21:48:24,589 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:48:24] "GET /api/credentials/list?user_id=1&_t=1768139304262 HTTP/1.1" 200 - +2026-01-11 21:48:24,590 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:48:24] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-11 21:48:33,780 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3108.41, pending_signals=1 +2026-01-11 21:48:44,540 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3108.36, pending_signals=1 +2026-01-11 21:48:46,787 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:48:46] "GET /api/settings/schema?_t=1768139326777 HTTP/1.1" 200 - +2026-01-11 21:48:47,099 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:48:47] "GET /api/settings/values?_t=1768139326777 HTTP/1.1" 200 - +2026-01-11 21:48:53,782 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3108.36, pending_signals=1 +2026-01-11 21:49:03,784 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3108.4, pending_signals=1 +2026-01-11 21:49:14,233 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3108.54, pending_signals=1 +2026-01-11 21:49:23,786 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3108.54, pending_signals=1 +2026-01-11 21:49:33,788 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3108.7, pending_signals=1 +2026-01-11 21:49:44,223 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3108.9, pending_signals=1 +2026-01-11 21:49:53,792 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3108.9, pending_signals=1 +2026-01-11 21:50:03,791 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3109.88, pending_signals=1 +2026-01-11 21:50:14,531 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3110.18, pending_signals=1 +2026-01-11 21:50:23,794 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3110.18, pending_signals=1 +2026-01-11 21:50:33,796 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3110.95, pending_signals=1 +2026-01-11 21:50:36,231 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:50:36] "GET /api/strategies?_t=1768139436218 HTTP/1.1" 200 - +2026-01-11 21:50:40,299 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:50:40] "GET /api/strategies/equityCurve?id=14&_t=1768139440289 HTTP/1.1" 200 - +2026-01-11 21:50:40,612 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:50:40] "GET /api/strategies/positions?id=14&_t=1768139440291 HTTP/1.1" 200 - +2026-01-11 21:50:40,612 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:50:40] "GET /api/strategies/equityCurve?id=14&_t=1768139440289 HTTP/1.1" 200 - +2026-01-11 21:50:41,724 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:50:41] "GET /api/strategies/trades?id=14&_t=1768139441412 HTTP/1.1" 200 - +2026-01-11 21:50:42,991 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:50:42] "GET /api/strategies/equityCurve?id=13&_t=1768139442982 HTTP/1.1" 200 - +2026-01-11 21:50:43,306 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:50:43] "GET /api/strategies/trades?id=13&_t=1768139442983 HTTP/1.1" 200 - +2026-01-11 21:50:43,307 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:50:43] "GET /api/strategies/positions?id=13&_t=1768139442983 HTTP/1.1" 200 - +2026-01-11 21:50:43,307 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:50:43] "GET /api/strategies/equityCurve?id=13&_t=1768139442982 HTTP/1.1" 200 - +2026-01-11 21:50:44,539 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3111.0, pending_signals=1 +2026-01-11 21:50:48,300 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:50:48] "GET /api/strategies/positions?id=13&_t=1768139447987 HTTP/1.1" 200 - +2026-01-11 21:50:52,992 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:50:52] "GET /api/strategies/positions?id=13&_t=1768139452985 HTTP/1.1" 200 - +2026-01-11 21:50:53,798 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3111.0, pending_signals=1 +2026-01-11 21:50:58,308 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:50:58] "GET /api/strategies/positions?id=13&_t=1768139457992 HTTP/1.1" 200 - +2026-01-11 21:51:01,237 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3111.37, pending_signals=1 +2026-01-11 21:51:01,239 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 3111.37, 'position_size': 0, 'timestamp': 1768139460}] +2026-01-11 21:51:02,997 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:51:02] "GET /api/strategies/positions?id=13&_t=1768139462990 HTTP/1.1" 200 - +2026-01-11 21:51:03,800 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3111.37, pending_signals=1 +2026-01-11 21:51:08,300 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:51:08] "GET /api/strategies/positions?id=13&_t=1768139467985 HTTP/1.1" 200 - +2026-01-11 21:51:10,800 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3111.37, pending_signals=1 +2026-01-11 21:51:10,801 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 3111.37, 'position_size': 0, 'timestamp': 1768139460}] +2026-01-11 21:51:12,991 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:51:12] "GET /api/strategies/equityCurve?id=13&_t=1768139472984 HTTP/1.1" 200 - +2026-01-11 21:51:13,298 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:51:13] "GET /api/strategies/positions?id=13&_t=1768139472985 HTTP/1.1" 200 - +2026-01-11 21:51:14,240 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3111.44, pending_signals=1 +2026-01-11 21:51:18,304 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:51:18] "GET /api/strategies/positions?id=13&_t=1768139477989 HTTP/1.1" 200 - +2026-01-11 21:51:20,161 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90868.0, pending_signals=1 +2026-01-11 21:51:20,163 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 90868.0, 'position_size': 0, 'timestamp': 1768139460}] +2026-01-11 21:51:20,801 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3111.44, pending_signals=1 +2026-01-11 21:51:20,802 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 3111.44, 'position_size': 0, 'timestamp': 1768139460}] +2026-01-11 21:51:22,997 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:51:22] "GET /api/strategies/positions?id=13&_t=1768139482990 HTTP/1.1" 200 - +2026-01-11 21:51:23,803 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3111.44, pending_signals=1 +2026-01-11 21:51:28,315 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:51:28] "GET /api/strategies/positions?id=13&_t=1768139487997 HTTP/1.1" 200 - +2026-01-11 21:51:29,725 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90868.0, pending_signals=1 +2026-01-11 21:51:29,727 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 90868.0, 'position_size': 0, 'timestamp': 1768139460}] +2026-01-11 21:51:31,245 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3111.21, pending_signals=1 +2026-01-11 21:51:31,247 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 3111.21, 'position_size': 0, 'timestamp': 1768139460}] +2026-01-11 21:51:33,006 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:51:33] "GET /api/strategies/positions?id=13&_t=1768139492997 HTTP/1.1" 200 - +2026-01-11 21:51:33,805 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3111.21, pending_signals=1 +2026-01-11 21:51:38,310 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:51:38] "GET /api/strategies/positions?id=13&_t=1768139497994 HTTP/1.1" 200 - +2026-01-11 21:51:41,007 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90867.9, pending_signals=1 +2026-01-11 21:51:41,009 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 90867.9, 'position_size': 0, 'timestamp': 1768139460}] +2026-01-11 21:51:41,494 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3111.21, pending_signals=2 +2026-01-11 21:51:41,496 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 3111.37, 'position_size': 0, 'timestamp': 1768139400}] +2026-01-11 21:51:42,991 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:51:42] "GET /api/strategies/equityCurve?id=13&_t=1768139502981 HTTP/1.1" 200 - +2026-01-11 21:51:43,315 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:51:43] "GET /api/strategies/positions?id=13&_t=1768139502994 HTTP/1.1" 200 - +2026-01-11 21:51:44,273 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3111.21, pending_signals=1 +2026-01-11 21:51:48,319 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:51:48] "GET /api/strategies/positions?id=13&_t=1768139508311 HTTP/1.1" 200 - +2026-01-11 21:51:49,728 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90867.9, pending_signals=1 +2026-01-11 21:51:49,731 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 90867.9, 'position_size': 0, 'timestamp': 1768139460}] +2026-01-11 21:51:50,805 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3111.21, pending_signals=2 +2026-01-11 21:51:50,807 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 3111.37, 'position_size': 0, 'timestamp': 1768139400}] +2026-01-11 21:51:53,636 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:51:53] "GET /api/strategies/positions?id=13&_t=1768139513315 HTTP/1.1" 200 - +2026-01-11 21:51:53,810 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3111.21, pending_signals=1 +2026-01-11 21:51:58,320 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:51:58] "GET /api/strategies/positions?id=13&_t=1768139518313 HTTP/1.1" 200 - +2026-01-11 21:52:00,214 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90867.9, pending_signals=2 +2026-01-11 21:52:00,216 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 90867.9, 'position_size': 0.08, 'timestamp': 1768139460}, {'type': 'close_short', 'trigger_price': 90867.9, 'position_size': 0, 'timestamp': 1768139460}] +2026-01-11 21:52:00,310 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-11 21:52:00,310 - app.services.analysis - INFO - Starting analysis Crypto:BTC/USDT, language=zh-CN, mode=multi-agent +2026-01-11 21:52:00,311 - app.services.analysis - INFO - Run coordinator: Crypto:BTC/USDT +2026-01-11 21:52:00,311 - app.services.agents.coordinator - INFO - Multi-agent analysis start: Crypto:BTC/USDT, model=None, language=zh-CN +2026-01-11 21:52:02,334 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 21:52:03,647 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:52:03] "GET /api/strategies/positions?id=13&_t=1768139523318 HTTP/1.1" 200 - +2026-01-11 21:52:03,810 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3111.11, pending_signals=1 +2026-01-11 21:52:04,652 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 21:52:04,653 - app.services.agents.tools - WARNING - Finnhub news fetch failed: 'Client' object has no attribute 'crypto_news' +2026-01-11 21:52:04,653 - app.services.agents.tools - INFO - Running news search: "BTC/USDT Cryptocurrency" BTC/USDT crypto news analysis +2026-01-11 21:52:06,421 - app.services.agents.tools - INFO - Deep reading: Fxnl Trading Review | TikTok +2026-01-11 21:52:07,758 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-11 21:52:08,326 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:52:08] "GET /api/strategies/positions?id=13&_t=1768139528318 HTTP/1.1" 200 - +2026-01-11 21:52:09,259 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:52:09,416 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:52:09,518 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:52:09,591 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:52:09,762 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 21:52:10,520 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:52:10,520 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:52:10,520 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:52:10,529 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:52:10,529 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:52:10,529 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:52:10,688 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:52:10,689 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:52:10,689 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:52:10,744 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:52:10,744 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:52:10,744 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:52:11,278 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 21:52:12,272 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:52:13,644 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:52:13] "GET /api/strategies/positions?id=13&_t=1768139533321 HTTP/1.1" 200 - +2026-01-11 21:52:13,645 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:52:13] "GET /api/strategies/equityCurve?id=13&_t=1768139533321 HTTP/1.1" 200 - +2026-01-11 21:52:13,711 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:52:13,711 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:52:13,711 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:52:13,713 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-11 21:52:14,259 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3111.0, pending_signals=1 +2026-01-11 21:52:14,721 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:52:15,023 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:52:15,669 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:52:15,670 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:52:15,670 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:52:16,485 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:52:16,485 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:52:16,486 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:52:16,487 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-11 21:52:17,765 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:52:18,331 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:52:18] "GET /api/strategies/positions?id=13&_t=1768139538319 HTTP/1.1" 200 - +2026-01-11 21:52:18,779 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:52:18,779 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:52:18,779 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:52:18,780 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-11 21:52:19,838 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:52:19,843 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:52:19,871 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:52:20,966 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:52:20,967 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:52:20,967 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:52:20,971 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:52:20,972 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:52:20,972 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:52:21,176 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:52:21,176 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:52:21,176 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:52:21,177 - app.services.agents.coordinator - WARNING - Record reflection failed: 'NoneType' object has no attribute 'get' +2026-01-11 21:52:21,178 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: Crypto:BTC/USDT +2026-01-11 21:52:21,178 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-11 21:52:21,178 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-11 21:52:21,185 - app.services.trading_executor - INFO - AI entry filter rejected: strategy_id=2 symbol=BTC/USDT signal=open_long ai=HOLD reason=ai_hold +2026-01-11 21:52:21,185 - app.services.trading_executor - WARNING - Strategy 2 signal rejected/failed: open_long +2026-01-11 21:52:21,931 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90868.4, pending_signals=2 +2026-01-11 21:52:21,933 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 90867.9, 'position_size': 0.08, 'timestamp': 1768139460}, {'type': 'close_short', 'trigger_price': 90867.9, 'position_size': 0, 'timestamp': 1768139460}] +2026-01-11 21:52:23,629 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:52:23] "GET /api/strategies/positions?id=13&_t=1768139543312 HTTP/1.1" 200 - +2026-01-11 21:52:23,814 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3111.0, pending_signals=1 +2026-01-11 21:52:28,317 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:52:28] "GET /api/strategies/positions?id=13&_t=1768139548310 HTTP/1.1" 200 - +2026-01-11 21:52:31,206 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90868.4, pending_signals=2 +2026-01-11 21:52:31,208 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 90867.9, 'position_size': 0.08, 'timestamp': 1768139460}, {'type': 'close_short', 'trigger_price': 90867.9, 'position_size': 0, 'timestamp': 1768139460}] +2026-01-11 21:52:33,641 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:52:33] "GET /api/strategies/positions?id=13&_t=1768139553312 HTTP/1.1" 200 - +2026-01-11 21:52:33,814 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3111.15, pending_signals=1 +2026-01-11 21:52:38,338 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:52:38] "GET /api/strategies/positions?id=13&_t=1768139558311 HTTP/1.1" 200 - +2026-01-11 21:52:42,094 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90879.3, pending_signals=2 +2026-01-11 21:52:42,097 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 90868.0, 'position_size': 0.08, 'timestamp': 1768139460}, {'type': 'close_short', 'trigger_price': 90868.0, 'position_size': 0, 'timestamp': 1768139460}] +2026-01-11 21:52:43,643 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:52:43] "GET /api/strategies/positions?id=13&_t=1768139563321 HTTP/1.1" 200 - +2026-01-11 21:52:43,643 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:52:43] "GET /api/strategies/equityCurve?id=13&_t=1768139563321 HTTP/1.1" 200 - +2026-01-11 21:52:44,252 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3111.73, pending_signals=1 +2026-01-11 21:52:48,324 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:52:48] "GET /api/strategies/positions?id=13&_t=1768139568313 HTTP/1.1" 200 - +2026-01-11 21:52:51,205 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90879.3, pending_signals=2 +2026-01-11 21:52:51,206 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 90868.0, 'position_size': 0.08, 'timestamp': 1768139460}, {'type': 'close_short', 'trigger_price': 90868.0, 'position_size': 0, 'timestamp': 1768139460}] +2026-01-11 21:52:53,817 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3111.73, pending_signals=1 +2026-01-11 21:53:03,817 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3111.95, pending_signals=1 +2026-01-11 21:53:13,631 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:53:13] "GET /api/strategies/equityCurve?id=13&_t=1768139593308 HTTP/1.1" 200 - +2026-01-11 21:53:14,546 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3112.0, pending_signals=1 +2026-01-11 21:53:23,821 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3112.0, pending_signals=1 +2026-01-11 21:53:33,822 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3112.0, pending_signals=1 +2026-01-11 21:53:43,323 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:53:43] "GET /api/strategies/equityCurve?id=13&_t=1768139623315 HTTP/1.1" 200 - +2026-01-11 21:53:44,585 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3111.61, pending_signals=1 +2026-01-11 21:53:48,629 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:53:48] "GET /api/strategies/positions?id=13&_t=1768139628313 HTTP/1.1" 200 - +2026-01-11 21:53:53,825 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3111.61, pending_signals=1 +2026-01-11 21:54:03,826 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3111.61, pending_signals=1 +2026-01-11 21:54:14,265 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3111.61, pending_signals=1 +2026-01-11 21:54:23,829 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3111.61, pending_signals=1 +2026-01-11 21:54:33,831 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3111.61, pending_signals=1 +2026-01-11 21:54:44,421 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:54:44] "GET /api/strategies/positions?id=13&_t=1768139684391 HTTP/1.1" 200 - +2026-01-11 21:54:44,722 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:54:44] "GET /api/strategies/equityCurve?id=13&_t=1768139684403 HTTP/1.1" 200 - +2026-01-11 21:54:45,704 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3111.75, pending_signals=1 +2026-01-11 21:54:45,820 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:54:45] "GET /api/strategies/trades?id=14&_t=1768139685463 HTTP/1.1" 200 - +2026-01-11 21:54:45,820 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:54:45] "GET /api/strategies/positions?id=14&_t=1768139685463 HTTP/1.1" 200 - +2026-01-11 21:54:45,820 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:54:45] "GET /api/strategies/equityCurve?id=14&_t=1768139685462 HTTP/1.1" 200 - +2026-01-11 21:54:45,821 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:54:45] "GET /api/strategies/equityCurve?id=14&_t=1768139685462 HTTP/1.1" 200 - +2026-01-11 21:54:48,221 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:54:48] "GET /api/strategies/equityCurve?id=13&_t=1768139688213 HTTP/1.1" 200 - +2026-01-11 21:54:48,540 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:54:48] "GET /api/strategies/trades?id=13&_t=1768139688214 HTTP/1.1" 200 - +2026-01-11 21:54:48,541 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:54:48] "GET /api/strategies/equityCurve?id=13&_t=1768139688213 HTTP/1.1" 200 - +2026-01-11 21:54:48,547 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:54:48] "GET /api/strategies/positions?id=13&_t=1768139688214 HTTP/1.1" 200 - +2026-01-11 21:54:50,881 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:54:50] "GET /api/strategies/trades?id=12&_t=1768139690560 HTTP/1.1" 200 - +2026-01-11 21:54:50,881 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:54:50] "GET /api/strategies/positions?id=12&_t=1768139690560 HTTP/1.1" 200 - +2026-01-11 21:54:50,882 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:54:50] "GET /api/strategies/equityCurve?id=12&_t=1768139690559 HTTP/1.1" 200 - +2026-01-11 21:54:50,882 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:54:50] "GET /api/strategies/equityCurve?id=12&_t=1768139690559 HTTP/1.1" 200 - +2026-01-11 21:54:51,143 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:54:51] "GET /api/strategies/equityCurve?id=11&_t=1768139691031 HTTP/1.1" 200 - +2026-01-11 21:54:51,346 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:54:51] "GET /api/strategies/positions?id=11&_t=1768139691031 HTTP/1.1" 200 - +2026-01-11 21:54:51,346 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:54:51] "GET /api/strategies/trades?id=11&_t=1768139691031 HTTP/1.1" 200 - +2026-01-11 21:54:51,347 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:54:51] "GET /api/strategies/equityCurve?id=11&_t=1768139691031 HTTP/1.1" 200 - +2026-01-11 21:54:51,572 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:54:51] "GET /api/strategies/equityCurve?id=10&_t=1768139691564 HTTP/1.1" 200 - +2026-01-11 21:54:51,883 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:54:51] "GET /api/strategies/positions?id=10&_t=1768139691565 HTTP/1.1" 200 - +2026-01-11 21:54:51,883 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:54:51] "GET /api/strategies/trades?id=10&_t=1768139691565 HTTP/1.1" 200 - +2026-01-11 21:54:51,884 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:54:51] "GET /api/strategies/equityCurve?id=10&_t=1768139691564 HTTP/1.1" 200 - +2026-01-11 21:54:53,835 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3111.75, pending_signals=1 +2026-01-11 21:54:55,753 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:54:55] "GET /api/strategies/positions?id=14&_t=1768139695425 HTTP/1.1" 200 - +2026-01-11 21:54:55,753 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:54:55] "GET /api/strategies/trades?id=14&_t=1768139695425 HTTP/1.1" 200 - +2026-01-11 21:54:55,753 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:54:55] "GET /api/strategies/equityCurve?id=14&_t=1768139695424 HTTP/1.1" 200 - +2026-01-11 21:54:55,754 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:54:55] "GET /api/strategies/equityCurve?id=14&_t=1768139695424 HTTP/1.1" 200 - +2026-01-11 21:55:00,434 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:55:00] "GET /api/strategies/positions?id=14&_t=1768139700427 HTTP/1.1" 200 - +2026-01-11 21:55:03,837 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3111.85, pending_signals=1 +2026-01-11 21:55:05,750 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:55:05] "GET /api/strategies/positions?id=14&_t=1768139705436 HTTP/1.1" 200 - +2026-01-11 21:55:10,447 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:55:10] "GET /api/strategies/positions?id=14&_t=1768139710438 HTTP/1.1" 200 - +2026-01-11 21:55:15,753 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:55:15] "GET /api/strategies/positions?id=14&_t=1768139715435 HTTP/1.1" 200 - +2026-01-11 21:55:15,866 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3111.85, pending_signals=1 +2026-01-11 21:55:20,437 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:55:20] "GET /api/strategies/positions?id=14&_t=1768139720431 HTTP/1.1" 200 - +2026-01-11 21:55:23,839 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3111.85, pending_signals=1 +2026-01-11 21:55:25,736 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:55:25] "GET /api/strategies/equityCurve?id=14&_t=1768139725422 HTTP/1.1" 200 - +2026-01-11 21:55:25,752 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:55:25] "GET /api/strategies/positions?id=14&_t=1768139725437 HTTP/1.1" 200 - +2026-01-11 21:55:30,436 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:55:30] "GET /api/strategies/positions?id=14&_t=1768139730429 HTTP/1.1" 200 - +2026-01-11 21:55:33,844 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3111.85, pending_signals=1 +2026-01-11 21:55:35,738 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:55:35] "GET /api/strategies/positions?id=14&_t=1768139735424 HTTP/1.1" 200 - +2026-01-11 21:55:40,448 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:55:40] "GET /api/strategies/positions?id=14&_t=1768139740439 HTTP/1.1" 200 - +2026-01-11 21:55:43,678 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:55:43] "GET /api/strategies?_t=1768139743661 HTTP/1.1" 200 - +2026-01-11 21:55:44,820 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3111.5, pending_signals=1 +2026-01-11 21:55:47,415 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:55:47] "GET /api/strategies/positions?id=14&_t=1768139747405 HTTP/1.1" 200 - +2026-01-11 21:55:47,415 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:55:47] "GET /api/strategies/equityCurve?id=14&_t=1768139747403 HTTP/1.1" 200 - +2026-01-11 21:55:47,415 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:55:47] "GET /api/strategies/equityCurve?id=14&_t=1768139747403 HTTP/1.1" 200 - +2026-01-11 21:55:48,880 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:55:48] "GET /api/strategies/trades?id=14&_t=1768139748560 HTTP/1.1" 200 - +2026-01-11 21:55:52,415 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:55:52] "GET /api/strategies/positions?id=14&_t=1768139752407 HTTP/1.1" 200 - +2026-01-11 21:55:53,844 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3111.5, pending_signals=1 +2026-01-11 21:55:57,723 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:55:57] "GET /api/strategies/positions?id=14&_t=1768139757405 HTTP/1.1" 200 - +2026-01-11 21:56:01,485 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:01] "GET /api/strategies/equityCurve?id=9&_t=1768139761476 HTTP/1.1" 200 - +2026-01-11 21:56:01,794 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:01] "GET /api/strategies/trades?id=9&_t=1768139761478 HTTP/1.1" 200 - +2026-01-11 21:56:01,795 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:01] "GET /api/strategies/positions?id=9&_t=1768139761478 HTTP/1.1" 200 - +2026-01-11 21:56:01,803 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:01] "GET /api/strategies/equityCurve?id=9&_t=1768139761476 HTTP/1.1" 200 - +2026-01-11 21:56:02,554 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:02] "GET /api/strategies/trades?id=2&_t=1768139762232 HTTP/1.1" 200 - +2026-01-11 21:56:02,554 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:02] "GET /api/strategies/positions?id=2&_t=1768139762232 HTTP/1.1" 200 - +2026-01-11 21:56:02,555 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:02] "GET /api/strategies/equityCurve?id=2&_t=1768139762230 HTTP/1.1" 200 - +2026-01-11 21:56:02,555 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:02] "GET /api/strategies/equityCurve?id=2&_t=1768139762230 HTTP/1.1" 200 - +2026-01-11 21:56:02,816 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:02] "GET /api/strategies/equityCurve?id=1&_t=1768139762595 HTTP/1.1" 200 - +2026-01-11 21:56:02,908 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:02] "GET /api/strategies/trades?id=1&_t=1768139762596 HTTP/1.1" 200 - +2026-01-11 21:56:02,909 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:02] "GET /api/strategies/equityCurve?id=1&_t=1768139762595 HTTP/1.1" 200 - +2026-01-11 21:56:02,917 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:02] "GET /api/strategies/positions?id=1&_t=1768139762596 HTTP/1.1" 200 - +2026-01-11 21:56:03,395 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:03] "GET /api/strategies/equityCurve?id=14&_t=1768139763377 HTTP/1.1" 200 - +2026-01-11 21:56:03,847 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3111.46, pending_signals=1 +2026-01-11 21:56:04,338 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:04] "GET /api/strategies/trades?id=14&_t=1768139763378 HTTP/1.1" 200 - +2026-01-11 21:56:04,339 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:04] "GET /api/strategies/positions?id=14&_t=1768139763378 HTTP/1.1" 200 - +2026-01-11 21:56:04,340 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:04] "GET /api/strategies/equityCurve?id=14&_t=1768139763377 HTTP/1.1" 200 - +2026-01-11 21:56:08,395 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:08] "GET /api/strategies/positions?id=14&_t=1768139768387 HTTP/1.1" 200 - +2026-01-11 21:56:13,702 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:13] "GET /api/strategies/positions?id=14&_t=1768139773382 HTTP/1.1" 200 - +2026-01-11 21:56:14,293 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3111.46, pending_signals=1 +2026-01-11 21:56:14,957 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:14] "GET /api/strategies/equityCurve?id=14&_t=1768139774944 HTTP/1.1" 200 - +2026-01-11 21:56:15,265 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:15] "GET /api/strategies/equityCurve?id=14&_t=1768139774944 HTTP/1.1" 200 - +2026-01-11 21:56:16,140 - app.services.trading_executor - INFO - Strategy 14 stopped +2026-01-11 21:56:16,147 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:16] "POST /api/strategies/stop?id=14 HTTP/1.1" 200 - +2026-01-11 21:56:16,300 - app.services.trading_executor - INFO - Strategy 14 stopped +2026-01-11 21:56:16,300 - app.services.trading_executor - INFO - Strategy 14 loop exited +2026-01-11 21:56:16,383 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:16] "GET /api/strategies?_t=1768139776159 HTTP/1.1" 200 - +2026-01-11 21:56:18,390 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:18] "GET /api/strategies/positions?id=14&_t=1768139778382 HTTP/1.1" 200 - +2026-01-11 21:56:21,516 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:21] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-11 21:56:21,517 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:21] "GET /api/credentials/list?user_id=1&_t=1768139781082 HTTP/1.1" 200 - +2026-01-11 21:56:21,517 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:21] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-11 21:56:23,393 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:23] "GET /api/strategies/positions?id=14&_t=1768139783386 HTTP/1.1" 200 - +2026-01-11 21:56:28,386 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:28] "GET /api/strategies/positions?id=14&_t=1768139788378 HTTP/1.1" 200 - +2026-01-11 21:56:29,492 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:29] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-11 21:56:29,809 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:29] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-11 21:56:29,810 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:29] "GET /api/credentials/list?user_id=1&_t=1768139789481 HTTP/1.1" 200 - +2026-01-11 21:56:33,709 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:33] "GET /api/strategies/positions?id=14&_t=1768139793392 HTTP/1.1" 200 - +2026-01-11 21:56:36,825 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:36] "PUT /api/strategies/update?id=14 HTTP/1.1" 200 - +2026-01-11 21:56:38,031 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:38] "GET /api/strategies?_t=1768139796852 HTTP/1.1" 200 - +2026-01-11 21:56:38,385 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:38] "GET /api/strategies/positions?id=14&_t=1768139798377 HTTP/1.1" 200 - +2026-01-11 21:56:39,103 - app.services.trading_executor - INFO - Strategy 14 loop starting +2026-01-11 21:56:39,103 - app.services.trading_executor - INFO - Strategy 14 started +2026-01-11 21:56:39,104 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:39] "POST /api/strategies/start?id=14 HTTP/1.1" 200 - +2026-01-11 21:56:39,105 - app.services.trading_executor - INFO - Strategy 14 leverage=1; auto-switch market_type to spot +2026-01-11 21:56:39,105 - app.services.trading_executor - INFO - Strategy 14 spot trading; force trade_direction=long +2026-01-11 21:56:39,358 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:39] "GET /api/strategies?_t=1768139799127 HTTP/1.1" 200 - +2026-01-11 21:56:39,806 - app.services.trading_executor - INFO - ็ญ–็•ฅ 14 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-11 21:56:39,819 - app.services.trading_executor - INFO - Strategy 14 initialized; pending_signals=1 +2026-01-11 21:56:39,819 - app.services.trading_executor - INFO - Initial signals: [{'type': 'open_long', 'trigger_price': 3114.26, 'position_size': 0.08, 'timestamp': 1768132800}] +2026-01-11 21:56:39,835 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3111.26, pending_signals=1 +2026-01-11 21:56:40,370 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:40] "GET /api/strategies/equityCurve?id=14&_t=1768139800356 HTTP/1.1" 200 - +2026-01-11 21:56:40,684 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:40] "GET /api/strategies/equityCurve?id=14&_t=1768139800356 HTTP/1.1" 200 - +2026-01-11 21:56:43,697 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:43] "GET /api/strategies/positions?id=14&_t=1768139803383 HTTP/1.1" 200 - +2026-01-11 21:56:48,392 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:48] "GET /api/strategies/positions?id=14&_t=1768139808385 HTTP/1.1" 200 - +2026-01-11 21:56:50,669 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3110.72, pending_signals=1 +2026-01-11 21:56:53,704 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:53] "GET /api/strategies/positions?id=14&_t=1768139813389 HTTP/1.1" 200 - +2026-01-11 21:56:58,388 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:56:58] "GET /api/strategies/positions?id=14&_t=1768139818381 HTTP/1.1" 200 - +2026-01-11 21:56:59,837 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3110.72, pending_signals=1 +2026-01-11 21:57:01,683 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90855.7, pending_signals=1 +2026-01-11 21:57:01,686 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90855.7, 'position_size': 0, 'timestamp': 1768139820}] +2026-01-11 21:57:03,692 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:57:03] "GET /api/strategies/positions?id=14&_t=1768139823379 HTTP/1.1" 200 - +2026-01-11 21:57:08,392 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:57:08] "GET /api/strategies/positions?id=14&_t=1768139828386 HTTP/1.1" 200 - +2026-01-11 21:57:09,840 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3110.41, pending_signals=1 +2026-01-11 21:57:10,662 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:57:10] "GET /api/strategies/equityCurve?id=14&_t=1768139830343 HTTP/1.1" 200 - +2026-01-11 21:57:11,244 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90855.7, pending_signals=1 +2026-01-11 21:57:11,247 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90855.7, 'position_size': 0, 'timestamp': 1768139820}] +2026-01-11 21:57:13,400 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:57:13] "GET /api/strategies/positions?id=14&_t=1768139833392 HTTP/1.1" 200 - +2026-01-11 21:57:18,694 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:57:18] "GET /api/strategies/positions?id=14&_t=1768139838378 HTTP/1.1" 200 - +2026-01-11 21:57:20,297 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3109.39, pending_signals=1 +2026-01-11 21:57:21,680 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90846.9, pending_signals=1 +2026-01-11 21:57:21,682 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90846.9, 'position_size': 0, 'timestamp': 1768139820}] +2026-01-11 21:57:23,390 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:57:23] "GET /api/strategies/positions?id=14&_t=1768139843384 HTTP/1.1" 200 - +2026-01-11 21:57:28,695 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:57:28] "GET /api/strategies/positions?id=14&_t=1768139848377 HTTP/1.1" 200 - +2026-01-11 21:57:29,841 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3109.39, pending_signals=1 +2026-01-11 21:57:31,247 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90846.9, pending_signals=1 +2026-01-11 21:57:31,250 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90846.9, 'position_size': 0, 'timestamp': 1768139820}] +2026-01-11 21:57:33,386 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:57:33] "GET /api/strategies/positions?id=14&_t=1768139853377 HTTP/1.1" 200 - +2026-01-11 21:57:38,386 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:57:38] "GET /api/strategies/positions?id=14&_t=1768139858378 HTTP/1.1" 200 - +2026-01-11 21:57:39,842 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3109.47, pending_signals=1 +2026-01-11 21:57:40,352 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:57:40] "GET /api/strategies/equityCurve?id=14&_t=1768139860344 HTTP/1.1" 200 - +2026-01-11 21:57:42,721 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90846.8, pending_signals=2 +2026-01-11 21:57:42,723 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90855.7, 'position_size': 0, 'timestamp': 1768139760}, {'type': 'open_short', 'trigger_price': 90855.7, 'position_size': 0.08, 'timestamp': 1768139760}] +2026-01-11 21:57:42,732 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-11 21:57:42,732 - app.services.analysis - INFO - Starting analysis Crypto:BTC/USDT, language=zh-CN, mode=multi-agent +2026-01-11 21:57:42,732 - app.services.analysis - INFO - Run coordinator: Crypto:BTC/USDT +2026-01-11 21:57:42,732 - app.services.agents.coordinator - INFO - Multi-agent analysis start: Crypto:BTC/USDT, model=None, language=zh-CN +2026-01-11 21:57:43,697 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:57:43] "GET /api/strategies/positions?id=14&_t=1768139863380 HTTP/1.1" 200 - +2026-01-11 21:57:43,907 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 21:57:46,875 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 21:57:46,876 - app.services.agents.tools - WARNING - Finnhub news fetch failed: 'Client' object has no attribute 'crypto_news' +2026-01-11 21:57:46,876 - app.services.agents.tools - INFO - Running news search: "BTC/USDT Cryptocurrency" BTC/USDT crypto news analysis +2026-01-11 21:57:48,385 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:57:48] "GET /api/strategies/positions?id=14&_t=1768139868378 HTTP/1.1" 200 - +2026-01-11 21:57:48,420 - app.services.agents.tools - INFO - Deep reading: Fxnl Trading Review | TikTok +2026-01-11 21:57:50,078 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-11 21:57:50,322 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3109.79, pending_signals=1 +2026-01-11 21:57:51,426 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 21:57:51,569 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:57:51,698 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:57:51,815 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:57:52,034 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:57:52,669 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:57:52,669 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:57:52,669 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:57:52,858 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:57:52,858 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:57:52,858 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:57:52,898 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 21:57:53,640 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:57:53,640 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:57:53,640 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:57:53,693 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:57:53] "GET /api/strategies/positions?id=14&_t=1768139873378 HTTP/1.1" 200 - +2026-01-11 21:57:53,809 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:57:53,809 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:57:53,809 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:57:54,407 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:57:55,886 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:57:55,886 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:57:55,887 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:57:55,888 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-11 21:57:56,904 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:57:56,909 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:57:58,173 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:57:58,174 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:57:58,174 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:57:58,386 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:57:58] "GET /api/strategies/positions?id=14&_t=1768139878378 HTTP/1.1" 200 - +2026-01-11 21:57:58,421 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:57:58,421 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:57:58,421 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:57:58,422 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-11 21:57:59,845 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3109.79, pending_signals=1 +2026-01-11 21:57:59,882 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:58:00,822 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:58:00,823 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:58:00,823 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:58:00,824 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-11 21:58:01,909 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:58:01,923 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:58:02,116 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 21:58:02,916 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:58:02,916 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:58:02,916 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:58:03,457 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:58:03,457 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:58:03,457 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:58:03,665 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 21:58:03,665 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:58:03,665 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 21:58:03,667 - app.services.agents.coordinator - WARNING - Record reflection failed: 'NoneType' object has no attribute 'get' +2026-01-11 21:58:03,667 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: Crypto:BTC/USDT +2026-01-11 21:58:03,667 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-11 21:58:03,668 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-11 21:58:03,675 - app.services.trading_executor - INFO - AI entry filter rejected: strategy_id=2 symbol=BTC/USDT signal=open_short ai=HOLD reason=ai_hold +2026-01-11 21:58:03,675 - app.services.trading_executor - WARNING - Strategy 2 signal rejected/failed: open_short +2026-01-11 21:58:03,698 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:58:03] "GET /api/strategies/positions?id=14&_t=1768139883378 HTTP/1.1" 200 - +2026-01-11 21:58:08,387 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:58:08] "GET /api/strategies/positions?id=14&_t=1768139888379 HTTP/1.1" 200 - +2026-01-11 21:58:09,847 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3109.8, pending_signals=1 +2026-01-11 21:58:10,664 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:58:10] "GET /api/strategies/equityCurve?id=14&_t=1768139890345 HTTP/1.1" 200 - +2026-01-11 21:58:13,387 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:58:13] "GET /api/strategies/positions?id=14&_t=1768139893379 HTTP/1.1" 200 - +2026-01-11 21:58:18,700 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:58:18] "GET /api/strategies/positions?id=14&_t=1768139898379 HTTP/1.1" 200 - +2026-01-11 21:58:20,292 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3109.8, pending_signals=1 +2026-01-11 21:58:23,385 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:58:23] "GET /api/strategies/positions?id=14&_t=1768139903377 HTTP/1.1" 200 - +2026-01-11 21:58:28,690 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:58:28] "GET /api/strategies/positions?id=14&_t=1768139908377 HTTP/1.1" 200 - +2026-01-11 21:58:29,851 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3109.8, pending_signals=1 +2026-01-11 21:58:33,389 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:58:33] "GET /api/strategies/positions?id=14&_t=1768139913381 HTTP/1.1" 200 - +2026-01-11 21:58:38,695 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:58:38] "GET /api/strategies/positions?id=14&_t=1768139918378 HTTP/1.1" 200 - +2026-01-11 21:58:39,852 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3109.75, pending_signals=1 +2026-01-11 21:58:40,354 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:58:40] "GET /api/strategies/equityCurve?id=14&_t=1768139920347 HTTP/1.1" 200 - +2026-01-11 21:58:43,704 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:58:43] "GET /api/strategies/positions?id=14&_t=1768139923387 HTTP/1.1" 200 - +2026-01-11 21:58:48,387 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:58:48] "GET /api/strategies/positions?id=14&_t=1768139928380 HTTP/1.1" 200 - +2026-01-11 21:58:50,326 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3109.21, pending_signals=1 +2026-01-11 21:58:53,702 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:58:53] "GET /api/strategies/positions?id=14&_t=1768139933380 HTTP/1.1" 200 - +2026-01-11 21:58:58,390 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:58:58] "GET /api/strategies/positions?id=14&_t=1768139938381 HTTP/1.1" 200 - +2026-01-11 21:58:59,854 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3109.21, pending_signals=1 +2026-01-11 21:59:03,689 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:59:03] "GET /api/strategies/positions?id=14&_t=1768139943381 HTTP/1.1" 200 - +2026-01-11 21:59:08,388 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:59:08] "GET /api/strategies/positions?id=14&_t=1768139948381 HTTP/1.1" 200 - +2026-01-11 21:59:09,856 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3109.21, pending_signals=1 +2026-01-11 21:59:10,670 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:59:10] "GET /api/strategies/equityCurve?id=14&_t=1768139950348 HTTP/1.1" 200 - +2026-01-11 21:59:13,388 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:59:13] "GET /api/strategies/positions?id=14&_t=1768139953381 HTTP/1.1" 200 - +2026-01-11 21:59:18,690 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:59:18] "GET /api/strategies/positions?id=14&_t=1768139958378 HTTP/1.1" 200 - +2026-01-11 21:59:20,334 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3109.54, pending_signals=1 +2026-01-11 21:59:23,389 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:59:23] "GET /api/strategies/positions?id=14&_t=1768139963381 HTTP/1.1" 200 - +2026-01-11 21:59:28,704 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:59:28] "GET /api/strategies/positions?id=14&_t=1768139968382 HTTP/1.1" 200 - +2026-01-11 21:59:29,859 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3109.54, pending_signals=1 +2026-01-11 21:59:33,389 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:59:33] "GET /api/strategies/positions?id=14&_t=1768139973382 HTTP/1.1" 200 - +2026-01-11 21:59:38,705 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:59:38] "GET /api/strategies/positions?id=14&_t=1768139978382 HTTP/1.1" 200 - +2026-01-11 21:59:39,861 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3109.75, pending_signals=1 +2026-01-11 21:59:40,352 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:59:40] "GET /api/strategies/equityCurve?id=14&_t=1768139980344 HTTP/1.1" 200 - +2026-01-11 21:59:43,695 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:59:43] "GET /api/strategies/positions?id=14&_t=1768139983379 HTTP/1.1" 200 - +2026-01-11 21:59:48,387 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:59:48] "GET /api/strategies/positions?id=14&_t=1768139988379 HTTP/1.1" 200 - +2026-01-11 21:59:50,333 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3109.61, pending_signals=1 +2026-01-11 21:59:53,712 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:59:53] "GET /api/strategies/positions?id=14&_t=1768139993383 HTTP/1.1" 200 - +2026-01-11 21:59:58,388 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 21:59:58] "GET /api/strategies/positions?id=14&_t=1768139998379 HTTP/1.1" 200 - +2026-01-11 21:59:59,863 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3109.61, pending_signals=1 +2026-01-11 22:00:04,631 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:00:04] "GET /api/strategies/positions?id=14&_t=1768140004315 HTTP/1.1" 200 - +2026-01-11 22:00:09,313 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:00:09] "GET /api/strategies/positions?id=14&_t=1768140009306 HTTP/1.1" 200 - +2026-01-11 22:00:11,793 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:00:11] "GET /api/strategies/equityCurve?id=14&_t=1768140011319 HTTP/1.1" 200 - +2026-01-11 22:00:14,324 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:00:14] "GET /api/strategies/positions?id=14&_t=1768140014314 HTTP/1.1" 200 - +2026-01-11 22:00:19,633 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:00:19] "GET /api/strategies/positions?id=14&_t=1768140019320 HTTP/1.1" 200 - +2026-01-11 22:00:24,329 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:00:24] "GET /api/strategies/positions?id=14&_t=1768140024320 HTTP/1.1" 200 - +2026-01-11 22:00:29,677 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:00:29] "GET /api/strategies/positions?id=14&_t=1768140029314 HTTP/1.1" 200 - +2026-01-11 22:00:34,319 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:00:34] "GET /api/strategies/positions?id=14&_t=1768140034312 HTTP/1.1" 200 - +2026-01-11 22:00:39,626 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:00:39] "GET /api/strategies/positions?id=14&_t=1768140039310 HTTP/1.1" 200 - +2026-01-11 22:00:41,322 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:00:41] "GET /api/strategies/equityCurve?id=14&_t=1768140041314 HTTP/1.1" 200 - +2026-01-11 22:00:44,639 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:00:44] "GET /api/strategies/positions?id=14&_t=1768140044315 HTTP/1.1" 200 - +2026-01-11 22:00:49,314 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:00:49] "GET /api/strategies/positions?id=14&_t=1768140049308 HTTP/1.1" 200 - +2026-01-11 22:00:54,641 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:00:54] "GET /api/strategies/positions?id=14&_t=1768140054321 HTTP/1.1" 200 - +2026-01-11 22:00:59,315 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:00:59] "GET /api/strategies/positions?id=14&_t=1768140059307 HTTP/1.1" 200 - +2026-01-11 22:01:43,633 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:01:43] "GET /api/strategies/positions?id=14&_t=1768140103168 HTTP/1.1" 200 - +2026-01-11 22:01:43,634 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:01:43] "GET /api/strategies/equityCurve?id=14&_t=1768140103176 HTTP/1.1" 200 - +2026-01-11 22:01:48,393 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:01:48] "GET /api/strategies/positions?id=14&_t=1768140108386 HTTP/1.1" 200 - +2026-01-11 22:01:53,707 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:01:53] "GET /api/strategies/positions?id=14&_t=1768140113387 HTTP/1.1" 200 - +2026-01-11 22:01:58,385 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:01:58] "GET /api/strategies/positions?id=14&_t=1768140118378 HTTP/1.1" 200 - +2026-01-11 22:02:03,694 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:02:03] "GET /api/strategies/positions?id=14&_t=1768140123381 HTTP/1.1" 200 - +2026-01-11 22:02:08,390 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:02:08] "GET /api/strategies/positions?id=14&_t=1768140128382 HTTP/1.1" 200 - +2026-01-11 22:02:10,668 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:02:10] "GET /api/strategies/equityCurve?id=14&_t=1768140130355 HTTP/1.1" 200 - +2026-01-11 22:02:13,395 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:02:13] "GET /api/strategies/positions?id=14&_t=1768140133387 HTTP/1.1" 200 - +2026-01-11 22:02:18,694 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:02:18] "GET /api/strategies/positions?id=14&_t=1768140138378 HTTP/1.1" 200 - +2026-01-11 22:02:23,397 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:02:23] "GET /api/strategies/positions?id=14&_t=1768140143388 HTTP/1.1" 200 - +2026-01-11 22:02:28,697 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:02:28] "GET /api/strategies/positions?id=14&_t=1768140148380 HTTP/1.1" 200 - +2026-01-11 22:02:33,395 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:02:33] "GET /api/strategies/positions?id=14&_t=1768140153387 HTTP/1.1" 200 - +2026-01-11 22:02:38,702 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:02:38] "GET /api/strategies/positions?id=14&_t=1768140158387 HTTP/1.1" 200 - +2026-01-11 22:02:40,347 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:02:40] "GET /api/strategies/equityCurve?id=14&_t=1768140160339 HTTP/1.1" 200 - +2026-01-11 22:02:43,697 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:02:43] "GET /api/strategies/positions?id=14&_t=1768140163380 HTTP/1.1" 200 - +2026-01-11 22:02:48,384 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:02:48] "GET /api/strategies/positions?id=14&_t=1768140168377 HTTP/1.1" 200 - +2026-01-11 22:02:53,696 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:02:53] "GET /api/strategies/positions?id=14&_t=1768140173378 HTTP/1.1" 200 - +2026-01-11 22:02:58,392 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:02:58] "GET /api/strategies/positions?id=14&_t=1768140178384 HTTP/1.1" 200 - +2026-01-11 22:03:03,697 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:03:03] "GET /api/strategies/positions?id=14&_t=1768140183382 HTTP/1.1" 200 - +2026-01-11 22:03:08,385 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:03:08] "GET /api/strategies/positions?id=14&_t=1768140188378 HTTP/1.1" 200 - +2026-01-11 22:03:10,661 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:03:10] "GET /api/strategies/equityCurve?id=14&_t=1768140190340 HTTP/1.1" 200 - +2026-01-11 22:03:13,385 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:03:13] "GET /api/strategies/positions?id=14&_t=1768140193378 HTTP/1.1" 200 - +2026-01-11 22:03:18,698 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:03:18] "GET /api/strategies/positions?id=14&_t=1768140198378 HTTP/1.1" 200 - +2026-01-11 22:03:23,384 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:03:23] "GET /api/strategies/positions?id=14&_t=1768140203378 HTTP/1.1" 200 - +2026-01-11 22:03:28,703 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:03:28] "GET /api/strategies/positions?id=14&_t=1768140208387 HTTP/1.1" 200 - +2026-01-11 22:03:33,398 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:03:33] "GET /api/strategies/positions?id=14&_t=1768140213389 HTTP/1.1" 200 - +2026-01-11 22:03:38,697 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:03:38] "GET /api/strategies/positions?id=14&_t=1768140218381 HTTP/1.1" 200 - +2026-01-11 22:03:40,348 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:03:40] "GET /api/strategies/equityCurve?id=14&_t=1768140220341 HTTP/1.1" 200 - +2026-01-11 22:03:43,697 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:03:43] "GET /api/strategies/positions?id=14&_t=1768140223378 HTTP/1.1" 200 - +2026-01-11 22:03:48,397 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:03:48] "GET /api/strategies/positions?id=14&_t=1768140228389 HTTP/1.1" 200 - +2026-01-11 22:03:53,702 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:03:53] "GET /api/strategies/positions?id=14&_t=1768140233385 HTTP/1.1" 200 - +2026-01-11 22:03:58,400 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:03:58] "GET /api/strategies/positions?id=14&_t=1768140238392 HTTP/1.1" 200 - +2026-01-11 22:04:03,702 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:04:03] "GET /api/strategies/positions?id=14&_t=1768140243383 HTTP/1.1" 200 - +2026-01-11 22:04:08,387 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:04:08] "GET /api/strategies/positions?id=14&_t=1768140248381 HTTP/1.1" 200 - +2026-01-11 22:04:10,666 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:04:10] "GET /api/strategies/equityCurve?id=14&_t=1768140250342 HTTP/1.1" 200 - +2026-01-11 22:04:13,387 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:04:13] "GET /api/strategies/positions?id=14&_t=1768140253380 HTTP/1.1" 200 - +2026-01-11 22:04:18,707 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:04:18] "GET /api/strategies/positions?id=14&_t=1768140258388 HTTP/1.1" 200 - +2026-01-11 22:04:23,398 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:04:23] "GET /api/strategies/positions?id=14&_t=1768140263389 HTTP/1.1" 200 - +2026-01-11 22:04:28,704 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:04:28] "GET /api/strategies/positions?id=14&_t=1768140268390 HTTP/1.1" 200 - +2026-01-11 22:04:33,389 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:04:33] "GET /api/strategies/positions?id=14&_t=1768140273383 HTTP/1.1" 200 - +2026-01-11 22:04:38,701 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:04:38] "GET /api/strategies/positions?id=14&_t=1768140278386 HTTP/1.1" 200 - +2026-01-11 22:04:40,352 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:04:40] "GET /api/strategies/equityCurve?id=14&_t=1768140280343 HTTP/1.1" 200 - +2026-01-11 22:04:43,706 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:04:43] "GET /api/strategies/positions?id=14&_t=1768140283390 HTTP/1.1" 200 - +2026-01-11 22:04:44,951 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90889.7, pending_signals=1 +2026-01-11 22:04:44,953 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 90889.7, 'position_size': 0, 'timestamp': 1768140240}] +2026-01-11 22:04:48,385 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:04:48] "GET /api/strategies/positions?id=14&_t=1768140288377 HTTP/1.1" 200 - +2026-01-11 22:04:53,688 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:04:53] "GET /api/strategies/positions?id=14&_t=1768140293378 HTTP/1.1" 200 - +2026-01-11 22:04:53,764 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90889.7, pending_signals=1 +2026-01-11 22:04:53,766 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 90889.7, 'position_size': 0, 'timestamp': 1768140240}] +2026-01-11 22:04:58,385 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:04:58] "GET /api/strategies/positions?id=14&_t=1768140298377 HTTP/1.1" 200 - +2026-01-11 22:05:03,701 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:05:03] "GET /api/strategies/positions?id=14&_t=1768140303379 HTTP/1.1" 200 - +2026-01-11 22:05:04,217 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90899.9, pending_signals=2 +2026-01-11 22:05:04,219 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 90889.7, 'position_size': 0.08, 'timestamp': 1768140240}, {'type': 'close_short', 'trigger_price': 90889.7, 'position_size': 0, 'timestamp': 1768140240}] +2026-01-11 22:05:04,230 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-11 22:05:04,230 - app.services.analysis - INFO - Starting analysis Crypto:BTC/USDT, language=zh-CN, mode=multi-agent +2026-01-11 22:05:04,230 - app.services.analysis - INFO - Run coordinator: Crypto:BTC/USDT +2026-01-11 22:05:04,230 - app.services.agents.coordinator - INFO - Multi-agent analysis start: Crypto:BTC/USDT, model=None, language=zh-CN +2026-01-11 22:05:05,122 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 22:05:08,265 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 22:05:08,266 - app.services.agents.tools - WARNING - Finnhub news fetch failed: 'Client' object has no attribute 'crypto_news' +2026-01-11 22:05:08,266 - app.services.agents.tools - INFO - Running news search: "BTC/USDT Cryptocurrency" BTC/USDT crypto news analysis +2026-01-11 22:05:08,386 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:05:08] "GET /api/strategies/positions?id=14&_t=1768140308377 HTTP/1.1" 200 - +2026-01-11 22:05:09,398 - app.services.agents.tools - INFO - Deep reading: Fxnl Trading Review | TikTok +2026-01-11 22:05:10,657 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:05:10] "GET /api/strategies/equityCurve?id=14&_t=1768140310345 HTTP/1.1" 200 - +2026-01-11 22:05:13,385 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:05:13] "GET /api/strategies/positions?id=14&_t=1768140313378 HTTP/1.1" 200 - +2026-01-11 22:05:16,482 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-11 22:05:17,647 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:05:17,658 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:05:18,096 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 22:05:18,144 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:05:18,620 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:05:18,687 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:05:18] "GET /api/strategies/positions?id=14&_t=1768140318378 HTTP/1.1" 200 - +2026-01-11 22:05:18,985 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:05:18,985 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:05:18,985 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:05:19,340 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 22:05:19,538 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:05:19,538 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:05:19,538 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:05:19,784 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:05:19,784 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:05:19,785 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:05:19,795 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:05:19,795 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:05:19,795 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:05:21,363 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:05:22,579 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:05:22,580 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:05:22,580 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:05:22,582 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-11 22:05:23,386 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:05:23] "GET /api/strategies/positions?id=14&_t=1768140323378 HTTP/1.1" 200 - +2026-01-11 22:05:23,595 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:05:23,836 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:05:24,958 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:05:24,958 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:05:24,958 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:05:25,198 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:05:25,198 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:05:25,199 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:05:25,200 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-11 22:05:26,093 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:05:27,299 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:05:27,299 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:05:27,299 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:05:27,300 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-11 22:05:28,315 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:05:28,325 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:05:28,612 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:05:28,689 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:05:28] "GET /api/strategies/positions?id=14&_t=1768140328378 HTTP/1.1" 200 - +2026-01-11 22:05:29,324 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:05:29,324 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:05:29,325 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:05:29,553 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:05:29,553 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:05:29,553 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:05:29,610 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:05:29,611 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:05:29,611 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:05:29,613 - app.services.agents.coordinator - WARNING - Record reflection failed: 'NoneType' object has no attribute 'get' +2026-01-11 22:05:29,614 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: Crypto:BTC/USDT +2026-01-11 22:05:29,614 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-11 22:05:29,614 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-11 22:05:29,621 - app.services.trading_executor - INFO - AI entry filter rejected: strategy_id=2 symbol=BTC/USDT signal=open_long ai=HOLD reason=ai_hold +2026-01-11 22:05:29,622 - app.services.trading_executor - WARNING - Strategy 2 signal rejected/failed: open_long +2026-01-11 22:05:30,080 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90912.9, pending_signals=2 +2026-01-11 22:05:30,082 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 90889.7, 'position_size': 0.08, 'timestamp': 1768140240}, {'type': 'close_short', 'trigger_price': 90889.7, 'position_size': 0, 'timestamp': 1768140240}] +2026-01-11 22:05:33,388 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:05:33] "GET /api/strategies/positions?id=14&_t=1768140333378 HTTP/1.1" 200 - +2026-01-11 22:05:38,694 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:05:38] "GET /api/strategies/positions?id=14&_t=1768140338377 HTTP/1.1" 200 - +2026-01-11 22:05:39,639 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90912.9, pending_signals=2 +2026-01-11 22:05:39,641 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 90889.7, 'position_size': 0.08, 'timestamp': 1768140240}, {'type': 'close_short', 'trigger_price': 90889.7, 'position_size': 0, 'timestamp': 1768140240}] +2026-01-11 22:05:40,350 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:05:40] "GET /api/strategies/equityCurve?id=14&_t=1768140340342 HTTP/1.1" 200 - +2026-01-11 22:05:43,698 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:05:43] "GET /api/strategies/positions?id=14&_t=1768140343379 HTTP/1.1" 200 - +2026-01-11 22:05:48,387 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:05:48] "GET /api/strategies/positions?id=14&_t=1768140348379 HTTP/1.1" 200 - +2026-01-11 22:05:50,806 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90936.1, pending_signals=2 +2026-01-11 22:05:50,807 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 90896.9, 'position_size': 0.08, 'timestamp': 1768140240}, {'type': 'close_short', 'trigger_price': 90896.9, 'position_size': 0, 'timestamp': 1768140240}] +2026-01-11 22:05:53,705 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:05:53] "GET /api/strategies/positions?id=14&_t=1768140353380 HTTP/1.1" 200 - +2026-01-11 22:05:58,387 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:05:58] "GET /api/strategies/positions?id=14&_t=1768140358380 HTTP/1.1" 200 - +2026-01-11 22:05:59,641 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90936.1, pending_signals=2 +2026-01-11 22:05:59,643 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 90896.9, 'position_size': 0.08, 'timestamp': 1768140240}, {'type': 'close_short', 'trigger_price': 90896.9, 'position_size': 0, 'timestamp': 1768140240}] +2026-01-11 22:06:03,689 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:06:03] "GET /api/strategies/positions?id=14&_t=1768140363380 HTTP/1.1" 200 - +2026-01-11 22:06:08,387 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:06:08] "GET /api/strategies/positions?id=14&_t=1768140368380 HTTP/1.1" 200 - +2026-01-11 22:06:10,667 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:06:10] "GET /api/strategies/equityCurve?id=14&_t=1768140370346 HTTP/1.1" 200 - +2026-01-11 22:06:13,388 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:06:13] "GET /api/strategies/positions?id=14&_t=1768140373380 HTTP/1.1" 200 - +2026-01-11 22:06:18,703 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:06:18] "GET /api/strategies/positions?id=14&_t=1768140378380 HTTP/1.1" 200 - +2026-01-11 22:06:23,388 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:06:23] "GET /api/strategies/positions?id=14&_t=1768140383381 HTTP/1.1" 200 - +2026-01-11 22:06:28,692 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:06:28] "GET /api/strategies/positions?id=14&_t=1768140388378 HTTP/1.1" 200 - +2026-01-11 22:06:33,390 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:06:33] "GET /api/strategies/positions?id=14&_t=1768140393382 HTTP/1.1" 200 - +2026-01-11 22:06:38,704 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:06:38] "GET /api/strategies/positions?id=14&_t=1768140398381 HTTP/1.1" 200 - +2026-01-11 22:06:40,358 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:06:40] "GET /api/strategies/equityCurve?id=14&_t=1768140400348 HTTP/1.1" 200 - +2026-01-11 22:06:43,705 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:06:43] "GET /api/strategies/positions?id=14&_t=1768140403381 HTTP/1.1" 200 - +2026-01-11 22:06:48,388 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:06:48] "GET /api/strategies/positions?id=14&_t=1768140408381 HTTP/1.1" 200 - +2026-01-11 22:06:53,705 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:06:53] "GET /api/strategies/positions?id=14&_t=1768140413381 HTTP/1.1" 200 - +2026-01-11 22:06:58,397 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:06:58] "GET /api/strategies/positions?id=14&_t=1768140418390 HTTP/1.1" 200 - +2026-01-11 22:07:03,706 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:07:03] "GET /api/strategies/positions?id=14&_t=1768140423382 HTTP/1.1" 200 - +2026-01-11 22:07:08,387 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:07:08] "GET /api/strategies/positions?id=14&_t=1768140428379 HTTP/1.1" 200 - +2026-01-11 22:07:10,668 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:07:10] "GET /api/strategies/equityCurve?id=14&_t=1768140430349 HTTP/1.1" 200 - +2026-01-11 22:07:13,391 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:07:13] "GET /api/strategies/positions?id=14&_t=1768140433383 HTTP/1.1" 200 - +2026-01-11 22:07:18,705 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:07:18] "GET /api/strategies/positions?id=14&_t=1768140438382 HTTP/1.1" 200 - +2026-01-11 22:07:23,387 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:07:23] "GET /api/strategies/positions?id=14&_t=1768140443378 HTTP/1.1" 200 - +2026-01-11 22:07:28,706 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:07:28] "GET /api/strategies/positions?id=14&_t=1768140448380 HTTP/1.1" 200 - +2026-01-11 22:07:33,387 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:07:33] "GET /api/strategies/positions?id=14&_t=1768140453379 HTTP/1.1" 200 - +2026-01-11 22:07:38,694 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:07:38] "GET /api/strategies/positions?id=14&_t=1768140458381 HTTP/1.1" 200 - +2026-01-11 22:07:40,355 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:07:40] "GET /api/strategies/equityCurve?id=14&_t=1768140460347 HTTP/1.1" 200 - +2026-01-11 22:07:43,695 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:07:43] "GET /api/strategies/positions?id=14&_t=1768140463379 HTTP/1.1" 200 - +2026-01-11 22:07:48,387 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:07:48] "GET /api/strategies/positions?id=14&_t=1768140468379 HTTP/1.1" 200 - +2026-01-11 22:07:53,699 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:07:53] "GET /api/strategies/positions?id=14&_t=1768140473383 HTTP/1.1" 200 - +2026-01-11 22:07:58,385 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:07:58] "GET /api/strategies/positions?id=14&_t=1768140478378 HTTP/1.1" 200 - +2026-01-11 22:08:03,704 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:08:03] "GET /api/strategies/positions?id=14&_t=1768140483384 HTTP/1.1" 200 - +2026-01-11 22:08:08,392 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:08:08] "GET /api/strategies/positions?id=14&_t=1768140488384 HTTP/1.1" 200 - +2026-01-11 22:08:10,658 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:08:10] "GET /api/strategies/equityCurve?id=14&_t=1768140490340 HTTP/1.1" 200 - +2026-01-11 22:08:13,393 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:08:13] "GET /api/strategies/positions?id=14&_t=1768140493385 HTTP/1.1" 200 - +2026-01-11 22:08:18,692 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:08:18] "GET /api/strategies/positions?id=14&_t=1768140498384 HTTP/1.1" 200 - +2026-01-11 22:08:23,390 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:08:23] "GET /api/strategies/positions?id=14&_t=1768140503382 HTTP/1.1" 200 - +2026-01-11 22:08:28,693 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:08:28] "GET /api/strategies/positions?id=14&_t=1768140508377 HTTP/1.1" 200 - +2026-01-11 22:08:33,393 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:08:33] "GET /api/strategies/positions?id=14&_t=1768140513385 HTTP/1.1" 200 - +2026-01-11 22:08:38,702 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:08:38] "GET /api/strategies/positions?id=14&_t=1768140518385 HTTP/1.1" 200 - +2026-01-11 22:08:40,363 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:08:40] "GET /api/strategies/equityCurve?id=14&_t=1768140520351 HTTP/1.1" 200 - +2026-01-11 22:08:43,697 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:08:43] "GET /api/strategies/positions?id=14&_t=1768140523384 HTTP/1.1" 200 - +2026-01-11 22:08:48,394 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:08:48] "GET /api/strategies/positions?id=14&_t=1768140528386 HTTP/1.1" 200 - +2026-01-11 22:08:53,697 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:08:53] "GET /api/strategies/positions?id=14&_t=1768140533384 HTTP/1.1" 200 - +2026-01-11 22:08:58,395 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:08:58] "GET /api/strategies/positions?id=14&_t=1768140538387 HTTP/1.1" 200 - +2026-01-11 22:09:03,697 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:09:03] "GET /api/strategies/positions?id=14&_t=1768140543382 HTTP/1.1" 200 - +2026-01-11 22:09:08,394 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:09:08] "GET /api/strategies/positions?id=14&_t=1768140548386 HTTP/1.1" 200 - +2026-01-11 22:09:10,661 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:09:10] "GET /api/strategies/equityCurve?id=14&_t=1768140550343 HTTP/1.1" 200 - +2026-01-11 22:09:13,388 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:09:13] "GET /api/strategies/positions?id=14&_t=1768140553381 HTTP/1.1" 200 - +2026-01-11 22:09:18,694 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:09:18] "GET /api/strategies/positions?id=14&_t=1768140558383 HTTP/1.1" 200 - +2026-01-11 22:09:23,395 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:09:23] "GET /api/strategies/positions?id=14&_t=1768140563387 HTTP/1.1" 200 - +2026-01-11 22:09:28,701 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:09:28] "GET /api/strategies/positions?id=14&_t=1768140568383 HTTP/1.1" 200 - +2026-01-11 22:09:33,395 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:09:33] "GET /api/strategies/positions?id=14&_t=1768140573388 HTTP/1.1" 200 - +2026-01-11 22:09:38,700 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:09:38] "GET /api/strategies/positions?id=14&_t=1768140578389 HTTP/1.1" 200 - +2026-01-11 22:09:40,352 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:09:40] "GET /api/strategies/equityCurve?id=14&_t=1768140580345 HTTP/1.1" 200 - +2026-01-11 22:09:43,700 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:09:43] "GET /api/strategies/positions?id=14&_t=1768140583386 HTTP/1.1" 200 - +2026-01-11 22:09:48,393 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:09:48] "GET /api/strategies/positions?id=14&_t=1768140588385 HTTP/1.1" 200 - +2026-01-11 22:09:53,703 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:09:53] "GET /api/strategies/positions?id=14&_t=1768140593384 HTTP/1.1" 200 - +2026-01-11 22:09:58,394 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:09:58] "GET /api/strategies/positions?id=14&_t=1768140598385 HTTP/1.1" 200 - +2026-01-11 22:10:03,709 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:10:03] "GET /api/strategies/positions?id=14&_t=1768140603389 HTTP/1.1" 200 - +2026-01-11 22:10:08,393 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:10:08] "GET /api/strategies/positions?id=14&_t=1768140608385 HTTP/1.1" 200 - +2026-01-11 22:10:10,664 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:10:10] "GET /api/strategies/equityCurve?id=14&_t=1768140610346 HTTP/1.1" 200 - +2026-01-11 22:10:13,387 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:10:13] "GET /api/strategies/positions?id=14&_t=1768140613381 HTTP/1.1" 200 - +2026-01-11 22:10:18,694 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:10:18] "GET /api/strategies/positions?id=14&_t=1768140618379 HTTP/1.1" 200 - +2026-01-11 22:10:23,398 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:10:23] "GET /api/strategies/positions?id=14&_t=1768140623390 HTTP/1.1" 200 - +2026-01-11 22:10:28,697 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:10:28] "GET /api/strategies/positions?id=14&_t=1768140628389 HTTP/1.1" 200 - +2026-01-11 22:10:33,387 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:10:33] "GET /api/strategies/positions?id=14&_t=1768140633381 HTTP/1.1" 200 - +2026-01-11 22:10:38,696 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:10:38] "GET /api/strategies/positions?id=14&_t=1768140638379 HTTP/1.1" 200 - +2026-01-11 22:10:40,348 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:10:40] "GET /api/strategies/equityCurve?id=14&_t=1768140640340 HTTP/1.1" 200 - +2026-01-11 22:10:43,700 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:10:43] "GET /api/strategies/positions?id=14&_t=1768140643386 HTTP/1.1" 200 - +2026-01-11 22:10:48,384 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:10:48] "GET /api/strategies/positions?id=14&_t=1768140648377 HTTP/1.1" 200 - +2026-01-11 22:10:53,698 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:10:53] "GET /api/strategies/positions?id=14&_t=1768140653385 HTTP/1.1" 200 - +2026-01-11 22:10:58,387 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:10:58] "GET /api/strategies/positions?id=14&_t=1768140658380 HTTP/1.1" 200 - +2026-01-11 22:11:03,705 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:11:03] "GET /api/strategies/positions?id=14&_t=1768140663385 HTTP/1.1" 200 - +2026-01-11 22:11:08,395 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:11:08] "GET /api/strategies/positions?id=14&_t=1768140668387 HTTP/1.1" 200 - +2026-01-11 22:11:10,664 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:11:10] "GET /api/strategies/equityCurve?id=14&_t=1768140670341 HTTP/1.1" 200 - +2026-01-11 22:11:13,394 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:11:13] "GET /api/strategies/positions?id=14&_t=1768140673387 HTTP/1.1" 200 - +2026-01-11 22:11:18,698 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:11:18] "GET /api/strategies/positions?id=14&_t=1768140678386 HTTP/1.1" 200 - +2026-01-11 22:11:23,390 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:11:23] "GET /api/strategies/positions?id=14&_t=1768140683382 HTTP/1.1" 200 - +2026-01-11 22:11:28,700 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:11:28] "GET /api/strategies/positions?id=14&_t=1768140688383 HTTP/1.1" 200 - +2026-01-11 22:11:33,400 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:11:33] "GET /api/strategies/positions?id=14&_t=1768140693392 HTTP/1.1" 200 - +2026-01-11 22:11:38,700 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:11:38] "GET /api/strategies/positions?id=14&_t=1768140698382 HTTP/1.1" 200 - +2026-01-11 22:11:40,349 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:11:40] "GET /api/strategies/equityCurve?id=14&_t=1768140700340 HTTP/1.1" 200 - +2026-01-11 22:11:43,702 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:11:43] "GET /api/strategies/positions?id=14&_t=1768140703388 HTTP/1.1" 200 - +2026-01-11 22:11:48,384 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:11:48] "GET /api/strategies/positions?id=14&_t=1768140708378 HTTP/1.1" 200 - +2026-01-11 22:11:53,698 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:11:53] "GET /api/strategies/positions?id=14&_t=1768140713380 HTTP/1.1" 200 - +2026-01-11 22:11:58,389 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:11:58] "GET /api/strategies/positions?id=14&_t=1768140718382 HTTP/1.1" 200 - +2026-01-11 22:12:03,691 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:12:03] "GET /api/strategies/positions?id=14&_t=1768140723381 HTTP/1.1" 200 - +2026-01-11 22:12:08,388 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:12:08] "GET /api/strategies/positions?id=14&_t=1768140728381 HTTP/1.1" 200 - +2026-01-11 22:12:10,667 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:12:10] "GET /api/strategies/equityCurve?id=14&_t=1768140730343 HTTP/1.1" 200 - +2026-01-11 22:12:13,389 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:12:13] "GET /api/strategies/positions?id=14&_t=1768140733383 HTTP/1.1" 200 - +2026-01-11 22:12:18,701 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:12:18] "GET /api/strategies/positions?id=14&_t=1768140738383 HTTP/1.1" 200 - +2026-01-11 22:12:23,385 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:12:23] "GET /api/strategies/positions?id=14&_t=1768140743377 HTTP/1.1" 200 - +2026-01-11 22:12:28,694 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:12:28] "GET /api/strategies/positions?id=14&_t=1768140748377 HTTP/1.1" 200 - +2026-01-11 22:12:33,385 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:12:33] "GET /api/strategies/positions?id=14&_t=1768140753378 HTTP/1.1" 200 - +2026-01-11 22:12:38,697 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:12:38] "GET /api/strategies/positions?id=14&_t=1768140758378 HTTP/1.1" 200 - +2026-01-11 22:12:40,352 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:12:40] "GET /api/strategies/equityCurve?id=14&_t=1768140760344 HTTP/1.1" 200 - +2026-01-11 22:12:43,687 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:12:43] "GET /api/strategies/positions?id=14&_t=1768140763378 HTTP/1.1" 200 - +2026-01-11 22:12:48,385 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:12:48] "GET /api/strategies/positions?id=14&_t=1768140768378 HTTP/1.1" 200 - +2026-01-11 22:12:53,703 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:12:53] "GET /api/strategies/positions?id=14&_t=1768140773378 HTTP/1.1" 200 - +2026-01-11 22:12:58,386 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:12:58] "GET /api/strategies/positions?id=14&_t=1768140778378 HTTP/1.1" 200 - +2026-01-11 22:13:03,689 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:13:03] "GET /api/strategies/positions?id=14&_t=1768140783379 HTTP/1.1" 200 - +2026-01-11 22:13:08,391 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:13:08] "GET /api/strategies/positions?id=14&_t=1768140788384 HTTP/1.1" 200 - +2026-01-11 22:13:10,654 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:13:10] "GET /api/strategies/equityCurve?id=14&_t=1768140790341 HTTP/1.1" 200 - +2026-01-11 22:13:13,386 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:13:13] "GET /api/strategies/positions?id=14&_t=1768140793379 HTTP/1.1" 200 - +2026-01-11 22:13:18,700 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:13:18] "GET /api/strategies/positions?id=14&_t=1768140798379 HTTP/1.1" 200 - +2026-01-11 22:13:23,387 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:13:23] "GET /api/strategies/positions?id=14&_t=1768140803380 HTTP/1.1" 200 - +2026-01-11 22:13:28,693 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:13:28] "GET /api/strategies/positions?id=14&_t=1768140808380 HTTP/1.1" 200 - +2026-01-11 22:13:33,401 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:13:33] "GET /api/strategies/positions?id=14&_t=1768140813389 HTTP/1.1" 200 - +2026-01-11 22:13:38,705 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:13:38] "GET /api/strategies/positions?id=14&_t=1768140818381 HTTP/1.1" 200 - +2026-01-11 22:13:38,980 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:13:38] "GET /api/settings/schema?_t=1768140818974 HTTP/1.1" 200 - +2026-01-11 22:13:38,982 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:13:38] "GET /api/settings/values?_t=1768140818974 HTTP/1.1" 200 - +2026-01-11 22:13:50,361 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:13:50] "GET /api/strategies?_t=1768140830320 HTTP/1.1" 200 - +2026-01-11 22:13:54,923 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:13:54] "GET /api/market/types?_t=1768140834913 HTTP/1.1" 200 - +2026-01-11 22:13:54,926 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:13:54] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-11 22:13:55,253 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:13:55] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-11 22:13:55,261 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-11 22:13:56,234 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:13:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-11 22:16:23,904 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:16:23] "GET /api/market/types?_t=1768140983893 HTTP/1.1" 200 - +2026-01-11 22:16:23,906 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:16:23] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-11 22:16:23,910 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:16:23] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-11 22:16:23,978 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-11 22:16:23,979 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:16:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-11 22:16:26,658 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:16:26] "GET /api/strategies?_t=1768140986644 HTTP/1.1" 200 - +2026-01-11 22:16:32,535 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:16:32] "GET /api/strategies/equityCurve?id=14&_t=1768140992524 HTTP/1.1" 200 - +2026-01-11 22:16:32,848 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:16:32] "GET /api/strategies/positions?id=14&_t=1768140992526 HTTP/1.1" 200 - +2026-01-11 22:16:32,849 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:16:32] "GET /api/strategies/equityCurve?id=14&_t=1768140992524 HTTP/1.1" 200 - +2026-01-11 22:16:33,640 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:16:33] "GET /api/strategies/trades?id=14&_t=1768140993319 HTTP/1.1" 200 - +2026-01-11 22:16:37,538 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:16:37] "GET /api/strategies/positions?id=14&_t=1768140997531 HTTP/1.1" 200 - +2026-01-11 22:16:42,850 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:16:42] "GET /api/strategies/positions?id=14&_t=1768141002532 HTTP/1.1" 200 - +2026-01-11 22:16:47,535 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:16:47] "GET /api/strategies/positions?id=14&_t=1768141007528 HTTP/1.1" 200 - +2026-01-11 22:16:52,844 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:16:52] "GET /api/strategies/positions?id=14&_t=1768141012521 HTTP/1.1" 200 - +2026-01-11 22:16:57,528 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:16:57] "GET /api/strategies/positions?id=14&_t=1768141017521 HTTP/1.1" 200 - +2026-01-11 22:17:02,840 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:17:02] "GET /api/strategies/equityCurve?id=14&_t=1768141022521 HTTP/1.1" 200 - +2026-01-11 22:17:02,850 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:17:02] "GET /api/strategies/positions?id=14&_t=1768141022521 HTTP/1.1" 200 - +2026-01-11 22:17:07,534 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:17:07] "GET /api/strategies/positions?id=14&_t=1768141027525 HTTP/1.1" 200 - +2026-01-11 22:17:12,834 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:17:12] "GET /api/strategies/positions?id=14&_t=1768141032521 HTTP/1.1" 200 - +2026-01-11 22:17:17,398 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:17:17] "GET /api/strategies/equityCurve?id=10&_t=1768141037381 HTTP/1.1" 200 - +2026-01-11 22:17:17,706 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:17:17] "GET /api/strategies/trades?id=10&_t=1768141037386 HTTP/1.1" 200 - +2026-01-11 22:17:17,706 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:17:17] "GET /api/strategies/positions?id=10&_t=1768141037386 HTTP/1.1" 200 - +2026-01-11 22:17:17,707 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:17:17] "GET /api/strategies/equityCurve?id=10&_t=1768141037381 HTTP/1.1" 200 - +2026-01-11 22:17:22,708 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:17:22] "GET /api/strategies/positions?id=10&_t=1768141042385 HTTP/1.1" 200 - +2026-01-11 22:17:27,394 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:17:27] "GET /api/strategies/positions?id=10&_t=1768141047387 HTTP/1.1" 200 - +2026-01-11 22:17:32,712 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:17:32] "GET /api/strategies/positions?id=10&_t=1768141052395 HTTP/1.1" 200 - +2026-01-11 22:17:37,403 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:17:37] "GET /api/strategies/positions?id=10&_t=1768141057396 HTTP/1.1" 200 - +2026-01-11 22:17:42,697 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:17:42] "GET /api/strategies/positions?id=10&_t=1768141062381 HTTP/1.1" 200 - +2026-01-11 22:17:47,386 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:17:47] "GET /api/strategies/equityCurve?id=10&_t=1768141067379 HTTP/1.1" 200 - +2026-01-11 22:17:47,709 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:17:47] "GET /api/strategies/positions?id=10&_t=1768141067388 HTTP/1.1" 200 - +2026-01-11 22:17:52,391 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:17:52] "GET /api/strategies/positions?id=10&_t=1768141072383 HTTP/1.1" 200 - +2026-01-11 22:17:57,710 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:17:57] "GET /api/strategies/positions?id=10&_t=1768141077390 HTTP/1.1" 200 - +2026-01-11 22:18:03,322 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:18:03] "GET /api/strategies/positions?id=10&_t=1768141083315 HTTP/1.1" 200 - +2026-01-11 22:18:08,636 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:18:08] "GET /api/strategies/positions?id=10&_t=1768141088320 HTTP/1.1" 200 - +2026-01-11 22:18:13,321 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:18:13] "GET /api/strategies/positions?id=10&_t=1768141093308 HTTP/1.1" 200 - +2026-01-11 22:18:18,641 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:18:18] "GET /api/strategies/equityCurve?id=10&_t=1768141098319 HTTP/1.1" 200 - +2026-01-11 22:18:18,642 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:18:18] "GET /api/strategies/positions?id=10&_t=1768141098320 HTTP/1.1" 200 - +2026-01-11 22:18:23,326 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:18:23] "GET /api/strategies/positions?id=10&_t=1768141103317 HTTP/1.1" 200 - +2026-01-11 22:18:28,632 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:18:28] "GET /api/strategies/positions?id=10&_t=1768141108317 HTTP/1.1" 200 - +2026-01-11 22:18:33,321 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:18:33] "GET /api/strategies/positions?id=10&_t=1768141113310 HTTP/1.1" 200 - +2026-01-11 22:18:38,637 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:18:38] "GET /api/strategies/positions?id=10&_t=1768141118319 HTTP/1.1" 200 - +2026-01-11 22:18:43,315 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:18:43] "GET /api/strategies/positions?id=10&_t=1768141123308 HTTP/1.1" 200 - +2026-01-11 22:18:48,637 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:18:48] "GET /api/strategies/positions?id=10&_t=1768141128321 HTTP/1.1" 200 - +2026-01-11 22:18:48,637 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:18:48] "GET /api/strategies/equityCurve?id=10&_t=1768141128320 HTTP/1.1" 200 - +2026-01-11 22:18:53,322 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:18:53] "GET /api/strategies/positions?id=10&_t=1768141133315 HTTP/1.1" 200 - +2026-01-11 22:19:18,628 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:19:18] "GET /api/strategies/equityCurve?id=10&_t=1768141158310 HTTP/1.1" 200 - +2026-01-11 22:19:48,323 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:19:48] "GET /api/strategies/positions?id=10&_t=1768141188314 HTTP/1.1" 200 - +2026-01-11 22:19:48,629 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:19:48] "GET /api/strategies/equityCurve?id=10&_t=1768141188314 HTTP/1.1" 200 - +2026-01-11 22:20:18,623 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:20:18] "GET /api/strategies/equityCurve?id=10&_t=1768141218311 HTTP/1.1" 200 - +2026-01-11 22:20:48,324 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:20:48] "GET /api/strategies/positions?id=10&_t=1768141248314 HTTP/1.1" 200 - +2026-01-11 22:20:48,632 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:20:48] "GET /api/strategies/equityCurve?id=10&_t=1768141248315 HTTP/1.1" 200 - +2026-01-11 22:21:48,631 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:21:48] "GET /api/strategies/positions?id=10&_t=1768141308317 HTTP/1.1" 200 - +2026-01-11 22:21:48,632 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:21:48] "GET /api/strategies/equityCurve?id=10&_t=1768141308317 HTTP/1.1" 200 - +2026-01-11 22:22:48,322 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:22:48] "GET /api/strategies/positions?id=10&_t=1768141368313 HTTP/1.1" 200 - +2026-01-11 22:22:48,628 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:22:48] "GET /api/strategies/equityCurve?id=10&_t=1768141368313 HTTP/1.1" 200 - +2026-01-11 22:23:48,637 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:23:48] "GET /api/strategies/positions?id=10&_t=1768141428321 HTTP/1.1" 200 - +2026-01-11 22:23:48,637 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:23:48] "GET /api/strategies/equityCurve?id=10&_t=1768141428322 HTTP/1.1" 200 - +2026-01-11 22:24:48,325 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:24:48] "GET /api/strategies/positions?id=10&_t=1768141488317 HTTP/1.1" 200 - +2026-01-11 22:24:48,634 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:24:48] "GET /api/strategies/equityCurve?id=10&_t=1768141488318 HTTP/1.1" 200 - +2026-01-11 22:25:48,636 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:25:48] "GET /api/strategies/positions?id=10&_t=1768141548317 HTTP/1.1" 200 - +2026-01-11 22:25:48,637 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:25:48] "GET /api/strategies/equityCurve?id=10&_t=1768141548318 HTTP/1.1" 200 - +2026-01-11 22:26:48,320 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:26:48] "GET /api/strategies/positions?id=10&_t=1768141608309 HTTP/1.1" 200 - +2026-01-11 22:26:48,625 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:26:48] "GET /api/strategies/equityCurve?id=10&_t=1768141608309 HTTP/1.1" 200 - +2026-01-11 22:27:48,625 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:27:48] "GET /api/strategies/positions?id=10&_t=1768141668309 HTTP/1.1" 200 - +2026-01-11 22:27:48,626 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:27:48] "GET /api/strategies/equityCurve?id=10&_t=1768141668310 HTTP/1.1" 200 - +2026-01-11 22:28:48,323 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:28:48] "GET /api/strategies/positions?id=10&_t=1768141728311 HTTP/1.1" 200 - +2026-01-11 22:28:48,629 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:28:48] "GET /api/strategies/equityCurve?id=10&_t=1768141728312 HTTP/1.1" 200 - +2026-01-11 22:29:48,631 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:29:48] "GET /api/strategies/equityCurve?id=10&_t=1768141788313 HTTP/1.1" 200 - +2026-01-11 22:29:48,631 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:29:48] "GET /api/strategies/positions?id=10&_t=1768141788312 HTTP/1.1" 200 - +2026-01-11 22:30:48,337 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:30:48] "GET /api/strategies/positions?id=10&_t=1768141848319 HTTP/1.1" 200 - +2026-01-11 22:30:48,650 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:30:48] "GET /api/strategies/equityCurve?id=10&_t=1768141848320 HTTP/1.1" 200 - +2026-01-11 22:31:48,634 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:31:48] "GET /api/strategies/positions?id=10&_t=1768141908320 HTTP/1.1" 200 - +2026-01-11 22:31:48,636 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:31:48] "GET /api/strategies/equityCurve?id=10&_t=1768141908320 HTTP/1.1" 200 - +2026-01-11 22:32:01,148 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3115.01, pending_signals=1 +2026-01-11 22:32:01,150 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3115.01, 'position_size': 0, 'timestamp': 1768141920}] +2026-01-11 22:32:11,148 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3115.21, pending_signals=1 +2026-01-11 22:32:11,150 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3115.21, 'position_size': 0, 'timestamp': 1768141920}] +2026-01-11 22:32:21,590 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3114.76, pending_signals=1 +2026-01-11 22:32:21,591 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3114.76, 'position_size': 0, 'timestamp': 1768141920}] +2026-01-11 22:32:31,152 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3114.76, pending_signals=1 +2026-01-11 22:32:31,153 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3114.76, 'position_size': 0, 'timestamp': 1768141920}] +2026-01-11 22:32:42,129 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3114.06, pending_signals=1 +2026-01-11 22:32:42,131 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3114.06, 'position_size': 0, 'timestamp': 1768141920}] +2026-01-11 22:32:48,316 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:32:48] "GET /api/strategies/positions?id=10&_t=1768141968308 HTTP/1.1" 200 - +2026-01-11 22:32:48,625 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:32:48] "GET /api/strategies/equityCurve?id=10&_t=1768141968308 HTTP/1.1" 200 - +2026-01-11 22:32:51,613 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3114.11, pending_signals=1 +2026-01-11 22:32:51,615 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3114.11, 'position_size': 0, 'timestamp': 1768141920}] +2026-01-11 22:33:01,156 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3114.11, pending_signals=2 +2026-01-11 22:33:01,157 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3114.06, 'position_size': 0, 'timestamp': 1768141920}] +2026-01-11 22:33:10,319 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90966.1, pending_signals=1 +2026-01-11 22:33:10,320 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90966.1, 'position_size': 0, 'timestamp': 1768141980}] +2026-01-11 22:33:11,157 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3112.6, pending_signals=2 +2026-01-11 22:33:11,159 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3114.06, 'position_size': 0, 'timestamp': 1768141920}, {'type': 'open_short', 'trigger_price': 3114.06, 'position_size': 0.08, 'timestamp': 1768141920}] +2026-01-11 22:33:11,168 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-11 22:33:11,168 - app.services.analysis - INFO - Starting analysis Crypto:ETH/USDT, language=zh-CN, mode=multi-agent +2026-01-11 22:33:11,168 - app.services.analysis - INFO - Run coordinator: Crypto:ETH/USDT +2026-01-11 22:33:11,169 - app.services.agents.coordinator - INFO - Multi-agent analysis start: Crypto:ETH/USDT, model=None, language=zh-CN +2026-01-11 22:33:12,565 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:ETH/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 22:33:16,037 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:ETH/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 22:33:16,038 - app.services.agents.tools - WARNING - Finnhub news fetch failed: 'Client' object has no attribute 'crypto_news' +2026-01-11 22:33:16,039 - app.services.agents.tools - INFO - Running news search: "ETH/USDT Cryptocurrency" ETH/USDT crypto news analysis +2026-01-11 22:33:17,158 - app.services.search - WARNING - Google Search returned no 'items'. Full response: {"kind": "customsearch#search", "url": {"type": "application/json", "template": "https://www.googleapis.com/customsearch/v1?q={searchTerms}&num={count?}&start={startIndex?}&lr={language?}&safe={safe?}&cx={cx?}&sort={sort?}&filter={filter?}&gl={gl?}&cr={cr?}&googlehost={googleHost?}&c2coff={disableCnTwTranslation?}&hq={hq?}&hl={hl?}&siteSearch={siteSearch?}&siteSearchFilter={siteSearchFilter?}&exactTerms={exactTerms?}&excludeTerms={excludeTerms?}&linkSite={linkSite?}&orTerms={orTerms?}&dateRestrict={dateRestrict?}&lowRange={lowRange?}&highRange={highRange?}&searchType={searchType}&fileType={fileType?}&rights={rights?}&imgSize={imgSize?}&imgType={imgType?}&imgColorType={imgColorType?}&imgDominantColor={imgDominantColor?}&alt=json"}, "queries": {"request": [{"title": "Google Custom Search - \"ETH/USDT Cryptocurrency\" ETH/USDT crypto news analysis", "searchTerms": "\"ETH/USDT Cryptocurrency\" ETH/USDT crypto news analysis", "count": 10, "startIndex": 1, "inputEncoding": "utf8", "outputEncoding": "utf8", "safe": "off", "cx": "17f675b8e3b994281", "dateRestrict": "d7"}]}, "context": {"title": "Global News Search"}, "searchInformation": {"searchTime": 0.161202, "formattedSearchTime": "0.16", "totalResults": "0", "formattedTotalResults": "0"}} +2026-01-11 22:33:17,159 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-11 22:33:18,360 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:33:18,427 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:33:18,480 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:ETH/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 22:33:18,565 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:33:18,888 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:33:19,399 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:33:19,400 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:33:19,400 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:33:19,545 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:ETH/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 22:33:19,590 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:33:19,590 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:33:19,590 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:33:19,870 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90966.1, pending_signals=1 +2026-01-11 22:33:19,873 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90966.1, 'position_size': 0, 'timestamp': 1768141980}] +2026-01-11 22:33:19,893 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:33:19,893 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:33:19,893 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:33:19,943 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:33:19,943 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:33:19,943 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:33:21,157 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:33:22,899 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:33:22,899 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:33:22,900 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:33:22,901 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-11 22:33:24,182 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:33:25,033 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:33:25,130 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:33:25,130 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:33:25,130 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:33:26,460 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:33:26,460 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:33:26,461 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:33:26,462 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-11 22:33:27,678 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:33:29,421 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:33:29,422 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:33:29,422 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:33:29,423 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-11 22:33:30,330 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90982.9, pending_signals=1 +2026-01-11 22:33:30,332 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90982.9, 'position_size': 0, 'timestamp': 1768141980}] +2026-01-11 22:33:30,485 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:33:30,727 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:33:31,316 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:33:31,651 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:33:31,651 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:33:31,651 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:33:32,254 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:33:32,254 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:33:32,254 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:33:32,497 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:33:32,497 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:33:32,497 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:33:32,500 - app.services.agents.coordinator - WARNING - Record reflection failed: 'NoneType' object has no attribute 'get' +2026-01-11 22:33:32,500 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: Crypto:ETH/USDT +2026-01-11 22:33:32,500 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-11 22:33:32,500 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-11 22:33:32,507 - app.services.trading_executor - INFO - AI entry filter rejected: strategy_id=1 symbol=ETH/USDT signal=open_short ai=HOLD reason=ai_hold +2026-01-11 22:33:32,507 - app.services.trading_executor - WARNING - Strategy 1 signal rejected/failed: open_short +2026-01-11 22:33:32,522 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3114.3, pending_signals=2 +2026-01-11 22:33:32,524 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3114.06, 'position_size': 0, 'timestamp': 1768141920}] +2026-01-11 22:33:39,867 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90982.9, pending_signals=1 +2026-01-11 22:33:39,869 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90982.9, 'position_size': 0, 'timestamp': 1768141980}] +2026-01-11 22:33:44,480 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3114.3, pending_signals=2 +2026-01-11 22:33:44,482 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3113.21, 'position_size': 0, 'timestamp': 1768141920}] +2026-01-11 22:33:48,628 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:33:48] "GET /api/strategies/positions?id=10&_t=1768142028313 HTTP/1.1" 200 - +2026-01-11 22:33:48,629 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:33:48] "GET /api/strategies/equityCurve?id=10&_t=1768142028314 HTTP/1.1" 200 - +2026-01-11 22:33:51,011 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90982.9, pending_signals=2 +2026-01-11 22:33:51,013 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90981.1, 'position_size': 0, 'timestamp': 1768141920}] +2026-01-11 22:33:52,525 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3114.3, pending_signals=2 +2026-01-11 22:33:52,527 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3113.21, 'position_size': 0, 'timestamp': 1768141920}] +2026-01-11 22:33:59,869 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90982.9, pending_signals=2 +2026-01-11 22:33:59,871 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90981.1, 'position_size': 0, 'timestamp': 1768141920}] +2026-01-11 22:34:48,324 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:34:48] "GET /api/strategies/positions?id=10&_t=1768142088315 HTTP/1.1" 200 - +2026-01-11 22:34:48,638 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:34:48] "GET /api/strategies/equityCurve?id=10&_t=1768142088315 HTTP/1.1" 200 - +2026-01-11 22:35:12,976 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3116.36, pending_signals=1 +2026-01-11 22:35:12,978 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 3116.36, 'position_size': 0, 'timestamp': 1768142100}] +2026-01-11 22:35:22,538 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3116.36, pending_signals=1 +2026-01-11 22:35:22,540 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 3116.36, 'position_size': 0, 'timestamp': 1768142100}] +2026-01-11 22:35:30,348 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91024.9, pending_signals=1 +2026-01-11 22:35:30,350 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 91024.9, 'position_size': 0, 'timestamp': 1768142100}] +2026-01-11 22:35:39,884 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91024.9, pending_signals=1 +2026-01-11 22:35:39,886 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 91024.9, 'position_size': 0, 'timestamp': 1768142100}] +2026-01-11 22:35:48,637 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:35:48] "GET /api/strategies/positions?id=10&_t=1768142148320 HTTP/1.1" 200 - +2026-01-11 22:35:48,638 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:35:48] "GET /api/strategies/equityCurve?id=10&_t=1768142148320 HTTP/1.1" 200 - +2026-01-11 22:35:51,326 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91024.9, pending_signals=1 +2026-01-11 22:35:51,327 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 91024.9, 'position_size': 0, 'timestamp': 1768142100}] +2026-01-11 22:35:59,895 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91024.9, pending_signals=1 +2026-01-11 22:35:59,897 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 91024.9, 'position_size': 0, 'timestamp': 1768142100}] +2026-01-11 22:36:10,346 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91021.0, pending_signals=2 +2026-01-11 22:36:10,347 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 91024.9, 'position_size': 0, 'timestamp': 1768142100}] +2026-01-11 22:36:19,889 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91021.0, pending_signals=2 +2026-01-11 22:36:19,890 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 91024.9, 'position_size': 0, 'timestamp': 1768142100}] +2026-01-11 22:36:30,333 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91021.0, pending_signals=2 +2026-01-11 22:36:30,335 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 91024.9, 'position_size': 0, 'timestamp': 1768142100}] +2026-01-11 22:36:39,891 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91021.0, pending_signals=2 +2026-01-11 22:36:39,892 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 91024.9, 'position_size': 0, 'timestamp': 1768142100}] +2026-01-11 22:36:48,327 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:36:48] "GET /api/strategies/positions?id=10&_t=1768142208319 HTTP/1.1" 200 - +2026-01-11 22:36:48,631 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:36:48] "GET /api/strategies/equityCurve?id=10&_t=1768142208320 HTTP/1.1" 200 - +2026-01-11 22:36:51,054 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91021.1, pending_signals=2 +2026-01-11 22:36:51,056 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 91023.1, 'position_size': 0, 'timestamp': 1768142100}] +2026-01-11 22:36:59,894 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91021.1, pending_signals=2 +2026-01-11 22:36:59,914 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 91023.1, 'position_size': 0, 'timestamp': 1768142100}] +2026-01-11 22:37:48,626 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:37:48] "GET /api/strategies/positions?id=10&_t=1768142268311 HTTP/1.1" 200 - +2026-01-11 22:37:48,627 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:37:48] "GET /api/strategies/equityCurve?id=10&_t=1768142268311 HTTP/1.1" 200 - +2026-01-11 22:38:48,332 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:38:48] "GET /api/strategies/positions?id=10&_t=1768142328322 HTTP/1.1" 200 - +2026-01-11 22:38:48,638 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:38:48] "GET /api/strategies/equityCurve?id=10&_t=1768142328324 HTTP/1.1" 200 - +2026-01-11 22:39:48,639 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:39:48] "GET /api/strategies/positions?id=10&_t=1768142388313 HTTP/1.1" 200 - +2026-01-11 22:39:48,640 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:39:48] "GET /api/strategies/equityCurve?id=10&_t=1768142388314 HTTP/1.1" 200 - +2026-01-11 22:40:02,574 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3116.24, pending_signals=1 +2026-01-11 22:40:02,576 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 3116.24, 'position_size': 0, 'timestamp': 1768142400}] +2026-01-11 22:40:13,033 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3116.3, pending_signals=1 +2026-01-11 22:40:13,035 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 3116.3, 'position_size': 0, 'timestamp': 1768142400}] +2026-01-11 22:40:22,576 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3116.3, pending_signals=1 +2026-01-11 22:40:22,578 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 3116.3, 'position_size': 0, 'timestamp': 1768142400}] +2026-01-11 22:40:32,577 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3116.98, pending_signals=1 +2026-01-11 22:40:32,579 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 3116.98, 'position_size': 0, 'timestamp': 1768142400}] +2026-01-11 22:40:43,486 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3116.83, pending_signals=2 +2026-01-11 22:40:43,487 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 3116.24, 'position_size': 0.08, 'timestamp': 1768142340}, {'type': 'close_short', 'trigger_price': 3116.24, 'position_size': 0, 'timestamp': 1768142340}] +2026-01-11 22:40:43,497 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-11 22:40:43,497 - app.services.analysis - INFO - Starting analysis Crypto:ETH/USDT, language=zh-CN, mode=multi-agent +2026-01-11 22:40:43,497 - app.services.analysis - INFO - Run coordinator: Crypto:ETH/USDT +2026-01-11 22:40:43,497 - app.services.agents.coordinator - INFO - Multi-agent analysis start: Crypto:ETH/USDT, model=None, language=zh-CN +2026-01-11 22:40:44,669 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:ETH/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 22:40:47,058 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:ETH/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 22:40:47,059 - app.services.agents.tools - WARNING - Finnhub news fetch failed: 'Client' object has no attribute 'crypto_news' +2026-01-11 22:40:47,060 - app.services.agents.tools - INFO - Running news search: "ETH/USDT Cryptocurrency" ETH/USDT crypto news analysis +2026-01-11 22:40:48,192 - app.services.search - WARNING - Google Search returned no 'items'. Full response: {"kind": "customsearch#search", "url": {"type": "application/json", "template": "https://www.googleapis.com/customsearch/v1?q={searchTerms}&num={count?}&start={startIndex?}&lr={language?}&safe={safe?}&cx={cx?}&sort={sort?}&filter={filter?}&gl={gl?}&cr={cr?}&googlehost={googleHost?}&c2coff={disableCnTwTranslation?}&hq={hq?}&hl={hl?}&siteSearch={siteSearch?}&siteSearchFilter={siteSearchFilter?}&exactTerms={exactTerms?}&excludeTerms={excludeTerms?}&linkSite={linkSite?}&orTerms={orTerms?}&dateRestrict={dateRestrict?}&lowRange={lowRange?}&highRange={highRange?}&searchType={searchType}&fileType={fileType?}&rights={rights?}&imgSize={imgSize?}&imgType={imgType?}&imgColorType={imgColorType?}&imgDominantColor={imgDominantColor?}&alt=json"}, "queries": {"request": [{"title": "Google Custom Search - \"ETH/USDT Cryptocurrency\" ETH/USDT crypto news analysis", "searchTerms": "\"ETH/USDT Cryptocurrency\" ETH/USDT crypto news analysis", "count": 10, "startIndex": 1, "inputEncoding": "utf8", "outputEncoding": "utf8", "safe": "off", "cx": "17f675b8e3b994281", "dateRestrict": "d7"}]}, "context": {"title": "Global News Search"}, "searchInformation": {"searchTime": 0.161116, "formattedSearchTime": "0.16", "totalResults": "0", "formattedTotalResults": "0"}} +2026-01-11 22:40:48,193 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-11 22:40:48,323 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:40:48] "GET /api/strategies/positions?id=10&_t=1768142448312 HTTP/1.1" 200 - +2026-01-11 22:40:48,627 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:40:48] "GET /api/strategies/equityCurve?id=10&_t=1768142448313 HTTP/1.1" 200 - +2026-01-11 22:40:49,336 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:40:49,347 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:40:49,553 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:40:49,768 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:ETH/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 22:40:49,957 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:40:50,447 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:40:50,447 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:40:50,447 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:40:50,641 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:40:50,641 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:40:50,641 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:40:50,736 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:ETH/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 22:40:50,848 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:40:50,849 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:40:50,849 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:40:51,212 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:40:51,213 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:40:51,213 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:40:52,449 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:40:53,376 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:40:53,376 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:40:53,376 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:40:53,378 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-11 22:40:54,379 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:40:54,654 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:40:55,301 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:40:55,301 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:40:55,301 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:40:55,845 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:40:55,845 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:40:55,845 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:40:55,846 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-11 22:40:56,778 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:40:58,013 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:40:58,014 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:40:58,014 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:40:58,015 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-11 22:40:59,036 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:40:59,057 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:40:59,318 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:41:00,015 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:41:00,016 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:41:00,016 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:41:00,331 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:41:00,331 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:41:00,332 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:41:00,838 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:41:00,839 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:41:00,839 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:41:00,841 - app.services.agents.coordinator - WARNING - Record reflection failed: 'NoneType' object has no attribute 'get' +2026-01-11 22:41:00,841 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: Crypto:ETH/USDT +2026-01-11 22:41:00,841 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-11 22:41:00,841 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-11 22:41:00,848 - app.services.trading_executor - INFO - AI entry filter rejected: strategy_id=1 symbol=ETH/USDT signal=open_long ai=HOLD reason=ai_hold +2026-01-11 22:41:00,848 - app.services.trading_executor - WARNING - Strategy 1 signal rejected/failed: open_long +2026-01-11 22:41:48,622 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:41:48] "GET /api/strategies/positions?id=10&_t=1768142508310 HTTP/1.1" 200 - +2026-01-11 22:41:48,624 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:41:48] "GET /api/strategies/equityCurve?id=10&_t=1768142508311 HTTP/1.1" 200 - +2026-01-11 22:42:48,329 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:42:48] "GET /api/strategies/positions?id=10&_t=1768142568320 HTTP/1.1" 200 - +2026-01-11 22:42:48,636 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:42:48] "GET /api/strategies/equityCurve?id=10&_t=1768142568321 HTTP/1.1" 200 - +2026-01-11 22:43:48,632 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:43:48] "GET /api/strategies/positions?id=10&_t=1768142628313 HTTP/1.1" 200 - +2026-01-11 22:43:48,633 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:43:48] "GET /api/strategies/equityCurve?id=10&_t=1768142628313 HTTP/1.1" 200 - +2026-01-11 22:43:50,840 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91008.0, pending_signals=1 +2026-01-11 22:43:50,842 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 91008.0, 'position_size': 0, 'timestamp': 1768142580}] +2026-01-11 22:43:52,016 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3114.4, pending_signals=1 +2026-01-11 22:43:52,018 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3114.4, 'position_size': 0, 'timestamp': 1768142580}] +2026-01-11 22:43:59,946 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91008.0, pending_signals=1 +2026-01-11 22:43:59,948 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 91008.0, 'position_size': 0, 'timestamp': 1768142580}] +2026-01-11 22:44:00,888 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3114.4, pending_signals=2 +2026-01-11 22:44:00,890 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3114.4, 'position_size': 0, 'timestamp': 1768142580}, {'type': 'open_short', 'trigger_price': 3114.4, 'position_size': 0.08, 'timestamp': 1768142580}] +2026-01-11 22:44:00,898 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-11 22:44:00,898 - app.services.analysis - INFO - Starting analysis Crypto:ETH/USDT, language=zh-CN, mode=multi-agent +2026-01-11 22:44:00,899 - app.services.analysis - INFO - Run coordinator: Crypto:ETH/USDT +2026-01-11 22:44:00,899 - app.services.agents.coordinator - INFO - Multi-agent analysis start: Crypto:ETH/USDT, model=None, language=zh-CN +2026-01-11 22:44:01,788 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:ETH/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 22:44:04,052 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:ETH/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 22:44:04,054 - app.services.agents.tools - WARNING - Finnhub news fetch failed: 'Client' object has no attribute 'crypto_news' +2026-01-11 22:44:04,054 - app.services.agents.tools - INFO - Running news search: "ETH/USDT Cryptocurrency" ETH/USDT crypto news analysis +2026-01-11 22:44:05,707 - app.services.search - WARNING - Google Search returned no 'items'. Full response: {"kind": "customsearch#search", "url": {"type": "application/json", "template": "https://www.googleapis.com/customsearch/v1?q={searchTerms}&num={count?}&start={startIndex?}&lr={language?}&safe={safe?}&cx={cx?}&sort={sort?}&filter={filter?}&gl={gl?}&cr={cr?}&googlehost={googleHost?}&c2coff={disableCnTwTranslation?}&hq={hq?}&hl={hl?}&siteSearch={siteSearch?}&siteSearchFilter={siteSearchFilter?}&exactTerms={exactTerms?}&excludeTerms={excludeTerms?}&linkSite={linkSite?}&orTerms={orTerms?}&dateRestrict={dateRestrict?}&lowRange={lowRange?}&highRange={highRange?}&searchType={searchType}&fileType={fileType?}&rights={rights?}&imgSize={imgSize?}&imgType={imgType?}&imgColorType={imgColorType?}&imgDominantColor={imgDominantColor?}&alt=json"}, "queries": {"request": [{"title": "Google Custom Search - \"ETH/USDT Cryptocurrency\" ETH/USDT crypto news analysis", "searchTerms": "\"ETH/USDT Cryptocurrency\" ETH/USDT crypto news analysis", "count": 10, "startIndex": 1, "inputEncoding": "utf8", "outputEncoding": "utf8", "safe": "off", "cx": "17f675b8e3b994281", "dateRestrict": "d7"}]}, "context": {"title": "Global News Search"}, "searchInformation": {"searchTime": 0.164344, "formattedSearchTime": "0.16", "totalResults": "0", "formattedTotalResults": "0"}} +2026-01-11 22:44:05,708 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-11 22:44:06,862 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:44:07,024 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:ETH/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 22:44:07,137 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:44:07,250 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:44:07,373 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:44:08,057 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:44:08,057 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:08,057 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:08,164 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:44:08,164 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:08,165 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:08,317 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:ETH/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 22:44:08,650 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:44:08,650 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:08,651 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:08,655 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:44:08,655 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:08,655 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:09,506 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:44:10,407 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90994.2, pending_signals=2 +2026-01-11 22:44:10,409 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 91008.0, 'position_size': 0, 'timestamp': 1768142580}, {'type': 'open_short', 'trigger_price': 91008.0, 'position_size': 0.08, 'timestamp': 1768142580}] +2026-01-11 22:44:10,415 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:44:10,416 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:10,416 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:10,417 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-11 22:44:10,423 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-11 22:44:10,423 - app.services.analysis - INFO - Starting analysis Crypto:BTC/USDT, language=zh-CN, mode=multi-agent +2026-01-11 22:44:10,424 - app.services.analysis - INFO - Run coordinator: Crypto:BTC/USDT +2026-01-11 22:44:10,424 - app.services.agents.coordinator - INFO - Multi-agent analysis start: Crypto:BTC/USDT, model=None, language=zh-CN +2026-01-11 22:44:11,697 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 22:44:11,805 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:44:11,934 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:44:12,933 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:44:12,934 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:12,934 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:13,444 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:44:13,444 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:13,445 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:13,446 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-11 22:44:14,430 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:44:14,747 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 22:44:14,748 - app.services.agents.tools - WARNING - Finnhub news fetch failed: 'Client' object has no attribute 'crypto_news' +2026-01-11 22:44:14,748 - app.services.agents.tools - INFO - Running news search: "BTC/USDT Cryptocurrency" BTC/USDT crypto news analysis +2026-01-11 22:44:15,940 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:44:15,941 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:15,941 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:15,942 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-11 22:44:16,088 - app.services.agents.tools - INFO - Deep reading: Fxnl Trading Review | TikTok +2026-01-11 22:44:17,019 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:44:17,021 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:44:17,235 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-11 22:44:17,751 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:44:18,196 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:44:18,197 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:18,197 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:18,351 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:44:18,351 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:18,352 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:18,367 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 22:44:18,393 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:44:18,644 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:44:18,729 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:44:18,833 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:44:19,260 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:44:19,260 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:19,260 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:19,261 - app.services.agents.coordinator - WARNING - Record reflection failed: 'NoneType' object has no attribute 'get' +2026-01-11 22:44:19,261 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: Crypto:ETH/USDT +2026-01-11 22:44:19,261 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-11 22:44:19,262 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-11 22:44:19,268 - app.services.trading_executor - INFO - AI entry filter rejected: strategy_id=1 symbol=ETH/USDT signal=open_short ai=HOLD reason=ai_hold +2026-01-11 22:44:19,268 - app.services.trading_executor - WARNING - Strategy 1 signal rejected/failed: open_short +2026-01-11 22:44:19,284 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3114.14, pending_signals=2 +2026-01-11 22:44:19,286 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3114.4, 'position_size': 0, 'timestamp': 1768142580}, {'type': 'open_short', 'trigger_price': 3114.4, 'position_size': 0.08, 'timestamp': 1768142580}] +2026-01-11 22:44:19,325 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 22:44:19,665 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:44:19,665 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:19,665 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:19,950 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:44:19,951 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:19,951 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:20,096 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:44:20,097 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:20,097 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:20,469 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:44:20,584 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:44:20,585 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:20,585 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:21,388 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:44:21,388 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:21,388 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:21,390 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-11 22:44:22,674 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:44:23,218 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:44:23,579 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:44:23,580 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:23,580 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:24,959 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:44:24,960 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:24,961 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:24,962 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-11 22:44:25,869 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:44:27,151 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:44:27,151 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:27,151 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:27,152 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-11 22:44:28,174 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:44:28,426 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:44:28,462 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:44:29,150 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:44:29,150 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:29,151 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:29,424 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:44:29,424 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:29,424 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:29,454 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:44:29,454 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:29,454 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:44:29,456 - app.services.agents.coordinator - WARNING - Record reflection failed: 'NoneType' object has no attribute 'get' +2026-01-11 22:44:29,456 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: Crypto:BTC/USDT +2026-01-11 22:44:29,456 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-11 22:44:29,456 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-11 22:44:29,463 - app.services.trading_executor - INFO - AI entry filter rejected: strategy_id=2 symbol=BTC/USDT signal=open_short ai=HOLD reason=ai_hold +2026-01-11 22:44:29,463 - app.services.trading_executor - WARNING - Strategy 2 signal rejected/failed: open_short +2026-01-11 22:44:29,730 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3115.32, pending_signals=2 +2026-01-11 22:44:29,732 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3114.4, 'position_size': 0, 'timestamp': 1768142580}] +2026-01-11 22:44:29,926 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91014.9, pending_signals=2 +2026-01-11 22:44:29,928 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 91008.0, 'position_size': 0, 'timestamp': 1768142580}] +2026-01-11 22:44:39,286 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3115.32, pending_signals=2 +2026-01-11 22:44:39,287 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3114.4, 'position_size': 0, 'timestamp': 1768142580}] +2026-01-11 22:44:39,479 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91014.9, pending_signals=2 +2026-01-11 22:44:39,481 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 91008.0, 'position_size': 0, 'timestamp': 1768142580}] +2026-01-11 22:44:48,329 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:44:48] "GET /api/strategies/positions?id=10&_t=1768142688319 HTTP/1.1" 200 - +2026-01-11 22:44:48,635 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:44:48] "GET /api/strategies/equityCurve?id=10&_t=1768142688319 HTTP/1.1" 200 - +2026-01-11 22:44:49,287 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3115.33, pending_signals=2 +2026-01-11 22:44:49,288 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3114.4, 'position_size': 0, 'timestamp': 1768142580}] +2026-01-11 22:44:50,197 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91026.0, pending_signals=2 +2026-01-11 22:44:50,200 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 91008.0, 'position_size': 0, 'timestamp': 1768142580}] +2026-01-11 22:45:00,183 - app.services.trading_executor - WARNING - Signal expired and removed: {'type': 'close_long', 'trigger_price': 3114.01, 'position_size': 0, 'timestamp': 1768142580} +2026-01-11 22:45:00,183 - app.services.trading_executor - WARNING - Signal expired and removed: {'type': 'open_short', 'trigger_price': 3114.01, 'position_size': 0.08, 'timestamp': 1768142580} +2026-01-11 22:45:00,429 - app.services.trading_executor - WARNING - Signal expired and removed: {'type': 'close_long', 'trigger_price': 90991.1, 'position_size': 0, 'timestamp': 1768142580} +2026-01-11 22:45:00,429 - app.services.trading_executor - WARNING - Signal expired and removed: {'type': 'open_short', 'trigger_price': 90991.1, 'position_size': 0.08, 'timestamp': 1768142580} +2026-01-11 22:45:48,633 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:45:48] "GET /api/strategies/positions?id=10&_t=1768142748315 HTTP/1.1" 200 - +2026-01-11 22:45:48,636 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:45:48] "GET /api/strategies/equityCurve?id=10&_t=1768142748316 HTTP/1.1" 200 - +2026-01-11 22:46:48,328 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:46:48] "GET /api/strategies/positions?id=10&_t=1768142808320 HTTP/1.1" 200 - +2026-01-11 22:46:48,634 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:46:48] "GET /api/strategies/equityCurve?id=10&_t=1768142808320 HTTP/1.1" 200 - +2026-01-11 22:47:37,640 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:47:37] "GET /api/strategies/positions?id=10&_t=1768142857135 HTTP/1.1" 200 - +2026-01-11 22:47:37,641 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:47:37] "GET /api/strategies/equityCurve?id=10&_t=1768142857136 HTTP/1.1" 200 - +2026-01-11 22:47:38,842 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:47:38] "GET /api/market/types?_t=1768142858834 HTTP/1.1" 200 - +2026-01-11 22:47:39,151 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:47:39] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-11 22:47:39,152 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:47:39] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-11 22:47:39,477 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-11 22:47:40,713 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:47:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-11 22:47:42,209 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:47:42] "GET /api/strategies?_t=1768142862196 HTTP/1.1" 200 - +2026-01-11 22:48:51,413 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:48:51] "GET /api/settings/schema?_t=1768142931406 HTTP/1.1" 200 - +2026-01-11 22:48:51,634 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:48:51] "GET /api/settings/values?_t=1768142931406 HTTP/1.1" 200 - +2026-01-11 22:49:52,451 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:49:52] "GET /api/dashboard/summary?_t=1768142992439 HTTP/1.1" 200 - +2026-01-11 22:49:52,650 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:49:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768142992439 HTTP/1.1" 200 - +2026-01-11 22:49:52,760 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:49:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768142992439 HTTP/1.1" 200 - +2026-01-11 22:49:54,725 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:49:54] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-11 22:49:55,025 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:49:55] "GET /api/market/config?_t=1768142994694 HTTP/1.1" 200 - +2026-01-11 22:49:55,116 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-11 22:49:55,116 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-11 22:49:55,116 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-11 22:49:55,116 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-11 22:49:55,117 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-11 22:49:55,349 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:49:55] "GET /api/market/types?_t=1768142995033 HTTP/1.1" 200 - +2026-01-11 22:49:56,002 - app.data_sources.base - WARNING - Warning: 300475 data is delayed (254996s) +2026-01-11 22:49:56,019 - app.data_sources.base - WARNING - Warning: 000858 data is delayed (254996s) +2026-01-11 22:49:56,023 - app.data_sources.base - WARNING - Warning: 600519 data is delayed (254996s) +2026-01-11 22:49:56,193 - app.data_sources.base - WARNING - Warning: 00700 data is delayed (254996s) +2026-01-11 22:49:56,909 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (208197s) +2026-01-11 22:49:56,919 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:49:56] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-11 22:50:00,001 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:50:00] "GET /api/settings/schema?_t=1768142999684 HTTP/1.1" 200 - +2026-01-11 22:50:00,003 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 22:50:00] "GET /api/settings/values?_t=1768142999684 HTTP/1.1" 200 - +2026-01-11 22:54:30,004 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91084.4, pending_signals=1 +2026-01-11 22:54:30,006 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 91084.4, 'position_size': 0, 'timestamp': 1768143240}] +2026-01-11 22:54:39,561 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91084.4, pending_signals=1 +2026-01-11 22:54:39,562 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 91084.4, 'position_size': 0, 'timestamp': 1768143240}] +2026-01-11 22:54:39,822 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3117.62, pending_signals=1 +2026-01-11 22:54:39,823 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 3117.62, 'position_size': 0, 'timestamp': 1768143240}] +2026-01-11 22:54:49,378 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3117.62, pending_signals=1 +2026-01-11 22:54:49,380 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 3117.62, 'position_size': 0, 'timestamp': 1768143240}] +2026-01-11 22:54:50,331 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91118.9, pending_signals=1 +2026-01-11 22:54:50,333 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 91118.9, 'position_size': 0, 'timestamp': 1768143240}] +2026-01-11 22:55:00,284 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3119.64, pending_signals=1 +2026-01-11 22:55:00,285 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 3118.95, 'position_size': 0, 'timestamp': 1768143240}] +2026-01-11 22:55:00,315 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91118.9, pending_signals=1 +2026-01-11 22:55:00,317 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 91119.0, 'position_size': 0, 'timestamp': 1768143240}] +2026-01-11 22:55:09,833 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3119.45, pending_signals=2 +2026-01-11 22:55:09,835 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 3118.95, 'position_size': 0.08, 'timestamp': 1768143240}, {'type': 'close_short', 'trigger_price': 3118.95, 'position_size': 0, 'timestamp': 1768143240}] +2026-01-11 22:55:09,845 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-11 22:55:09,845 - app.services.analysis - INFO - Starting analysis Crypto:ETH/USDT, language=zh-CN, mode=multi-agent +2026-01-11 22:55:09,845 - app.services.analysis - INFO - Run coordinator: Crypto:ETH/USDT +2026-01-11 22:55:09,845 - app.services.agents.coordinator - INFO - Multi-agent analysis start: Crypto:ETH/USDT, model=None, language=zh-CN +2026-01-11 22:55:10,040 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91108.0, pending_signals=2 +2026-01-11 22:55:10,041 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 91119.0, 'position_size': 0, 'timestamp': 1768143240}] +2026-01-11 22:55:11,058 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:ETH/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 22:55:13,551 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:ETH/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 22:55:13,552 - app.services.agents.tools - WARNING - Finnhub news fetch failed: 'Client' object has no attribute 'crypto_news' +2026-01-11 22:55:13,552 - app.services.agents.tools - INFO - Running news search: "ETH/USDT Cryptocurrency" ETH/USDT crypto news analysis +2026-01-11 22:55:15,687 - app.services.search - WARNING - Google Search returned no 'items'. Full response: {"kind": "customsearch#search", "url": {"type": "application/json", "template": "https://www.googleapis.com/customsearch/v1?q={searchTerms}&num={count?}&start={startIndex?}&lr={language?}&safe={safe?}&cx={cx?}&sort={sort?}&filter={filter?}&gl={gl?}&cr={cr?}&googlehost={googleHost?}&c2coff={disableCnTwTranslation?}&hq={hq?}&hl={hl?}&siteSearch={siteSearch?}&siteSearchFilter={siteSearchFilter?}&exactTerms={exactTerms?}&excludeTerms={excludeTerms?}&linkSite={linkSite?}&orTerms={orTerms?}&dateRestrict={dateRestrict?}&lowRange={lowRange?}&highRange={highRange?}&searchType={searchType}&fileType={fileType?}&rights={rights?}&imgSize={imgSize?}&imgType={imgType?}&imgColorType={imgColorType?}&imgDominantColor={imgDominantColor?}&alt=json"}, "queries": {"request": [{"title": "Google Custom Search - \"ETH/USDT Cryptocurrency\" ETH/USDT crypto news analysis", "searchTerms": "\"ETH/USDT Cryptocurrency\" ETH/USDT crypto news analysis", "count": 10, "startIndex": 1, "inputEncoding": "utf8", "outputEncoding": "utf8", "safe": "off", "cx": "17f675b8e3b994281", "dateRestrict": "d7"}]}, "context": {"title": "Global News Search"}, "searchInformation": {"searchTime": 0.191347, "formattedSearchTime": "0.19", "totalResults": "0", "formattedTotalResults": "0"}} +2026-01-11 22:55:15,688 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-11 22:55:17,123 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:55:17,163 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:55:17,575 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:ETH/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 22:55:18,128 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:55:18,438 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:55:18,438 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:55:18,438 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:55:18,488 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:ETH/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 22:55:18,640 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:55:18,693 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:55:18,693 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:55:18,693 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:55:19,566 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91108.0, pending_signals=2 +2026-01-11 22:55:19,568 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 91119.0, 'position_size': 0, 'timestamp': 1768143240}] +2026-01-11 22:55:19,823 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:55:19,824 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:55:19,824 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:55:20,017 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:55:20,133 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:55:20,133 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:55:20,133 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:55:21,198 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:55:21,198 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:55:21,198 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:55:21,200 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-11 22:55:22,733 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:55:23,617 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:55:25,066 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:55:25,067 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:55:25,067 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:55:25,317 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:55:25,317 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:55:25,317 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:55:25,318 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-11 22:55:27,066 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:55:29,231 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:55:29,231 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:55:29,231 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:55:29,232 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-11 22:55:30,267 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:55:30,471 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91110.0, pending_signals=2 +2026-01-11 22:55:30,473 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 91119.0, 'position_size': 0, 'timestamp': 1768143240}] +2026-01-11 22:55:30,578 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:55:31,238 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:55:31,238 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:55:31,238 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:55:31,803 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:55:31,803 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:55:31,803 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:55:39,569 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91110.0, pending_signals=2 +2026-01-11 22:55:39,571 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 91119.0, 'position_size': 0, 'timestamp': 1768143240}] +2026-01-11 22:55:43,298 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 22:55:44,259 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 22:55:44,260 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:55:44,260 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 22:55:44,261 - app.services.agents.coordinator - WARNING - Record reflection failed: 'NoneType' object has no attribute 'get' +2026-01-11 22:55:44,261 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: Crypto:ETH/USDT +2026-01-11 22:55:44,261 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-11 22:55:44,261 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-11 22:55:44,269 - app.services.trading_executor - INFO - AI entry filter rejected: strategy_id=1 symbol=ETH/USDT signal=open_long ai=HOLD reason=ai_hold +2026-01-11 22:55:44,269 - app.services.trading_executor - WARNING - Strategy 1 signal rejected/failed: open_long +2026-01-11 22:55:44,286 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3118.76, pending_signals=2 +2026-01-11 22:55:44,287 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 3118.95, 'position_size': 0, 'timestamp': 1768143240}] +2026-01-11 22:55:50,170 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91082.0, pending_signals=2 +2026-01-11 22:55:50,173 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 91119.0, 'position_size': 0, 'timestamp': 1768143240}] +2026-01-11 22:55:54,731 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3119.0, pending_signals=2 +2026-01-11 22:55:54,733 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 3118.95, 'position_size': 0.08, 'timestamp': 1768143240}, {'type': 'close_short', 'trigger_price': 3118.95, 'position_size': 0, 'timestamp': 1768143240}] +2026-01-11 22:56:00,270 - app.services.trading_executor - WARNING - Signal expired and removed: {'type': 'open_long', 'trigger_price': 91119.0, 'position_size': 0.08, 'timestamp': 1768143240} +2026-01-11 22:56:00,271 - app.services.trading_executor - WARNING - Signal expired and removed: {'type': 'close_short', 'trigger_price': 91119.0, 'position_size': 0, 'timestamp': 1768143240} +2026-01-11 23:03:30,076 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91051.5, pending_signals=1 +2026-01-11 23:03:30,078 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 91051.5, 'position_size': 0, 'timestamp': 1768143780}] +2026-01-11 23:03:39,632 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91051.5, pending_signals=1 +2026-01-11 23:03:39,634 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 91051.5, 'position_size': 0, 'timestamp': 1768143780}] +2026-01-11 23:03:50,075 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91049.0, pending_signals=1 +2026-01-11 23:03:50,077 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 91049.0, 'position_size': 0, 'timestamp': 1768143780}] +2026-01-11 23:04:00,675 - app.services.trading_executor - WARNING - Signal expired and removed: {'type': 'close_long', 'trigger_price': 91063.1, 'position_size': 0, 'timestamp': 1768143720} +2026-01-11 23:04:00,675 - app.services.trading_executor - WARNING - Signal expired and removed: {'type': 'open_short', 'trigger_price': 91063.1, 'position_size': 0.08, 'timestamp': 1768143720} +2026-01-11 23:11:44,411 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3121.0, pending_signals=1 +2026-01-11 23:11:44,413 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3121.0, 'position_size': 0, 'timestamp': 1768144260}] +2026-01-11 23:11:54,873 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3118.71, pending_signals=1 +2026-01-11 23:11:54,874 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3118.71, 'position_size': 0, 'timestamp': 1768144260}] +2026-01-11 23:12:05,120 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3118.71, pending_signals=2 +2026-01-11 23:12:05,122 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3118.19, 'position_size': 0, 'timestamp': 1768144260}] +2026-01-11 23:12:14,415 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3117.95, pending_signals=2 +2026-01-11 23:12:14,417 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3118.19, 'position_size': 0, 'timestamp': 1768144260}, {'type': 'open_short', 'trigger_price': 3118.19, 'position_size': 0.08, 'timestamp': 1768144260}] +2026-01-11 23:12:14,425 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-11 23:12:14,425 - app.services.analysis - INFO - Starting analysis Crypto:ETH/USDT, language=zh-CN, mode=multi-agent +2026-01-11 23:12:14,425 - app.services.analysis - INFO - Run coordinator: Crypto:ETH/USDT +2026-01-11 23:12:14,425 - app.services.agents.coordinator - INFO - Multi-agent analysis start: Crypto:ETH/USDT, model=None, language=zh-CN +2026-01-11 23:12:15,558 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:ETH/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 23:12:18,023 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:ETH/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 23:12:18,025 - app.services.agents.tools - WARNING - Finnhub news fetch failed: 'Client' object has no attribute 'crypto_news' +2026-01-11 23:12:18,025 - app.services.agents.tools - INFO - Running news search: "ETH/USDT Cryptocurrency" ETH/USDT crypto news analysis +2026-01-11 23:12:19,461 - app.services.search - WARNING - Google Search returned no 'items'. Full response: {"kind": "customsearch#search", "url": {"type": "application/json", "template": "https://www.googleapis.com/customsearch/v1?q={searchTerms}&num={count?}&start={startIndex?}&lr={language?}&safe={safe?}&cx={cx?}&sort={sort?}&filter={filter?}&gl={gl?}&cr={cr?}&googlehost={googleHost?}&c2coff={disableCnTwTranslation?}&hq={hq?}&hl={hl?}&siteSearch={siteSearch?}&siteSearchFilter={siteSearchFilter?}&exactTerms={exactTerms?}&excludeTerms={excludeTerms?}&linkSite={linkSite?}&orTerms={orTerms?}&dateRestrict={dateRestrict?}&lowRange={lowRange?}&highRange={highRange?}&searchType={searchType}&fileType={fileType?}&rights={rights?}&imgSize={imgSize?}&imgType={imgType?}&imgColorType={imgColorType?}&imgDominantColor={imgDominantColor?}&alt=json"}, "queries": {"request": [{"title": "Google Custom Search - \"ETH/USDT Cryptocurrency\" ETH/USDT crypto news analysis", "searchTerms": "\"ETH/USDT Cryptocurrency\" ETH/USDT crypto news analysis", "count": 10, "startIndex": 1, "inputEncoding": "utf8", "outputEncoding": "utf8", "safe": "off", "cx": "17f675b8e3b994281", "dateRestrict": "d7"}]}, "context": {"title": "Global News Search"}, "searchInformation": {"searchTime": 0.153057, "formattedSearchTime": "0.15", "totalResults": "0", "formattedTotalResults": "0"}} +2026-01-11 23:12:19,462 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-11 23:12:20,619 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 23:12:20,897 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 23:12:20,992 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 23:12:21,144 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:ETH/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 23:12:21,692 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 23:12:22,001 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 23:12:22,002 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 23:12:22,002 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 23:12:22,109 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 23:12:22,109 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 23:12:22,110 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 23:12:22,217 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 23:12:22,218 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 23:12:22,218 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 23:12:22,327 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:ETH/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-11 23:12:22,600 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 23:12:22,600 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 23:12:22,601 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 23:12:23,553 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 23:12:24,952 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 23:12:24,952 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 23:12:24,952 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 23:12:24,954 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-11 23:12:26,200 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 23:12:27,142 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 23:12:27,143 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 23:12:27,143 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 23:12:27,337 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 23:12:29,085 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 23:12:29,085 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 23:12:29,086 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 23:12:29,087 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-11 23:12:30,548 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 23:12:31,527 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 23:12:31,527 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 23:12:31,527 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 23:12:31,528 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-11 23:12:32,926 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 23:12:33,169 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 23:12:33,415 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-11 23:12:34,141 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 23:12:34,142 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 23:12:34,142 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 23:12:34,981 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 23:12:34,981 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 23:12:34,981 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 23:12:35,255 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-11 23:12:35,256 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 23:12:35,256 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-11 23:12:35,257 - app.services.agents.coordinator - WARNING - Record reflection failed: 'NoneType' object has no attribute 'get' +2026-01-11 23:12:35,257 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: Crypto:ETH/USDT +2026-01-11 23:12:35,257 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-11 23:12:35,257 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-11 23:12:35,264 - app.services.trading_executor - INFO - AI entry filter rejected: strategy_id=1 symbol=ETH/USDT signal=open_short ai=HOLD reason=ai_hold +2026-01-11 23:12:35,264 - app.services.trading_executor - WARNING - Strategy 1 signal rejected/failed: open_short +2026-01-11 23:12:35,278 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3120.22, pending_signals=2 +2026-01-11 23:12:35,281 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3118.19, 'position_size': 0, 'timestamp': 1768144260}] +2026-01-11 23:12:45,726 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3119.85, pending_signals=2 +2026-01-11 23:12:45,728 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3118.19, 'position_size': 0, 'timestamp': 1768144260}] +2026-01-11 23:12:55,280 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3119.85, pending_signals=2 +2026-01-11 23:12:55,302 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3118.19, 'position_size': 0, 'timestamp': 1768144260}] +2026-01-11 23:35:15,973 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:15] "GET /api/market/types?_t=1768145715648 HTTP/1.1" 200 - +2026-01-11 23:35:15,977 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:15] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-11 23:35:15,978 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:15] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-11 23:35:16,218 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-11 23:35:16,909 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-11 23:35:18,373 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:18] "GET /api/strategies?_t=1768145718364 HTTP/1.1" 200 - +2026-01-11 23:35:19,816 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:19] "GET /api/strategies/positions?id=13&_t=1768145719505 HTTP/1.1" 200 - +2026-01-11 23:35:19,816 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:19] "GET /api/strategies/equityCurve?id=13&_t=1768145719503 HTTP/1.1" 200 - +2026-01-11 23:35:19,816 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:19] "GET /api/strategies/equityCurve?id=13&_t=1768145719503 HTTP/1.1" 200 - +2026-01-11 23:35:20,786 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:20] "GET /api/strategies/trades?id=13&_t=1768145720778 HTTP/1.1" 200 - +2026-01-11 23:35:22,350 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:22] "GET /api/strategies/trades?id=12&_t=1768145722025 HTTP/1.1" 200 - +2026-01-11 23:35:22,351 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:22] "GET /api/strategies/positions?id=12&_t=1768145722025 HTTP/1.1" 200 - +2026-01-11 23:35:22,352 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:22] "GET /api/strategies/equityCurve?id=12&_t=1768145722024 HTTP/1.1" 200 - +2026-01-11 23:35:22,352 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:22] "GET /api/strategies/equityCurve?id=12&_t=1768145722024 HTTP/1.1" 200 - +2026-01-11 23:35:23,524 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:23] "GET /api/strategies/equityCurve?id=11&_t=1768145723514 HTTP/1.1" 200 - +2026-01-11 23:35:23,839 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:23] "GET /api/strategies/trades?id=11&_t=1768145723515 HTTP/1.1" 200 - +2026-01-11 23:35:23,839 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:23] "GET /api/strategies/positions?id=11&_t=1768145723515 HTTP/1.1" 200 - +2026-01-11 23:35:23,840 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:23] "GET /api/strategies/equityCurve?id=11&_t=1768145723514 HTTP/1.1" 200 - +2026-01-11 23:35:25,226 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:25] "GET /api/strategies/trades?id=10&_t=1768145724910 HTTP/1.1" 200 - +2026-01-11 23:35:25,227 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:25] "GET /api/strategies/positions?id=10&_t=1768145724910 HTTP/1.1" 200 - +2026-01-11 23:35:25,228 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:25] "GET /api/strategies/equityCurve?id=10&_t=1768145724909 HTTP/1.1" 200 - +2026-01-11 23:35:25,229 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:25] "GET /api/strategies/equityCurve?id=10&_t=1768145724909 HTTP/1.1" 200 - +2026-01-11 23:35:26,147 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:26] "GET /api/strategies/equityCurve?id=14&_t=1768145726139 HTTP/1.1" 200 - +2026-01-11 23:35:26,464 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:26] "GET /api/strategies/trades?id=14&_t=1768145726140 HTTP/1.1" 200 - +2026-01-11 23:35:26,464 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:26] "GET /api/strategies/positions?id=14&_t=1768145726140 HTTP/1.1" 200 - +2026-01-11 23:35:26,465 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:26] "GET /api/strategies/equityCurve?id=14&_t=1768145726139 HTTP/1.1" 200 - +2026-01-11 23:35:31,467 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:31] "GET /api/market/config?_t=1768145731117 HTTP/1.1" 200 - +2026-01-11 23:35:31,468 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:31] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-11 23:35:31,707 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:31] "GET /api/market/types?_t=1768145731477 HTTP/1.1" 200 - +2026-01-11 23:35:31,815 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (210932s) +2026-01-11 23:35:32,192 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:32] "GET /api/dashboard/summary?_t=1768145732168 HTTP/1.1" 200 - +2026-01-11 23:35:32,590 - app.data_sources.base - WARNING - Warning: 300475 data is delayed (257733s) +2026-01-11 23:35:32,598 - app.data_sources.base - WARNING - Warning: 000858 data is delayed (257733s) +2026-01-11 23:35:32,632 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768145732168 HTTP/1.1" 200 - +2026-01-11 23:35:32,633 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768145732168 HTTP/1.1" 200 - +2026-01-11 23:35:32,749 - app.data_sources.base - WARNING - Warning: 00700 data is delayed (257733s) +2026-01-11 23:35:32,817 - app.data_sources.base - WARNING - Warning: 600519 data is delayed (257733s) +2026-01-11 23:35:33,441 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:33] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-11 23:35:37,457 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768145737142 HTTP/1.1" 200 - +2026-01-11 23:35:38,428 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:38] "GET /api/market/config?_t=1768145738421 HTTP/1.1" 200 - +2026-01-11 23:35:38,735 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:38] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-11 23:35:38,788 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:38] "GET /api/market/types?_t=1768145738443 HTTP/1.1" 200 - +2026-01-11 23:35:39,101 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:39] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-11 23:35:39,405 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:39] "GET /api/market/types?_t=1768145739080 HTTP/1.1" 200 - +2026-01-11 23:35:39,407 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:39] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-11 23:35:39,408 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:39] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-11 23:35:39,742 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-11 23:35:39,743 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-11 23:35:39,980 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:39] "GET /api/strategies?_t=1768145739664 HTTP/1.1" 200 - +2026-01-11 23:35:40,785 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:40] "GET /api/settings/schema?_t=1768145740772 HTTP/1.1" 200 - +2026-01-11 23:35:41,158 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:41] "GET /api/settings/values?_t=1768145740772 HTTP/1.1" 200 - +2026-01-11 23:35:42,104 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:42] "GET /api/strategies?_t=1768145741789 HTTP/1.1" 200 - +2026-01-11 23:35:44,542 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:44] "GET /api/settings/schema?_t=1768145744536 HTTP/1.1" 200 - +2026-01-11 23:35:44,857 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:44] "GET /api/settings/values?_t=1768145744536 HTTP/1.1" 200 - +2026-01-11 23:35:54,772 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:54] "GET /api/strategies?_t=1768145754451 HTTP/1.1" 200 - +2026-01-11 23:35:55,404 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:55] "GET /api/market/types?_t=1768145755386 HTTP/1.1" 200 - +2026-01-11 23:35:55,706 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:55] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-11 23:35:55,713 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:55] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-11 23:35:56,067 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-11 23:35:56,069 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-11 23:35:57,082 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:35:57] "GET /api/strategies?_t=1768145757050 HTTP/1.1" 200 - +2026-01-11 23:36:06,766 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:36:06] "GET /api/market/types?_t=1768145766451 HTTP/1.1" 200 - +2026-01-11 23:36:06,770 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:36:06] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-11 23:36:06,772 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:36:06] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-11 23:36:07,023 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-11 23:36:07,024 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:36:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-11 23:36:12,327 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:36:12] "GET /api/market/config?_t=1768145772311 HTTP/1.1" 200 - +2026-01-11 23:36:12,633 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:36:12] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-11 23:36:12,662 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:36:12] "GET /api/market/types?_t=1768145772347 HTTP/1.1" 200 - +2026-01-11 23:36:12,973 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:36:12] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-11 23:36:14,777 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:36:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768145774442 HTTP/1.1" 200 - +2026-01-11 23:36:14,778 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:36:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768145774442 HTTP/1.1" 200 - +2026-01-11 23:36:14,781 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:36:14] "GET /api/dashboard/summary?_t=1768145774442 HTTP/1.1" 200 - +2026-01-11 23:36:20,318 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:36:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768145780309 HTTP/1.1" 200 - +2026-01-11 23:36:25,627 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:36:25] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768145785309 HTTP/1.1" 200 - +2026-01-11 23:36:30,330 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:36:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768145790319 HTTP/1.1" 200 - +2026-01-11 23:36:35,635 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:36:35] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768145795319 HTTP/1.1" 200 - +2026-01-11 23:36:40,327 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:36:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768145800317 HTTP/1.1" 200 - +2026-01-11 23:36:45,637 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:36:45] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768145805319 HTTP/1.1" 200 - +2026-01-11 23:36:50,321 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:36:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768145810313 HTTP/1.1" 200 - +2026-01-11 23:36:55,634 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:36:55] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768145815318 HTTP/1.1" 200 - +2026-01-11 23:37:00,328 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:37:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768145820313 HTTP/1.1" 200 - +2026-01-11 23:37:05,633 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:37:05] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768145825313 HTTP/1.1" 200 - +2026-01-11 23:37:10,322 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:37:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768145830313 HTTP/1.1" 200 - +2026-01-11 23:37:15,629 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:37:15] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768145835313 HTTP/1.1" 200 - +2026-01-11 23:37:48,317 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:37:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768145868309 HTTP/1.1" 200 - +2026-01-11 23:38:48,631 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:38:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768145928314 HTTP/1.1" 200 - +2026-01-11 23:39:48,335 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:39:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768145988318 HTTP/1.1" 200 - +2026-01-11 23:40:48,626 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:40:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768146048308 HTTP/1.1" 200 - +2026-01-11 23:41:10,415 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91019.7, pending_signals=1 +2026-01-11 23:41:10,420 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 91019.7, 'position_size': 0, 'timestamp': 1768146060}] +2026-01-11 23:41:19,963 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91019.7, pending_signals=1 +2026-01-11 23:41:19,966 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 91019.7, 'position_size': 0, 'timestamp': 1768146060}] +2026-01-11 23:41:48,322 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:41:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768146108313 HTTP/1.1" 200 - +2026-01-11 23:42:48,631 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:42:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768146168308 HTTP/1.1" 200 - +2026-01-11 23:43:48,329 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:43:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768146228317 HTTP/1.1" 200 - +2026-01-11 23:44:48,635 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:44:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768146288312 HTTP/1.1" 200 - +2026-01-11 23:44:51,463 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:44:51] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768146291420 HTTP/1.1" 200 - +2026-01-11 23:44:53,223 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:44:53] "GET /api/strategies?_t=1768146292899 HTTP/1.1" 200 - +2026-01-11 23:45:02,314 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:45:02] "GET /api/strategies/equityCurve?id=14&_t=1768146302296 HTTP/1.1" 200 - +2026-01-11 23:45:02,624 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:45:02] "GET /api/strategies/positions?id=14&_t=1768146302302 HTTP/1.1" 200 - +2026-01-11 23:45:02,625 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:45:02] "GET /api/strategies/equityCurve?id=14&_t=1768146302296 HTTP/1.1" 200 - +2026-01-11 23:45:03,780 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:45:03] "GET /api/strategies/trades?id=14&_t=1768146303472 HTTP/1.1" 200 - +2026-01-11 23:45:06,454 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:45:06] "GET /api/market/types?_t=1768146306444 HTTP/1.1" 200 - +2026-01-11 23:45:06,769 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:45:06] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-11 23:45:06,770 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:45:06] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-11 23:45:07,103 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-11 23:45:07,560 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:45:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-11 23:45:13,373 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:45:13] "GET /api/dashboard/summary?_t=1768146313354 HTTP/1.1" 200 - +2026-01-11 23:45:13,672 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:45:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768146313354 HTTP/1.1" 200 - +2026-01-11 23:45:13,676 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:45:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768146313354 HTTP/1.1" 200 - +2026-01-11 23:45:15,003 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:45:15] "GET /api/market/config?_t=1768146314498 HTTP/1.1" 200 - +2026-01-11 23:45:15,005 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:45:15] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-11 23:45:15,082 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:45:15] "GET /api/market/types?_t=1768146315012 HTTP/1.1" 200 - +2026-01-11 23:45:15,363 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (211515s) +2026-01-11 23:45:16,232 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:45:16] "GET /api/settings/schema?_t=1768146316210 HTTP/1.1" 200 - +2026-01-11 23:45:16,527 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:45:16] "GET /api/settings/values?_t=1768146316210 HTTP/1.1" 200 - +2026-01-11 23:45:16,679 - app.data_sources.base - WARNING - Warning: 600519 data is delayed (258317s) +2026-01-11 23:45:16,696 - app.data_sources.base - WARNING - Warning: 300475 data is delayed (258317s) +2026-01-11 23:45:16,697 - app.data_sources.base - WARNING - Warning: 000858 data is delayed (258317s) +2026-01-11 23:45:16,778 - app.data_sources.base - WARNING - Warning: 00700 data is delayed (258317s) +2026-01-11 23:45:17,346 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:45:17] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-11 23:46:11,480 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:46:11] "GET /api/strategies?_t=1768146371168 HTTP/1.1" 200 - +2026-01-11 23:48:22,945 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:48:22] "GET /api/settings/schema?_t=1768146502633 HTTP/1.1" 200 - +2026-01-11 23:48:22,947 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:48:22] "GET /api/settings/values?_t=1768146502633 HTTP/1.1" 200 - +2026-01-11 23:49:58,474 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:49:58] "GET /api/market/types?_t=1768146598160 HTTP/1.1" 200 - +2026-01-11 23:49:58,475 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:49:58] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-11 23:49:58,482 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:49:58] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-11 23:49:58,731 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-11 23:49:58,733 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:49:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-11 23:49:59,207 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:49:59] "GET /api/strategies?_t=1768146599196 HTTP/1.1" 200 - +2026-01-11 23:50:04,463 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:50:04] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-11 23:50:04,465 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:50:04] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-11 23:50:04,466 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:50:04] "GET /api/credentials/list?user_id=1&_t=1768146604146 HTTP/1.1" 200 - +2026-01-11 23:54:10,446 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:54:10] "GET /api/strategies?_t=1768146850438 HTTP/1.1" 200 - +2026-01-11 23:54:57,218 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:54:57] "GET /api/strategies?_t=1768146897206 HTTP/1.1" 200 - +2026-01-11 23:55:00,745 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:55:00] "GET /api/strategies?_t=1768146900734 HTTP/1.1" 200 - +2026-01-11 23:56:12,402 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-11 23:56:12,402 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-11 23:56:12,427 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-11 23:56:12,798 - app.services.strategy - INFO - Found 3 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}, {'id': 14, 'strategy_type': 'IndicatorStrategy'}] +2026-01-11 23:56:12,798 - app - INFO - Restoring 3 running strategies... +2026-01-11 23:56:12,799 - app.services.trading_executor - INFO - Strategy 1 loop starting +2026-01-11 23:56:12,799 - app.services.trading_executor - INFO - Strategy 1 started +2026-01-11 23:56:12,799 - app - INFO - [OK] IndicatorStrategy 1 restored +2026-01-11 23:56:12,799 - app.services.trading_executor - INFO - Strategy 2 loop starting +2026-01-11 23:56:12,799 - app.services.trading_executor - INFO - Strategy 2 started +2026-01-11 23:56:12,799 - app - INFO - [OK] IndicatorStrategy 2 restored +2026-01-11 23:56:12,800 - app.services.trading_executor - INFO - Strategy 14 loop starting +2026-01-11 23:56:12,800 - app.services.trading_executor - INFO - Strategy 14 started +2026-01-11 23:56:12,800 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2026-01-11 23:56:12,800 - app - INFO - [OK] IndicatorStrategy 14 restored +2026-01-11 23:56:12,800 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2026-01-11 23:56:12,800 - app - INFO - Strategy restore completed: 3/3 restored +2026-01-11 23:56:12,811 - app.services.trading_executor - INFO - Strategy 14 leverage=1; auto-switch market_type to spot +2026-01-11 23:56:12,812 - app.services.trading_executor - INFO - Strategy 14 spot trading; force trade_direction=long +2026-01-11 23:56:12,835 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-11 23:56:12,836 - werkzeug - INFO - Press CTRL+C to quit +2026-01-11 23:56:15,994 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:56:15] "GET /api/strategies?_t=1768146975669 HTTP/1.1" 200 - +2026-01-11 23:56:17,288 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:56:17] "GET /api/settings/schema?_t=1768146977281 HTTP/1.1" 200 - +2026-01-11 23:56:17,592 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:56:17] "GET /api/settings/values?_t=1768146977281 HTTP/1.1" 200 - +2026-01-11 23:56:18,237 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-11 23:56:18,250 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2026-01-11 23:56:18,481 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-11 23:56:18,493 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2026-01-11 23:56:19,257 - app.services.trading_executor - INFO - ็ญ–็•ฅ 14 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-11 23:56:19,268 - app.services.trading_executor - INFO - Strategy 14 initialized; pending_signals=0 +2026-01-11 23:56:56,490 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:56:56] "GET /api/settings/schema?_t=1768147016481 HTTP/1.1" 200 - +2026-01-11 23:56:56,492 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:56:56] "GET /api/settings/values?_t=1768147016481 HTTP/1.1" 200 - +2026-01-11 23:58:49,275 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:58:49] "GET /api/settings/schema?_t=1768147129266 HTTP/1.1" 200 - +2026-01-11 23:58:49,276 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:58:49] "GET /api/settings/values?_t=1768147129266 HTTP/1.1" 200 - +2026-01-11 23:58:58,865 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:58:58] "GET /api/settings/schema?_t=1768147138856 HTTP/1.1" 200 - +2026-01-11 23:58:58,866 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:58:58] "GET /api/settings/values?_t=1768147138856 HTTP/1.1" 200 - +2026-01-11 23:59:38,610 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:59:38] "GET /api/settings/schema?_t=1768147178602 HTTP/1.1" 200 - +2026-01-11 23:59:38,611 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:59:38] "GET /api/settings/values?_t=1768147178602 HTTP/1.1" 200 - +2026-01-11 23:59:50,853 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:59:50] "GET /api/settings/schema?_t=1768147190842 HTTP/1.1" 200 - +2026-01-11 23:59:50,855 - werkzeug - INFO - 127.0.0.1 - - [11/Jan/2026 23:59:50] "GET /api/settings/values?_t=1768147190842 HTTP/1.1" 200 - +2026-01-12 00:00:03,340 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:00:03] "GET /api/settings/schema?_t=1768147203329 HTTP/1.1" 200 - +2026-01-12 00:00:03,341 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:00:03] "GET /api/settings/values?_t=1768147203329 HTTP/1.1" 200 - +2026-01-12 00:00:18,851 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-12 00:00:18,852 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-12 00:00:18,858 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 00:00:19,169 - app.services.strategy - INFO - Found 3 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}, {'id': 14, 'strategy_type': 'IndicatorStrategy'}] +2026-01-12 00:00:19,169 - app - INFO - Restoring 3 running strategies... +2026-01-12 00:00:19,170 - app.services.trading_executor - INFO - Strategy 1 loop starting +2026-01-12 00:00:19,170 - app.services.trading_executor - INFO - Strategy 1 started +2026-01-12 00:00:19,170 - app - INFO - [OK] IndicatorStrategy 1 restored +2026-01-12 00:00:19,170 - app.services.trading_executor - INFO - Strategy 2 loop starting +2026-01-12 00:00:19,170 - app.services.trading_executor - INFO - Strategy 2 started +2026-01-12 00:00:19,171 - app - INFO - [OK] IndicatorStrategy 2 restored +2026-01-12 00:00:19,171 - app.services.trading_executor - INFO - Strategy 14 loop starting +2026-01-12 00:00:19,171 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2026-01-12 00:00:19,171 - app.services.trading_executor - INFO - Strategy 14 started +2026-01-12 00:00:19,171 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2026-01-12 00:00:19,176 - app - INFO - [OK] IndicatorStrategy 14 restored +2026-01-12 00:00:19,181 - app - INFO - Strategy restore completed: 3/3 restored +2026-01-12 00:00:19,181 - app.services.trading_executor - INFO - Strategy 14 leverage=1; auto-switch market_type to spot +2026-01-12 00:00:19,182 - app.services.trading_executor - INFO - Strategy 14 spot trading; force trade_direction=long +2026-01-12 00:00:19,206 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-12 00:00:19,207 - werkzeug - INFO - Press CTRL+C to quit +2026-01-12 00:00:22,067 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:00:22] "GET /api/settings/schema?_t=1768147222046 HTTP/1.1" 200 - +2026-01-12 00:00:22,070 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:00:22] "GET /api/settings/values?_t=1768147222046 HTTP/1.1" 200 - +2026-01-12 00:00:23,410 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-12 00:00:23,423 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=1 +2026-01-12 00:00:23,424 - app.services.trading_executor - INFO - Initial signals: [{'type': 'close_short', 'trigger_price': 90894.4, 'position_size': 0, 'timestamp': 1768147200}] +2026-01-12 00:00:23,704 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-12 00:00:23,716 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2026-01-12 00:00:23,966 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90894.5, pending_signals=1 +2026-01-12 00:00:23,968 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 90894.5, 'position_size': 0, 'timestamp': 1768147200}] +2026-01-12 00:00:24,130 - app.services.trading_executor - INFO - ็ญ–็•ฅ 14 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-12 00:00:24,143 - app.services.trading_executor - INFO - Strategy 14 initialized; pending_signals=0 +2026-01-12 00:00:33,439 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90894.5, pending_signals=1 +2026-01-12 00:00:33,441 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 90894.5, 'position_size': 0, 'timestamp': 1768147200}] +2026-01-12 00:00:43,882 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90894.4, pending_signals=1 +2026-01-12 00:00:43,885 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 90894.4, 'position_size': 0, 'timestamp': 1768147200}] +2026-01-12 00:00:53,442 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90894.4, pending_signals=1 +2026-01-12 00:00:53,444 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 90894.4, 'position_size': 0, 'timestamp': 1768147200}] +2026-01-12 00:01:03,896 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90914.9, pending_signals=2 +2026-01-12 00:01:03,898 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 90894.4, 'position_size': 0.08, 'timestamp': 1768147200}, {'type': 'close_short', 'trigger_price': 90894.4, 'position_size': 0, 'timestamp': 1768147200}] +2026-01-12 00:01:04,006 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-12 00:01:04,007 - app.services.analysis - INFO - Starting analysis Crypto:BTC/USDT, language=zh-CN, mode=multi-agent +2026-01-12 00:01:04,007 - app.services.analysis - INFO - Run coordinator: Crypto:BTC/USDT +2026-01-12 00:01:04,007 - app.services.agents.coordinator - INFO - Multi-agent analysis start: Crypto:BTC/USDT, model=None, language=zh-CN +2026-01-12 00:01:04,171 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3119.27, pending_signals=1 +2026-01-12 00:01:04,173 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 3119.27, 'position_size': 0, 'timestamp': 1768147260}] +2026-01-12 00:01:05,198 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-12 00:01:07,108 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-12 00:01:07,109 - app.services.agents.tools - WARNING - Finnhub news fetch failed: 'Client' object has no attribute 'crypto_news' +2026-01-12 00:01:07,109 - app.services.agents.tools - INFO - Running news search: "BTC/USDT Cryptocurrency" BTC/USDT crypto news analysis +2026-01-12 00:01:09,475 - app.services.agents.tools - INFO - Deep reading: Fxnl Trading Review | TikTok +2026-01-12 00:01:13,737 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3119.27, pending_signals=1 +2026-01-12 00:01:13,739 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 3119.27, 'position_size': 0, 'timestamp': 1768147260}] +2026-01-12 00:01:18,130 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-12 00:01:19,842 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:01:19,882 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:01:19,983 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-12 00:01:20,094 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:01:20,101 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:01:21,467 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:01:21,467 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:21,467 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:21,716 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:01:21,716 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:21,716 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:21,875 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-12 00:01:22,240 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:01:22,240 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:22,240 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:22,507 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:01:22,507 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:22,507 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:23,950 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:01:26,192 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3119.91, pending_signals=2 +2026-01-12 00:01:26,193 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 3118.98, 'position_size': 0.08, 'timestamp': 1768147200}, {'type': 'close_short', 'trigger_price': 3118.98, 'position_size': 0, 'timestamp': 1768147200}] +2026-01-12 00:01:26,202 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-12 00:01:26,202 - app.services.analysis - INFO - Starting analysis Crypto:ETH/USDT, language=zh-CN, mode=multi-agent +2026-01-12 00:01:26,202 - app.services.analysis - INFO - Run coordinator: Crypto:ETH/USDT +2026-01-12 00:01:26,203 - app.services.agents.coordinator - INFO - Multi-agent analysis start: Crypto:ETH/USDT, model=None, language=zh-CN +2026-01-12 00:01:26,461 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:01:26,462 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:26,462 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:26,463 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-12 00:01:27,119 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:ETH/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-12 00:01:27,735 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:01:28,602 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:01:28,951 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:01:28,951 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:28,951 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:29,916 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:01:29,917 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:29,917 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:29,919 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-12 00:01:30,295 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:ETH/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-12 00:01:30,296 - app.services.agents.tools - WARNING - Finnhub news fetch failed: 'Client' object has no attribute 'crypto_news' +2026-01-12 00:01:30,296 - app.services.agents.tools - INFO - Running news search: "ETH/USDT Cryptocurrency" ETH/USDT crypto news analysis +2026-01-12 00:01:31,167 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:01:31,954 - app.services.search - WARNING - Google Search returned no 'items'. Full response: {"kind": "customsearch#search", "url": {"type": "application/json", "template": "https://www.googleapis.com/customsearch/v1?q={searchTerms}&num={count?}&start={startIndex?}&lr={language?}&safe={safe?}&cx={cx?}&sort={sort?}&filter={filter?}&gl={gl?}&cr={cr?}&googlehost={googleHost?}&c2coff={disableCnTwTranslation?}&hq={hq?}&hl={hl?}&siteSearch={siteSearch?}&siteSearchFilter={siteSearchFilter?}&exactTerms={exactTerms?}&excludeTerms={excludeTerms?}&linkSite={linkSite?}&orTerms={orTerms?}&dateRestrict={dateRestrict?}&lowRange={lowRange?}&highRange={highRange?}&searchType={searchType}&fileType={fileType?}&rights={rights?}&imgSize={imgSize?}&imgType={imgType?}&imgColorType={imgColorType?}&imgDominantColor={imgDominantColor?}&alt=json"}, "queries": {"request": [{"title": "Google Custom Search - \"ETH/USDT Cryptocurrency\" ETH/USDT crypto news analysis", "searchTerms": "\"ETH/USDT Cryptocurrency\" ETH/USDT crypto news analysis", "count": 10, "startIndex": 1, "inputEncoding": "utf8", "outputEncoding": "utf8", "safe": "off", "cx": "17f675b8e3b994281", "dateRestrict": "d7"}]}, "context": {"title": "Global News Search"}, "searchInformation": {"searchTime": 0.18034, "formattedSearchTime": "0.18", "totalResults": "0", "formattedTotalResults": "0"}} +2026-01-12 00:01:31,955 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-12 00:01:33,416 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:01:33,593 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:01:33,844 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:01:33,845 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:01:33,845 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:33,846 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:33,847 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-12 00:01:34,167 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:01:34,596 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:ETH/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-12 00:01:35,224 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:01:35,225 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:35,225 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:35,540 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:01:35,558 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:01:35,678 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:01:35,678 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:01:35,679 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:35,679 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:35,679 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:35,679 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:36,753 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:01:36,754 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:36,754 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:37,063 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:ETH/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-12 00:01:37,063 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:01:37,109 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:01:37,109 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:37,109 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:37,360 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:01:37,360 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:37,361 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:38,334 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:01:38,335 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:38,335 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:38,336 - app.services.agents.coordinator - WARNING - Record reflection failed: 'NoneType' object has no attribute 'get' +2026-01-12 00:01:38,336 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: Crypto:BTC/USDT +2026-01-12 00:01:38,337 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-12 00:01:38,337 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-12 00:01:38,345 - app.services.trading_executor - INFO - AI entry filter rejected: strategy_id=2 symbol=BTC/USDT signal=open_long ai=HOLD reason=ai_hold +2026-01-12 00:01:38,346 - app.services.trading_executor - WARNING - Strategy 2 signal rejected/failed: open_long +2026-01-12 00:01:39,479 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:01:40,889 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:01:40,889 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:40,889 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:40,891 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-12 00:01:41,389 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90928.7, pending_signals=2 +2026-01-12 00:01:41,390 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 90913.1, 'position_size': 0.08, 'timestamp': 1768147200}, {'type': 'close_short', 'trigger_price': 90913.1, 'position_size': 0, 'timestamp': 1768147200}] +2026-01-12 00:01:42,428 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:01:42,989 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:01:44,214 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:01:44,214 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:44,214 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:44,487 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:01:44,487 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:44,487 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:44,488 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-12 00:01:47,189 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:01:48,362 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90928.7, pending_signals=2 +2026-01-12 00:01:48,364 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 90913.1, 'position_size': 0.08, 'timestamp': 1768147200}, {'type': 'close_short', 'trigger_price': 90913.1, 'position_size': 0, 'timestamp': 1768147200}] +2026-01-12 00:01:49,176 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:01:49,176 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:49,176 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:49,177 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-12 00:01:50,512 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:01:50,838 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:01:50,839 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:01:52,409 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:01:52,410 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:52,410 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:52,660 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:01:52,661 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:52,661 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:52,971 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:01:52,971 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:52,971 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:01:52,973 - app.services.agents.coordinator - WARNING - Record reflection failed: 'NoneType' object has no attribute 'get' +2026-01-12 00:01:52,973 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: Crypto:ETH/USDT +2026-01-12 00:01:52,974 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-12 00:01:52,974 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-12 00:01:52,980 - app.services.trading_executor - INFO - AI entry filter rejected: strategy_id=1 symbol=ETH/USDT signal=open_long ai=HOLD reason=ai_hold +2026-01-12 00:01:52,980 - app.services.trading_executor - WARNING - Strategy 1 signal rejected/failed: open_long +2026-01-12 00:01:52,996 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3120.69, pending_signals=2 +2026-01-12 00:01:52,998 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 3118.98, 'position_size': 0.08, 'timestamp': 1768147200}, {'type': 'close_short', 'trigger_price': 3118.98, 'position_size': 0, 'timestamp': 1768147200}] +2026-01-12 00:01:59,376 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90942.7, pending_signals=2 +2026-01-12 00:01:59,378 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 90913.1, 'position_size': 0.08, 'timestamp': 1768147200}, {'type': 'close_short', 'trigger_price': 90913.1, 'position_size': 0, 'timestamp': 1768147200}] +2026-01-12 00:05:44,248 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:05:44] "GET /api/settings/schema?_t=1768147544241 HTTP/1.1" 200 - +2026-01-12 00:05:44,433 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:05:44] "GET /api/settings/values?_t=1768147544241 HTTP/1.1" 200 - +2026-01-12 00:06:04,515 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:06:04] "GET /api/settings/schema?_t=1768147564505 HTTP/1.1" 200 - +2026-01-12 00:06:04,517 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:06:04] "GET /api/settings/values?_t=1768147564505 HTTP/1.1" 200 - +2026-01-12 00:06:45,856 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:06:45] "GET /api/settings/schema?_t=1768147605846 HTTP/1.1" 200 - +2026-01-12 00:06:45,857 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:06:45] "GET /api/settings/values?_t=1768147605846 HTTP/1.1" 200 - +2026-01-12 00:08:09,223 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:08:09] "GET /api/settings/schema?_t=1768147689212 HTTP/1.1" 200 - +2026-01-12 00:08:09,225 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:08:09] "GET /api/settings/values?_t=1768147689212 HTTP/1.1" 200 - +2026-01-12 00:08:24,979 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:08:24] "GET /api/settings/schema?_t=1768147704971 HTTP/1.1" 200 - +2026-01-12 00:08:24,981 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:08:24] "GET /api/settings/values?_t=1768147704971 HTTP/1.1" 200 - +2026-01-12 00:08:45,935 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:08:45] "GET /api/settings/schema?_t=1768147725901 HTTP/1.1" 200 - +2026-01-12 00:08:45,948 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:08:45] "GET /api/settings/values?_t=1768147725901 HTTP/1.1" 200 - +2026-01-12 00:12:31,322 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-12 00:12:31,323 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-12 00:12:31,328 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 00:12:31,688 - app.services.strategy - INFO - Found 3 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}, {'id': 14, 'strategy_type': 'IndicatorStrategy'}] +2026-01-12 00:12:31,688 - app - INFO - Restoring 3 running strategies... +2026-01-12 00:12:31,689 - app.services.trading_executor - INFO - Strategy 1 loop starting +2026-01-12 00:12:31,689 - app.services.trading_executor - INFO - Strategy 1 started +2026-01-12 00:12:31,689 - app - INFO - [OK] IndicatorStrategy 1 restored +2026-01-12 00:12:31,689 - app.services.trading_executor - INFO - Strategy 2 loop starting +2026-01-12 00:12:31,690 - app.services.trading_executor - INFO - Strategy 2 started +2026-01-12 00:12:31,690 - app - INFO - [OK] IndicatorStrategy 2 restored +2026-01-12 00:12:31,690 - app.services.trading_executor - INFO - Strategy 14 loop starting +2026-01-12 00:12:31,690 - app.services.trading_executor - INFO - Strategy 14 started +2026-01-12 00:12:31,690 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2026-01-12 00:12:31,691 - app - INFO - [OK] IndicatorStrategy 14 restored +2026-01-12 00:12:31,691 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2026-01-12 00:12:31,691 - app - INFO - Strategy restore completed: 3/3 restored +2026-01-12 00:12:31,698 - app.services.trading_executor - INFO - Strategy 14 leverage=1; auto-switch market_type to spot +2026-01-12 00:12:31,698 - app.services.trading_executor - INFO - Strategy 14 spot trading; force trade_direction=long +2026-01-12 00:12:31,713 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-12 00:12:31,713 - werkzeug - INFO - Press CTRL+C to quit +2026-01-12 00:12:35,311 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:12:35] "GET /api/settings/schema?_t=1768147955302 HTTP/1.1" 200 - +2026-01-12 00:12:35,313 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:12:35] "GET /api/settings/values?_t=1768147955302 HTTP/1.1" 200 - +2026-01-12 00:12:36,393 - app.services.trading_executor - INFO - ็ญ–็•ฅ 14 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-12 00:12:36,450 - app.services.trading_executor - INFO - Strategy 14 initialized; pending_signals=0 +2026-01-12 00:12:37,043 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-12 00:12:37,056 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2026-01-12 00:12:37,238 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-12 00:12:37,250 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2026-01-12 00:13:55,542 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:13:55] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768148035517 HTTP/1.1" 200 - +2026-01-12 00:13:55,544 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:13:55] "GET /api/dashboard/summary?_t=1768148035517 HTTP/1.1" 200 - +2026-01-12 00:13:55,602 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:13:55] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768148035517 HTTP/1.1" 200 - +2026-01-12 00:13:59,013 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:13:59] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 00:13:59,242 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:13:59] "GET /api/market/config?_t=1768148038989 HTTP/1.1" 200 - +2026-01-12 00:13:59,393 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:13:59] "GET /api/market/types?_t=1768148039257 HTTP/1.1" 200 - +2026-01-12 00:13:59,444 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 00:13:59,444 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 00:13:59,444 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 00:13:59,444 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 00:13:59,444 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 00:14:00,282 - app.data_sources.base - WARNING - Warning: 300475 data is delayed (260040s) +2026-01-12 00:14:00,291 - app.data_sources.base - WARNING - Warning: 000858 data is delayed (260040s) +2026-01-12 00:14:00,311 - app.data_sources.base - WARNING - Warning: 600519 data is delayed (260040s) +2026-01-12 00:14:00,457 - app.data_sources.base - WARNING - Warning: 00700 data is delayed (260040s) +2026-01-12 00:14:00,646 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:14:00] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 00:14:00,944 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:14:00] "GET /api/market/types?_t=1768148040434 HTTP/1.1" 200 - +2026-01-12 00:14:00,946 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:14:00] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 00:14:00,978 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 00:14:01,083 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (213241s) +2026-01-12 00:14:01,492 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:14:01] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-12 00:14:01,676 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:14:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 00:14:02,587 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:14:02] "GET /api/strategies?_t=1768148042573 HTTP/1.1" 200 - +2026-01-12 00:14:07,159 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:14:07] "GET /api/strategies/equityCurve?id=14&_t=1768148047148 HTTP/1.1" 200 - +2026-01-12 00:14:07,160 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:14:07] "GET /api/strategies/equityCurve?id=14&_t=1768148047148 HTTP/1.1" 200 - +2026-01-12 00:14:07,474 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:14:07] "GET /api/strategies/positions?id=14&_t=1768148047150 HTTP/1.1" 200 - +2026-01-12 00:14:08,861 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:14:08] "GET /api/market/types?_t=1768148048547 HTTP/1.1" 200 - +2026-01-12 00:14:08,865 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:14:08] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 00:14:08,867 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:14:08] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 00:14:09,121 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 00:14:09,122 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:14:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 00:14:13,846 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:14:13] "POST /api/indicator/backtest/history HTTP/1.1" 200 - +2026-01-12 00:14:17,722 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90901.0, pending_signals=1 +2026-01-12 00:14:17,724 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90901.0, 'position_size': 0, 'timestamp': 1768148040}] +2026-01-12 00:14:18,229 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:14:18] "GET /api/settings/schema?_t=1768148057912 HTTP/1.1" 200 - +2026-01-12 00:14:18,231 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:14:18] "GET /api/settings/values?_t=1768148057912 HTTP/1.1" 200 - +2026-01-12 00:14:27,278 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90901.0, pending_signals=1 +2026-01-12 00:14:27,280 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90901.0, 'position_size': 0, 'timestamp': 1768148040}] +2026-01-12 00:14:28,065 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:14:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768148067745 HTTP/1.1" 200 - +2026-01-12 00:14:28,066 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:14:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768148067745 HTTP/1.1" 200 - +2026-01-12 00:14:28,070 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:14:28] "GET /api/dashboard/summary?_t=1768148067745 HTTP/1.1" 200 - +2026-01-12 00:14:32,744 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:14:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148072736 HTTP/1.1" 200 - +2026-01-12 00:14:38,635 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:14:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148078316 HTTP/1.1" 200 - +2026-01-12 00:14:38,716 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90889.0, pending_signals=1 +2026-01-12 00:14:38,718 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90889.0, 'position_size': 0, 'timestamp': 1768148040}] +2026-01-12 00:14:43,321 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:14:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148083313 HTTP/1.1" 200 - +2026-01-12 00:14:47,280 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90889.0, pending_signals=1 +2026-01-12 00:14:47,282 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90889.0, 'position_size': 0, 'timestamp': 1768148040}] +2026-01-12 00:14:48,628 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:14:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148088308 HTTP/1.1" 200 - +2026-01-12 00:14:53,327 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:14:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148093318 HTTP/1.1" 200 - +2026-01-12 00:14:57,732 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90889.7, pending_signals=1 +2026-01-12 00:14:57,734 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90889.7, 'position_size': 0, 'timestamp': 1768148040}] +2026-01-12 00:14:58,635 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:14:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148098315 HTTP/1.1" 200 - +2026-01-12 00:15:03,326 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:15:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148103318 HTTP/1.1" 200 - +2026-01-12 00:15:07,283 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90889.7, pending_signals=2 +2026-01-12 00:15:07,285 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90889.0, 'position_size': 0, 'timestamp': 1768148040}] +2026-01-12 00:15:08,627 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:15:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148108309 HTTP/1.1" 200 - +2026-01-12 00:15:13,329 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:15:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148113319 HTTP/1.1" 200 - +2026-01-12 00:15:17,744 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90891.0, pending_signals=2 +2026-01-12 00:15:17,746 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90889.0, 'position_size': 0, 'timestamp': 1768148040}] +2026-01-12 00:15:18,631 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:15:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148118318 HTTP/1.1" 200 - +2026-01-12 00:15:20,863 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:15:20] "GET /api/settings/schema?_t=1768148120855 HTTP/1.1" 200 - +2026-01-12 00:15:21,180 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:15:21] "GET /api/settings/values?_t=1768148120855 HTTP/1.1" 200 - +2026-01-12 00:15:27,289 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90891.0, pending_signals=2 +2026-01-12 00:15:27,291 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90889.0, 'position_size': 0, 'timestamp': 1768148040}] +2026-01-12 00:15:38,704 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90889.1, pending_signals=2 +2026-01-12 00:15:38,706 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90889.7, 'position_size': 0, 'timestamp': 1768148040}, {'type': 'open_short', 'trigger_price': 90889.7, 'position_size': 0.08, 'timestamp': 1768148040}] +2026-01-12 00:15:38,724 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-12 00:15:38,724 - app.services.analysis - INFO - Starting analysis Crypto:BTC/USDT, language=zh-CN, mode=multi-agent +2026-01-12 00:15:38,725 - app.services.analysis - INFO - Run coordinator: Crypto:BTC/USDT +2026-01-12 00:15:38,725 - app.services.agents.coordinator - INFO - Multi-agent analysis start: Crypto:BTC/USDT, model=None, language=zh-CN +2026-01-12 00:15:40,190 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-12 00:15:42,934 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-12 00:15:42,935 - app.services.agents.tools - WARNING - Finnhub news fetch failed: 'Client' object has no attribute 'crypto_news' +2026-01-12 00:15:42,935 - app.services.agents.tools - INFO - Running news search: "BTC/USDT Cryptocurrency" BTC/USDT crypto news analysis +2026-01-12 00:15:44,189 - app.services.agents.tools - INFO - Deep reading: Fxnl Trading Review | TikTok +2026-01-12 00:15:45,543 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-12 00:15:46,266 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:15:46] "GET /api/dashboard/summary?_t=1768148145895 HTTP/1.1" 200 - +2026-01-12 00:15:46,269 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:15:46] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768148145895 HTTP/1.1" 200 - +2026-01-12 00:15:46,275 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:15:46] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768148145895 HTTP/1.1" 200 - +2026-01-12 00:15:46,887 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:15:46,944 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:15:46,976 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:15:46,987 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:15:47,124 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-12 00:15:48,219 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:15:48,219 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:15:48,219 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:15:48,223 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:15:48,223 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:15:48,223 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:15:48,340 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-12 00:15:48,404 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:15:48,405 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:15:48,405 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:15:48,563 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:15:48,563 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:15:48,563 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:15:49,265 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:15:50,167 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:15:50,168 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:15:50,168 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:15:50,169 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-12 00:15:50,884 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:15:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148150875 HTTP/1.1" 200 - +2026-01-12 00:15:51,163 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:15:51,434 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:15:52,640 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:15:52,640 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:15:52,641 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:15:53,687 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:15:53,687 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:15:53,688 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:15:53,689 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-12 00:15:54,612 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:15:55,581 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:15:55,581 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:15:55,582 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:15:55,582 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-12 00:15:56,194 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:15:56] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148155876 HTTP/1.1" 200 - +2026-01-12 00:15:56,649 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:15:56,668 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:15:56,900 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:15:57,673 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:15:57,674 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:15:57,674 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:15:57,898 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:15:57,898 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:15:57,898 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:15:58,111 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:15:58,111 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:15:58,111 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:15:58,112 - app.services.agents.coordinator - WARNING - Record reflection failed: 'NoneType' object has no attribute 'get' +2026-01-12 00:15:58,113 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: Crypto:BTC/USDT +2026-01-12 00:15:58,113 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-12 00:15:58,113 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-12 00:15:58,120 - app.services.trading_executor - INFO - AI entry filter rejected: strategy_id=2 symbol=BTC/USDT signal=open_short ai=HOLD reason=ai_hold +2026-01-12 00:15:58,121 - app.services.trading_executor - WARNING - Strategy 2 signal rejected/failed: open_short +2026-01-12 00:15:58,850 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90891.8, pending_signals=2 +2026-01-12 00:15:58,852 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90889.7, 'position_size': 0, 'timestamp': 1768148040}] +2026-01-12 00:16:00,889 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:16:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148160880 HTTP/1.1" 200 - +2026-01-12 00:16:06,191 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:16:06] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148165876 HTTP/1.1" 200 - +2026-01-12 00:16:11,320 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:16:11] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148171311 HTTP/1.1" 200 - +2026-01-12 00:16:16,635 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:16:16] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148176317 HTTP/1.1" 200 - +2026-01-12 00:16:21,315 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:16:21] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148181308 HTTP/1.1" 200 - +2026-01-12 00:16:26,637 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:16:26] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148186319 HTTP/1.1" 200 - +2026-01-12 00:16:29,758 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:16:29] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768148189747 HTTP/1.1" 200 - +2026-01-12 00:16:29,760 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:16:29] "GET /api/dashboard/summary?_t=1768148189747 HTTP/1.1" 200 - +2026-01-12 00:16:29,824 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:16:29] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768148189747 HTTP/1.1" 200 - +2026-01-12 00:16:31,429 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:16:31] "GET /api/settings/schema?_t=1768148191418 HTTP/1.1" 200 - +2026-01-12 00:16:31,431 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:16:31] "GET /api/settings/values?_t=1768148191418 HTTP/1.1" 200 - +2026-01-12 00:16:37,425 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:16:37] "GET /api/market/types?_t=1768148197408 HTTP/1.1" 200 - +2026-01-12 00:16:37,439 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:16:37] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 00:16:37,581 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:16:37] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 00:16:37,746 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 00:16:37,747 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:16:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 00:16:39,087 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:16:39] "GET /api/market/config?_t=1768148199069 HTTP/1.1" 200 - +2026-01-12 00:16:39,091 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:16:39] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 00:16:39,129 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:16:39] "GET /api/market/types?_t=1768148199109 HTTP/1.1" 200 - +2026-01-12 00:16:39,248 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:16:39] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-12 00:16:40,029 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:16:40] "GET /api/dashboard/summary?_t=1768148200013 HTTP/1.1" 200 - +2026-01-12 00:16:40,330 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:16:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768148200013 HTTP/1.1" 200 - +2026-01-12 00:16:40,332 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:16:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768148200013 HTTP/1.1" 200 - +2026-01-12 00:16:43,838 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:16:43] "GET /api/strategies?_t=1768148203808 HTTP/1.1" 200 - +2026-01-12 00:17:05,133 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:05] "GET /api/settings/schema?_t=1768148225124 HTTP/1.1" 200 - +2026-01-12 00:17:05,447 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:05] "GET /api/settings/values?_t=1768148225124 HTTP/1.1" 200 - +2026-01-12 00:17:10,979 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:10] "GET /api/market/config?_t=1768148230651 HTTP/1.1" 200 - +2026-01-12 00:17:10,981 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:10] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 00:17:11,244 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:11] "GET /api/market/types?_t=1768148230988 HTTP/1.1" 200 - +2026-01-12 00:17:11,308 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:11] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-12 00:17:14,534 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:14] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 00:17:14,832 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:14] "GET /api/market/types?_t=1768148234518 HTTP/1.1" 200 - +2026-01-12 00:17:14,834 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:14] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 00:17:14,909 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 00:17:14,910 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 00:17:20,155 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:20] "GET /api/strategies?_t=1768148239835 HTTP/1.1" 200 - +2026-01-12 00:17:24,182 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:24] "GET /api/strategies/equityCurve?id=14&_t=1768148244171 HTTP/1.1" 200 - +2026-01-12 00:17:24,485 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:24] "GET /api/strategies/positions?id=14&_t=1768148244174 HTTP/1.1" 200 - +2026-01-12 00:17:24,486 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:24] "GET /api/strategies/equityCurve?id=14&_t=1768148244171 HTTP/1.1" 200 - +2026-01-12 00:17:29,179 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:29] "GET /api/strategies/positions?id=14&_t=1768148249171 HTTP/1.1" 200 - +2026-01-12 00:17:30,692 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:30] "GET /api/dashboard/summary?_t=1768148250679 HTTP/1.1" 200 - +2026-01-12 00:17:30,997 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768148250679 HTTP/1.1" 200 - +2026-01-12 00:17:30,998 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768148250679 HTTP/1.1" 200 - +2026-01-12 00:17:32,917 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:32] "GET /api/market/config?_t=1768148252597 HTTP/1.1" 200 - +2026-01-12 00:17:32,919 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:32] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 00:17:33,177 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:33] "GET /api/market/types?_t=1768148252929 HTTP/1.1" 200 - +2026-01-12 00:17:33,253 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:33] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-12 00:17:36,697 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:36] "GET /api/market/types?_t=1768148256689 HTTP/1.1" 200 - +2026-01-12 00:17:37,016 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:37] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 00:17:37,017 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:37] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 00:17:37,350 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 00:17:37,351 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 00:17:38,610 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:38] "GET /api/strategies?_t=1768148258596 HTTP/1.1" 200 - +2026-01-12 00:17:40,387 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:40] "GET /api/strategies/equityCurve?id=13&_t=1768148260031 HTTP/1.1" 200 - +2026-01-12 00:17:40,387 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:40] "GET /api/strategies/positions?id=13&_t=1768148260033 HTTP/1.1" 200 - +2026-01-12 00:17:40,392 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:40] "GET /api/strategies/equityCurve?id=13&_t=1768148260031 HTTP/1.1" 200 - +2026-01-12 00:17:41,237 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:41] "GET /api/strategies/trades?id=13&_t=1768148261229 HTTP/1.1" 200 - +2026-01-12 00:17:43,516 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:43] "GET /api/strategies/positions?id=14&_t=1768148263202 HTTP/1.1" 200 - +2026-01-12 00:17:43,517 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:43] "GET /api/strategies/trades?id=14&_t=1768148263202 HTTP/1.1" 200 - +2026-01-12 00:17:43,517 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:43] "GET /api/strategies/equityCurve?id=14&_t=1768148263201 HTTP/1.1" 200 - +2026-01-12 00:17:43,523 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:43] "GET /api/strategies/equityCurve?id=14&_t=1768148263201 HTTP/1.1" 200 - +2026-01-12 00:17:48,766 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:48] "GET /api/market/config?_t=1768148268757 HTTP/1.1" 200 - +2026-01-12 00:17:49,074 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:49] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 00:17:49,109 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:49] "GET /api/market/types?_t=1768148268784 HTTP/1.1" 200 - +2026-01-12 00:17:49,400 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:49] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-12 00:17:50,251 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768148269893 HTTP/1.1" 200 - +2026-01-12 00:17:50,252 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:50] "GET /api/dashboard/summary?_t=1768148269893 HTTP/1.1" 200 - +2026-01-12 00:17:50,260 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768148269893 HTTP/1.1" 200 - +2026-01-12 00:17:55,315 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:17:55] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148275307 HTTP/1.1" 200 - +2026-01-12 00:17:58,597 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90945.0, pending_signals=1 +2026-01-12 00:17:58,629 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 90945.0, 'position_size': 0, 'timestamp': 1768148220}] +2026-01-12 00:18:00,631 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:18:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148280313 HTTP/1.1" 200 - +2026-01-12 00:18:05,328 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:18:05] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148285315 HTTP/1.1" 200 - +2026-01-12 00:18:08,160 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90945.0, pending_signals=1 +2026-01-12 00:18:08,162 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 90945.0, 'position_size': 0, 'timestamp': 1768148280}] +2026-01-12 00:18:10,639 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:18:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148290320 HTTP/1.1" 200 - +2026-01-12 00:18:14,872 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:18:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148294864 HTTP/1.1" 200 - +2026-01-12 00:18:20,178 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:18:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148299855 HTTP/1.1" 200 - +2026-01-12 00:18:24,863 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:18:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148304854 HTTP/1.1" 200 - +2026-01-12 00:18:30,173 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:18:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148309857 HTTP/1.1" 200 - +2026-01-12 00:18:34,863 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:18:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148314856 HTTP/1.1" 200 - +2026-01-12 00:18:39,136 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90924.7, pending_signals=2 +2026-01-12 00:18:39,138 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 90945.0, 'position_size': 0, 'timestamp': 1768148220}] +2026-01-12 00:18:40,176 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:18:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148319854 HTTP/1.1" 200 - +2026-01-12 00:18:44,865 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:18:44] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148324855 HTTP/1.1" 200 - +2026-01-12 00:18:48,164 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90924.7, pending_signals=2 +2026-01-12 00:18:48,166 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 90945.0, 'position_size': 0, 'timestamp': 1768148220}] +2026-01-12 00:18:50,169 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:18:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148329859 HTTP/1.1" 200 - +2026-01-12 00:18:54,872 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:18:54] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148334863 HTTP/1.1" 200 - +2026-01-12 00:18:58,930 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90923.4, pending_signals=2 +2026-01-12 00:18:58,933 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 90945.0, 'position_size': 0, 'timestamp': 1768148220}] +2026-01-12 00:19:00,183 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:19:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148339860 HTTP/1.1" 200 - +2026-01-12 00:19:04,862 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:19:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148344854 HTTP/1.1" 200 - +2026-01-12 00:19:10,171 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:19:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148349855 HTTP/1.1" 200 - +2026-01-12 00:19:14,878 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:19:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148354869 HTTP/1.1" 200 - +2026-01-12 00:19:20,187 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:19:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148359869 HTTP/1.1" 200 - +2026-01-12 00:19:24,871 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:19:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148364864 HTTP/1.1" 200 - +2026-01-12 00:19:30,180 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:19:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148369863 HTTP/1.1" 200 - +2026-01-12 00:19:34,865 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:19:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148374857 HTTP/1.1" 200 - +2026-01-12 00:19:40,178 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:19:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148379861 HTTP/1.1" 200 - +2026-01-12 00:19:44,865 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:19:44] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148384855 HTTP/1.1" 200 - +2026-01-12 00:19:50,187 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:19:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148389867 HTTP/1.1" 200 - +2026-01-12 00:19:54,865 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:19:54] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148394854 HTTP/1.1" 200 - +2026-01-12 00:20:00,178 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:20:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148399859 HTTP/1.1" 200 - +2026-01-12 00:20:04,864 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:20:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148404855 HTTP/1.1" 200 - +2026-01-12 00:20:10,180 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:20:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148409855 HTTP/1.1" 200 - +2026-01-12 00:20:14,863 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:20:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148414855 HTTP/1.1" 200 - +2026-01-12 00:20:20,184 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:20:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148419869 HTTP/1.1" 200 - +2026-01-12 00:20:24,864 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:20:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148424855 HTTP/1.1" 200 - +2026-01-12 00:20:30,173 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:20:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148429856 HTTP/1.1" 200 - +2026-01-12 00:20:34,862 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:20:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148434854 HTTP/1.1" 200 - +2026-01-12 00:20:40,179 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:20:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148439859 HTTP/1.1" 200 - +2026-01-12 00:20:44,874 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:20:44] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148444866 HTTP/1.1" 200 - +2026-01-12 00:20:50,177 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:20:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148449855 HTTP/1.1" 200 - +2026-01-12 00:20:54,863 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:20:54] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148454855 HTTP/1.1" 200 - +2026-01-12 00:21:00,190 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:21:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148459870 HTTP/1.1" 200 - +2026-01-12 00:21:04,863 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:21:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148464855 HTTP/1.1" 200 - +2026-01-12 00:21:10,167 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:21:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148469855 HTTP/1.1" 200 - +2026-01-12 00:21:14,863 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:21:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148474855 HTTP/1.1" 200 - +2026-01-12 00:21:20,171 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:21:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148479855 HTTP/1.1" 200 - +2026-01-12 00:21:24,874 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:21:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148484867 HTTP/1.1" 200 - +2026-01-12 00:21:30,176 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:21:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148489856 HTTP/1.1" 200 - +2026-01-12 00:21:34,869 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:21:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148494860 HTTP/1.1" 200 - +2026-01-12 00:21:40,175 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:21:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148499857 HTTP/1.1" 200 - +2026-01-12 00:21:44,862 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:21:44] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148504855 HTTP/1.1" 200 - +2026-01-12 00:21:50,183 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:21:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148509862 HTTP/1.1" 200 - +2026-01-12 00:21:54,866 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:21:54] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148514856 HTTP/1.1" 200 - +2026-01-12 00:22:00,184 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:22:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148519866 HTTP/1.1" 200 - +2026-01-12 00:22:04,876 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:22:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148524867 HTTP/1.1" 200 - +2026-01-12 00:22:10,173 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:22:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148529857 HTTP/1.1" 200 - +2026-01-12 00:22:14,870 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:22:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148534855 HTTP/1.1" 200 - +2026-01-12 00:22:20,176 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:22:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148539855 HTTP/1.1" 200 - +2026-01-12 00:22:24,863 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:22:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148544855 HTTP/1.1" 200 - +2026-01-12 00:22:30,188 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:22:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148549870 HTTP/1.1" 200 - +2026-01-12 00:22:34,862 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:22:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148554855 HTTP/1.1" 200 - +2026-01-12 00:22:40,165 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:22:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148559855 HTTP/1.1" 200 - +2026-01-12 00:22:44,876 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:22:44] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148564866 HTTP/1.1" 200 - +2026-01-12 00:22:50,180 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:22:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148569860 HTTP/1.1" 200 - +2026-01-12 00:22:54,862 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:22:54] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148574855 HTTP/1.1" 200 - +2026-01-12 00:23:00,179 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:23:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148579855 HTTP/1.1" 200 - +2026-01-12 00:23:04,862 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:23:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148584855 HTTP/1.1" 200 - +2026-01-12 00:23:10,177 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:23:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148589855 HTTP/1.1" 200 - +2026-01-12 00:23:14,867 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:23:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148594859 HTTP/1.1" 200 - +2026-01-12 00:23:20,166 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:23:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148599855 HTTP/1.1" 200 - +2026-01-12 00:23:24,865 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:23:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148604855 HTTP/1.1" 200 - +2026-01-12 00:23:30,172 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:23:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148609855 HTTP/1.1" 200 - +2026-01-12 00:23:34,871 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:23:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148614862 HTTP/1.1" 200 - +2026-01-12 00:23:40,184 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:23:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148619864 HTTP/1.1" 200 - +2026-01-12 00:23:44,874 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:23:44] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148624862 HTTP/1.1" 200 - +2026-01-12 00:23:50,182 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:23:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148629870 HTTP/1.1" 200 - +2026-01-12 00:23:54,871 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:23:54] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148634858 HTTP/1.1" 200 - +2026-01-12 00:24:00,185 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:24:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148639868 HTTP/1.1" 200 - +2026-01-12 00:24:04,877 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:24:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148644869 HTTP/1.1" 200 - +2026-01-12 00:24:10,176 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:24:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148649855 HTTP/1.1" 200 - +2026-01-12 00:24:14,865 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:24:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148654855 HTTP/1.1" 200 - +2026-01-12 00:24:20,174 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:24:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148659857 HTTP/1.1" 200 - +2026-01-12 00:24:24,865 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:24:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148664854 HTTP/1.1" 200 - +2026-01-12 00:24:30,188 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:24:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148669869 HTTP/1.1" 200 - +2026-01-12 00:24:34,871 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:24:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148674864 HTTP/1.1" 200 - +2026-01-12 00:24:40,175 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:24:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148679858 HTTP/1.1" 200 - +2026-01-12 00:24:44,863 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:24:44] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148684854 HTTP/1.1" 200 - +2026-01-12 00:24:50,178 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:24:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148689860 HTTP/1.1" 200 - +2026-01-12 00:24:54,862 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:24:54] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148694854 HTTP/1.1" 200 - +2026-01-12 00:25:00,194 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:25:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148699873 HTTP/1.1" 200 - +2026-01-12 00:25:04,871 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:25:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148704855 HTTP/1.1" 200 - +2026-01-12 00:25:10,171 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:25:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148709856 HTTP/1.1" 200 - +2026-01-12 00:25:14,862 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:25:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148714855 HTTP/1.1" 200 - +2026-01-12 00:25:20,173 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:25:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148719855 HTTP/1.1" 200 - +2026-01-12 00:25:24,872 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:25:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148724864 HTTP/1.1" 200 - +2026-01-12 00:25:30,179 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:25:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148729858 HTTP/1.1" 200 - +2026-01-12 00:25:34,863 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:25:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148734855 HTTP/1.1" 200 - +2026-01-12 00:25:40,182 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:25:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148739862 HTTP/1.1" 200 - +2026-01-12 00:25:44,868 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:25:44] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148744859 HTTP/1.1" 200 - +2026-01-12 00:25:50,174 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:25:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148749858 HTTP/1.1" 200 - +2026-01-12 00:25:54,872 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:25:54] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148754864 HTTP/1.1" 200 - +2026-01-12 00:26:00,180 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:26:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148759865 HTTP/1.1" 200 - +2026-01-12 00:26:04,864 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:26:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148764857 HTTP/1.1" 200 - +2026-01-12 00:26:10,181 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:26:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148769863 HTTP/1.1" 200 - +2026-01-12 00:26:14,864 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:26:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148774856 HTTP/1.1" 200 - +2026-01-12 00:26:20,168 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:26:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148779855 HTTP/1.1" 200 - +2026-01-12 00:26:24,865 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:26:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148784855 HTTP/1.1" 200 - +2026-01-12 00:26:30,182 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:26:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148789867 HTTP/1.1" 200 - +2026-01-12 00:26:34,876 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:26:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148794868 HTTP/1.1" 200 - +2026-01-12 00:26:40,171 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:26:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148799855 HTTP/1.1" 200 - +2026-01-12 00:26:44,866 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:26:44] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148804859 HTTP/1.1" 200 - +2026-01-12 00:26:50,171 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:26:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148809855 HTTP/1.1" 200 - +2026-01-12 00:26:54,868 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:26:54] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148814855 HTTP/1.1" 200 - +2026-01-12 00:27:00,184 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:27:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148819866 HTTP/1.1" 200 - +2026-01-12 00:27:04,864 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:27:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148824855 HTTP/1.1" 200 - +2026-01-12 00:27:10,185 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:27:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148829868 HTTP/1.1" 200 - +2026-01-12 00:27:14,873 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:27:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148834865 HTTP/1.1" 200 - +2026-01-12 00:27:20,173 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:27:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148839857 HTTP/1.1" 200 - +2026-01-12 00:27:24,863 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:27:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148844855 HTTP/1.1" 200 - +2026-01-12 00:27:30,171 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:27:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148849856 HTTP/1.1" 200 - +2026-01-12 00:27:34,862 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:27:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148854854 HTTP/1.1" 200 - +2026-01-12 00:27:40,182 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:27:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148859861 HTTP/1.1" 200 - +2026-01-12 00:27:44,874 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:27:44] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148864865 HTTP/1.1" 200 - +2026-01-12 00:27:50,167 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:27:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148869854 HTTP/1.1" 200 - +2026-01-12 00:27:54,864 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:27:54] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148874856 HTTP/1.1" 200 - +2026-01-12 00:28:00,174 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:28:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148879854 HTTP/1.1" 200 - +2026-01-12 00:28:04,874 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:28:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148884865 HTTP/1.1" 200 - +2026-01-12 00:28:10,173 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:28:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148889854 HTTP/1.1" 200 - +2026-01-12 00:28:14,873 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:28:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148894865 HTTP/1.1" 200 - +2026-01-12 00:28:20,182 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:28:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148899867 HTTP/1.1" 200 - +2026-01-12 00:28:24,861 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:28:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148904854 HTTP/1.1" 200 - +2026-01-12 00:28:30,187 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:28:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148909868 HTTP/1.1" 200 - +2026-01-12 00:28:34,869 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:28:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148914861 HTTP/1.1" 200 - +2026-01-12 00:28:40,169 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:28:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148919855 HTTP/1.1" 200 - +2026-01-12 00:28:44,877 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:28:44] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148924869 HTTP/1.1" 200 - +2026-01-12 00:28:50,170 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:28:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148929855 HTTP/1.1" 200 - +2026-01-12 00:28:54,863 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:28:54] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148934855 HTTP/1.1" 200 - +2026-01-12 00:29:00,185 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:29:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148939865 HTTP/1.1" 200 - +2026-01-12 00:29:04,865 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:29:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148944856 HTTP/1.1" 200 - +2026-01-12 00:29:10,181 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:29:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148949864 HTTP/1.1" 200 - +2026-01-12 00:29:14,864 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:29:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148954856 HTTP/1.1" 200 - +2026-01-12 00:29:20,176 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:29:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148959855 HTTP/1.1" 200 - +2026-01-12 00:29:24,877 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:29:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148964869 HTTP/1.1" 200 - +2026-01-12 00:29:30,169 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:29:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148969855 HTTP/1.1" 200 - +2026-01-12 00:29:34,870 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:29:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148974861 HTTP/1.1" 200 - +2026-01-12 00:29:40,176 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:29:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148979857 HTTP/1.1" 200 - +2026-01-12 00:29:44,869 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:29:44] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148984861 HTTP/1.1" 200 - +2026-01-12 00:29:50,170 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:29:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148989854 HTTP/1.1" 200 - +2026-01-12 00:29:54,869 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:29:54] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148994860 HTTP/1.1" 200 - +2026-01-12 00:30:00,171 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:30:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768148999854 HTTP/1.1" 200 - +2026-01-12 00:30:04,868 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:30:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149004860 HTTP/1.1" 200 - +2026-01-12 00:30:10,187 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:30:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149009858 HTTP/1.1" 200 - +2026-01-12 00:30:14,872 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:30:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149014862 HTTP/1.1" 200 - +2026-01-12 00:30:20,184 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:30:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149019869 HTTP/1.1" 200 - +2026-01-12 00:30:24,873 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:30:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149024866 HTTP/1.1" 200 - +2026-01-12 00:30:30,176 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:30:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149029854 HTTP/1.1" 200 - +2026-01-12 00:30:34,869 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:30:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149034854 HTTP/1.1" 200 - +2026-01-12 00:30:40,168 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:30:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149039855 HTTP/1.1" 200 - +2026-01-12 00:30:44,863 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:30:44] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149044854 HTTP/1.1" 200 - +2026-01-12 00:30:50,173 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:30:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149049856 HTTP/1.1" 200 - +2026-01-12 00:30:54,866 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:30:54] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149054858 HTTP/1.1" 200 - +2026-01-12 00:31:00,186 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:31:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149059866 HTTP/1.1" 200 - +2026-01-12 00:31:04,862 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:31:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149064854 HTTP/1.1" 200 - +2026-01-12 00:31:10,172 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:31:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149069857 HTTP/1.1" 200 - +2026-01-12 00:31:14,872 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:31:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149074863 HTTP/1.1" 200 - +2026-01-12 00:31:20,181 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:31:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149079863 HTTP/1.1" 200 - +2026-01-12 00:31:24,864 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:31:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149084856 HTTP/1.1" 200 - +2026-01-12 00:31:30,185 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:31:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149089867 HTTP/1.1" 200 - +2026-01-12 00:31:34,865 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:31:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149094856 HTTP/1.1" 200 - +2026-01-12 00:31:40,174 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:31:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149099855 HTTP/1.1" 200 - +2026-01-12 00:31:44,865 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:31:44] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149104858 HTTP/1.1" 200 - +2026-01-12 00:31:50,168 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:31:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149109855 HTTP/1.1" 200 - +2026-01-12 00:31:54,869 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:31:54] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149114861 HTTP/1.1" 200 - +2026-01-12 00:32:00,175 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:32:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149119858 HTTP/1.1" 200 - +2026-01-12 00:32:04,863 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:32:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149124855 HTTP/1.1" 200 - +2026-01-12 00:32:10,180 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:32:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149129857 HTTP/1.1" 200 - +2026-01-12 00:32:14,869 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:32:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149134862 HTTP/1.1" 200 - +2026-01-12 00:32:20,184 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:32:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149139868 HTTP/1.1" 200 - +2026-01-12 00:32:24,866 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:32:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149144855 HTTP/1.1" 200 - +2026-01-12 00:32:30,192 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:32:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149149869 HTTP/1.1" 200 - +2026-01-12 00:32:34,863 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:32:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149154855 HTTP/1.1" 200 - +2026-01-12 00:32:40,177 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:32:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149159855 HTTP/1.1" 200 - +2026-01-12 00:32:44,863 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:32:44] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149164854 HTTP/1.1" 200 - +2026-01-12 00:32:50,175 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:32:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149169856 HTTP/1.1" 200 - +2026-01-12 00:32:54,864 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:32:54] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149174855 HTTP/1.1" 200 - +2026-01-12 00:33:00,178 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:33:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149179863 HTTP/1.1" 200 - +2026-01-12 00:33:04,862 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:33:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149184854 HTTP/1.1" 200 - +2026-01-12 00:33:10,177 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:33:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149189864 HTTP/1.1" 200 - +2026-01-12 00:33:14,864 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:33:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149194854 HTTP/1.1" 200 - +2026-01-12 00:33:20,163 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:33:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149199854 HTTP/1.1" 200 - +2026-01-12 00:33:24,870 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:33:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149204862 HTTP/1.1" 200 - +2026-01-12 00:33:30,174 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:33:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149209862 HTTP/1.1" 200 - +2026-01-12 00:33:34,868 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:33:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149214861 HTTP/1.1" 200 - +2026-01-12 00:33:40,189 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:33:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149219870 HTTP/1.1" 200 - +2026-01-12 00:33:44,871 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:33:44] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149224863 HTTP/1.1" 200 - +2026-01-12 00:33:50,177 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:33:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149229860 HTTP/1.1" 200 - +2026-01-12 00:33:54,863 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:33:54] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149234854 HTTP/1.1" 200 - +2026-01-12 00:34:00,166 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:34:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149239854 HTTP/1.1" 200 - +2026-01-12 00:34:04,863 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:34:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149244854 HTTP/1.1" 200 - +2026-01-12 00:34:10,172 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:34:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149249854 HTTP/1.1" 200 - +2026-01-12 00:34:14,864 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:34:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149254855 HTTP/1.1" 200 - +2026-01-12 00:34:20,186 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:34:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149259867 HTTP/1.1" 200 - +2026-01-12 00:34:24,862 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:34:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149264854 HTTP/1.1" 200 - +2026-01-12 00:34:30,168 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:34:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149269855 HTTP/1.1" 200 - +2026-01-12 00:34:34,868 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:34:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149274861 HTTP/1.1" 200 - +2026-01-12 00:34:40,183 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:34:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149279865 HTTP/1.1" 200 - +2026-01-12 00:34:44,871 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:34:44] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149284863 HTTP/1.1" 200 - +2026-01-12 00:34:50,178 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:34:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149289859 HTTP/1.1" 200 - +2026-01-12 00:34:54,866 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:34:54] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149294856 HTTP/1.1" 200 - +2026-01-12 00:35:00,170 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:35:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149299860 HTTP/1.1" 200 - +2026-01-12 00:35:04,863 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:35:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149304856 HTTP/1.1" 200 - +2026-01-12 00:35:10,175 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:35:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149309858 HTTP/1.1" 200 - +2026-01-12 00:35:14,876 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:35:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149314868 HTTP/1.1" 200 - +2026-01-12 00:35:20,170 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:35:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149319855 HTTP/1.1" 200 - +2026-01-12 00:35:24,871 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:35:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149324862 HTTP/1.1" 200 - +2026-01-12 00:35:30,176 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:35:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149329860 HTTP/1.1" 200 - +2026-01-12 00:35:34,871 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:35:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149334862 HTTP/1.1" 200 - +2026-01-12 00:35:40,168 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:35:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149339855 HTTP/1.1" 200 - +2026-01-12 00:35:44,873 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:35:44] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149344864 HTTP/1.1" 200 - +2026-01-12 00:35:50,177 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:35:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149349854 HTTP/1.1" 200 - +2026-01-12 00:35:54,866 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:35:54] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149354858 HTTP/1.1" 200 - +2026-01-12 00:36:00,176 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:36:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149359854 HTTP/1.1" 200 - +2026-01-12 00:36:04,876 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:36:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149364866 HTTP/1.1" 200 - +2026-01-12 00:36:10,168 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:36:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149369855 HTTP/1.1" 200 - +2026-01-12 00:36:14,863 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:36:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149374855 HTTP/1.1" 200 - +2026-01-12 00:36:20,185 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:36:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149379866 HTTP/1.1" 200 - +2026-01-12 00:36:24,863 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:36:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149384856 HTTP/1.1" 200 - +2026-01-12 00:36:30,181 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:36:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149389864 HTTP/1.1" 200 - +2026-01-12 00:36:34,864 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:36:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149394854 HTTP/1.1" 200 - +2026-01-12 00:36:40,176 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:36:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149399855 HTTP/1.1" 200 - +2026-01-12 00:36:44,872 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:36:44] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149404864 HTTP/1.1" 200 - +2026-01-12 00:36:50,180 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:36:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149409864 HTTP/1.1" 200 - +2026-01-12 00:36:54,874 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:36:54] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149414866 HTTP/1.1" 200 - +2026-01-12 00:37:00,178 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:37:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149419859 HTTP/1.1" 200 - +2026-01-12 00:37:04,878 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:37:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149424869 HTTP/1.1" 200 - +2026-01-12 00:37:10,177 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:37:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149429859 HTTP/1.1" 200 - +2026-01-12 00:37:14,874 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:37:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149434867 HTTP/1.1" 200 - +2026-01-12 00:37:20,165 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:37:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149439855 HTTP/1.1" 200 - +2026-01-12 00:37:24,872 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:37:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149444864 HTTP/1.1" 200 - +2026-01-12 00:37:30,191 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:37:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149449860 HTTP/1.1" 200 - +2026-01-12 00:37:34,862 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:37:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149454855 HTTP/1.1" 200 - +2026-01-12 00:37:40,174 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:37:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149459858 HTTP/1.1" 200 - +2026-01-12 00:37:44,872 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:37:44] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149464864 HTTP/1.1" 200 - +2026-01-12 00:37:50,166 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:37:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149469854 HTTP/1.1" 200 - +2026-01-12 00:37:54,870 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:37:54] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149474862 HTTP/1.1" 200 - +2026-01-12 00:38:00,181 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:38:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149479864 HTTP/1.1" 200 - +2026-01-12 00:38:04,863 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:38:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149484855 HTTP/1.1" 200 - +2026-01-12 00:38:10,174 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:38:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149489855 HTTP/1.1" 200 - +2026-01-12 00:38:14,865 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:38:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149494855 HTTP/1.1" 200 - +2026-01-12 00:38:20,169 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:38:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149499855 HTTP/1.1" 200 - +2026-01-12 00:38:24,869 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:38:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149504859 HTTP/1.1" 200 - +2026-01-12 00:38:30,176 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:38:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149509856 HTTP/1.1" 200 - +2026-01-12 00:38:34,865 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:38:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149514855 HTTP/1.1" 200 - +2026-01-12 00:38:40,171 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:38:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149519855 HTTP/1.1" 200 - +2026-01-12 00:38:44,872 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:38:44] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149524864 HTTP/1.1" 200 - +2026-01-12 00:38:50,170 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:38:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149529860 HTTP/1.1" 200 - +2026-01-12 00:38:54,872 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:38:54] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149534864 HTTP/1.1" 200 - +2026-01-12 00:39:00,186 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:39:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149539866 HTTP/1.1" 200 - +2026-01-12 00:39:04,878 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:39:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149544868 HTTP/1.1" 200 - +2026-01-12 00:39:10,183 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:39:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149549868 HTTP/1.1" 200 - +2026-01-12 00:39:14,864 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:39:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149554855 HTTP/1.1" 200 - +2026-01-12 00:39:20,167 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:39:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149559854 HTTP/1.1" 200 - +2026-01-12 00:39:24,877 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:39:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149564869 HTTP/1.1" 200 - +2026-01-12 00:39:30,167 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:39:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149569854 HTTP/1.1" 200 - +2026-01-12 00:39:34,864 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:39:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149574855 HTTP/1.1" 200 - +2026-01-12 00:39:40,174 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:39:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149579857 HTTP/1.1" 200 - +2026-01-12 00:39:44,871 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:39:44] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149584863 HTTP/1.1" 200 - +2026-01-12 00:39:50,172 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:39:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149589856 HTTP/1.1" 200 - +2026-01-12 00:39:54,862 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:39:54] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149594855 HTTP/1.1" 200 - +2026-01-12 00:40:00,171 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:40:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149599856 HTTP/1.1" 200 - +2026-01-12 00:40:04,874 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:40:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149604866 HTTP/1.1" 200 - +2026-01-12 00:40:10,173 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:40:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149609855 HTTP/1.1" 200 - +2026-01-12 00:40:14,864 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:40:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149614855 HTTP/1.1" 200 - +2026-01-12 00:40:20,175 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:40:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149619855 HTTP/1.1" 200 - +2026-01-12 00:40:24,864 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:40:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149624854 HTTP/1.1" 200 - +2026-01-12 00:40:30,182 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:40:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149629863 HTTP/1.1" 200 - +2026-01-12 00:40:34,869 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:40:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149634862 HTTP/1.1" 200 - +2026-01-12 00:40:40,165 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:40:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149639855 HTTP/1.1" 200 - +2026-01-12 00:40:44,872 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:40:44] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149644864 HTTP/1.1" 200 - +2026-01-12 00:40:50,173 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:40:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149649856 HTTP/1.1" 200 - +2026-01-12 00:40:54,865 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:40:54] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149654858 HTTP/1.1" 200 - +2026-01-12 00:41:00,186 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:41:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149659867 HTTP/1.1" 200 - +2026-01-12 00:41:04,869 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:41:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149664861 HTTP/1.1" 200 - +2026-01-12 00:41:10,164 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:41:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149669854 HTTP/1.1" 200 - +2026-01-12 00:41:14,862 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:41:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149674854 HTTP/1.1" 200 - +2026-01-12 00:41:20,172 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:41:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149679855 HTTP/1.1" 200 - +2026-01-12 00:41:24,862 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:41:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149684854 HTTP/1.1" 200 - +2026-01-12 00:41:30,178 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:41:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149689862 HTTP/1.1" 200 - +2026-01-12 00:41:34,872 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:41:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149694864 HTTP/1.1" 200 - +2026-01-12 00:41:40,167 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:41:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149699854 HTTP/1.1" 200 - +2026-01-12 00:41:44,868 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:41:44] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149704861 HTTP/1.1" 200 - +2026-01-12 00:41:50,173 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:41:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149709859 HTTP/1.1" 200 - +2026-01-12 00:41:54,861 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:41:54] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149714854 HTTP/1.1" 200 - +2026-01-12 00:42:00,176 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:42:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149719854 HTTP/1.1" 200 - +2026-01-12 00:42:04,877 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:42:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149724868 HTTP/1.1" 200 - +2026-01-12 00:42:10,174 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:42:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149729857 HTTP/1.1" 200 - +2026-01-12 00:42:14,869 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:42:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149734861 HTTP/1.1" 200 - +2026-01-12 00:42:20,178 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:42:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149739866 HTTP/1.1" 200 - +2026-01-12 00:42:24,863 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:42:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149744855 HTTP/1.1" 200 - +2026-01-12 00:42:30,179 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:42:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149749862 HTTP/1.1" 200 - +2026-01-12 00:42:34,863 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:42:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149754855 HTTP/1.1" 200 - +2026-01-12 00:42:40,173 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:42:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149759855 HTTP/1.1" 200 - +2026-01-12 00:42:44,878 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:42:44] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149764870 HTTP/1.1" 200 - +2026-01-12 00:42:50,167 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:42:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149769854 HTTP/1.1" 200 - +2026-01-12 00:42:54,864 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:42:54] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149774856 HTTP/1.1" 200 - +2026-01-12 00:43:00,174 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:43:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149779854 HTTP/1.1" 200 - +2026-01-12 00:43:04,867 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:43:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149784859 HTTP/1.1" 200 - +2026-01-12 00:43:10,184 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:43:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149789866 HTTP/1.1" 200 - +2026-01-12 00:43:14,870 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:43:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149794859 HTTP/1.1" 200 - +2026-01-12 00:43:20,183 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:43:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149799865 HTTP/1.1" 200 - +2026-01-12 00:43:24,870 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:43:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149804860 HTTP/1.1" 200 - +2026-01-12 00:43:30,175 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:43:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149809861 HTTP/1.1" 200 - +2026-01-12 00:43:34,871 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:43:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149814864 HTTP/1.1" 200 - +2026-01-12 00:43:40,177 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:43:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149819854 HTTP/1.1" 200 - +2026-01-12 00:43:44,862 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:43:44] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149824854 HTTP/1.1" 200 - +2026-01-12 00:43:50,182 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:43:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149829866 HTTP/1.1" 200 - +2026-01-12 00:43:54,872 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:43:54] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149834856 HTTP/1.1" 200 - +2026-01-12 00:44:00,170 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:44:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149839855 HTTP/1.1" 200 - +2026-01-12 00:44:04,864 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:44:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149844855 HTTP/1.1" 200 - +2026-01-12 00:44:10,188 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:44:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149849869 HTTP/1.1" 200 - +2026-01-12 00:44:14,863 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:44:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149854855 HTTP/1.1" 200 - +2026-01-12 00:44:20,168 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:44:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149859855 HTTP/1.1" 200 - +2026-01-12 00:44:24,862 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:44:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149864854 HTTP/1.1" 200 - +2026-01-12 00:44:30,166 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:44:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149869855 HTTP/1.1" 200 - +2026-01-12 00:44:34,862 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:44:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149874855 HTTP/1.1" 200 - +2026-01-12 00:44:40,174 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:44:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149879862 HTTP/1.1" 200 - +2026-01-12 00:44:44,868 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:44:44] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149884860 HTTP/1.1" 200 - +2026-01-12 00:44:50,174 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:44:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149889854 HTTP/1.1" 200 - +2026-01-12 00:44:54,865 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:44:54] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149894856 HTTP/1.1" 200 - +2026-01-12 00:45:00,166 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:45:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149899854 HTTP/1.1" 200 - +2026-01-12 00:45:04,869 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:45:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149904862 HTTP/1.1" 200 - +2026-01-12 00:45:10,170 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:45:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149909854 HTTP/1.1" 200 - +2026-01-12 00:45:14,866 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:45:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149914854 HTTP/1.1" 200 - +2026-01-12 00:45:20,165 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:45:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149919855 HTTP/1.1" 200 - +2026-01-12 00:45:24,874 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:45:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149924865 HTTP/1.1" 200 - +2026-01-12 00:45:30,172 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:45:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149929855 HTTP/1.1" 200 - +2026-01-12 00:45:34,874 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:45:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149934866 HTTP/1.1" 200 - +2026-01-12 00:45:40,176 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:45:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149939860 HTTP/1.1" 200 - +2026-01-12 00:45:44,875 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:45:44] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149944866 HTTP/1.1" 200 - +2026-01-12 00:45:50,169 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:45:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149949855 HTTP/1.1" 200 - +2026-01-12 00:45:54,874 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:45:54] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149954866 HTTP/1.1" 200 - +2026-01-12 00:46:00,164 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:46:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149959854 HTTP/1.1" 200 - +2026-01-12 00:46:04,862 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:46:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149964854 HTTP/1.1" 200 - +2026-01-12 00:46:09,872 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:46:09] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149969864 HTTP/1.1" 200 - +2026-01-12 00:46:14,863 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:46:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149974856 HTTP/1.1" 200 - +2026-01-12 00:46:20,187 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:46:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149979868 HTTP/1.1" 200 - +2026-01-12 00:46:25,640 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:46:25] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149984868 HTTP/1.1" 200 - +2026-01-12 00:46:29,868 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:46:29] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149989860 HTTP/1.1" 200 - +2026-01-12 00:46:34,866 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:46:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149994856 HTTP/1.1" 200 - +2026-01-12 00:46:39,310 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91100.1, pending_signals=1 +2026-01-12 00:46:39,312 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 91100.1, 'position_size': 0, 'timestamp': 1768149960}] +2026-01-12 00:46:39,864 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:46:39] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768149999855 HTTP/1.1" 200 - +2026-01-12 00:46:44,862 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:46:44] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768150004854 HTTP/1.1" 200 - +2026-01-12 00:46:48,419 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91100.1, pending_signals=1 +2026-01-12 00:46:48,421 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 91100.1, 'position_size': 0, 'timestamp': 1768149960}] +2026-01-12 00:46:50,179 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:46:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768150009862 HTTP/1.1" 200 - +2026-01-12 00:46:54,879 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:46:54] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768150014870 HTTP/1.1" 200 - +2026-01-12 00:46:58,852 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91100.1, pending_signals=1 +2026-01-12 00:46:58,854 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 91100.1, 'position_size': 0, 'timestamp': 1768149960}] +2026-01-12 00:47:00,184 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:47:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768150019864 HTTP/1.1" 200 - +2026-01-12 00:47:04,865 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:47:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768150024856 HTTP/1.1" 200 - +2026-01-12 00:47:08,420 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91100.1, pending_signals=2 +2026-01-12 00:47:08,423 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 91100.1, 'position_size': 0, 'timestamp': 1768149960}, {'type': 'open_short', 'trigger_price': 91100.1, 'position_size': 0.08, 'timestamp': 1768149960}] +2026-01-12 00:47:08,432 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-12 00:47:08,432 - app.services.analysis - INFO - Starting analysis Crypto:BTC/USDT, language=zh-CN, mode=multi-agent +2026-01-12 00:47:08,433 - app.services.analysis - INFO - Run coordinator: Crypto:BTC/USDT +2026-01-12 00:47:08,433 - app.services.agents.coordinator - INFO - Multi-agent analysis start: Crypto:BTC/USDT, model=None, language=zh-CN +2026-01-12 00:47:09,307 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-12 00:47:10,178 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:47:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768150029855 HTTP/1.1" 200 - +2026-01-12 00:47:11,710 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-12 00:47:11,711 - app.services.agents.tools - WARNING - Finnhub news fetch failed: 'Client' object has no attribute 'crypto_news' +2026-01-12 00:47:11,711 - app.services.agents.tools - INFO - Running news search: "BTC/USDT Cryptocurrency" BTC/USDT crypto news analysis +2026-01-12 00:47:13,059 - app.services.agents.tools - INFO - Deep reading: Fxnl Trading Review | TikTok +2026-01-12 00:47:14,284 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-12 00:47:14,870 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:47:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768150034860 HTTP/1.1" 200 - +2026-01-12 00:47:15,499 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:47:15,514 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:47:15,517 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:47:15,532 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:47:15,634 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-12 00:47:16,740 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:47:16,741 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:47:16,741 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:47:16,752 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:47:16,752 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:47:16,753 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:47:16,754 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:47:16,754 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:47:16,756 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:47:16,783 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:47:16,784 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:47:16,784 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:47:16,790 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-12 00:47:17,762 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:47:18,676 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:47:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768150038652 HTTP/1.1" 200 - +2026-01-12 00:47:18,679 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:47:18] "GET /api/dashboard/summary?_t=1768150038652 HTTP/1.1" 200 - +2026-01-12 00:47:18,687 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:47:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768150038652 HTTP/1.1" 200 - +2026-01-12 00:47:18,794 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:47:18,794 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:47:18,794 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:47:18,796 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-12 00:47:20,000 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:47:20,046 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:47:21,100 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:47:21,100 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:47:21,100 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:47:21,408 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:47:21,409 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:47:21,409 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:47:21,410 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-12 00:47:21,626 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:47:21] "GET /api/strategies?_t=1768150041605 HTTP/1.1" 200 - +2026-01-12 00:47:23,132 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:47:23,188 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:47:23] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 00:47:23,490 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:47:23] "GET /api/market/types?_t=1768150042959 HTTP/1.1" 200 - +2026-01-12 00:47:23,492 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 00:47:23,496 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:47:23] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 00:47:23,950 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:47:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 00:47:24,346 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:47:24,346 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:47:24,346 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:47:24,347 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-12 00:47:25,530 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:47:25,560 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:47:26,008 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:47:26,572 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:47:26,572 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:47:26,572 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:47:26,612 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:47:26,613 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:47:26,613 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:47:26,949 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:47:26,949 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:47:26,949 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:47:26,950 - app.services.agents.coordinator - WARNING - Record reflection failed: 'NoneType' object has no attribute 'get' +2026-01-12 00:47:26,950 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: Crypto:BTC/USDT +2026-01-12 00:47:26,951 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-12 00:47:26,951 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-12 00:47:26,960 - app.services.trading_executor - INFO - AI entry filter rejected: strategy_id=2 symbol=BTC/USDT signal=open_short ai=HOLD reason=ai_hold +2026-01-12 00:47:26,960 - app.services.trading_executor - WARNING - Strategy 2 signal rejected/failed: open_short +2026-01-12 00:47:27,475 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91102.9, pending_signals=2 +2026-01-12 00:47:27,477 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 91100.1, 'position_size': 0, 'timestamp': 1768149960}] +2026-01-12 00:47:36,978 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91102.9, pending_signals=2 +2026-01-12 00:47:36,981 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 91100.1, 'position_size': 0, 'timestamp': 1768149960}] +2026-01-12 00:47:48,196 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91104.0, pending_signals=2 +2026-01-12 00:47:48,199 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 91100.1, 'position_size': 0, 'timestamp': 1768149960}] +2026-01-12 00:47:56,981 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91104.0, pending_signals=2 +2026-01-12 00:47:56,983 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 91100.1, 'position_size': 0, 'timestamp': 1768149960}] +2026-01-12 00:48:41,778 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:48:41] "GET /api/market/types?_t=1768150121762 HTTP/1.1" 200 - +2026-01-12 00:48:41,779 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:48:41] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 00:48:41,781 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:48:41] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 00:48:41,834 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 00:48:41,837 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:48:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 00:50:38,305 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3130.29, pending_signals=1 +2026-01-12 00:50:38,307 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3130.29, 'position_size': 0, 'timestamp': 1768150200}] +2026-01-12 00:50:47,412 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3130.29, pending_signals=1 +2026-01-12 00:50:47,414 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3130.29, 'position_size': 0, 'timestamp': 1768150200}] +2026-01-12 00:50:57,409 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3130.64, pending_signals=1 +2026-01-12 00:50:57,411 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3130.64, 'position_size': 0, 'timestamp': 1768150200}] +2026-01-12 00:51:07,867 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3127.85, pending_signals=2 +2026-01-12 00:51:07,869 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3130.29, 'position_size': 0, 'timestamp': 1768150200}, {'type': 'open_short', 'trigger_price': 3130.29, 'position_size': 0.08, 'timestamp': 1768150200}] +2026-01-12 00:51:07,878 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-12 00:51:07,878 - app.services.analysis - INFO - Starting analysis Crypto:ETH/USDT, language=zh-CN, mode=multi-agent +2026-01-12 00:51:07,878 - app.services.analysis - INFO - Run coordinator: Crypto:ETH/USDT +2026-01-12 00:51:07,878 - app.services.agents.coordinator - INFO - Multi-agent analysis start: Crypto:ETH/USDT, model=None, language=zh-CN +2026-01-12 00:51:09,065 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:ETH/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-12 00:51:11,013 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:ETH/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-12 00:51:11,014 - app.services.agents.tools - WARNING - Finnhub news fetch failed: 'Client' object has no attribute 'crypto_news' +2026-01-12 00:51:11,014 - app.services.agents.tools - INFO - Running news search: "ETH/USDT Cryptocurrency" ETH/USDT crypto news analysis +2026-01-12 00:51:12,309 - app.services.search - WARNING - Google Search returned no 'items'. Full response: {"kind": "customsearch#search", "url": {"type": "application/json", "template": "https://www.googleapis.com/customsearch/v1?q={searchTerms}&num={count?}&start={startIndex?}&lr={language?}&safe={safe?}&cx={cx?}&sort={sort?}&filter={filter?}&gl={gl?}&cr={cr?}&googlehost={googleHost?}&c2coff={disableCnTwTranslation?}&hq={hq?}&hl={hl?}&siteSearch={siteSearch?}&siteSearchFilter={siteSearchFilter?}&exactTerms={exactTerms?}&excludeTerms={excludeTerms?}&linkSite={linkSite?}&orTerms={orTerms?}&dateRestrict={dateRestrict?}&lowRange={lowRange?}&highRange={highRange?}&searchType={searchType}&fileType={fileType?}&rights={rights?}&imgSize={imgSize?}&imgType={imgType?}&imgColorType={imgColorType?}&imgDominantColor={imgDominantColor?}&alt=json"}, "queries": {"request": [{"title": "Google Custom Search - \"ETH/USDT Cryptocurrency\" ETH/USDT crypto news analysis", "searchTerms": "\"ETH/USDT Cryptocurrency\" ETH/USDT crypto news analysis", "count": 10, "startIndex": 1, "inputEncoding": "utf8", "outputEncoding": "utf8", "safe": "off", "cx": "17f675b8e3b994281", "dateRestrict": "d7"}]}, "context": {"title": "Global News Search"}, "searchInformation": {"searchTime": 0.085773, "formattedSearchTime": "0.09", "totalResults": "0", "formattedTotalResults": "0"}} +2026-01-12 00:51:12,310 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-12 00:51:13,407 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:ETH/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-12 00:51:13,476 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:51:13,498 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:51:13,837 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:51:13,853 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:51:14,386 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:ETH/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-12 00:51:14,557 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:51:14,558 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:51:14,558 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:51:14,661 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:51:14,661 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:51:14,661 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:51:15,144 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:51:15,144 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:51:15,144 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:51:15,333 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:51:15,607 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:51:15,607 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:51:15,607 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:51:18,332 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:51:18,332 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:51:18,332 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:51:18,334 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-12 00:51:19,375 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:51:19,375 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:51:20,390 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:51:20,391 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:51:20,391 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:51:20,395 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:51:20,395 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:51:20,395 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:51:20,396 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-12 00:51:21,269 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:51:22,498 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:51:22,498 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:51:22,498 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:51:22,499 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-12 00:51:23,529 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:51:23,545 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:51:23,545 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 00:51:24,576 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:51:24,577 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:51:24,577 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:51:24,587 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:51:24,587 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:51:24,588 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:51:24,588 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 00:51:24,589 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:51:24,589 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 00:51:24,591 - app.services.agents.coordinator - WARNING - Record reflection failed: 'NoneType' object has no attribute 'get' +2026-01-12 00:51:24,591 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: Crypto:ETH/USDT +2026-01-12 00:51:24,591 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-12 00:51:24,591 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-12 00:51:24,600 - app.services.trading_executor - INFO - AI entry filter rejected: strategy_id=1 symbol=ETH/USDT signal=open_short ai=HOLD reason=ai_hold +2026-01-12 00:51:24,600 - app.services.trading_executor - WARNING - Strategy 1 signal rejected/failed: open_short +2026-01-12 00:51:25,055 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3127.6, pending_signals=2 +2026-01-12 00:51:25,057 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3130.29, 'position_size': 0, 'timestamp': 1768150200}, {'type': 'open_short', 'trigger_price': 3130.29, 'position_size': 0.08, 'timestamp': 1768150200}] +2026-01-12 00:51:31,990 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-12 00:51:32,422 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:51:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 00:51:32,690 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-12 00:51:32,691 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:51:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 00:51:33,568 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:51:33] "GET /api/strategies?_t=1768150293560 HTTP/1.1" 200 - +2026-01-12 00:51:34,617 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3127.6, pending_signals=2 +2026-01-12 00:51:34,619 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3130.29, 'position_size': 0, 'timestamp': 1768150200}, {'type': 'open_short', 'trigger_price': 3130.29, 'position_size': 0.08, 'timestamp': 1768150200}] +2026-01-12 00:51:35,220 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:51:35] "GET /api/strategies/equityCurve?id=14&_t=1768150295205 HTTP/1.1" 200 - +2026-01-12 00:51:35,522 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:51:35] "GET /api/strategies/positions?id=14&_t=1768150295209 HTTP/1.1" 200 - +2026-01-12 00:51:35,522 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:51:35] "GET /api/strategies/equityCurve?id=14&_t=1768150295205 HTTP/1.1" 200 - +2026-01-12 00:51:36,232 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:51:36] "GET /api/market/types?_t=1768150295906 HTTP/1.1" 200 - +2026-01-12 00:51:36,237 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:51:36] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 00:51:36,239 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:51:36] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 00:51:36,479 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 00:51:36,481 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:51:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 00:51:37,523 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-12 00:51:37,524 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:51:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 00:51:39,102 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:51:39] "GET /api/market/types?_t=1768150299091 HTTP/1.1" 200 - +2026-01-12 00:51:39,105 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:51:39] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 00:51:39,106 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:51:39] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 00:51:39,435 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 00:51:39,439 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:51:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 00:51:40,632 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-12 00:51:40,633 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:51:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 00:51:42,739 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-12 00:51:42,740 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:51:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 00:51:43,534 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-12 00:51:43,535 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:51:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 00:51:44,538 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-12 00:51:44,538 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:51:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 00:51:45,062 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3128.34, pending_signals=2 +2026-01-12 00:51:45,063 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3128.8, 'position_size': 0, 'timestamp': 1768150200}, {'type': 'open_short', 'trigger_price': 3128.8, 'position_size': 0.08, 'timestamp': 1768150200}] +2026-01-12 00:51:45,848 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-12 00:51:45,849 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:51:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 00:51:55,059 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3127.72, pending_signals=2 +2026-01-12 00:51:55,061 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3128.8, 'position_size': 0, 'timestamp': 1768150200}, {'type': 'open_short', 'trigger_price': 3128.8, 'position_size': 0.08, 'timestamp': 1768150200}] +2026-01-12 00:53:39,934 - app.utils.safe_exec - WARNING - Windows does not support signal-based timeouts; execution time limits may not work +2026-01-12 00:53:39,974 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 00:53:39] "POST /api/indicator/backtest HTTP/1.1" 200 - +2026-01-12 01:07:27,596 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91129.8, pending_signals=1 +2026-01-12 01:07:27,599 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 91129.8, 'position_size': 0, 'timestamp': 1768151220}] +2026-01-12 01:07:37,157 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91129.8, pending_signals=1 +2026-01-12 01:07:37,159 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 91129.8, 'position_size': 0, 'timestamp': 1768151220}] +2026-01-12 01:07:48,314 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91125.6, pending_signals=1 +2026-01-12 01:07:48,319 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 91125.6, 'position_size': 0, 'timestamp': 1768151220}] +2026-01-12 01:07:57,160 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91125.6, pending_signals=1 +2026-01-12 01:07:57,162 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 91125.6, 'position_size': 0, 'timestamp': 1768151220}] +2026-01-12 01:08:07,632 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91109.1, pending_signals=2 +2026-01-12 01:08:07,634 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 91125.6, 'position_size': 0, 'timestamp': 1768151220}] +2026-01-12 01:08:17,163 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91109.1, pending_signals=2 +2026-01-12 01:08:17,165 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 91125.6, 'position_size': 0, 'timestamp': 1768151220}] +2026-01-12 01:08:27,616 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91111.0, pending_signals=2 +2026-01-12 01:08:27,618 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 91125.6, 'position_size': 0, 'timestamp': 1768151220}] +2026-01-12 01:08:37,165 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91111.0, pending_signals=2 +2026-01-12 01:08:37,168 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 91125.6, 'position_size': 0, 'timestamp': 1768151220}] +2026-01-12 01:08:48,050 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91114.6, pending_signals=2 +2026-01-12 01:08:48,052 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 91123.1, 'position_size': 0, 'timestamp': 1768151220}] +2026-01-12 01:08:57,168 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91114.6, pending_signals=2 +2026-01-12 01:08:57,170 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 91123.1, 'position_size': 0, 'timestamp': 1768151220}] +2026-01-12 01:11:45,248 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3132.54, pending_signals=1 +2026-01-12 01:11:45,250 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 3132.7, 'position_size': 0, 'timestamp': 1768151460}] +2026-01-12 01:11:55,254 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3133.6, pending_signals=1 +2026-01-12 01:11:55,256 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 3133.6, 'position_size': 0, 'timestamp': 1768151460}] +2026-01-12 01:12:04,802 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3133.6, pending_signals=2 +2026-01-12 01:12:04,805 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 3132.7, 'position_size': 0.08, 'timestamp': 1768151460}, {'type': 'close_short', 'trigger_price': 3132.7, 'position_size': 0, 'timestamp': 1768151460}] +2026-01-12 01:12:04,814 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-12 01:12:04,815 - app.services.analysis - INFO - Starting analysis Crypto:ETH/USDT, language=zh-CN, mode=multi-agent +2026-01-12 01:12:04,815 - app.services.analysis - INFO - Run coordinator: Crypto:ETH/USDT +2026-01-12 01:12:04,815 - app.services.agents.coordinator - INFO - Multi-agent analysis start: Crypto:ETH/USDT, model=None, language=zh-CN +2026-01-12 01:12:05,716 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:ETH/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-12 01:12:07,684 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:ETH/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-12 01:12:07,685 - app.services.agents.tools - WARNING - Finnhub news fetch failed: 'Client' object has no attribute 'crypto_news' +2026-01-12 01:12:07,685 - app.services.agents.tools - INFO - Running news search: "ETH/USDT Cryptocurrency" ETH/USDT crypto news analysis +2026-01-12 01:12:08,675 - app.services.search - WARNING - Google Search returned no 'items'. Full response: {"kind": "customsearch#search", "url": {"type": "application/json", "template": "https://www.googleapis.com/customsearch/v1?q={searchTerms}&num={count?}&start={startIndex?}&lr={language?}&safe={safe?}&cx={cx?}&sort={sort?}&filter={filter?}&gl={gl?}&cr={cr?}&googlehost={googleHost?}&c2coff={disableCnTwTranslation?}&hq={hq?}&hl={hl?}&siteSearch={siteSearch?}&siteSearchFilter={siteSearchFilter?}&exactTerms={exactTerms?}&excludeTerms={excludeTerms?}&linkSite={linkSite?}&orTerms={orTerms?}&dateRestrict={dateRestrict?}&lowRange={lowRange?}&highRange={highRange?}&searchType={searchType}&fileType={fileType?}&rights={rights?}&imgSize={imgSize?}&imgType={imgType?}&imgColorType={imgColorType?}&imgDominantColor={imgDominantColor?}&alt=json"}, "queries": {"request": [{"title": "Google Custom Search - \"ETH/USDT Cryptocurrency\" ETH/USDT crypto news analysis", "searchTerms": "\"ETH/USDT Cryptocurrency\" ETH/USDT crypto news analysis", "count": 10, "startIndex": 1, "inputEncoding": "utf8", "outputEncoding": "utf8", "safe": "off", "cx": "17f675b8e3b994281", "dateRestrict": "d7"}]}, "context": {"title": "Global News Search"}, "searchInformation": {"searchTime": 0.104013, "formattedSearchTime": "0.10", "totalResults": "0", "formattedTotalResults": "0"}} +2026-01-12 01:12:08,677 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-12 01:12:09,733 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:ETH/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-12 01:12:09,824 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:12:09,828 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:12:09,864 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:12:09,887 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:12:10,932 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:12:10,932 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:12:10,932 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:12:10,981 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:12:10,981 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:12:10,981 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:12:10,989 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:12:10,989 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:12:10,989 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:12:11,021 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:12:11,021 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:12:11,021 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:12:11,055 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:ETH/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-12 01:12:11,983 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:12:12,912 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:12:12,912 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:12:12,912 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:12:12,913 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-12 01:12:14,196 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:12:14,411 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:12:15,347 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:12:15,347 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:12:15,347 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:12:15,486 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:12:15,487 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:12:15,487 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:12:15,488 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-12 01:12:16,398 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:12:17,333 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:12:17,333 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:12:17,333 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:12:17,334 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-12 01:12:18,354 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:12:18,356 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:12:18,365 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:12:19,385 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:12:19,385 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:12:19,385 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:12:19,428 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:12:19,428 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:12:19,428 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:12:19,638 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:12:19,638 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:12:19,638 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:12:19,640 - app.services.agents.coordinator - WARNING - Record reflection failed: 'NoneType' object has no attribute 'get' +2026-01-12 01:12:19,640 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: Crypto:ETH/USDT +2026-01-12 01:12:19,640 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-12 01:12:19,640 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-12 01:12:19,647 - app.services.trading_executor - INFO - AI entry filter rejected: strategy_id=1 symbol=ETH/USDT signal=open_long ai=HOLD reason=ai_hold +2026-01-12 01:12:19,647 - app.services.trading_executor - WARNING - Strategy 1 signal rejected/failed: open_long +2026-01-12 01:12:20,108 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3133.6, pending_signals=2 +2026-01-12 01:12:20,110 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 3132.7, 'position_size': 0.08, 'timestamp': 1768151460}, {'type': 'close_short', 'trigger_price': 3132.7, 'position_size': 0, 'timestamp': 1768151460}] +2026-01-12 01:12:29,665 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3133.6, pending_signals=2 +2026-01-12 01:12:29,667 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 3132.7, 'position_size': 0.08, 'timestamp': 1768151460}, {'type': 'close_short', 'trigger_price': 3132.7, 'position_size': 0, 'timestamp': 1768151460}] +2026-01-12 01:12:39,670 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3133.43, pending_signals=2 +2026-01-12 01:12:39,673 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'open_long', 'trigger_price': 3132.7, 'position_size': 0.08, 'timestamp': 1768151460}, {'type': 'close_short', 'trigger_price': 3132.7, 'position_size': 0, 'timestamp': 1768151460}] +2026-01-12 01:12:50,849 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3133.36, pending_signals=2 +2026-01-12 01:12:50,851 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 3133.55, 'position_size': 0, 'timestamp': 1768151460}] +2026-01-12 01:12:59,670 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3133.36, pending_signals=2 +2026-01-12 01:12:59,672 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 3133.55, 'position_size': 0, 'timestamp': 1768151460}] +2026-01-12 01:13:48,260 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91082.1, pending_signals=1 +2026-01-12 01:13:48,262 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 91082.1, 'position_size': 0, 'timestamp': 1768151580}] +2026-01-12 01:13:57,212 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91082.1, pending_signals=1 +2026-01-12 01:13:57,214 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 91082.1, 'position_size': 0, 'timestamp': 1768151580}] +2026-01-12 01:14:07,705 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91064.1, pending_signals=2 +2026-01-12 01:14:07,708 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 91082.1, 'position_size': 0, 'timestamp': 1768151580}, {'type': 'open_short', 'trigger_price': 91082.1, 'position_size': 0.08, 'timestamp': 1768151580}] +2026-01-12 01:14:07,717 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-12 01:14:07,717 - app.services.analysis - INFO - Starting analysis Crypto:BTC/USDT, language=zh-CN, mode=multi-agent +2026-01-12 01:14:07,717 - app.services.analysis - INFO - Run coordinator: Crypto:BTC/USDT +2026-01-12 01:14:07,717 - app.services.agents.coordinator - INFO - Multi-agent analysis start: Crypto:BTC/USDT, model=None, language=zh-CN +2026-01-12 01:14:08,615 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-12 01:14:10,711 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-12 01:14:10,713 - app.services.agents.tools - WARNING - Finnhub news fetch failed: 'Client' object has no attribute 'crypto_news' +2026-01-12 01:14:10,713 - app.services.agents.tools - INFO - Running news search: "BTC/USDT Cryptocurrency" BTC/USDT crypto news analysis +2026-01-12 01:14:11,849 - app.services.agents.tools - INFO - Deep reading: Fxnl Trading Review | TikTok +2026-01-12 01:14:18,736 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-12 01:14:19,874 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-12 01:14:19,890 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:14:19,929 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:14:19,958 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:14:19,974 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:14:20,954 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-12 01:14:21,029 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:14:21,030 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:14:21,030 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:14:21,092 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:14:21,093 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:14:21,093 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:14:21,097 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:14:21,098 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:14:21,098 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:14:21,123 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:14:21,123 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:14:21,124 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:14:21,927 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:14:22,827 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:14:22,827 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:14:22,828 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:14:22,830 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-12 01:14:23,809 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:14:23,841 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:14:24,842 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:14:24,842 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:14:24,843 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:14:25,085 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:14:25,085 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:14:25,085 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:14:25,087 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-12 01:14:26,008 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:14:26,912 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:14:26,912 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:14:26,912 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:14:26,914 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-12 01:14:27,961 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:14:27,988 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:14:28,031 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:14:29,006 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:14:29,006 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:14:29,006 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:14:29,064 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:14:29,064 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:14:29,065 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:14:29,136 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:14:29,136 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:14:29,136 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:14:29,137 - app.services.agents.coordinator - WARNING - Record reflection failed: 'NoneType' object has no attribute 'get' +2026-01-12 01:14:29,138 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: Crypto:BTC/USDT +2026-01-12 01:14:29,138 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-12 01:14:29,138 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-12 01:14:29,146 - app.services.trading_executor - INFO - AI entry filter rejected: strategy_id=2 symbol=BTC/USDT signal=open_short ai=HOLD reason=ai_hold +2026-01-12 01:14:29,146 - app.services.trading_executor - WARNING - Strategy 2 signal rejected/failed: open_short +2026-01-12 01:14:29,589 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91061.1, pending_signals=2 +2026-01-12 01:14:29,591 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 91082.1, 'position_size': 0, 'timestamp': 1768151580}, {'type': 'open_short', 'trigger_price': 91082.1, 'position_size': 0.08, 'timestamp': 1768151580}] +2026-01-12 01:14:39,165 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91061.1, pending_signals=2 +2026-01-12 01:14:39,168 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 91082.1, 'position_size': 0, 'timestamp': 1768151580}, {'type': 'open_short', 'trigger_price': 91082.1, 'position_size': 0.08, 'timestamp': 1768151580}] +2026-01-12 01:14:50,066 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91060.0, pending_signals=2 +2026-01-12 01:14:50,068 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 91067.0, 'position_size': 0, 'timestamp': 1768151580}, {'type': 'open_short', 'trigger_price': 91067.0, 'position_size': 0.08, 'timestamp': 1768151580}] +2026-01-12 01:14:59,166 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91060.0, pending_signals=2 +2026-01-12 01:14:59,169 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 91067.0, 'position_size': 0, 'timestamp': 1768151580}, {'type': 'open_short', 'trigger_price': 91067.0, 'position_size': 0.08, 'timestamp': 1768151580}] +2026-01-12 01:15:39,694 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3128.45, pending_signals=1 +2026-01-12 01:15:39,696 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3128.45, 'position_size': 0, 'timestamp': 1768151700}] +2026-01-12 01:15:50,621 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3127.35, pending_signals=1 +2026-01-12 01:15:50,623 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3127.35, 'position_size': 0, 'timestamp': 1768151700}] +2026-01-12 01:15:59,697 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3127.35, pending_signals=1 +2026-01-12 01:15:59,700 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3127.35, 'position_size': 0, 'timestamp': 1768151700}] +2026-01-12 01:16:09,699 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3127.71, pending_signals=2 +2026-01-12 01:16:09,702 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3127.35, 'position_size': 0, 'timestamp': 1768151700}] +2026-01-12 01:16:20,139 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3128.01, pending_signals=2 +2026-01-12 01:16:20,141 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3127.35, 'position_size': 0, 'timestamp': 1768151700}] +2026-01-12 01:16:29,701 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3128.01, pending_signals=2 +2026-01-12 01:16:29,703 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3127.35, 'position_size': 0, 'timestamp': 1768151700}] +2026-01-12 01:16:39,706 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3130.02, pending_signals=2 +2026-01-12 01:16:39,708 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3127.35, 'position_size': 0, 'timestamp': 1768151700}] +2026-01-12 01:16:50,648 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3129.61, pending_signals=2 +2026-01-12 01:16:50,650 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3127.55, 'position_size': 0, 'timestamp': 1768151700}] +2026-01-12 01:16:59,707 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3129.61, pending_signals=2 +2026-01-12 01:16:59,709 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_long', 'trigger_price': 3127.55, 'position_size': 0, 'timestamp': 1768151700}] +2026-01-12 01:27:09,748 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91060.0, pending_signals=1 +2026-01-12 01:27:09,753 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 91060.0, 'position_size': 0, 'timestamp': 1768152420}] +2026-01-12 01:27:19,370 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91060.0, pending_signals=1 +2026-01-12 01:27:19,379 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 91060.0, 'position_size': 0, 'timestamp': 1768152420}] +2026-01-12 01:27:29,765 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91053.0, pending_signals=1 +2026-01-12 01:27:29,769 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 91053.0, 'position_size': 0, 'timestamp': 1768152420}] +2026-01-12 01:27:39,333 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91053.0, pending_signals=1 +2026-01-12 01:27:39,338 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 91053.0, 'position_size': 0, 'timestamp': 1768152420}] +2026-01-12 01:27:50,216 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91053.1, pending_signals=1 +2026-01-12 01:27:50,221 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 91053.1, 'position_size': 0, 'timestamp': 1768152420}] +2026-01-12 01:27:59,342 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91053.1, pending_signals=1 +2026-01-12 01:27:59,347 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 91053.1, 'position_size': 0, 'timestamp': 1768152420}] +2026-01-12 01:28:09,799 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=91053.1, pending_signals=2 +2026-01-12 01:28:09,802 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'open_long', 'trigger_price': 91053.1, 'position_size': 0.08, 'timestamp': 1768152420}, {'type': 'close_short', 'trigger_price': 91053.1, 'position_size': 0, 'timestamp': 1768152420}] +2026-01-12 01:28:09,825 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-12 01:28:09,825 - app.services.analysis - INFO - Starting analysis Crypto:BTC/USDT, language=zh-CN, mode=multi-agent +2026-01-12 01:28:09,826 - app.services.analysis - INFO - Run coordinator: Crypto:BTC/USDT +2026-01-12 01:28:09,827 - app.services.agents.coordinator - INFO - Multi-agent analysis start: Crypto:BTC/USDT, model=None, language=zh-CN +2026-01-12 01:28:11,207 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-12 01:28:14,132 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-12 01:28:14,134 - app.services.agents.tools - WARNING - Finnhub news fetch failed: 'Client' object has no attribute 'crypto_news' +2026-01-12 01:28:14,134 - app.services.agents.tools - INFO - Running news search: "BTC/USDT Cryptocurrency" BTC/USDT crypto news analysis +2026-01-12 01:28:15,637 - app.services.agents.tools - INFO - Deep reading: Fxnl Trading Review | TikTok +2026-01-12 01:28:17,179 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-12 01:28:18,981 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-12 01:28:19,047 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:28:19,053 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:28:19,070 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:28:19,115 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:28:20,563 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-12 01:28:20,679 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:28:20,680 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:28:20,680 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:28:20,684 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:28:20,684 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:28:20,684 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:28:20,739 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:28:20,741 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:28:20,741 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:28:20,776 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:28:20,777 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:28:20,777 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:28:21,947 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:28:23,362 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:28:23,362 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:28:23,363 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:28:23,367 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-12 01:28:24,978 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:28:24,994 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:28:26,501 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:28:26,501 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:28:26,501 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:28:26,521 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:28:26,522 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:28:26,522 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:28:26,524 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-12 01:31:56,842 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:31:58,281 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:31:58,281 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:31:58,281 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:31:58,283 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-12 01:31:59,797 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:31:59,797 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:31:59,862 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:32:01,313 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:32:01,313 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:32:01,313 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:32:01,336 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:32:01,337 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:32:01,337 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:32:01,382 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:32:01,382 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:32:01,383 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:32:01,384 - app.services.agents.coordinator - WARNING - Record reflection failed: 'NoneType' object has no attribute 'get' +2026-01-12 01:32:01,385 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: Crypto:BTC/USDT +2026-01-12 01:32:01,385 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-12 01:32:01,385 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-12 01:32:01,395 - app.services.trading_executor - INFO - AI entry filter rejected: strategy_id=2 symbol=BTC/USDT signal=open_long ai=HOLD reason=ai_hold +2026-01-12 01:32:01,396 - app.services.trading_executor - WARNING - Strategy 2 signal rejected/failed: open_long +2026-01-12 01:36:02,649 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90987.1, pending_signals=2 +2026-01-12 01:36:02,654 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90989.2, 'position_size': 0, 'timestamp': 1768152900}, {'type': 'open_short', 'trigger_price': 90989.2, 'position_size': 0.08, 'timestamp': 1768152900}] +2026-01-12 01:36:02,679 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-12 01:36:02,680 - app.services.analysis - INFO - Starting analysis Crypto:BTC/USDT, language=zh-CN, mode=multi-agent +2026-01-12 01:36:02,680 - app.services.analysis - INFO - Run coordinator: Crypto:BTC/USDT +2026-01-12 01:36:02,681 - app.services.agents.coordinator - INFO - Multi-agent analysis start: Crypto:BTC/USDT, model=None, language=zh-CN +2026-01-12 01:36:03,990 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-12 01:36:06,723 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-12 01:36:06,726 - app.services.agents.tools - WARNING - Finnhub news fetch failed: 'Client' object has no attribute 'crypto_news' +2026-01-12 01:36:06,727 - app.services.agents.tools - INFO - Running news search: "BTC/USDT Cryptocurrency" BTC/USDT crypto news analysis +2026-01-12 01:36:08,158 - app.services.agents.tools - INFO - Deep reading: Fxnl Trading Review | TikTok +2026-01-12 01:36:11,257 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-12 01:36:12,843 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-12 01:36:12,940 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:36:12,951 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:36:12,963 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:36:13,148 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:36:14,405 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:BTC/USDT: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { + "code": 0, + "msg": "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error." +} +2026-01-12 01:36:14,580 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:36:14,581 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:36:14,582 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:36:14,582 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:36:14,583 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:36:14,583 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:36:14,630 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:36:14,631 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:36:14,631 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:36:14,745 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:36:14,746 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:36:14,746 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:36:15,756 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:36:17,108 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:36:17,108 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:36:17,109 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:36:17,111 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-12 01:36:18,567 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:36:18,600 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:36:20,030 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:36:20,030 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:36:20,031 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:36:20,136 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:36:20,137 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:36:20,137 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:36:20,140 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-12 01:36:21,462 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:36:22,802 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:36:22,803 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:36:22,803 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:36:22,804 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-12 01:36:24,329 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:36:24,345 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:36:24,354 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 01:36:25,827 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:36:25,827 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:36:25,828 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:36:25,833 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:36:25,834 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:36:25,834 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:36:25,860 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 01:36:25,861 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:36:25,861 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 01:36:25,863 - app.services.agents.coordinator - WARNING - Record reflection failed: 'NoneType' object has no attribute 'get' +2026-01-12 01:36:25,864 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: Crypto:BTC/USDT +2026-01-12 01:36:25,864 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-12 01:36:25,865 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-12 01:36:25,876 - app.services.trading_executor - INFO - AI entry filter rejected: strategy_id=2 symbol=BTC/USDT signal=open_short ai=HOLD reason=ai_hold +2026-01-12 01:36:25,877 - app.services.trading_executor - WARNING - Strategy 2 signal rejected/failed: open_short +2026-01-12 01:36:26,349 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90961.9, pending_signals=2 +2026-01-12 01:36:26,353 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90989.2, 'position_size': 0, 'timestamp': 1768152900}, {'type': 'open_short', 'trigger_price': 90989.2, 'position_size': 0.08, 'timestamp': 1768152900}] +2026-01-12 01:36:35,916 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90961.9, pending_signals=2 +2026-01-12 01:36:35,920 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90989.2, 'position_size': 0, 'timestamp': 1768152900}, {'type': 'open_short', 'trigger_price': 90989.2, 'position_size': 0.08, 'timestamp': 1768152900}] +2026-01-12 01:36:46,376 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90960.9, pending_signals=2 +2026-01-12 01:36:46,380 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90989.2, 'position_size': 0, 'timestamp': 1768152900}, {'type': 'open_short', 'trigger_price': 90989.2, 'position_size': 0.08, 'timestamp': 1768152900}] +2026-01-12 01:36:55,922 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90960.9, pending_signals=2 +2026-01-12 01:36:55,926 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90989.2, 'position_size': 0, 'timestamp': 1768152900}, {'type': 'open_short', 'trigger_price': 90989.2, 'position_size': 0.08, 'timestamp': 1768152900}] +2026-01-12 02:03:08,961 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-12 02:03:08,961 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-12 02:03:08,967 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 02:03:09,403 - app.services.strategy - INFO - Found 3 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}, {'id': 14, 'strategy_type': 'IndicatorStrategy'}] +2026-01-12 02:03:09,403 - app - INFO - Restoring 3 running strategies... +2026-01-12 02:03:09,404 - app.services.trading_executor - INFO - Strategy 1 loop starting +2026-01-12 02:03:09,404 - app.services.trading_executor - INFO - Strategy 1 started +2026-01-12 02:03:09,404 - app - INFO - [OK] IndicatorStrategy 1 restored +2026-01-12 02:03:09,404 - app.services.trading_executor - INFO - Strategy 2 loop starting +2026-01-12 02:03:09,404 - app.services.trading_executor - INFO - Strategy 2 started +2026-01-12 02:03:09,404 - app - INFO - [OK] IndicatorStrategy 2 restored +2026-01-12 02:03:09,405 - app.services.trading_executor - INFO - Strategy 14 loop starting +2026-01-12 02:03:09,405 - app.services.trading_executor - INFO - Strategy 14 started +2026-01-12 02:03:09,405 - app - INFO - [OK] IndicatorStrategy 14 restored +2026-01-12 02:03:09,405 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2026-01-12 02:03:09,405 - app - INFO - Strategy restore completed: 3/3 restored +2026-01-12 02:03:09,406 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2026-01-12 02:03:09,420 - app.services.trading_executor - INFO - Strategy 14 leverage=1; auto-switch market_type to spot +2026-01-12 02:03:09,425 - app.services.trading_executor - INFO - Strategy 14 spot trading; force trade_direction=long +2026-01-12 02:03:09,444 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-12 02:03:09,444 - werkzeug - INFO - Press CTRL+C to quit +2026-01-12 02:03:13,000 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-12 02:03:13,013 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2026-01-12 02:03:13,203 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-12 02:03:13,214 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2026-01-12 02:03:13,342 - app.services.trading_executor - INFO - ็ญ–็•ฅ 14 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-12 02:03:13,353 - app.services.trading_executor - INFO - Strategy 14 initialized; pending_signals=0 +2026-01-12 02:03:40,175 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:03:40] "GET /api/market/types?_t=1768154620153 HTTP/1.1" 200 - +2026-01-12 02:03:40,177 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:03:40] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 02:03:40,177 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:03:40] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 02:03:40,213 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 02:03:40,794 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:03:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 02:04:08,275 - app.services.backtest - INFO - Multi-timeframe backtest: strategy_tf=1D, exec_tf=5m, range=2025-01-12 00:00:00 ~ 2026-01-12 23:59:59 +2026-01-12 02:04:09,593 - app.utils.safe_exec - WARNING - Windows does not support signal-based timeouts; execution time limits may not work +2026-01-12 02:07:26,469 - app.services.backtest - INFO - Data fetched: signal_candles=365, exec_candles=105050 +2026-01-12 02:07:26,469 - app.services.backtest - INFO - Signal timeframe: 1D (86400s), Exec timeframe: 5m (300s) +2026-01-12 02:07:26,473 - app.services.backtest - INFO - Signal queue built: total 14 signals +2026-01-12 02:07:26,473 - app.services.backtest - INFO - First signal: close_long @ 2025-02-05 00:00:00 (from 2025-02-04 00:00:00) +2026-01-12 02:07:26,473 - app.services.backtest - INFO - Last signal: open_short @ 2025-10-11 00:00:00 (from 2025-10-10 00:00:00) +2026-01-12 02:07:26,474 - app.services.backtest - INFO - Signal counts: {'close_long': 4, 'open_short': 4, 'open_long': 3, 'close_short': 3} +2026-01-12 02:07:28,661 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:07:28] "POST /api/indicator/backtest HTTP/1.1" 200 - +2026-01-12 02:13:05,440 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:13:05] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:13:29,836 - app.services.backtest - INFO - Multi-timeframe backtest: strategy_tf=1D, exec_tf=1m, range=2026-01-01 00:00:00 ~ 2026-01-12 23:59:59 +2026-01-12 02:13:30,305 - app.utils.safe_exec - WARNING - Windows does not support signal-based timeouts; execution time limits may not work +2026-01-12 02:13:59,321 - app.services.backtest - INFO - Data fetched: signal_candles=11, exec_candles=15494 +2026-01-12 02:13:59,321 - app.services.backtest - INFO - Signal timeframe: 1D (86400s), Exec timeframe: 1m (60s) +2026-01-12 02:13:59,321 - app.services.backtest - INFO - Signal queue built: total 0 signals +2026-01-12 02:13:59,322 - app.services.backtest - INFO - Signal counts: {} +2026-01-12 02:13:59,593 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:13:59] "POST /api/indicator/backtest HTTP/1.1" 200 - +2026-01-12 02:14:09,927 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1H, limit=500 +2026-01-12 02:14:10,375 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:14:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 02:15:28,828 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=30m, limit=500 +2026-01-12 02:15:29,274 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:15:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 02:15:30,643 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=15m, limit=500 +2026-01-12 02:15:31,081 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:15:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 02:15:35,609 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=15m, limit=500 +2026-01-12 02:15:36,506 - app.data_sources.base - WARNING - Warning: ETH/USDT data is delayed (270037s) +2026-01-12 02:15:36,508 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:15:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 02:15:56,936 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:15:56] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:16:00,196 - app.services.backtest - INFO - Multi-timeframe backtest: strategy_tf=15m, exec_tf=1m, range=2026-01-01 00:00:00 ~ 2026-01-12 23:59:59 +2026-01-12 02:16:02,523 - app.utils.safe_exec - WARNING - Windows does not support signal-based timeouts; execution time limits may not work +2026-01-12 02:16:31,340 - app.services.backtest - INFO - Data fetched: signal_candles=1034, exec_candles=15497 +2026-01-12 02:16:31,341 - app.services.backtest - INFO - Signal timeframe: 15m (900s), Exec timeframe: 1m (60s) +2026-01-12 02:16:31,351 - app.services.backtest - INFO - Signal queue built: total 32 signals +2026-01-12 02:16:31,352 - app.services.backtest - INFO - First signal: close_long @ 2026-01-03 06:45:00 (from 2026-01-03 06:30:00) +2026-01-12 02:16:31,352 - app.services.backtest - INFO - Last signal: close_short @ 2026-01-11 00:30:00 (from 2026-01-11 00:15:00) +2026-01-12 02:16:31,352 - app.services.backtest - INFO - Signal counts: {'close_long': 8, 'open_short': 8, 'open_long': 8, 'close_short': 8} +2026-01-12 02:16:31,725 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:16:31] "POST /api/indicator/backtest HTTP/1.1" 200 - +2026-01-12 02:18:07,625 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:18:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768155487598 HTTP/1.1" 200 - +2026-01-12 02:18:07,627 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:18:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768155487598 HTTP/1.1" 200 - +2026-01-12 02:18:07,631 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:18:07] "GET /api/dashboard/summary?_t=1768155487598 HTTP/1.1" 200 - +2026-01-12 02:18:09,230 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:18:09] "GET /api/strategies?_t=1768155489213 HTTP/1.1" 200 - +2026-01-12 02:18:12,253 - app.services.trading_executor - INFO - Strategy 14 stopped +2026-01-12 02:18:12,263 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:18:12] "POST /api/strategies/batch-stop HTTP/1.1" 200 - +2026-01-12 02:18:12,287 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:18:12] "GET /api/strategies?_t=1768155492276 HTTP/1.1" 200 - +2026-01-12 02:18:12,510 - app.services.trading_executor - INFO - Strategy 14 stopped +2026-01-12 02:18:12,511 - app.services.trading_executor - INFO - Strategy 14 loop exited +2026-01-12 02:18:35,531 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:18:35] "GET /api/strategies/positions?id=14&_t=1768155515215 HTTP/1.1" 200 - +2026-01-12 02:18:35,531 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:18:35] "GET /api/strategies/equityCurve?id=14&_t=1768155515206 HTTP/1.1" 200 - +2026-01-12 02:18:35,537 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:18:35] "GET /api/strategies/equityCurve?id=14&_t=1768155515206 HTTP/1.1" 200 - +2026-01-12 02:18:36,450 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:18:36] "GET /api/strategies/trades?id=14&_t=1768155516439 HTTP/1.1" 200 - +2026-01-12 02:18:40,520 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:18:40] "GET /api/strategies/positions?id=14&_t=1768155520202 HTTP/1.1" 200 - +2026-01-12 02:18:45,214 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:18:45] "GET /api/strategies/positions?id=14&_t=1768155525208 HTTP/1.1" 200 - +2026-01-12 02:18:50,533 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:18:50] "GET /api/strategies/positions?id=14&_t=1768155530213 HTTP/1.1" 200 - +2026-01-12 02:18:55,220 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:18:55] "GET /api/strategies/positions?id=14&_t=1768155535212 HTTP/1.1" 200 - +2026-01-12 02:19:00,531 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:19:00] "GET /api/strategies/positions?id=14&_t=1768155540214 HTTP/1.1" 200 - +2026-01-12 02:19:05,217 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:19:05] "GET /api/strategies/equityCurve?id=14&_t=1768155545205 HTTP/1.1" 200 - +2026-01-12 02:19:05,528 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:19:05] "GET /api/strategies/positions?id=14&_t=1768155545205 HTTP/1.1" 200 - +2026-01-12 02:19:10,521 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:19:10] "GET /api/strategies/positions?id=14&_t=1768155550205 HTTP/1.1" 200 - +2026-01-12 02:19:14,074 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3124.15, pending_signals=2 +2026-01-12 02:19:14,077 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 3124.21, 'position_size': 0, 'timestamp': 1768155480}] +2026-01-12 02:19:15,222 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:19:15] "GET /api/strategies/positions?id=14&_t=1768155555214 HTTP/1.1" 200 - +2026-01-12 02:19:20,533 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:19:20] "GET /api/strategies/positions?id=14&_t=1768155560215 HTTP/1.1" 200 - +2026-01-12 02:19:23,185 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3124.15, pending_signals=2 +2026-01-12 02:19:23,187 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 3124.21, 'position_size': 0, 'timestamp': 1768155480}] +2026-01-12 02:19:25,214 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:19:25] "GET /api/strategies/positions?id=14&_t=1768155565204 HTTP/1.1" 200 - +2026-01-12 02:19:26,662 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:19:26] "GET /api/strategies/positions?id=12&_t=1768155566342 HTTP/1.1" 200 - +2026-01-12 02:19:26,663 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:19:26] "GET /api/strategies/equityCurve?id=12&_t=1768155566337 HTTP/1.1" 200 - +2026-01-12 02:19:26,663 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:19:26] "GET /api/strategies/equityCurve?id=12&_t=1768155566337 HTTP/1.1" 200 - +2026-01-12 02:19:26,669 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:19:26] "GET /api/strategies/trades?id=12&_t=1768155566342 HTTP/1.1" 200 - +2026-01-12 02:19:31,357 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:19:31] "GET /api/strategies/positions?id=12&_t=1768155571350 HTTP/1.1" 200 - +2026-01-12 02:19:33,634 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3123.98, pending_signals=2 +2026-01-12 02:19:33,636 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 3124.21, 'position_size': 0, 'timestamp': 1768155480}] +2026-01-12 02:19:36,658 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:19:36] "GET /api/strategies/positions?id=12&_t=1768155576341 HTTP/1.1" 200 - +2026-01-12 02:19:41,357 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:19:41] "GET /api/strategies/positions?id=12&_t=1768155581350 HTTP/1.1" 200 - +2026-01-12 02:19:43,187 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3123.98, pending_signals=2 +2026-01-12 02:19:43,189 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 3124.21, 'position_size': 0, 'timestamp': 1768155480}] +2026-01-12 02:19:46,669 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:19:46] "GET /api/strategies/positions?id=12&_t=1768155586349 HTTP/1.1" 200 - +2026-01-12 02:19:51,354 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:19:51] "GET /api/strategies/positions?id=12&_t=1768155591346 HTTP/1.1" 200 - +2026-01-12 02:19:53,624 - app.services.trading_executor - INFO - [monitoring] strategy=1 price=3123.98, pending_signals=2 +2026-01-12 02:19:53,626 - app.services.trading_executor - INFO - Strategy 1 triggered signals: [{'type': 'close_short', 'trigger_price': 3124.21, 'position_size': 0, 'timestamp': 1768155480}] +2026-01-12 02:19:59,047 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-12 02:19:59,048 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-12 02:19:59,054 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 02:19:59,393 - app.services.strategy - INFO - Found 2 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}] +2026-01-12 02:19:59,393 - app - INFO - Restoring 2 running strategies... +2026-01-12 02:19:59,393 - app.services.trading_executor - INFO - Strategy 1 loop starting +2026-01-12 02:19:59,393 - app.services.trading_executor - INFO - Strategy 1 started +2026-01-12 02:19:59,393 - app - INFO - [OK] IndicatorStrategy 1 restored +2026-01-12 02:19:59,394 - app.services.trading_executor - INFO - Strategy 2 loop starting +2026-01-12 02:19:59,394 - app.services.trading_executor - INFO - Strategy 2 started +2026-01-12 02:19:59,394 - app - INFO - [OK] IndicatorStrategy 2 restored +2026-01-12 02:19:59,394 - app - INFO - Strategy restore completed: 2/2 restored +2026-01-12 02:19:59,395 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2026-01-12 02:19:59,399 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2026-01-12 02:19:59,419 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-12 02:19:59,419 - werkzeug - INFO - Press CTRL+C to quit +2026-01-12 02:20:01,351 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:20:01] "GET /api/strategies/positions?id=12&_t=1768155601339 HTTP/1.1" 200 - +2026-01-12 02:20:02,582 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:20:02] "GET /api/market/types?_t=1768155602514 HTTP/1.1" 200 - +2026-01-12 02:20:02,730 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:20:02] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 02:20:02,965 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 02:20:02,984 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:20:02] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 02:20:03,196 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-12 02:20:03,211 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=0 +2026-01-12 02:20:03,452 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-12 02:20:03,469 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2026-01-12 02:20:04,064 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:20:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 02:20:15,244 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1H, limit=500 +2026-01-12 02:20:15,690 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:20:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 02:20:17,340 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=15m, limit=500 +2026-01-12 02:20:17,789 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:20:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 02:20:40,498 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:20:40] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:20:46,513 - app.services.backtest - INFO - Multi-timeframe backtest: strategy_tf=15m, exec_tf=1m, range=2026-01-01 00:00:00 ~ 2026-01-12 23:59:59 +2026-01-12 02:20:48,764 - app.utils.safe_exec - WARNING - Windows does not support signal-based timeouts; execution time limits may not work +2026-01-12 02:21:17,433 - app.services.backtest - INFO - Data fetched: signal_candles=1034, exec_candles=15502 +2026-01-12 02:21:17,433 - app.services.backtest - INFO - Signal keys: ['buy', 'sell'] +2026-01-12 02:21:17,433 - app.services.backtest - INFO - Signal index len=1034, df_signal index len=1034 +2026-01-12 02:21:17,434 - app.services.backtest - INFO - Signal index first=2026-01-01 00:00:00, df_signal index first=2026-01-01 00:00:00 +2026-01-12 02:21:17,434 - app.services.backtest - INFO - Signal timeframe: 15m (900s), Exec timeframe: 1m (60s) +2026-01-12 02:21:17,459 - app.services.backtest - INFO - Debug signal counts from queue building: {'open_long': 8, 'close_long': 8, 'open_short': 8, 'close_short': 8} +2026-01-12 02:21:17,459 - app.services.backtest - INFO - Signal queue built: total 32 signals +2026-01-12 02:21:17,459 - app.services.backtest - INFO - First signal: close_long @ 2026-01-03 06:45:00 (from 2026-01-03 06:30:00) +2026-01-12 02:21:17,460 - app.services.backtest - INFO - Last signal: close_short @ 2026-01-11 00:30:00 (from 2026-01-11 00:15:00) +2026-01-12 02:21:17,460 - app.services.backtest - INFO - Signal counts: {'close_long': 8, 'open_short': 8, 'open_long': 8, 'close_short': 8} +2026-01-12 02:21:17,460 - app.services.backtest - INFO - Exec data range: 2026-01-01 00:00:00 ~ 2026-01-11 18:21:00 +2026-01-12 02:21:17,461 - app.services.backtest - INFO - First exec candle: open=2971.63, high=2972.6, low=2971.36, close=2971.86 +2026-01-12 02:21:17,554 - app.services.backtest - INFO - Skipping signal #0: close_long (position=0, can_execute=False) +2026-01-12 02:21:17,554 - app.services.backtest - INFO - Signal ready: open_short @ 2026-01-03 06:45:00, will execute at open price +2026-01-12 02:21:17,554 - app.services.backtest - INFO - Trade #1: open_short @ 2026-01-03 06:45:00, price=3103.0200, shares=0.0000 +2026-01-12 02:21:17,575 - app.services.backtest - INFO - Signal ready: open_long @ 2026-01-03 18:30:00, will execute at open price +2026-01-12 02:21:17,576 - app.services.backtest - INFO - Trade #2: open_long @ 2026-01-03 18:30:00, price=3115.9700, shares=0.0000 +2026-01-12 02:21:17,576 - app.services.backtest - INFO - Skipping signal #3: close_short (position=0.0, can_execute=False) +2026-01-12 02:21:17,621 - app.services.backtest - INFO - Skipping signal #4: close_long (position=0.0, can_execute=False) +2026-01-12 02:21:17,622 - app.services.backtest - INFO - Signal ready: open_short @ 2026-01-04 15:45:00, will execute at open price +2026-01-12 02:21:17,622 - app.services.backtest - INFO - Trade #3: open_short @ 2026-01-04 15:45:00, price=3131.2100, shares=0.0000 +2026-01-12 02:21:17,631 - app.services.backtest - INFO - Signal ready: open_long @ 2026-01-04 21:15:00, will execute at open price +2026-01-12 02:21:17,632 - app.services.backtest - INFO - Trade #4: open_long @ 2026-01-04 21:15:00, price=3149.2400, shares=0.0000 +2026-01-12 02:21:17,651 - app.services.backtest - INFO - Signal ready: open_short @ 2026-01-05 06:00:00, will execute at open price +2026-01-12 02:21:17,652 - app.services.backtest - INFO - Trade #5: open_short @ 2026-01-05 06:00:00, price=3149.9000, shares=0.0000 +2026-01-12 02:21:17,876 - app.services.backtest - INFO - MTF simulation complete: executed_trades=16, total_trades_recorded=16, final_capital=10000.00 +2026-01-12 02:21:17,898 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:21:17] "POST /api/indicator/backtest HTTP/1.1" 200 - +2026-01-12 02:21:43,671 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90946.3, pending_signals=1 +2026-01-12 02:21:43,673 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 90946.3, 'position_size': 0, 'timestamp': 1768155660}] +2026-01-12 02:21:53,241 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90946.3, pending_signals=1 +2026-01-12 02:21:53,243 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 90946.3, 'position_size': 0, 'timestamp': 1768155660}] +2026-01-12 02:22:04,127 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90942.0, pending_signals=2 +2026-01-12 02:22:04,130 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 90942.1, 'position_size': 0, 'timestamp': 1768155660}] +2026-01-12 02:22:13,244 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90942.0, pending_signals=2 +2026-01-12 02:22:13,247 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 90942.1, 'position_size': 0, 'timestamp': 1768155660}] +2026-01-12 02:22:23,697 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90931.0, pending_signals=2 +2026-01-12 02:22:23,699 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 90942.1, 'position_size': 0, 'timestamp': 1768155660}] +2026-01-12 02:22:33,247 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90931.0, pending_signals=2 +2026-01-12 02:22:33,249 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 90942.1, 'position_size': 0, 'timestamp': 1768155660}] +2026-01-12 02:22:43,695 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90930.1, pending_signals=2 +2026-01-12 02:22:43,697 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 90942.1, 'position_size': 0, 'timestamp': 1768155660}] +2026-01-12 02:22:53,250 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90930.1, pending_signals=2 +2026-01-12 02:22:53,251 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_short', 'trigger_price': 90942.1, 'position_size': 0, 'timestamp': 1768155660}] +2026-01-12 02:26:23,717 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90895.3, pending_signals=1 +2026-01-12 02:26:23,719 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90895.3, 'position_size': 0, 'timestamp': 1768155960}] +2026-01-12 02:26:31,733 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-12 02:26:31,733 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-12 02:26:31,739 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 02:26:32,072 - app.services.strategy - INFO - Found 2 running strategies: [{'id': 1, 'strategy_type': 'IndicatorStrategy'}, {'id': 2, 'strategy_type': 'IndicatorStrategy'}] +2026-01-12 02:26:32,072 - app - INFO - Restoring 2 running strategies... +2026-01-12 02:26:32,073 - app.services.trading_executor - INFO - Strategy 1 loop starting +2026-01-12 02:26:32,073 - app.services.trading_executor - INFO - Strategy 1 started +2026-01-12 02:26:32,073 - app - INFO - [OK] IndicatorStrategy 1 restored +2026-01-12 02:26:32,073 - app.services.trading_executor - INFO - Strategy 2 loop starting +2026-01-12 02:26:32,073 - app.services.trading_executor - INFO - Strategy 2 started +2026-01-12 02:26:32,073 - app - INFO - [OK] IndicatorStrategy 2 restored +2026-01-12 02:26:32,073 - app - INFO - Strategy restore completed: 2/2 restored +2026-01-12 02:26:32,078 - app.services.trading_executor - INFO - Strategy 1 derivatives trading; normalize market_type to: swap +2026-01-12 02:26:32,078 - app.services.trading_executor - INFO - Strategy 2 derivatives trading; normalize market_type to: swap +2026-01-12 02:26:32,095 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-12 02:26:32,095 - werkzeug - INFO - Press CTRL+C to quit +2026-01-12 02:26:35,700 - app.services.trading_executor - INFO - ็ญ–็•ฅ 2 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-12 02:26:35,713 - app.services.trading_executor - INFO - Strategy 2 initialized; pending_signals=1 +2026-01-12 02:26:35,713 - app.services.trading_executor - INFO - Initial signals: [{'type': 'close_long', 'trigger_price': 90895.2, 'position_size': 0, 'timestamp': 1768155960}] +2026-01-12 02:26:35,999 - app.services.trading_executor - INFO - ็ญ–็•ฅ 1 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-12 02:26:36,013 - app.services.trading_executor - INFO - Strategy 1 initialized; pending_signals=0 +2026-01-12 02:26:36,199 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90895.2, pending_signals=1 +2026-01-12 02:26:36,201 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90895.2, 'position_size': 0, 'timestamp': 1768155960}] +2026-01-12 02:26:42,505 - app.services.backtest - INFO - Multi-timeframe backtest: strategy_tf=15m, exec_tf=1m, range=2026-01-01 00:00:00 ~ 2026-01-12 23:59:59 +2026-01-12 02:26:44,785 - app.utils.safe_exec - WARNING - Windows does not support signal-based timeouts; execution time limits may not work +2026-01-12 02:26:45,729 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90895.2, pending_signals=1 +2026-01-12 02:26:45,731 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90895.2, 'position_size': 0, 'timestamp': 1768155960}] +2026-01-12 02:26:56,200 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90895.3, pending_signals=1 +2026-01-12 02:26:56,202 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90895.3, 'position_size': 0, 'timestamp': 1768155960}] +2026-01-12 02:27:05,732 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90895.3, pending_signals=2 +2026-01-12 02:27:05,734 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90895.2, 'position_size': 0, 'timestamp': 1768155960}] +2026-01-12 02:27:13,261 - app.services.backtest - INFO - Data fetched: signal_candles=1034, exec_candles=15508 +2026-01-12 02:27:13,261 - app.services.backtest - INFO - Trading params: capital=10000.0, leverage=5, entry_pct=1.0, strategy_config={'risk': {'stopLossPct': 0.02, 'takeProfitPct': 0, 'trailing': {'enabled': True, 'pct': 0.01, 'activationPct': 0.03}}, 'position': {'entryPct': 0}, 'scale': {'trendAdd': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'dcaAdd': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'trendReduce': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'adverseReduce': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}}} +2026-01-12 02:27:13,261 - app.services.backtest - INFO - Signal keys: ['buy', 'sell'] +2026-01-12 02:27:13,261 - app.services.backtest - INFO - Signal index len=1034, df_signal index len=1034 +2026-01-12 02:27:13,261 - app.services.backtest - INFO - Signal index first=2026-01-01 00:00:00, df_signal index first=2026-01-01 00:00:00 +2026-01-12 02:27:13,262 - app.services.backtest - INFO - Signal timeframe: 15m (900s), Exec timeframe: 1m (60s) +2026-01-12 02:27:13,285 - app.services.backtest - INFO - Debug signal counts from queue building: {'open_long': 8, 'close_long': 8, 'open_short': 8, 'close_short': 8} +2026-01-12 02:27:13,286 - app.services.backtest - INFO - Signal queue built: total 32 signals +2026-01-12 02:27:13,286 - app.services.backtest - INFO - First signal: close_long @ 2026-01-03 06:45:00 (from 2026-01-03 06:30:00) +2026-01-12 02:27:13,286 - app.services.backtest - INFO - Last signal: close_short @ 2026-01-11 00:30:00 (from 2026-01-11 00:15:00) +2026-01-12 02:27:13,286 - app.services.backtest - INFO - Signal counts: {'close_long': 8, 'open_short': 8, 'open_long': 8, 'close_short': 8} +2026-01-12 02:27:13,286 - app.services.backtest - INFO - Exec data range: 2026-01-01 00:00:00 ~ 2026-01-11 18:27:00 +2026-01-12 02:27:13,286 - app.services.backtest - INFO - First exec candle: open=2971.63, high=2972.6, low=2971.36, close=2971.86 +2026-01-12 02:27:13,344 - app.services.backtest - INFO - Skipping signal #0: close_long (position=0, can_execute=False) +2026-01-12 02:27:13,344 - app.services.backtest - INFO - Signal ready: open_short @ 2026-01-03 06:45:00, will execute at open price +2026-01-12 02:27:13,345 - app.services.backtest - INFO - Trade #1: open_short @ 2026-01-03 06:45:00, price=3103.0200, shares=16.1133 +2026-01-12 02:27:13,360 - app.services.backtest - INFO - Signal ready: open_long @ 2026-01-03 18:30:00, will execute at open price +2026-01-12 02:27:13,360 - app.services.backtest - INFO - Trade #2: open_long @ 2026-01-03 18:30:00, price=3115.9700, shares=16.5586 +2026-01-12 02:27:13,361 - app.services.backtest - INFO - Skipping signal #3: close_short (position=16.558611126711973, can_execute=False) +2026-01-12 02:27:13,389 - app.services.backtest - INFO - Skipping signal #4: close_long (position=0, can_execute=False) +2026-01-12 02:27:13,389 - app.services.backtest - INFO - Signal ready: open_short @ 2026-01-04 15:45:00, will execute at open price +2026-01-12 02:27:13,389 - app.services.backtest - INFO - Trade #3: open_short @ 2026-01-04 15:45:00, price=3131.2100, shares=17.4198 +2026-01-12 02:27:13,397 - app.services.backtest - INFO - Signal ready: open_long @ 2026-01-04 21:15:00, will execute at open price +2026-01-12 02:27:13,397 - app.services.backtest - INFO - Trade #4: open_long @ 2026-01-04 21:15:00, price=3149.2400, shares=16.9390 +2026-01-12 02:27:13,410 - app.services.backtest - INFO - Signal ready: open_short @ 2026-01-05 06:00:00, will execute at open price +2026-01-12 02:27:13,410 - app.services.backtest - INFO - Trade #5: open_short @ 2026-01-05 06:00:00, price=3149.9000, shares=16.5629 +2026-01-12 02:27:13,606 - app.services.backtest - INFO - MTF simulation complete: executed_trades=15, total_trades_recorded=30, final_capital=9218.10 +2026-01-12 02:27:13,621 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:27:13] "POST /api/indicator/backtest HTTP/1.1" 200 - +2026-01-12 02:27:16,167 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90895.3, pending_signals=2 +2026-01-12 02:27:16,169 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90895.2, 'position_size': 0, 'timestamp': 1768155960}] +2026-01-12 02:27:19,801 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:27:19] "POST /api/indicator/backtest/history HTTP/1.1" 200 - +2026-01-12 02:27:25,737 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90895.3, pending_signals=2 +2026-01-12 02:27:25,739 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90895.2, 'position_size': 0, 'timestamp': 1768155960}] +2026-01-12 02:27:25,828 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:27:25] "POST /api/indicator/backtest/history HTTP/1.1" 200 - +2026-01-12 02:27:27,432 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:27:27] "POST /api/indicator/backtest/get HTTP/1.1" 200 - +2026-01-12 02:27:36,630 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90896.9, pending_signals=2 +2026-01-12 02:27:36,632 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90895.2, 'position_size': 0, 'timestamp': 1768155960}] +2026-01-12 02:27:40,067 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:27:40] "POST /api/indicator/backtest/get HTTP/1.1" 200 - +2026-01-12 02:27:42,655 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:27:42] "POST /api/indicator/backtest/get HTTP/1.1" 200 - +2026-01-12 02:27:45,737 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90896.9, pending_signals=2 +2026-01-12 02:27:45,739 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90895.2, 'position_size': 0, 'timestamp': 1768155960}] +2026-01-12 02:27:56,180 - app.services.trading_executor - INFO - [monitoring] strategy=2 price=90898.9, pending_signals=2 +2026-01-12 02:27:56,182 - app.services.trading_executor - INFO - Strategy 2 triggered signals: [{'type': 'close_long', 'trigger_price': 90895.2, 'position_size': 0, 'timestamp': 1768155960}] +2026-01-12 02:28:10,809 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:28:10] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:28:27,987 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:28:27] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:28:29,489 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:28:29] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:28:30,605 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:28:30] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:28:30,881 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:28:30] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:28:33,030 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:28:33] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:28:59,456 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:28:59] "GET /api/settings/schema?_t=1768156139446 HTTP/1.1" 200 - +2026-01-12 02:28:59,770 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:28:59] "GET /api/settings/values?_t=1768156139446 HTTP/1.1" 200 - +2026-01-12 02:29:03,221 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:29:03] "GET /api/strategies?_t=1768156143204 HTTP/1.1" 200 - +2026-01-12 02:29:10,818 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:29:10] "DELETE /api/strategies/delete?id=1 HTTP/1.1" 200 - +2026-01-12 02:29:11,061 - app.services.trading_executor - INFO - Strategy 1 stopped +2026-01-12 02:29:11,061 - app.services.trading_executor - INFO - Strategy 1 loop exited +2026-01-12 02:29:11,152 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:29:11] "GET /api/strategies?_t=1768156150828 HTTP/1.1" 200 - +2026-01-12 02:29:11,836 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:29:11] "GET /api/strategies/equityCurve?id=2&_t=1768156151825 HTTP/1.1" 200 - +2026-01-12 02:29:12,142 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:29:12] "GET /api/strategies/positions?id=2&_t=1768156151828 HTTP/1.1" 200 - +2026-01-12 02:29:12,143 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:29:12] "GET /api/strategies/equityCurve?id=2&_t=1768156151825 HTTP/1.1" 200 - +2026-01-12 02:29:14,300 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:29:14] "GET /api/strategies/trades?id=2&_t=1768156153473 HTTP/1.1" 200 - +2026-01-12 02:29:15,445 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:29:15] "GET /api/strategies?_t=1768156155430 HTTP/1.1" 200 - +2026-01-12 02:29:16,119 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:29:16] "GET /api/market/types?_t=1768156156104 HTTP/1.1" 200 - +2026-01-12 02:29:16,123 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:29:16] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 02:29:16,124 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:29:16] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 02:29:16,220 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 02:29:16,656 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:29:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 02:29:18,385 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:29:18] "GET /api/strategies/positions?id=2&_t=1768156158368 HTTP/1.1" 200 - +2026-01-12 02:29:18,386 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:29:18] "GET /api/strategies/equityCurve?id=2&_t=1768156158365 HTTP/1.1" 200 - +2026-01-12 02:29:18,407 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:29:18] "GET /api/strategies/equityCurve?id=2&_t=1768156158365 HTTP/1.1" 200 - +2026-01-12 02:29:19,465 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:29:19] "GET /api/strategies/trades?id=2&_t=1768156159457 HTTP/1.1" 200 - +2026-01-12 02:29:23,372 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:29:23] "GET /api/strategies/positions?id=2&_t=1768156163362 HTTP/1.1" 200 - +2026-01-12 02:29:26,039 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:29:26] "DELETE /api/strategies/delete?id=2 HTTP/1.1" 200 - +2026-01-12 02:29:26,279 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:29:26] "GET /api/strategies?_t=1768156166054 HTTP/1.1" 200 - +2026-01-12 02:29:26,761 - app.services.trading_executor - INFO - Strategy 2 stopped +2026-01-12 02:29:26,762 - app.services.trading_executor - INFO - Strategy 2 loop exited +2026-01-12 02:29:30,150 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:29:30] "GET /api/strategies?_t=1768156170137 HTTP/1.1" 200 - +2026-01-12 02:29:31,261 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:29:31] "GET /api/market/types?_t=1768156171251 HTTP/1.1" 200 - +2026-01-12 02:29:31,264 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:29:31] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 02:29:31,265 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:29:31] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 02:29:31,331 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 02:29:31,333 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:29:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 02:29:31,435 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:29:31] "GET /api/strategies/equityCurve?id=9&_t=1768156171409 HTTP/1.1" 200 - +2026-01-12 02:29:31,727 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:29:31] "GET /api/strategies/equityCurve?id=9&_t=1768156171409 HTTP/1.1" 200 - +2026-01-12 02:29:31,737 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:29:31] "GET /api/strategies/positions?id=9&_t=1768156171411 HTTP/1.1" 200 - +2026-01-12 02:29:32,546 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:29:32] "GET /api/strategies/trades?id=9&_t=1768156172539 HTTP/1.1" 200 - +2026-01-12 02:29:36,416 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:29:36] "GET /api/strategies/positions?id=9&_t=1768156176408 HTTP/1.1" 200 - +2026-01-12 02:29:41,386 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:29:41] "DELETE /api/strategies/delete?id=9 HTTP/1.1" 200 - +2026-01-12 02:29:41,412 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:29:41] "GET /api/strategies?_t=1768156181398 HTTP/1.1" 200 - +2026-01-12 02:29:46,177 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:29:46] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 02:29:46,178 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:29:46] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 02:29:46,186 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:29:46] "GET /api/credentials/list?user_id=1&_t=1768156186160 HTTP/1.1" 200 - +2026-01-12 02:29:56,227 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:29:56] "GET /api/credentials/get?id=2&user_id=1&_t=1768156195907 HTTP/1.1" 200 - +2026-01-12 02:29:57,621 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:29:57] "GET /api/credentials/get?id=4&user_id=1&_t=1768156197602 HTTP/1.1" 200 - +2026-01-12 02:30:21,394 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:30:21] "GET /api/market/types?_t=1768156221359 HTTP/1.1" 200 - +2026-01-12 02:30:21,414 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:30:21] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 02:30:21,418 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:30:21] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 02:30:21,475 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 02:30:21,489 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:30:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 02:30:25,247 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:30:25] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:30:35,920 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:30:35] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:30:36,806 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:30:36] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:30:37,947 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:30:37] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:30:39,320 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:30:39] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:30:41,558 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:30:41] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:30:42,721 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:30:42] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:30:43,510 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:30:43] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:30:44,722 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:30:44] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:30:45,215 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:30:45] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:30:46,363 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:30:46] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:30:46,631 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:30:46] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:30:47,114 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:30:47] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:30:48,553 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:30:48] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:30:48,964 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:30:48] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:31:13,547 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:31:13] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:31:58,308 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:31:58] "GET /api/settings/schema?_t=1768156318295 HTTP/1.1" 200 - +2026-01-12 02:31:58,311 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:31:58] "GET /api/settings/values?_t=1768156318295 HTTP/1.1" 200 - +2026-01-12 02:31:59,025 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:31:59] "GET /api/strategies?_t=1768156319010 HTTP/1.1" 200 - +2026-01-12 02:32:02,848 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:02] "GET /api/strategies/equityCurve?id=10&_t=1768156322837 HTTP/1.1" 200 - +2026-01-12 02:32:03,161 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:03] "GET /api/strategies/positions?id=10&_t=1768156322840 HTTP/1.1" 200 - +2026-01-12 02:32:03,161 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:03] "GET /api/strategies/equityCurve?id=10&_t=1768156322837 HTTP/1.1" 200 - +2026-01-12 02:32:03,791 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:03] "GET /api/strategies/equityCurve?id=11&_t=1768156323465 HTTP/1.1" 200 - +2026-01-12 02:32:03,792 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:03] "GET /api/strategies/equityCurve?id=11&_t=1768156323465 HTTP/1.1" 200 - +2026-01-12 02:32:03,793 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:03] "GET /api/strategies/positions?id=11&_t=1768156323466 HTTP/1.1" 200 - +2026-01-12 02:32:04,048 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:04] "GET /api/strategies/equityCurve?id=12&_t=1768156324005 HTTP/1.1" 200 - +2026-01-12 02:32:04,332 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:04] "GET /api/strategies/positions?id=12&_t=1768156324006 HTTP/1.1" 200 - +2026-01-12 02:32:04,332 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:04] "GET /api/strategies/equityCurve?id=12&_t=1768156324006 HTTP/1.1" 200 - +2026-01-12 02:32:05,216 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:05] "GET /api/strategies/equityCurve?id=13&_t=1768156325203 HTTP/1.1" 200 - +2026-01-12 02:32:05,530 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:05] "GET /api/strategies/positions?id=13&_t=1768156325204 HTTP/1.1" 200 - +2026-01-12 02:32:05,530 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:05] "GET /api/strategies/equityCurve?id=13&_t=1768156325203 HTTP/1.1" 200 - +2026-01-12 02:32:07,060 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:07] "GET /api/strategies/trades?id=13&_t=1768156326749 HTTP/1.1" 200 - +2026-01-12 02:32:10,211 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:10] "GET /api/strategies/positions?id=13&_t=1768156330205 HTTP/1.1" 200 - +2026-01-12 02:32:15,211 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:15] "GET /api/strategies/positions?id=13&_t=1768156335203 HTTP/1.1" 200 - +2026-01-12 02:32:20,210 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:20] "GET /api/strategies/positions?id=13&_t=1768156340203 HTTP/1.1" 200 - +2026-01-12 02:32:25,210 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:25] "GET /api/strategies/positions?id=13&_t=1768156345203 HTTP/1.1" 200 - +2026-01-12 02:32:30,210 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:30] "GET /api/strategies/positions?id=13&_t=1768156350204 HTTP/1.1" 200 - +2026-01-12 02:32:35,207 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:35] "GET /api/strategies/equityCurve?id=13&_t=1768156355199 HTTP/1.1" 200 - +2026-01-12 02:32:35,208 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:35] "GET /api/strategies/positions?id=13&_t=1768156355203 HTTP/1.1" 200 - +2026-01-12 02:32:40,528 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:40] "GET /api/strategies/positions?id=13&_t=1768156360204 HTTP/1.1" 200 - +2026-01-12 02:32:45,015 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:45] "GET /api/strategies/equityCurve?id=12&_t=1768156365004 HTTP/1.1" 200 - +2026-01-12 02:32:45,327 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:45] "GET /api/strategies/positions?id=12&_t=1768156365005 HTTP/1.1" 200 - +2026-01-12 02:32:45,328 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:45] "GET /api/strategies/equityCurve?id=12&_t=1768156365004 HTTP/1.1" 200 - +2026-01-12 02:32:45,334 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:45] "GET /api/strategies/trades?id=12&_t=1768156365005 HTTP/1.1" 200 - +2026-01-12 02:32:45,844 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:45] "GET /api/strategies/trades?id=11&_t=1768156365522 HTTP/1.1" 200 - +2026-01-12 02:32:45,845 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:45] "GET /api/strategies/positions?id=11&_t=1768156365522 HTTP/1.1" 200 - +2026-01-12 02:32:45,845 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:45] "GET /api/strategies/equityCurve?id=11&_t=1768156365521 HTTP/1.1" 200 - +2026-01-12 02:32:45,852 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:45] "GET /api/strategies/equityCurve?id=11&_t=1768156365521 HTTP/1.1" 200 - +2026-01-12 02:32:48,228 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:48] "GET /api/strategies/equityCurve?id=14&_t=1768156368216 HTTP/1.1" 200 - +2026-01-12 02:32:48,539 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:48] "GET /api/strategies/trades?id=14&_t=1768156368217 HTTP/1.1" 200 - +2026-01-12 02:32:48,540 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:48] "GET /api/strategies/positions?id=14&_t=1768156368217 HTTP/1.1" 200 - +2026-01-12 02:32:48,540 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:48] "GET /api/strategies/equityCurve?id=14&_t=1768156368216 HTTP/1.1" 200 - +2026-01-12 02:32:53,542 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:53] "GET /api/strategies/positions?id=14&_t=1768156373220 HTTP/1.1" 200 - +2026-01-12 02:32:53,874 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:53] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 02:32:53,885 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:53] "GET /api/market/config?_t=1768156373854 HTTP/1.1" 200 - +2026-01-12 02:32:54,241 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:54] "GET /api/market/types?_t=1768156373951 HTTP/1.1" 200 - +2026-01-12 02:32:54,353 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 02:32:54,354 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 02:32:54,354 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 02:32:54,355 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 02:32:54,355 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 02:32:55,315 - app.data_sources.base - WARNING - Warning: 000858 data is delayed (268375s) +2026-01-12 02:32:55,317 - app.data_sources.base - WARNING - Warning: 300475 data is delayed (268375s) +2026-01-12 02:32:55,333 - app.data_sources.base - WARNING - Warning: 600519 data is delayed (268375s) +2026-01-12 02:32:55,434 - app.data_sources.base - WARNING - Warning: 00700 data is delayed (268375s) +2026-01-12 02:32:55,775 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (221576s) +2026-01-12 02:32:55,785 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:55] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-12 02:32:59,300 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:59] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 02:32:59,932 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 02:32:59,933 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 02:32:59,934 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:32:59] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 02:33:00,841 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:33:00] "GET /api/market/types?_t=1768156379043 HTTP/1.1" 200 - +2026-01-12 02:33:14,158 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:33:14] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:33:25,163 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:33:25] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:33:26,097 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:33:26] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:33:26,364 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:33:26] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:33:26,922 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:33:26] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:33:29,464 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:33:29] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:33:30,315 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:33:30] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:33:34,353 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:33:34] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:33:44,317 - app.services.backtest - INFO - Multi-timeframe backtest: strategy_tf=1D, exec_tf=1m, range=2025-12-13 00:00:00 ~ 2026-01-12 23:59:59 +2026-01-12 02:33:44,765 - app.utils.safe_exec - WARNING - Windows does not support signal-based timeouts; execution time limits may not work +2026-01-12 02:35:04,413 - app.services.backtest - INFO - Data fetched: signal_candles=30, exec_candles=42876 +2026-01-12 02:35:04,413 - app.services.backtest - INFO - Trading params: capital=10000.0, leverage=5, entry_pct=1.0, strategy_config={'risk': {'stopLossPct': 0, 'takeProfitPct': 0, 'trailing': {'enabled': False, 'pct': 0, 'activationPct': 0}}, 'position': {'entryPct': 0}, 'scale': {'trendAdd': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'dcaAdd': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'trendReduce': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'adverseReduce': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}}} +2026-01-12 02:35:04,413 - app.services.backtest - INFO - Signal keys: ['buy', 'sell'] +2026-01-12 02:35:04,414 - app.services.backtest - INFO - Signal index len=30, df_signal index len=30 +2026-01-12 02:35:04,414 - app.services.backtest - INFO - Signal index first=2025-12-13 00:00:00, df_signal index first=2025-12-13 00:00:00 +2026-01-12 02:35:04,414 - app.services.backtest - INFO - Signal timeframe: 1D (86400s), Exec timeframe: 1m (60s) +2026-01-12 02:35:04,415 - app.services.backtest - INFO - Debug signal counts from queue building: {'open_long': 0, 'close_long': 0, 'open_short': 0, 'close_short': 0} +2026-01-12 02:35:04,415 - app.services.backtest - INFO - Signal queue built: total 0 signals +2026-01-12 02:35:04,415 - app.services.backtest - INFO - Signal counts: {} +2026-01-12 02:35:04,415 - app.services.backtest - INFO - Exec data range: 2025-12-13 00:00:00 ~ 2026-01-11 18:35:00 +2026-01-12 02:35:04,416 - app.services.backtest - INFO - First exec candle: open=3084.59, high=3086.84, low=3084.59, close=3086.01 +2026-01-12 02:35:05,146 - app.services.backtest - INFO - MTF simulation complete: executed_trades=0, total_trades_recorded=0, final_capital=10000.00 +2026-01-12 02:35:05,146 - app.services.backtest - WARNING - No trades executed! signal_queue_idx=0, total_signals=0 +2026-01-12 02:35:05,165 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:35:05] "POST /api/indicator/backtest HTTP/1.1" 200 - +2026-01-12 02:35:15,200 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1H, limit=500 +2026-01-12 02:35:15,648 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:35:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 02:35:18,276 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 02:35:18,723 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:35:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 02:35:27,901 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1H, limit=500 +2026-01-12 02:35:27,902 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:35:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 02:35:29,469 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=15m, limit=500 +2026-01-12 02:35:29,931 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:35:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 02:36:50,461 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 02:36:50,463 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:36:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 02:36:55,405 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:36:55] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:40:50,318 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:40:50] "GET /api/market/types?_t=1768156850297 HTTP/1.1" 200 - +2026-01-12 02:40:50,320 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:40:50] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 02:40:50,320 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:40:50] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 02:40:50,395 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 02:40:50,836 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:40:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 02:40:50,986 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:40:50] "GET /api/market/types?_t=1768156850976 HTTP/1.1" 200 - +2026-01-12 02:40:50,991 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:40:50] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 02:40:50,998 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:40:50] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 02:40:51,314 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 02:40:51,315 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:40:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 02:41:05,236 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:41:05] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 02:41:05,237 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:41:05] "GET /api/market/types?_t=1768156865217 HTTP/1.1" 200 - +2026-01-12 02:41:05,243 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:41:05] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 02:41:05,317 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 02:41:05,319 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:41:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 02:41:06,090 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:41:06] "GET /api/market/types?_t=1768156866078 HTTP/1.1" 200 - +2026-01-12 02:41:06,093 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:41:06] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 02:41:06,093 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:41:06] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 02:41:06,148 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 02:41:06,149 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:41:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 02:42:56,829 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:42:56] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:43:08,318 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:43:08] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:43:15,266 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:43:15] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:43:26,035 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:43:26] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:43:32,752 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:43:32] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:43:36,184 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:43:36] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:43:39,314 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:43:39] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:43:40,668 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:43:40] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:43:43,288 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:43:43] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:43:46,779 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:43:46] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:43:50,256 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:43:50] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:48:14,747 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:48:14] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:48:25,117 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:48:25] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:48:25,809 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:48:25] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:48:28,142 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:48:28] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:48:37,784 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:48:37] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:48:42,406 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:48:42] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:48:45,416 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:48:45] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:48:47,618 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:48:47] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:48:51,396 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:48:51] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:48:52,736 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:48:52] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:48:53,492 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:48:53] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:49:08,855 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:49:08] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:49:13,845 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:49:13] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:49:17,195 - app.services.backtest - INFO - Multi-timeframe backtest: strategy_tf=5m, exec_tf=1m, range=2025-12-29 00:00:00 ~ 2026-01-12 23:59:59 +2026-01-12 02:49:25,553 - app.utils.safe_exec - WARNING - Windows does not support signal-based timeouts; execution time limits may not work +2026-01-12 02:50:02,058 - app.services.backtest - INFO - Data fetched: signal_candles=3970, exec_candles=19851 +2026-01-12 02:50:02,058 - app.services.backtest - INFO - Trading params: capital=10000.0, leverage=1, entry_pct=1.0, strategy_config={'risk': {'stopLossPct': 0, 'takeProfitPct': 0, 'trailing': {'enabled': False, 'pct': 0, 'activationPct': 0}}, 'position': {'entryPct': 0}, 'scale': {'trendAdd': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'dcaAdd': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'trendReduce': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'adverseReduce': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}}} +2026-01-12 02:50:02,059 - app.services.backtest - INFO - Signal keys: ['buy', 'sell'] +2026-01-12 02:50:02,059 - app.services.backtest - INFO - Signal index len=3970, df_signal index len=3970 +2026-01-12 02:50:02,059 - app.services.backtest - INFO - Signal index first=2025-12-29 00:00:00, df_signal index first=2025-12-29 00:00:00 +2026-01-12 02:50:02,060 - app.services.backtest - INFO - Signal timeframe: 5m (300s), Exec timeframe: 1m (60s) +2026-01-12 02:50:02,151 - app.services.backtest - INFO - Debug signal counts from queue building: {'open_long': 59, 'close_long': 60, 'open_short': 60, 'close_short': 59} +2026-01-12 02:50:02,151 - app.services.backtest - INFO - Signal queue built: total 238 signals +2026-01-12 02:50:02,151 - app.services.backtest - INFO - First signal: close_long @ 2025-12-29 07:10:00 (from 2025-12-29 07:05:00) +2026-01-12 02:50:02,151 - app.services.backtest - INFO - Last signal: open_short @ 2026-01-11 18:10:00 (from 2026-01-11 18:05:00) +2026-01-12 02:50:02,152 - app.services.backtest - INFO - Signal counts: {'close_long': 60, 'open_short': 60, 'open_long': 59, 'close_short': 59} +2026-01-12 02:50:02,152 - app.services.backtest - INFO - Exec data range: 2025-12-29 00:00:00 ~ 2026-01-11 18:50:00 +2026-01-12 02:50:02,152 - app.services.backtest - INFO - First exec candle: open=2951.05, high=2952.0, low=2949.7, close=2949.7 +2026-01-12 02:50:02,163 - app.services.backtest - INFO - Skipping signal #0: close_long (position=0, can_execute=False) +2026-01-12 02:50:02,163 - app.services.backtest - INFO - Signal ready: open_short @ 2025-12-29 07:10:00, will execute at open price +2026-01-12 02:50:02,163 - app.services.backtest - INFO - Trade #1: open_short @ 2025-12-29 07:10:00, price=3019.5500, shares=3.3118 +2026-01-12 02:50:02,173 - app.services.backtest - INFO - Skipping signal #2: open_long (position=-3.311751751088738, can_execute=False) +2026-01-12 02:50:02,173 - app.services.backtest - INFO - Signal ready: close_short @ 2025-12-29 14:35:00, will execute at open price +2026-01-12 02:50:02,174 - app.services.backtest - INFO - Skipping signal #4: close_long (position=0, can_execute=False) +2026-01-12 02:50:02,175 - app.services.backtest - INFO - Signal ready: open_short @ 2025-12-29 15:00:00, will execute at open price +2026-01-12 02:50:02,175 - app.services.backtest - INFO - Trade #2: open_short @ 2025-12-29 15:00:00, price=2928.6500, shares=3.4925 +2026-01-12 02:50:02,181 - app.services.backtest - INFO - Signal ready: close_short @ 2025-12-29 19:10:00, will execute at open price +2026-01-12 02:50:02,187 - app.services.backtest - INFO - Signal ready: open_short @ 2025-12-29 23:40:00, will execute at open price +2026-01-12 02:50:02,187 - app.services.backtest - INFO - Trade #3: open_short @ 2025-12-29 23:40:00, price=2933.1800, shares=3.4728 +2026-01-12 02:50:02,194 - app.services.backtest - INFO - Signal ready: close_short @ 2025-12-30 03:25:00, will execute at open price +2026-01-12 02:50:02,196 - app.services.backtest - INFO - Signal ready: open_short @ 2025-12-30 05:20:00, will execute at open price +2026-01-12 02:50:02,197 - app.services.backtest - INFO - Trade #4: open_short @ 2025-12-30 05:20:00, price=2943.7900, shares=3.4488 +2026-01-12 02:50:02,199 - app.services.backtest - INFO - Signal ready: close_short @ 2025-12-30 07:10:00, will execute at open price +2026-01-12 02:50:02,203 - app.services.backtest - INFO - Signal ready: open_short @ 2025-12-30 09:25:00, will execute at open price +2026-01-12 02:50:02,203 - app.services.backtest - INFO - Trade #5: open_short @ 2025-12-30 09:25:00, price=2971.8000, shares=3.4074 +2026-01-12 02:50:02,595 - app.services.backtest - INFO - MTF simulation complete: executed_trades=60, total_trades_recorded=119, final_capital=8837.54 +2026-01-12 02:50:02,612 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:50:02] "POST /api/indicator/backtest HTTP/1.1" 200 - +2026-01-12 02:50:37,037 - app.services.backtest - INFO - Multi-timeframe backtest: strategy_tf=5m, exec_tf=1m, range=2025-12-29 00:00:00 ~ 2026-01-12 23:59:59 +2026-01-12 02:50:44,798 - app.utils.safe_exec - WARNING - Windows does not support signal-based timeouts; execution time limits may not work +2026-01-12 02:51:21,493 - app.services.backtest - INFO - Data fetched: signal_candles=3971, exec_candles=19852 +2026-01-12 02:51:21,493 - app.services.backtest - INFO - Trading params: capital=10000.0, leverage=1, entry_pct=1.0, strategy_config={'risk': {'stopLossPct': 0, 'takeProfitPct': 0, 'trailing': {'enabled': False, 'pct': 0, 'activationPct': 0}}, 'position': {'entryPct': 0}, 'scale': {'trendAdd': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'dcaAdd': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'trendReduce': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'adverseReduce': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}}} +2026-01-12 02:51:21,494 - app.services.backtest - INFO - Signal keys: ['buy', 'sell'] +2026-01-12 02:51:21,494 - app.services.backtest - INFO - Signal index len=3971, df_signal index len=3971 +2026-01-12 02:51:21,494 - app.services.backtest - INFO - Signal index first=2025-12-29 00:00:00, df_signal index first=2025-12-29 00:00:00 +2026-01-12 02:51:21,495 - app.services.backtest - INFO - Signal timeframe: 5m (300s), Exec timeframe: 1m (60s) +2026-01-12 02:51:21,585 - app.services.backtest - INFO - Debug signal counts from queue building: {'open_long': 59, 'close_long': 60, 'open_short': 60, 'close_short': 59} +2026-01-12 02:51:21,585 - app.services.backtest - INFO - Signal queue built: total 238 signals +2026-01-12 02:51:21,586 - app.services.backtest - INFO - First signal: close_long @ 2025-12-29 07:10:00 (from 2025-12-29 07:05:00) +2026-01-12 02:51:21,586 - app.services.backtest - INFO - Last signal: open_short @ 2026-01-11 18:10:00 (from 2026-01-11 18:05:00) +2026-01-12 02:51:21,586 - app.services.backtest - INFO - Signal counts: {'close_long': 60, 'open_short': 60, 'open_long': 59, 'close_short': 59} +2026-01-12 02:51:21,586 - app.services.backtest - INFO - Exec data range: 2025-12-29 00:00:00 ~ 2026-01-11 18:51:00 +2026-01-12 02:51:21,586 - app.services.backtest - INFO - First exec candle: open=2951.05, high=2952.0, low=2949.7, close=2949.7 +2026-01-12 02:51:21,597 - app.services.backtest - INFO - Skipping signal #0: close_long (position=0, can_execute=False) +2026-01-12 02:51:21,598 - app.services.backtest - INFO - Signal ready: open_short @ 2025-12-29 07:10:00, will execute at open price +2026-01-12 02:51:21,598 - app.services.backtest - INFO - Trade #1: open_short @ 2025-12-29 07:10:00, price=3019.5500, shares=3.3118 +2026-01-12 02:51:21,608 - app.services.backtest - INFO - Skipping signal #2: open_long (position=-3.311751751088738, can_execute=False) +2026-01-12 02:51:21,608 - app.services.backtest - INFO - Signal ready: close_short @ 2025-12-29 14:35:00, will execute at open price +2026-01-12 02:51:21,609 - app.services.backtest - INFO - Skipping signal #4: close_long (position=0, can_execute=False) +2026-01-12 02:51:21,609 - app.services.backtest - INFO - Signal ready: open_short @ 2025-12-29 15:00:00, will execute at open price +2026-01-12 02:51:21,610 - app.services.backtest - INFO - Trade #2: open_short @ 2025-12-29 15:00:00, price=2928.6500, shares=3.4925 +2026-01-12 02:51:21,616 - app.services.backtest - INFO - Signal ready: close_short @ 2025-12-29 19:10:00, will execute at open price +2026-01-12 02:51:21,622 - app.services.backtest - INFO - Signal ready: open_short @ 2025-12-29 23:40:00, will execute at open price +2026-01-12 02:51:21,622 - app.services.backtest - INFO - Trade #3: open_short @ 2025-12-29 23:40:00, price=2933.1800, shares=3.4728 +2026-01-12 02:51:21,628 - app.services.backtest - INFO - Signal ready: close_short @ 2025-12-30 03:25:00, will execute at open price +2026-01-12 02:51:21,631 - app.services.backtest - INFO - Signal ready: open_short @ 2025-12-30 05:20:00, will execute at open price +2026-01-12 02:51:21,632 - app.services.backtest - INFO - Trade #4: open_short @ 2025-12-30 05:20:00, price=2943.7900, shares=3.4488 +2026-01-12 02:51:21,634 - app.services.backtest - INFO - Signal ready: close_short @ 2025-12-30 07:10:00, will execute at open price +2026-01-12 02:51:21,637 - app.services.backtest - INFO - Signal ready: open_short @ 2025-12-30 09:25:00, will execute at open price +2026-01-12 02:51:21,637 - app.services.backtest - INFO - Trade #5: open_short @ 2025-12-30 09:25:00, price=2971.8000, shares=3.4074 +2026-01-12 02:51:22,039 - app.services.backtest - INFO - MTF simulation complete: executed_trades=60, total_trades_recorded=119, final_capital=8837.54 +2026-01-12 02:51:22,056 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:51:22] "POST /api/indicator/backtest HTTP/1.1" 200 - +2026-01-12 02:51:36,413 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:51:36] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:51:39,846 - app.services.backtest - INFO - Multi-timeframe backtest: strategy_tf=1H, exec_tf=1m, range=2025-12-13 00:00:00 ~ 2026-01-12 23:59:59 +2026-01-12 02:51:41,616 - app.utils.safe_exec - WARNING - Windows does not support signal-based timeouts; execution time limits may not work +2026-01-12 02:53:00,705 - app.services.backtest - INFO - Data fetched: signal_candles=715, exec_candles=42893 +2026-01-12 02:53:00,705 - app.services.backtest - INFO - Trading params: capital=10000.0, leverage=1, entry_pct=1.0, strategy_config={'risk': {'stopLossPct': 0, 'takeProfitPct': 0, 'trailing': {'enabled': False, 'pct': 0, 'activationPct': 0}}, 'position': {'entryPct': 0}, 'scale': {'trendAdd': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'dcaAdd': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'trendReduce': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'adverseReduce': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}}} +2026-01-12 02:53:00,705 - app.services.backtest - INFO - Signal keys: ['buy', 'sell'] +2026-01-12 02:53:00,705 - app.services.backtest - INFO - Signal index len=715, df_signal index len=715 +2026-01-12 02:53:00,705 - app.services.backtest - INFO - Signal index first=2025-12-13 00:00:00, df_signal index first=2025-12-13 00:00:00 +2026-01-12 02:53:00,706 - app.services.backtest - INFO - Signal timeframe: 1H (3600s), Exec timeframe: 1m (60s) +2026-01-12 02:53:00,723 - app.services.backtest - INFO - Debug signal counts from queue building: {'open_long': 10, 'close_long': 10, 'open_short': 10, 'close_short': 10} +2026-01-12 02:53:00,724 - app.services.backtest - INFO - Signal queue built: total 40 signals +2026-01-12 02:53:00,724 - app.services.backtest - INFO - First signal: close_long @ 2025-12-14 12:00:00 (from 2025-12-14 11:00:00) +2026-01-12 02:53:00,724 - app.services.backtest - INFO - Last signal: close_short @ 2026-01-11 13:00:00 (from 2026-01-11 12:00:00) +2026-01-12 02:53:00,724 - app.services.backtest - INFO - Signal counts: {'close_long': 10, 'open_short': 10, 'open_long': 10, 'close_short': 10} +2026-01-12 02:53:00,724 - app.services.backtest - INFO - Exec data range: 2025-12-13 00:00:00 ~ 2026-01-11 18:52:00 +2026-01-12 02:53:00,724 - app.services.backtest - INFO - First exec candle: open=3084.59, high=3086.84, low=3084.59, close=3086.01 +2026-01-12 02:53:00,807 - app.services.backtest - INFO - Skipping signal #0: close_long (position=0, can_execute=False) +2026-01-12 02:53:00,807 - app.services.backtest - INFO - Signal ready: open_short @ 2025-12-14 12:00:00, will execute at open price +2026-01-12 02:53:00,807 - app.services.backtest - INFO - Trade #1: open_short @ 2025-12-14 12:00:00, price=3084.8500, shares=3.2416 +2026-01-12 02:53:00,856 - app.services.backtest - INFO - Skipping signal #2: open_long (position=-3.241648702530107, can_execute=False) +2026-01-12 02:53:00,856 - app.services.backtest - INFO - Signal ready: close_short @ 2025-12-15 07:00:00, will execute at open price +2026-01-12 02:53:00,879 - app.services.backtest - INFO - Skipping signal #4: close_long (position=0, can_execute=False) +2026-01-12 02:53:00,879 - app.services.backtest - INFO - Signal ready: open_short @ 2025-12-15 15:00:00, will execute at open price +2026-01-12 02:53:00,879 - app.services.backtest - INFO - Trade #2: open_short @ 2025-12-15 15:00:00, price=3049.0000, shares=3.2226 +2026-01-12 02:53:00,954 - app.services.backtest - INFO - Signal ready: close_short @ 2025-12-17 15:00:00, will execute at open price +2026-01-12 02:53:00,956 - app.services.backtest - INFO - Signal ready: open_short @ 2025-12-17 17:00:00, will execute at open price +2026-01-12 02:53:00,957 - app.services.backtest - INFO - Trade #3: open_short @ 2025-12-17 17:00:00, price=2864.2600, shares=3.4891 +2026-01-12 02:53:00,986 - app.services.backtest - INFO - Signal ready: close_short @ 2025-12-18 14:00:00, will execute at open price +2026-01-12 02:53:00,991 - app.services.backtest - INFO - Signal ready: open_short @ 2025-12-18 18:00:00, will execute at open price +2026-01-12 02:53:00,991 - app.services.backtest - INFO - Trade #4: open_short @ 2025-12-18 18:00:00, price=2845.8600, shares=3.3879 +2026-01-12 02:53:01,009 - app.services.backtest - INFO - Signal ready: close_short @ 2025-12-19 07:00:00, will execute at open price +2026-01-12 02:53:01,081 - app.services.backtest - INFO - Signal ready: open_short @ 2025-12-21 14:00:00, will execute at open price +2026-01-12 02:53:01,081 - app.services.backtest - INFO - Trade #5: open_short @ 2025-12-21 14:00:00, price=2950.3600, shares=3.1497 +2026-01-12 02:53:01,811 - app.services.backtest - INFO - MTF simulation complete: executed_trades=10, total_trades_recorded=20, final_capital=8714.04 +2026-01-12 02:53:01,834 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:53:01] "POST /api/indicator/backtest HTTP/1.1" 200 - +2026-01-12 02:54:36,971 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:54:36] "GET /api/market/types?_t=1768157676958 HTTP/1.1" 200 - +2026-01-12 02:54:36,976 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:54:36] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 02:54:36,976 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:54:36] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 02:54:37,032 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 02:54:37,497 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:54:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 02:54:42,180 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:54:42] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:54:49,591 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=15m, limit=500 +2026-01-12 02:54:50,031 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:54:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 02:54:52,860 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:54:52] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 02:55:05,305 - app.services.backtest - INFO - Multi-timeframe backtest: strategy_tf=15m, exec_tf=1m, range=2025-12-13 00:00:00 ~ 2026-01-12 23:59:59 +2026-01-12 02:55:11,180 - app.utils.safe_exec - WARNING - Windows does not support signal-based timeouts; execution time limits may not work +2026-01-12 02:55:44,844 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: okx {"code":"51054","msg":"Request timed out. Please try again.","data":[]}; trying fallback +2026-01-12 02:55:45,303 - app.data_sources.base - WARNING - Warning: ETH/USDT data is delayed (3048285s) +2026-01-12 02:55:45,305 - app.services.backtest - WARNING - Cannot fetch 1m candles, falling back to standard backtest +2026-01-12 02:55:51,139 - app.utils.safe_exec - WARNING - Windows does not support signal-based timeouts; execution time limits may not work +2026-01-12 02:55:51,296 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:55:51] "POST /api/indicator/backtest HTTP/1.1" 200 - +2026-01-12 02:56:05,363 - app.services.backtest - INFO - Multi-timeframe backtest: strategy_tf=15m, exec_tf=1m, range=2025-12-13 00:00:00 ~ 2026-01-12 23:59:59 +2026-01-12 02:56:11,270 - app.utils.safe_exec - WARNING - Windows does not support signal-based timeouts; execution time limits may not work +2026-01-12 02:57:30,791 - app.services.backtest - INFO - Data fetched: signal_candles=2860, exec_candles=42898 +2026-01-12 02:57:30,792 - app.services.backtest - INFO - Trading params: capital=10000.0, leverage=1, entry_pct=1.0, strategy_config={'risk': {'stopLossPct': 0, 'takeProfitPct': 0, 'trailing': {'enabled': False, 'pct': 0, 'activationPct': 0}}, 'position': {'entryPct': 0}, 'scale': {'trendAdd': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'dcaAdd': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'trendReduce': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'adverseReduce': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}}} +2026-01-12 02:57:30,792 - app.services.backtest - INFO - Signal keys: ['buy', 'sell'] +2026-01-12 02:57:30,792 - app.services.backtest - INFO - Signal index len=2860, df_signal index len=2860 +2026-01-12 02:57:30,792 - app.services.backtest - INFO - Signal index first=2025-12-13 00:00:00, df_signal index first=2025-12-13 00:00:00 +2026-01-12 02:57:30,793 - app.services.backtest - INFO - Signal timeframe: 15m (900s), Exec timeframe: 1m (60s) +2026-01-12 02:57:30,870 - app.services.backtest - INFO - Debug signal counts from queue building: {'open_long': 27, 'close_long': 27, 'open_short': 27, 'close_short': 27} +2026-01-12 02:57:30,870 - app.services.backtest - INFO - Signal queue built: total 108 signals +2026-01-12 02:57:30,870 - app.services.backtest - INFO - First signal: close_long @ 2025-12-13 13:30:00 (from 2025-12-13 13:15:00) +2026-01-12 02:57:30,871 - app.services.backtest - INFO - Last signal: close_short @ 2026-01-11 00:30:00 (from 2026-01-11 00:15:00) +2026-01-12 02:57:30,871 - app.services.backtest - INFO - Signal counts: {'close_long': 27, 'open_short': 27, 'open_long': 27, 'close_short': 27} +2026-01-12 02:57:30,871 - app.services.backtest - INFO - Exec data range: 2025-12-13 00:00:00 ~ 2026-01-11 18:57:00 +2026-01-12 02:57:30,871 - app.services.backtest - INFO - First exec candle: open=3084.59, high=3086.84, low=3084.59, close=3086.01 +2026-01-12 02:57:30,890 - app.services.backtest - INFO - Skipping signal #0: close_long (position=0, can_execute=False) +2026-01-12 02:57:30,890 - app.services.backtest - INFO - Signal ready: open_short @ 2025-12-13 13:30:00, will execute at open price +2026-01-12 02:57:30,891 - app.services.backtest - INFO - Trade #1: open_short @ 2025-12-13 13:30:00, price=3098.6700, shares=3.2272 +2026-01-12 02:57:30,906 - app.services.backtest - INFO - Skipping signal #2: open_long (position=-3.227191020663704, can_execute=False) +2026-01-12 02:57:30,906 - app.services.backtest - INFO - Signal ready: close_short @ 2025-12-14 00:45:00, will execute at open price +2026-01-12 02:57:30,919 - app.services.backtest - INFO - Skipping signal #4: close_long (position=0, can_execute=False) +2026-01-12 02:57:30,919 - app.services.backtest - INFO - Signal ready: open_short @ 2025-12-14 10:15:00, will execute at open price +2026-01-12 02:57:30,920 - app.services.backtest - INFO - Trade #2: open_short @ 2025-12-14 10:15:00, price=3098.6500, shares=3.2056 +2026-01-12 02:57:30,943 - app.services.backtest - INFO - Signal ready: close_short @ 2025-12-15 01:45:00, will execute at open price +2026-01-12 02:57:30,959 - app.services.backtest - INFO - Signal ready: open_short @ 2025-12-15 14:30:00, will execute at open price +2026-01-12 02:57:30,959 - app.services.backtest - INFO - Trade #3: open_short @ 2025-12-15 14:30:00, price=3129.8900, shares=3.1639 +2026-01-12 02:57:30,988 - app.services.backtest - INFO - Signal ready: close_short @ 2025-12-16 10:45:00, will execute at open price +2026-01-12 02:57:30,994 - app.services.backtest - INFO - Signal ready: open_short @ 2025-12-16 14:00:00, will execute at open price +2026-01-12 02:57:30,994 - app.services.backtest - INFO - Trade #4: open_short @ 2025-12-16 14:00:00, price=2910.6200, shares=3.5902 +2026-01-12 02:57:31,031 - app.services.backtest - INFO - Signal ready: close_short @ 2025-12-17 15:00:00, will execute at open price +2026-01-12 02:57:31,033 - app.services.backtest - INFO - Signal ready: open_short @ 2025-12-17 16:00:00, will execute at open price +2026-01-12 02:57:31,033 - app.services.backtest - INFO - Trade #5: open_short @ 2025-12-17 16:00:00, price=2904.5300, shares=3.4912 +2026-01-12 02:57:31,857 - app.services.backtest - INFO - MTF simulation complete: executed_trades=27, total_trades_recorded=54, final_capital=9443.38 +2026-01-12 02:57:31,884 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 02:57:31] "POST /api/indicator/backtest HTTP/1.1" 200 - +2026-01-12 03:05:20,398 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:05:20] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 03:05:25,568 - app.services.backtest - INFO - Multi-timeframe backtest: strategy_tf=15m, exec_tf=1m, range=2025-12-13 00:00:00 ~ 2026-01-12 23:59:59 +2026-01-12 03:05:32,107 - app.utils.safe_exec - WARNING - Windows does not support signal-based timeouts; execution time limits may not work +2026-01-12 03:06:51,223 - app.services.backtest - INFO - Data fetched: signal_candles=2861, exec_candles=42907 +2026-01-12 03:06:51,224 - app.services.backtest - INFO - Trading params: capital=10000.0, leverage=1, entry_pct=1.0, strategy_config={'risk': {'stopLossPct': 0, 'takeProfitPct': 0, 'trailing': {'enabled': False, 'pct': 0, 'activationPct': 0}}, 'position': {'entryPct': 0}, 'scale': {'trendAdd': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'dcaAdd': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'trendReduce': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'adverseReduce': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}}} +2026-01-12 03:06:51,224 - app.services.backtest - INFO - Signal keys: ['buy', 'sell'] +2026-01-12 03:06:51,224 - app.services.backtest - INFO - Signal index len=2861, df_signal index len=2861 +2026-01-12 03:06:51,224 - app.services.backtest - INFO - Signal index first=2025-12-13 00:00:00, df_signal index first=2025-12-13 00:00:00 +2026-01-12 03:06:51,225 - app.services.backtest - INFO - Signal timeframe: 15m (900s), Exec timeframe: 1m (60s) +2026-01-12 03:06:51,291 - app.services.backtest - INFO - Debug signal counts from queue building: {'open_long': 27, 'close_long': 27, 'open_short': 0, 'close_short': 0} +2026-01-12 03:06:51,291 - app.services.backtest - INFO - Signal queue built: total 54 signals +2026-01-12 03:06:51,291 - app.services.backtest - INFO - First signal: close_long @ 2025-12-13 13:30:00 (from 2025-12-13 13:15:00) +2026-01-12 03:06:51,291 - app.services.backtest - INFO - Last signal: open_long @ 2026-01-11 00:30:00 (from 2026-01-11 00:15:00) +2026-01-12 03:06:51,291 - app.services.backtest - INFO - Signal counts: {'close_long': 27, 'open_long': 27} +2026-01-12 03:06:51,291 - app.services.backtest - INFO - Exec data range: 2025-12-13 00:00:00 ~ 2026-01-11 19:06:00 +2026-01-12 03:06:51,292 - app.services.backtest - INFO - First exec candle: open=3084.59, high=3086.84, low=3084.59, close=3086.01 +2026-01-12 03:06:51,309 - app.services.backtest - INFO - Skipping signal #0: close_long (position=0, can_execute=False) +2026-01-12 03:06:51,321 - app.services.backtest - INFO - Signal ready: open_long @ 2025-12-14 00:45:00, will execute at open price +2026-01-12 03:06:51,322 - app.services.backtest - INFO - Trade #1: open_long @ 2025-12-14 00:45:00, price=3118.2000, shares=3.2070 +2026-01-12 03:06:51,336 - app.services.backtest - INFO - Signal ready: close_long @ 2025-12-14 10:15:00, will execute at open price +2026-01-12 03:06:51,357 - app.services.backtest - INFO - Signal ready: open_long @ 2025-12-15 01:45:00, will execute at open price +2026-01-12 03:06:51,357 - app.services.backtest - INFO - Trade #2: open_long @ 2025-12-15 01:45:00, price=3106.8200, shares=3.1973 +2026-01-12 03:06:51,376 - app.services.backtest - INFO - Signal ready: close_long @ 2025-12-15 14:30:00, will execute at open price +2026-01-12 03:06:51,402 - app.services.backtest - INFO - Signal ready: open_long @ 2025-12-16 10:45:00, will execute at open price +2026-01-12 03:06:51,402 - app.services.backtest - INFO - Trade #3: open_long @ 2025-12-16 10:45:00, price=2955.8000, shares=3.3842 +2026-01-12 03:06:51,406 - app.services.backtest - INFO - Signal ready: close_long @ 2025-12-16 14:00:00, will execute at open price +2026-01-12 03:06:51,437 - app.services.backtest - INFO - Signal ready: open_long @ 2025-12-17 15:00:00, will execute at open price +2026-01-12 03:06:51,438 - app.services.backtest - INFO - Trade #4: open_long @ 2025-12-17 15:00:00, price=2995.6600, shares=3.2868 +2026-01-12 03:06:51,439 - app.services.backtest - INFO - Signal ready: close_long @ 2025-12-17 16:00:00, will execute at open price +2026-01-12 03:06:51,462 - app.services.backtest - INFO - Signal ready: open_long @ 2025-12-18 09:45:00, will execute at open price +2026-01-12 03:06:51,463 - app.services.backtest - INFO - Trade #5: open_long @ 2025-12-18 09:45:00, price=2856.9900, shares=3.3402 +2026-01-12 03:06:52,217 - app.services.backtest - INFO - MTF simulation complete: executed_trades=27, total_trades_recorded=53, final_capital=9483.12 +2026-01-12 03:06:52,242 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:06:52] "POST /api/indicator/backtest HTTP/1.1" 200 - +2026-01-12 03:07:12,406 - app.services.backtest - INFO - Multi-timeframe backtest: strategy_tf=15m, exec_tf=1m, range=2025-12-13 00:00:00 ~ 2026-01-12 23:59:59 +2026-01-12 03:07:18,240 - app.utils.safe_exec - WARNING - Windows does not support signal-based timeouts; execution time limits may not work +2026-01-12 03:08:36,809 - app.services.backtest - INFO - Data fetched: signal_candles=2861, exec_candles=42909 +2026-01-12 03:08:36,810 - app.services.backtest - INFO - Trading params: capital=10000.0, leverage=1, entry_pct=1.0, strategy_config={'risk': {'stopLossPct': 0, 'takeProfitPct': 0, 'trailing': {'enabled': False, 'pct': 0, 'activationPct': 0}}, 'position': {'entryPct': 0}, 'scale': {'trendAdd': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'dcaAdd': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'trendReduce': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'adverseReduce': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}}} +2026-01-12 03:08:36,810 - app.services.backtest - INFO - Signal keys: ['buy', 'sell'] +2026-01-12 03:08:36,810 - app.services.backtest - INFO - Signal index len=2861, df_signal index len=2861 +2026-01-12 03:08:36,810 - app.services.backtest - INFO - Signal index first=2025-12-13 00:00:00, df_signal index first=2025-12-13 00:00:00 +2026-01-12 03:08:36,810 - app.services.backtest - INFO - Signal timeframe: 15m (900s), Exec timeframe: 1m (60s) +2026-01-12 03:08:36,876 - app.services.backtest - INFO - Debug signal counts from queue building: {'open_long': 27, 'close_long': 27, 'open_short': 27, 'close_short': 27} +2026-01-12 03:08:36,877 - app.services.backtest - INFO - Signal queue built: total 108 signals +2026-01-12 03:08:36,877 - app.services.backtest - INFO - First signal: close_long @ 2025-12-13 13:30:00 (from 2025-12-13 13:15:00) +2026-01-12 03:08:36,877 - app.services.backtest - INFO - Last signal: close_short @ 2026-01-11 00:30:00 (from 2026-01-11 00:15:00) +2026-01-12 03:08:36,877 - app.services.backtest - INFO - Signal counts: {'close_long': 27, 'open_short': 27, 'open_long': 27, 'close_short': 27} +2026-01-12 03:08:36,877 - app.services.backtest - INFO - Exec data range: 2025-12-13 00:00:00 ~ 2026-01-11 19:08:00 +2026-01-12 03:08:36,878 - app.services.backtest - INFO - First exec candle: open=3084.59, high=3086.84, low=3084.59, close=3086.01 +2026-01-12 03:08:36,894 - app.services.backtest - INFO - Skipping signal #0: close_long (position=0, can_execute=False) +2026-01-12 03:08:36,895 - app.services.backtest - INFO - Signal ready: open_short @ 2025-12-13 13:30:00, will execute at open price +2026-01-12 03:08:36,895 - app.services.backtest - INFO - Trade #1: open_short @ 2025-12-13 13:30:00, price=3098.6700, shares=3.2272 +2026-01-12 03:08:36,910 - app.services.backtest - INFO - Skipping signal #2: open_long (position=-3.227191020663704, can_execute=False) +2026-01-12 03:08:36,911 - app.services.backtest - INFO - Signal ready: close_short @ 2025-12-14 00:45:00, will execute at open price +2026-01-12 03:08:36,923 - app.services.backtest - INFO - Skipping signal #4: close_long (position=0, can_execute=False) +2026-01-12 03:08:36,923 - app.services.backtest - INFO - Signal ready: open_short @ 2025-12-14 10:15:00, will execute at open price +2026-01-12 03:08:36,924 - app.services.backtest - INFO - Trade #2: open_short @ 2025-12-14 10:15:00, price=3098.6500, shares=3.2056 +2026-01-12 03:08:36,944 - app.services.backtest - INFO - Signal ready: close_short @ 2025-12-15 01:45:00, will execute at open price +2026-01-12 03:08:36,962 - app.services.backtest - INFO - Signal ready: open_short @ 2025-12-15 14:30:00, will execute at open price +2026-01-12 03:08:36,962 - app.services.backtest - INFO - Trade #3: open_short @ 2025-12-15 14:30:00, price=3129.8900, shares=3.1639 +2026-01-12 03:08:36,990 - app.services.backtest - INFO - Signal ready: close_short @ 2025-12-16 10:45:00, will execute at open price +2026-01-12 03:08:36,994 - app.services.backtest - INFO - Signal ready: open_short @ 2025-12-16 14:00:00, will execute at open price +2026-01-12 03:08:36,995 - app.services.backtest - INFO - Trade #4: open_short @ 2025-12-16 14:00:00, price=2910.6200, shares=3.5902 +2026-01-12 03:08:37,029 - app.services.backtest - INFO - Signal ready: close_short @ 2025-12-17 15:00:00, will execute at open price +2026-01-12 03:08:37,031 - app.services.backtest - INFO - Signal ready: open_short @ 2025-12-17 16:00:00, will execute at open price +2026-01-12 03:08:37,031 - app.services.backtest - INFO - Trade #5: open_short @ 2025-12-17 16:00:00, price=2904.5300, shares=3.4912 +2026-01-12 03:08:37,894 - app.services.backtest - INFO - MTF simulation complete: executed_trades=27, total_trades_recorded=54, final_capital=9443.38 +2026-01-12 03:08:37,917 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:08:37] "POST /api/indicator/backtest HTTP/1.1" 200 - +2026-01-12 03:08:50,578 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-12 03:08:50,579 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-12 03:08:50,586 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 03:08:50,928 - app.services.strategy - INFO - Found 0 running strategies: [] +2026-01-12 03:08:50,929 - app - INFO - No running strategies to restore. +2026-01-12 03:08:50,943 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-12 03:08:50,943 - werkzeug - INFO - Press CTRL+C to quit +2026-01-12 03:09:08,199 - app.services.backtest - INFO - Multi-timeframe backtest: strategy_tf=15m, exec_tf=1m, range=2025-12-13 00:00:00 ~ 2026-01-12 23:59:59 +2026-01-12 03:09:17,126 - app.utils.safe_exec - WARNING - Windows does not support signal-based timeouts; execution time limits may not work +2026-01-12 03:10:36,176 - app.services.backtest - INFO - Data fetched: signal_candles=2861, exec_candles=42911 +2026-01-12 03:10:36,177 - app.services.backtest - INFO - Trading params: capital=10000.0, leverage=1, entry_pct=1.0, strategy_config={'risk': {'stopLossPct': 0, 'takeProfitPct': 0, 'trailing': {'enabled': False, 'pct': 0, 'activationPct': 0}}, 'position': {'entryPct': 0}, 'scale': {'trendAdd': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'dcaAdd': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'trendReduce': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'adverseReduce': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}}} +2026-01-12 03:10:36,177 - app.services.backtest - INFO - Signal keys: ['buy', 'sell'] +2026-01-12 03:10:36,177 - app.services.backtest - INFO - Signal index len=2861, df_signal index len=2861 +2026-01-12 03:10:36,177 - app.services.backtest - INFO - Signal index first=2025-12-13 00:00:00, df_signal index first=2025-12-13 00:00:00 +2026-01-12 03:10:36,178 - app.services.backtest - INFO - Signal timeframe: 15m (900s), Exec timeframe: 1m (60s) +2026-01-12 03:10:36,244 - app.services.backtest - INFO - Debug signal counts from queue building: {'open_long': 27, 'close_long': 0, 'open_short': 27, 'close_short': 0} +2026-01-12 03:10:36,244 - app.services.backtest - INFO - Signal queue built: total 54 signals +2026-01-12 03:10:36,245 - app.services.backtest - INFO - First signal: open_short @ 2025-12-13 13:30:00 (from 2025-12-13 13:15:00) +2026-01-12 03:10:36,245 - app.services.backtest - INFO - Last signal: open_long @ 2026-01-11 00:30:00 (from 2026-01-11 00:15:00) +2026-01-12 03:10:36,245 - app.services.backtest - INFO - Signal counts: {'open_short': 27, 'open_long': 27} +2026-01-12 03:10:36,245 - app.services.backtest - INFO - Exec data range: 2025-12-13 00:00:00 ~ 2026-01-11 19:10:00 +2026-01-12 03:10:36,245 - app.services.backtest - INFO - First exec candle: open=3084.59, high=3086.84, low=3084.59, close=3086.01 +2026-01-12 03:10:36,263 - app.services.backtest - INFO - Signal ready: open_short @ 2025-12-13 13:30:00, will execute at open price (both_mode=True) +2026-01-12 03:10:36,263 - app.services.backtest - INFO - Trade #1: open_short @ 2025-12-13 13:30:00, price=3098.6700, shares=3.2272 +2026-01-12 03:10:36,280 - app.services.backtest - INFO - Signal ready: open_long @ 2025-12-14 00:45:00, will execute at open price (both_mode=True) +2026-01-12 03:10:36,280 - app.services.backtest - INFO - Trade #2: close_short (before open_long) @ 2025-12-14 00:45:00, price=3118.2000, profit=-65.04 +2026-01-12 03:10:36,280 - app.services.backtest - INFO - Trade #3: open_long @ 2025-12-14 00:45:00, price=3118.2000, shares=3.1855 +2026-01-12 03:10:36,294 - app.services.backtest - INFO - Signal ready: open_short @ 2025-12-14 10:15:00, will execute at open price (both_mode=True) +2026-01-12 03:10:36,294 - app.services.backtest - INFO - Trade #4: close_long (before open_short) @ 2025-12-14 10:15:00, price=3098.6500, profit=-64.25 +2026-01-12 03:10:36,295 - app.services.backtest - INFO - Trade #5: open_short @ 2025-12-14 10:15:00, price=3098.6500, shares=3.1842 +2026-01-12 03:10:36,316 - app.services.backtest - INFO - Trade #6: close_short (before open_long) @ 2025-12-15 01:45:00, price=3106.8200, profit=-27.99 +2026-01-12 03:10:36,316 - app.services.backtest - INFO - Trade #7: open_long @ 2025-12-15 01:45:00, price=3106.8200, shares=3.1662 +2026-01-12 03:10:36,334 - app.services.backtest - INFO - Trade #8: close_long (before open_short) @ 2025-12-15 14:30:00, price=3129.8900, profit=71.06 +2026-01-12 03:10:36,334 - app.services.backtest - INFO - Trade #9: open_short @ 2025-12-15 14:30:00, price=3129.8900, shares=3.1649 +2026-01-12 03:10:36,364 - app.services.backtest - INFO - Trade #10: close_short (before open_long) @ 2025-12-16 10:45:00, price=2955.8000, profit=549.11 +2026-01-12 03:10:37,280 - app.services.backtest - INFO - MTF simulation complete: executed_trades=107, total_trades_recorded=107, final_capital=8955.27 +2026-01-12 03:10:37,304 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:10:37] "POST /api/indicator/backtest HTTP/1.1" 200 - +2026-01-12 03:12:53,003 - app.services.backtest - INFO - Multi-timeframe backtest: strategy_tf=15m, exec_tf=1m, range=2025-12-13 00:00:00 ~ 2026-01-12 23:59:59 +2026-01-12 03:12:58,967 - app.utils.safe_exec - WARNING - Windows does not support signal-based timeouts; execution time limits may not work +2026-01-12 03:14:19,252 - app.services.backtest - INFO - Data fetched: signal_candles=2861, exec_candles=42915 +2026-01-12 03:14:19,253 - app.services.backtest - INFO - Trading params: capital=10000.0, leverage=5, entry_pct=1.0, strategy_config={'risk': {'stopLossPct': 0, 'takeProfitPct': 0, 'trailing': {'enabled': False, 'pct': 0, 'activationPct': 0}}, 'position': {'entryPct': 0}, 'scale': {'trendAdd': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'dcaAdd': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'trendReduce': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'adverseReduce': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}}} +2026-01-12 03:14:19,253 - app.services.backtest - INFO - Signal keys: ['buy', 'sell'] +2026-01-12 03:14:19,253 - app.services.backtest - INFO - Signal index len=2861, df_signal index len=2861 +2026-01-12 03:14:19,253 - app.services.backtest - INFO - Signal index first=2025-12-13 00:00:00, df_signal index first=2025-12-13 00:00:00 +2026-01-12 03:14:19,255 - app.services.backtest - INFO - Signal timeframe: 15m (900s), Exec timeframe: 1m (60s) +2026-01-12 03:14:19,356 - app.services.backtest - INFO - Debug signal counts from queue building: {'open_long': 27, 'close_long': 0, 'open_short': 27, 'close_short': 0} +2026-01-12 03:14:19,357 - app.services.backtest - INFO - Signal queue built: total 54 signals +2026-01-12 03:14:19,357 - app.services.backtest - INFO - First signal: open_short @ 2025-12-13 13:30:00 (from 2025-12-13 13:15:00) +2026-01-12 03:14:19,357 - app.services.backtest - INFO - Last signal: open_long @ 2026-01-11 00:30:00 (from 2026-01-11 00:15:00) +2026-01-12 03:14:19,358 - app.services.backtest - INFO - Signal counts: {'open_short': 27, 'open_long': 27} +2026-01-12 03:14:19,358 - app.services.backtest - INFO - Exec data range: 2025-12-13 00:00:00 ~ 2026-01-11 19:14:00 +2026-01-12 03:14:19,358 - app.services.backtest - INFO - First exec candle: open=3084.59, high=3086.84, low=3084.59, close=3086.01 +2026-01-12 03:14:19,396 - app.services.backtest - INFO - Signal ready: open_short @ 2025-12-13 13:30:00, will execute at open price (both_mode=True) +2026-01-12 03:14:19,396 - app.services.backtest - INFO - Trade #1: open_short @ 2025-12-13 13:30:00, price=3098.6700, shares=16.1360 +2026-01-12 03:14:19,430 - app.services.backtest - INFO - Signal ready: open_long @ 2025-12-14 00:45:00, will execute at open price (both_mode=True) +2026-01-12 03:14:19,431 - app.services.backtest - INFO - Trade #2: close_short (before open_long) @ 2025-12-14 00:45:00, price=3118.2000, profit=-325.20 +2026-01-12 03:14:19,431 - app.services.backtest - INFO - Trade #3: open_long @ 2025-12-14 00:45:00, price=3118.2000, shares=15.4974 +2026-01-12 03:14:19,445 - app.services.backtest - INFO - Signal ready: open_short @ 2025-12-14 10:15:00, will execute at open price (both_mode=True) +2026-01-12 03:14:19,445 - app.services.backtest - INFO - Trade #4: close_long (before open_short) @ 2025-12-14 10:15:00, price=3098.6500, profit=-312.58 +2026-01-12 03:14:19,446 - app.services.backtest - INFO - Trade #5: open_short @ 2025-12-14 10:15:00, price=3098.6500, shares=15.0752 +2026-01-12 03:14:19,473 - app.services.backtest - INFO - Trade #6: close_short (before open_long) @ 2025-12-15 01:45:00, price=3106.8200, profit=-132.53 +2026-01-12 03:14:19,474 - app.services.backtest - INFO - Trade #7: open_long @ 2025-12-15 01:45:00, price=3106.8200, shares=14.8072 +2026-01-12 03:14:19,493 - app.services.backtest - INFO - Trade #8: close_long (before open_short) @ 2025-12-15 14:30:00, price=3129.8900, profit=332.33 +2026-01-12 03:14:19,493 - app.services.backtest - INFO - Trade #9: open_short @ 2025-12-15 14:30:00, price=3129.8900, shares=15.2143 +2026-01-12 03:14:19,523 - app.services.backtest - INFO - Trade #10: close_short (before open_long) @ 2025-12-16 10:45:00, price=2955.8000, profit=2639.66 +2026-01-12 03:14:20,471 - app.services.backtest - INFO - MTF simulation complete: executed_trades=107, total_trades_recorded=107, final_capital=5143.69 +2026-01-12 03:14:20,493 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:14:20] "POST /api/indicator/backtest HTTP/1.1" 200 - +2026-01-12 03:14:37,647 - app.services.backtest - INFO - Multi-timeframe backtest: strategy_tf=15m, exec_tf=1m, range=2025-12-13 00:00:00 ~ 2026-01-12 23:59:59 +2026-01-12 03:14:43,663 - app.utils.safe_exec - WARNING - Windows does not support signal-based timeouts; execution time limits may not work +2026-01-12 03:16:02,685 - app.services.backtest - INFO - Data fetched: signal_candles=2861, exec_candles=42917 +2026-01-12 03:16:02,686 - app.services.backtest - INFO - Trading params: capital=10000.0, leverage=100, entry_pct=1.0, strategy_config={'risk': {'stopLossPct': 0, 'takeProfitPct': 0, 'trailing': {'enabled': False, 'pct': 0, 'activationPct': 0}}, 'position': {'entryPct': 0}, 'scale': {'trendAdd': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'dcaAdd': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'trendReduce': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'adverseReduce': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}}} +2026-01-12 03:16:02,686 - app.services.backtest - INFO - Signal keys: ['buy', 'sell'] +2026-01-12 03:16:02,686 - app.services.backtest - INFO - Signal index len=2861, df_signal index len=2861 +2026-01-12 03:16:02,686 - app.services.backtest - INFO - Signal index first=2025-12-13 00:00:00, df_signal index first=2025-12-13 00:00:00 +2026-01-12 03:16:02,687 - app.services.backtest - INFO - Signal timeframe: 15m (900s), Exec timeframe: 1m (60s) +2026-01-12 03:16:02,756 - app.services.backtest - INFO - Debug signal counts from queue building: {'open_long': 27, 'close_long': 0, 'open_short': 27, 'close_short': 0} +2026-01-12 03:16:02,756 - app.services.backtest - INFO - Signal queue built: total 54 signals +2026-01-12 03:16:02,756 - app.services.backtest - INFO - First signal: open_short @ 2025-12-13 13:30:00 (from 2025-12-13 13:15:00) +2026-01-12 03:16:02,756 - app.services.backtest - INFO - Last signal: open_long @ 2026-01-11 00:30:00 (from 2026-01-11 00:15:00) +2026-01-12 03:16:02,756 - app.services.backtest - INFO - Signal counts: {'open_short': 27, 'open_long': 27} +2026-01-12 03:16:02,757 - app.services.backtest - INFO - Exec data range: 2025-12-13 00:00:00 ~ 2026-01-11 19:16:00 +2026-01-12 03:16:02,757 - app.services.backtest - INFO - First exec candle: open=3084.59, high=3086.84, low=3084.59, close=3086.01 +2026-01-12 03:16:02,774 - app.services.backtest - INFO - Signal ready: open_short @ 2025-12-13 13:30:00, will execute at open price (both_mode=True) +2026-01-12 03:16:02,774 - app.services.backtest - INFO - Trade #1: open_short @ 2025-12-13 13:30:00, price=3098.6700, shares=322.7191 +2026-01-12 03:16:02,790 - app.services.backtest - INFO - Signal ready: open_long @ 2025-12-14 00:45:00, will execute at open price (both_mode=True) +2026-01-12 03:16:02,791 - app.services.backtest - INFO - Trade #2: close_short (before open_long) @ 2025-12-14 00:45:00, price=3118.2000, profit=-6503.96 +2026-01-12 03:16:02,791 - app.services.backtest - INFO - Trade #3: open_long @ 2025-12-14 00:45:00, price=3118.2000, shares=105.7031 +2026-01-12 03:16:02,805 - app.services.backtest - INFO - Signal ready: open_short @ 2025-12-14 10:15:00, will execute at open price (both_mode=True) +2026-01-12 03:16:02,806 - app.services.backtest - INFO - Trade #4: close_long (before open_short) @ 2025-12-14 10:15:00, price=3098.6500, profit=-2132.00 +2026-01-12 03:16:02,806 - app.services.backtest - INFO - Trade #5: open_short @ 2025-12-14 10:15:00, price=3098.6500, shares=35.4384 +2026-01-12 03:16:02,826 - app.services.backtest - INFO - Trade #6: close_short (before open_long) @ 2025-12-15 01:45:00, price=3106.8200, profit=-311.55 +2026-01-12 03:16:02,827 - app.services.backtest - INFO - Trade #7: open_long @ 2025-12-15 01:45:00, price=3106.8200, shares=24.6103 +2026-01-12 03:16:02,844 - app.services.backtest - INFO - Trade #8: close_long (before open_short) @ 2025-12-15 14:30:00, price=3129.8900, profit=552.35 +2026-01-12 03:16:02,844 - app.services.backtest - INFO - Trade #9: open_short @ 2025-12-15 14:30:00, price=3129.8900, shares=41.5880 +2026-01-12 03:16:02,872 - app.services.backtest - INFO - Trade #10: close_short (before open_long) @ 2025-12-16 10:45:00, price=2955.8000, profit=7215.47 +2026-01-12 03:16:03,697 - app.services.backtest - INFO - MTF simulation complete: executed_trades=71, total_trades_recorded=71, final_capital=-5.37 +2026-01-12 03:16:03,720 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:16:03] "POST /api/indicator/backtest HTTP/1.1" 200 - +2026-01-12 03:19:58,301 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:19:58] "GET /api/market/types?_t=1768159198285 HTTP/1.1" 200 - +2026-01-12 03:19:58,303 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:19:58] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 03:19:58,305 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:19:58] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 03:19:58,359 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 03:19:58,807 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:19:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 03:20:05,131 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:20:05] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 03:20:13,516 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:20:13] "GET /api/market/types?_t=1768159213505 HTTP/1.1" 200 - +2026-01-12 03:20:13,519 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:20:13] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 03:20:13,523 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:20:13] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 03:20:13,571 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 03:20:13,573 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:20:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 03:20:14,308 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:20:14] "GET /api/market/types?_t=1768159214288 HTTP/1.1" 200 - +2026-01-12 03:20:14,312 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:20:14] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 03:20:14,314 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:20:14] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 03:20:14,618 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 03:20:14,619 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:20:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 03:28:32,407 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:28:32] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 03:28:41,477 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:28:41] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 03:28:51,122 - app.services.backtest - INFO - Multi-timeframe backtest: strategy_tf=15m, exec_tf=1m, range=2025-12-13 00:00:00 ~ 2026-01-12 23:59:59 +2026-01-12 03:28:57,759 - app.utils.safe_exec - WARNING - Windows does not support signal-based timeouts; execution time limits may not work +2026-01-12 03:30:17,372 - app.services.backtest - INFO - Data fetched: signal_candles=2862, exec_candles=42931 +2026-01-12 03:30:17,372 - app.services.backtest - INFO - Trading params: capital=10000.0, leverage=100, entry_pct=1.0, strategy_config={'risk': {'stopLossPct': 0, 'takeProfitPct': 0, 'trailing': {'enabled': False, 'pct': 0, 'activationPct': 0}}, 'position': {'entryPct': 0}, 'scale': {'trendAdd': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'dcaAdd': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'trendReduce': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'adverseReduce': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}}} +2026-01-12 03:30:17,373 - app.services.backtest - INFO - Signal keys: ['buy', 'sell'] +2026-01-12 03:30:17,373 - app.services.backtest - INFO - Signal index len=2862, df_signal index len=2862 +2026-01-12 03:30:17,373 - app.services.backtest - INFO - Signal index first=2025-12-13 00:00:00, df_signal index first=2025-12-13 00:00:00 +2026-01-12 03:30:17,374 - app.services.backtest - INFO - Signal timeframe: 15m (900s), Exec timeframe: 1m (60s) +2026-01-12 03:30:17,442 - app.services.backtest - INFO - Debug signal counts from queue building: {'open_long': 27, 'close_long': 0, 'open_short': 27, 'close_short': 0} +2026-01-12 03:30:17,442 - app.services.backtest - INFO - Signal queue built: total 54 signals +2026-01-12 03:30:17,442 - app.services.backtest - INFO - First signal: open_short @ 2025-12-13 13:30:00 (from 2025-12-13 13:15:00) +2026-01-12 03:30:17,442 - app.services.backtest - INFO - Last signal: open_long @ 2026-01-11 00:30:00 (from 2026-01-11 00:15:00) +2026-01-12 03:30:17,443 - app.services.backtest - INFO - Signal counts: {'open_short': 27, 'open_long': 27} +2026-01-12 03:30:17,443 - app.services.backtest - INFO - Exec data range: 2025-12-13 00:00:00 ~ 2026-01-11 19:30:00 +2026-01-12 03:30:17,443 - app.services.backtest - INFO - First exec candle: open=3084.59, high=3086.84, low=3084.59, close=3086.01 +2026-01-12 03:30:17,461 - app.services.backtest - INFO - Signal ready: open_short @ 2025-12-13 13:30:00, will execute at open price (both_mode=True) +2026-01-12 03:30:17,461 - app.services.backtest - INFO - Trade #1: open_short @ 2025-12-13 13:30:00, price=3098.6700, shares=322.7191 +2026-01-12 03:30:17,480 - app.services.backtest - INFO - Signal ready: open_long @ 2025-12-14 00:45:00, will execute at open price (both_mode=True) +2026-01-12 03:30:17,481 - app.services.backtest - INFO - Trade #2: close_short (before open_long) @ 2025-12-14 00:45:00, price=3118.2000, profit=-6503.96 +2026-01-12 03:30:17,481 - app.services.backtest - INFO - Trade #3: open_long @ 2025-12-14 00:45:00, price=3118.2000, shares=105.7031 +2026-01-12 03:30:17,495 - app.services.backtest - INFO - Signal ready: open_short @ 2025-12-14 10:15:00, will execute at open price (both_mode=True) +2026-01-12 03:30:17,496 - app.services.backtest - INFO - Trade #4: close_long (before open_short) @ 2025-12-14 10:15:00, price=3098.6500, profit=-2132.00 +2026-01-12 03:30:17,496 - app.services.backtest - INFO - Trade #5: open_short @ 2025-12-14 10:15:00, price=3098.6500, shares=35.4384 +2026-01-12 03:30:17,533 - app.services.backtest - INFO - Trade #6: close_short (before open_long) @ 2025-12-15 01:45:00, price=3106.8200, profit=-311.55 +2026-01-12 03:30:17,533 - app.services.backtest - INFO - Trade #7: open_long @ 2025-12-15 01:45:00, price=3106.8200, shares=24.6103 +2026-01-12 03:30:17,550 - app.services.backtest - INFO - Trade #8: close_long (before open_short) @ 2025-12-15 14:30:00, price=3129.8900, profit=552.35 +2026-01-12 03:30:17,551 - app.services.backtest - INFO - Trade #9: open_short @ 2025-12-15 14:30:00, price=3129.8900, shares=41.5880 +2026-01-12 03:30:17,584 - app.services.backtest - INFO - Trade #10: close_short (before open_long) @ 2025-12-16 10:45:00, price=2955.8000, profit=7215.47 +2026-01-12 03:30:18,425 - app.services.backtest - INFO - MTF simulation complete: executed_trades=71, total_trades_recorded=71, final_capital=-5.37 +2026-01-12 03:30:18,446 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:30:18] "POST /api/indicator/backtest HTTP/1.1" 200 - +2026-01-12 03:30:35,954 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-12 03:30:35,955 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-12 03:30:35,964 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 03:30:36,307 - app.services.strategy - INFO - Found 0 running strategies: [] +2026-01-12 03:30:36,307 - app - INFO - No running strategies to restore. +2026-01-12 03:30:36,331 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-12 03:30:36,331 - werkzeug - INFO - Press CTRL+C to quit +2026-01-12 03:30:45,447 - app.services.backtest - INFO - Multi-timeframe backtest: strategy_tf=15m, exec_tf=1m, range=2025-12-13 00:00:00 ~ 2026-01-12 23:59:59 +2026-01-12 03:30:54,416 - app.utils.safe_exec - WARNING - Windows does not support signal-based timeouts; execution time limits may not work +2026-01-12 03:32:13,609 - app.services.backtest - INFO - Data fetched: signal_candles=2863, exec_candles=42933 +2026-01-12 03:32:13,610 - app.services.backtest - INFO - Trading params: capital=10000.0, leverage=100, entry_pct=1.0, strategy_config={'risk': {'stopLossPct': 0, 'takeProfitPct': 0, 'trailing': {'enabled': False, 'pct': 0, 'activationPct': 0}}, 'position': {'entryPct': 0}, 'scale': {'trendAdd': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'dcaAdd': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'trendReduce': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'adverseReduce': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}}} +2026-01-12 03:32:13,610 - app.services.backtest - INFO - Signal keys: ['buy', 'sell'] +2026-01-12 03:32:13,610 - app.services.backtest - INFO - Signal index len=2863, df_signal index len=2863 +2026-01-12 03:32:13,610 - app.services.backtest - INFO - Signal index first=2025-12-13 00:00:00, df_signal index first=2025-12-13 00:00:00 +2026-01-12 03:32:13,611 - app.services.backtest - INFO - Signal timeframe: 15m (900s), Exec timeframe: 1m (60s) +2026-01-12 03:32:13,680 - app.services.backtest - INFO - Debug signal counts from queue building: {'open_long': 27, 'close_long': 0, 'open_short': 27, 'close_short': 0} +2026-01-12 03:32:13,680 - app.services.backtest - INFO - Signal queue built: total 54 signals +2026-01-12 03:32:13,680 - app.services.backtest - INFO - First signal: open_short @ 2025-12-13 13:30:00 (from 2025-12-13 13:15:00) +2026-01-12 03:32:13,681 - app.services.backtest - INFO - Last signal: open_long @ 2026-01-11 00:30:00 (from 2026-01-11 00:15:00) +2026-01-12 03:32:13,681 - app.services.backtest - INFO - Signal counts: {'open_short': 27, 'open_long': 27} +2026-01-12 03:32:13,681 - app.services.backtest - INFO - Exec data range: 2025-12-13 00:00:00 ~ 2026-01-11 19:32:00 +2026-01-12 03:32:13,681 - app.services.backtest - INFO - First exec candle: open=3084.59, high=3086.84, low=3084.59, close=3086.01 +2026-01-12 03:32:13,699 - app.services.backtest - INFO - Signal ready: open_short @ 2025-12-13 13:30:00, will execute at open price (both_mode=True) +2026-01-12 03:32:13,699 - app.services.backtest - INFO - Trade #1: open_short @ 2025-12-13 13:30:00, price=3098.6700, shares=322.7191 +2026-01-12 03:32:13,715 - app.services.backtest - INFO - Signal ready: open_long @ 2025-12-14 00:45:00, will execute at open price (both_mode=True) +2026-01-12 03:32:13,716 - app.services.backtest - INFO - Trade #2: close_short (before open_long) @ 2025-12-14 00:45:00, price=3118.2000, profit=-6503.96 +2026-01-12 03:32:13,716 - app.services.backtest - INFO - Trade #3: open_long @ 2025-12-14 00:45:00, price=3118.2000, shares=105.7031 +2026-01-12 03:32:13,730 - app.services.backtest - INFO - Signal ready: open_short @ 2025-12-14 10:15:00, will execute at open price (both_mode=True) +2026-01-12 03:32:13,730 - app.services.backtest - INFO - Trade #4: close_long (before open_short) @ 2025-12-14 10:15:00, price=3098.6500, profit=-2132.00 +2026-01-12 03:32:13,730 - app.services.backtest - INFO - Trade #5: open_short @ 2025-12-14 10:15:00, price=3098.6500, shares=35.4384 +2026-01-12 03:32:13,753 - app.services.backtest - INFO - Trade #6: close_short (before open_long) @ 2025-12-15 01:45:00, price=3106.8200, profit=-311.55 +2026-01-12 03:32:13,753 - app.services.backtest - INFO - Trade #7: open_long @ 2025-12-15 01:45:00, price=3106.8200, shares=24.6103 +2026-01-12 03:32:13,774 - app.services.backtest - INFO - Trade #8: close_long (before open_short) @ 2025-12-15 14:30:00, price=3129.8900, profit=552.35 +2026-01-12 03:32:13,774 - app.services.backtest - INFO - Trade #9: open_short @ 2025-12-15 14:30:00, price=3129.8900, shares=41.5880 +2026-01-12 03:32:13,803 - app.services.backtest - INFO - Trade #10: close_short (before open_long) @ 2025-12-16 10:45:00, price=2955.8000, profit=7215.47 +2026-01-12 03:32:13,808 - app.services.backtest - INFO - MTF simulation complete: executed_trades=12, total_trades_recorded=12, final_capital=0.00 +2026-01-12 03:32:13,822 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:32:13] "POST /api/indicator/backtest HTTP/1.1" 200 - +2026-01-12 03:33:02,207 - app.services.backtest - INFO - Multi-timeframe backtest: strategy_tf=15m, exec_tf=1m, range=2025-12-13 00:00:00 ~ 2026-01-12 23:59:59 +2026-01-12 03:33:08,332 - app.utils.safe_exec - WARNING - Windows does not support signal-based timeouts; execution time limits may not work +2026-01-12 03:34:27,297 - app.services.backtest - INFO - Data fetched: signal_candles=2863, exec_candles=42935 +2026-01-12 03:34:27,297 - app.services.backtest - INFO - Trading params: capital=10000.0, leverage=100, entry_pct=1.0, strategy_config={'risk': {'stopLossPct': 0.02, 'takeProfitPct': 0, 'trailing': {'enabled': True, 'pct': 0.01, 'activationPct': 0.04}}, 'position': {'entryPct': 0}, 'scale': {'trendAdd': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'dcaAdd': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'trendReduce': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}, 'adverseReduce': {'enabled': False, 'stepPct': 0, 'sizePct': 0, 'maxTimes': 0}}} +2026-01-12 03:34:27,297 - app.services.backtest - INFO - Signal keys: ['buy', 'sell'] +2026-01-12 03:34:27,298 - app.services.backtest - INFO - Signal index len=2863, df_signal index len=2863 +2026-01-12 03:34:27,298 - app.services.backtest - INFO - Signal index first=2025-12-13 00:00:00, df_signal index first=2025-12-13 00:00:00 +2026-01-12 03:34:27,298 - app.services.backtest - INFO - Signal timeframe: 15m (900s), Exec timeframe: 1m (60s) +2026-01-12 03:34:27,366 - app.services.backtest - INFO - Debug signal counts from queue building: {'open_long': 27, 'close_long': 0, 'open_short': 27, 'close_short': 0} +2026-01-12 03:34:27,366 - app.services.backtest - INFO - Signal queue built: total 54 signals +2026-01-12 03:34:27,366 - app.services.backtest - INFO - First signal: open_short @ 2025-12-13 13:30:00 (from 2025-12-13 13:15:00) +2026-01-12 03:34:27,367 - app.services.backtest - INFO - Last signal: open_long @ 2026-01-11 00:30:00 (from 2026-01-11 00:15:00) +2026-01-12 03:34:27,367 - app.services.backtest - INFO - Signal counts: {'open_short': 27, 'open_long': 27} +2026-01-12 03:34:27,367 - app.services.backtest - INFO - Exec data range: 2025-12-13 00:00:00 ~ 2026-01-11 19:34:00 +2026-01-12 03:34:27,367 - app.services.backtest - INFO - First exec candle: open=3084.59, high=3086.84, low=3084.59, close=3086.01 +2026-01-12 03:34:27,384 - app.services.backtest - INFO - Signal ready: open_short @ 2025-12-13 13:30:00, will execute at open price (both_mode=True) +2026-01-12 03:34:27,384 - app.services.backtest - INFO - Trade #1: open_short @ 2025-12-13 13:30:00, price=3098.6700, shares=322.7191 +2026-01-12 03:34:27,400 - app.services.backtest - INFO - Signal ready: open_long @ 2025-12-14 00:45:00, will execute at open price (both_mode=True) +2026-01-12 03:34:27,400 - app.services.backtest - INFO - Trade #2: open_long @ 2025-12-14 00:45:00, price=3118.2000, shares=342.6565 +2026-01-12 03:34:27,413 - app.services.backtest - INFO - Signal ready: open_short @ 2025-12-14 10:15:00, will execute at open price (both_mode=True) +2026-01-12 03:34:27,413 - app.services.backtest - INFO - Trade #3: open_short @ 2025-12-14 10:15:00, price=3098.6500, shares=324.1306 +2026-01-12 03:34:27,433 - app.services.backtest - INFO - Signal ready: open_long @ 2025-12-15 01:45:00, will execute at open price (both_mode=True) +2026-01-12 03:34:27,434 - app.services.backtest - INFO - Trade #4: open_long @ 2025-12-15 01:45:00, price=3106.8200, shares=303.8803 +2026-01-12 03:34:27,450 - app.services.backtest - INFO - Signal ready: open_short @ 2025-12-15 14:30:00, will execute at open price (both_mode=True) +2026-01-12 03:34:27,451 - app.services.backtest - INFO - Trade #5: open_short @ 2025-12-15 14:30:00, price=3129.8900, shares=283.5432 +2026-01-12 03:34:27,478 - app.services.backtest - INFO - Trade #6: open_long @ 2025-12-16 10:45:00, price=2955.8000, shares=282.2275 +2026-01-12 03:34:27,482 - app.services.backtest - INFO - Trade #7: open_short @ 2025-12-16 14:00:00, price=2910.6200, shares=269.4130 +2026-01-12 03:34:27,514 - app.services.backtest - INFO - Trade #8: open_long @ 2025-12-17 15:00:00, price=2995.6600, shares=246.0580 +2026-01-12 03:34:27,516 - app.services.backtest - INFO - Trade #9: open_short @ 2025-12-17 16:00:00, price=2904.5300, shares=238.5524 +2026-01-12 03:34:27,538 - app.services.backtest - INFO - Trade #10: open_long @ 2025-12-18 09:45:00, price=2856.9900, shares=227.9696 +2026-01-12 03:34:28,308 - app.services.backtest - INFO - MTF simulation complete: executed_trades=54, total_trades_recorded=108, final_capital=17716.40 +2026-01-12 03:34:28,332 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:34:28] "POST /api/indicator/backtest HTTP/1.1" 200 - +2026-01-12 03:35:14,519 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:35:14] "POST /api/indicator/backtest/precision-info HTTP/1.1" 200 - +2026-01-12 03:35:16,364 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:35:16] "POST /api/indicator/backtest/history HTTP/1.1" 200 - +2026-01-12 03:35:18,196 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:35:18] "POST /api/indicator/backtest/get HTTP/1.1" 200 - +2026-01-12 03:35:21,307 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:35:21] "POST /api/indicator/backtest/history HTTP/1.1" 200 - +2026-01-12 03:35:22,586 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:35:22] "POST /api/indicator/backtest/history HTTP/1.1" 200 - +2026-01-12 03:35:23,742 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:35:23] "POST /api/indicator/backtest/get HTTP/1.1" 200 - +2026-01-12 03:35:27,071 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:35:27] "POST /api/indicator/backtest/get HTTP/1.1" 200 - +2026-01-12 03:35:30,724 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:35:30] "POST /api/indicator/backtest/get HTTP/1.1" 200 - +2026-01-12 03:35:34,370 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:35:34] "POST /api/indicator/backtest/get HTTP/1.1" 200 - +2026-01-12 03:35:37,238 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:35:37] "POST /api/indicator/backtest/get HTTP/1.1" 200 - +2026-01-12 03:35:42,323 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:35:42] "POST /api/indicator/backtest/get HTTP/1.1" 200 - +2026-01-12 03:35:47,102 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=15m, limit=500 +2026-01-12 03:35:47,632 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:35:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 03:35:49,233 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:35:49] "POST /api/indicator/backtest/history HTTP/1.1" 200 - +2026-01-12 03:35:54,821 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:35:54] "POST /api/indicator/backtest/get HTTP/1.1" 200 - +2026-01-12 03:36:10,873 - app.routes.backtest - ERROR - OpenRouter request failed, falling back to heuristic: 402 Client Error: Payment Required for url: https://openrouter.ai/api/v1/chat/completions +2026-01-12 03:36:10,874 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:36:10] "POST /api/indicator/backtest/aiAnalyze HTTP/1.1" 200 - +2026-01-12 03:36:24,304 - app.routes.backtest - ERROR - OpenRouter request failed, falling back to heuristic: 402 Client Error: Payment Required for url: https://openrouter.ai/api/v1/chat/completions +2026-01-12 03:36:24,306 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:36:24] "POST /api/indicator/backtest/aiAnalyze HTTP/1.1" 200 - +2026-01-12 03:37:23,935 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:37:23] "GET /api/strategies?_t=1768160243918 HTTP/1.1" 200 - +2026-01-12 03:37:26,800 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:37:26] "GET /api/settings/schema?_t=1768160246761 HTTP/1.1" 200 - +2026-01-12 03:37:27,073 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:37:27] "GET /api/settings/values?_t=1768160246761 HTTP/1.1" 200 - +2026-01-12 03:37:30,870 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:37:30] "GET /api/strategies?_t=1768160250556 HTTP/1.1" 200 - +2026-01-12 03:37:32,374 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:37:32] "GET /api/market/types?_t=1768160252366 HTTP/1.1" 200 - +2026-01-12 03:37:32,692 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:37:32] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 03:37:32,692 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:37:32] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 03:37:33,023 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 03:37:33,421 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:37:33] "GET /api/market/config?_t=1768160253399 HTTP/1.1" 200 - +2026-01-12 03:37:33,473 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:37:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 03:37:33,747 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:37:33] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 03:37:33,780 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:37:33] "GET /api/market/types?_t=1768160253440 HTTP/1.1" 200 - +2026-01-12 03:37:34,244 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 03:37:34,244 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 03:37:34,244 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 03:37:34,244 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 03:37:34,244 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 03:37:35,374 - app.data_sources.base - WARNING - Warning: 600519 data is delayed (272255s) +2026-01-12 03:37:35,386 - app.data_sources.base - WARNING - Warning: 000858 data is delayed (272255s) +2026-01-12 03:37:35,390 - app.data_sources.base - WARNING - Warning: 300475 data is delayed (272255s) +2026-01-12 03:37:35,461 - app.data_sources.base - WARNING - Warning: 00700 data is delayed (272255s) +2026-01-12 03:37:35,598 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (225456s) +2026-01-12 03:37:35,757 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:37:35] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-12 03:37:35,921 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:37:35] "GET /api/dashboard/summary?_t=1768160255901 HTTP/1.1" 200 - +2026-01-12 03:37:36,223 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:37:36] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768160255901 HTTP/1.1" 200 - +2026-01-12 03:37:36,224 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:37:36] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768160255901 HTTP/1.1" 200 - +2026-01-12 03:37:41,181 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:37:41] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768160260863 HTTP/1.1" 200 - +2026-01-12 03:37:45,876 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:37:45] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768160265868 HTTP/1.1" 200 - +2026-01-12 03:37:51,195 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:37:51] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768160270872 HTTP/1.1" 200 - +2026-01-12 03:37:55,878 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:37:55] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768160275869 HTTP/1.1" 200 - +2026-01-12 03:38:01,193 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:38:01] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768160280872 HTTP/1.1" 200 - +2026-01-12 03:38:05,868 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:38:05] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768160285860 HTTP/1.1" 200 - +2026-01-12 03:38:11,186 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:38:11] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768160290866 HTTP/1.1" 200 - +2026-01-12 03:38:15,881 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:38:15] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768160295873 HTTP/1.1" 200 - +2026-01-12 03:38:21,185 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:38:21] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768160300871 HTTP/1.1" 200 - +2026-01-12 03:38:25,873 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:38:25] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768160305864 HTTP/1.1" 200 - +2026-01-12 03:38:26,496 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:38:26] "GET /api/market/types?_t=1768160306170 HTTP/1.1" 200 - +2026-01-12 03:38:26,501 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:38:26] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 03:38:26,505 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:38:26] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 03:38:26,744 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 03:38:26,745 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:38:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 03:38:29,885 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:38:29] "GET /api/settings/schema?_t=1768160309865 HTTP/1.1" 200 - +2026-01-12 03:38:30,185 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:38:30] "GET /api/settings/values?_t=1768160309865 HTTP/1.1" 200 - +2026-01-12 03:39:32,902 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:39:32] "GET /api/settings/schema?_t=1768160372895 HTTP/1.1" 200 - +2026-01-12 03:39:33,139 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:39:33] "GET /api/settings/values?_t=1768160372895 HTTP/1.1" 200 - +2026-01-12 03:40:06,350 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:40:06] "GET /api/settings/schema?_t=1768160406325 HTTP/1.1" 200 - +2026-01-12 03:40:06,352 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:40:06] "GET /api/settings/values?_t=1768160406325 HTTP/1.1" 200 - +2026-01-12 03:40:40,818 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:40:40] "GET /api/settings/schema?_t=1768160440812 HTTP/1.1" 200 - +2026-01-12 03:40:41,056 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:40:41] "GET /api/settings/values?_t=1768160440812 HTTP/1.1" 200 - +2026-01-12 03:40:41,180 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:40:41] "GET /api/settings/schema?_t=1768160441166 HTTP/1.1" 200 - +2026-01-12 03:40:41,182 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:40:41] "GET /api/settings/values?_t=1768160441166 HTTP/1.1" 200 - +2026-01-12 03:40:41,295 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:40:41] "GET /api/settings/schema?_t=1768160441282 HTTP/1.1" 200 - +2026-01-12 03:40:41,496 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:40:41] "GET /api/settings/values?_t=1768160441282 HTTP/1.1" 200 - +2026-01-12 03:43:07,253 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-12 03:43:07,253 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-12 03:43:07,262 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 03:43:07,608 - app.services.strategy - INFO - Found 0 running strategies: [] +2026-01-12 03:43:07,609 - app - INFO - No running strategies to restore. +2026-01-12 03:43:07,624 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-12 03:43:07,624 - werkzeug - INFO - Press CTRL+C to quit +2026-01-12 03:43:31,109 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:43:31] "GET /api/settings/schema?_t=1768160611101 HTTP/1.1" 200 - +2026-01-12 03:43:31,343 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:43:31] "GET /api/settings/values?_t=1768160611101 HTTP/1.1" 200 - +2026-01-12 03:43:32,344 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:43:32] "GET /api/settings/schema?_t=1768160612335 HTTP/1.1" 200 - +2026-01-12 03:43:32,345 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:43:32] "GET /api/settings/values?_t=1768160612335 HTTP/1.1" 200 - +2026-01-12 03:43:37,452 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 03:43:37] "GET /api/settings/openrouter-balance?_t=1768160616431 HTTP/1.1" 200 - +2026-01-12 04:05:51,399 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:05:51] "GET /api/settings/schema?_t=1768161951388 HTTP/1.1" 200 - +2026-01-12 04:05:51,402 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:05:51] "GET /api/settings/values?_t=1768161951388 HTTP/1.1" 200 - +2026-01-12 04:05:53,507 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:05:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768161953490 HTTP/1.1" 200 - +2026-01-12 04:05:53,507 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:05:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768161953490 HTTP/1.1" 200 - +2026-01-12 04:05:53,509 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:05:53] "GET /api/dashboard/summary?_t=1768161953490 HTTP/1.1" 200 - +2026-01-12 04:05:53,907 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:05:53] "GET /api/market/types?_t=1768161953896 HTTP/1.1" 200 - +2026-01-12 04:05:54,219 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:05:54] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 04:05:54,219 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:05:54] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 04:05:54,254 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 04:05:54,973 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:05:54] "GET /api/market/config?_t=1768161954925 HTTP/1.1" 200 - +2026-01-12 04:05:54,979 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:05:54] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 04:05:55,101 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:05:55] "GET /api/market/types?_t=1768161955080 HTTP/1.1" 200 - +2026-01-12 04:05:55,311 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 04:05:55,311 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 04:05:55,311 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 04:05:55,312 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 04:05:55,312 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 04:05:56,206 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:05:56] "GET /api/market/types?_t=1768161956159 HTTP/1.1" 200 - +2026-01-12 04:05:56,382 - app.data_sources.base - WARNING - Warning: 600519 data is delayed (273956s) +2026-01-12 04:05:56,383 - app.data_sources.base - WARNING - Warning: 300475 data is delayed (273956s) +2026-01-12 04:05:56,392 - app.data_sources.base - WARNING - Warning: 000858 data is delayed (273956s) +2026-01-12 04:05:56,563 - app.data_sources.base - WARNING - Warning: 00700 data is delayed (273957s) +2026-01-12 04:05:56,620 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:05:56] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 04:05:56,621 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:05:56] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 04:05:56,645 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 04:05:56,717 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (227157s) +2026-01-12 04:05:57,881 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:05:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:05:59,837 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:05:59] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-12 04:06:00,797 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:06:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:06:04,755 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1D, limit=500 +2026-01-12 04:06:05,749 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:06:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:06:06,454 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=5m, limit=500 +2026-01-12 04:06:07,556 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:06:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:06:09,114 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=500 +2026-01-12 04:06:10,038 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:06:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:06:12,078 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=500 +2026-01-12 04:06:13,036 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:06:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:06:20,537 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=500 +2026-01-12 04:06:21,523 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:06:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:06:22,491 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=500 +2026-01-12 04:06:23,441 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:06:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:06:29,754 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=5m, limit=500 +2026-01-12 04:06:29,756 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:06:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:06:30,829 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=500 +2026-01-12 04:06:31,861 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:06:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:07:07,833 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1W, limit=500 +2026-01-12 04:07:08,824 - app.data_sources.forex - ERROR - Tiingo API request failed: 400 Client Error: Bad Request for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2006-11-13&endDate=2026-01-12&resampleFreq=1week&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 04:07:08,825 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:07:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:07:09,515 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1D, limit=500 +2026-01-12 04:07:09,517 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:07:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:07:11,552 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=4H, limit=500 +2026-01-12 04:07:13,746 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:07:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:07:14,599 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1H, limit=500 +2026-01-12 04:07:15,851 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:07:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:07:17,040 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=30m, limit=500 +2026-01-12 04:07:18,200 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:07:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:07:18,788 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=15m, limit=500 +2026-01-12 04:07:19,968 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:07:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:07:20,825 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=5m, limit=500 +2026-01-12 04:07:21,961 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:07:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:07:22,758 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=500 +2026-01-12 04:07:23,715 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:07:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:07:25,108 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1W, limit=500 +2026-01-12 04:07:26,004 - app.data_sources.forex - ERROR - Tiingo API request failed: 400 Client Error: Bad Request for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2006-11-13&endDate=2026-01-12&resampleFreq=1week&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 04:07:26,006 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:07:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:09:24,266 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:09:24] "GET /api/settings/schema?_t=1768162163943 HTTP/1.1" 200 - +2026-01-12 04:09:24,281 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:09:24] "GET /api/settings/values?_t=1768162163943 HTTP/1.1" 200 - +2026-01-12 04:10:27,875 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-12 04:10:27,876 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-12 04:10:27,881 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 04:10:28,245 - app.services.strategy - INFO - Found 0 running strategies: [] +2026-01-12 04:10:28,245 - app - INFO - No running strategies to restore. +2026-01-12 04:10:28,271 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-12 04:10:28,272 - werkzeug - INFO - Press CTRL+C to quit +2026-01-12 04:10:31,471 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:10:31] "GET /api/market/types?_t=1768162231113 HTTP/1.1" 200 - +2026-01-12 04:10:31,473 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:10:31] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 04:10:31,479 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:10:31] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 04:10:31,690 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 04:10:35,368 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:10:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:10:37,350 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=4H, limit=500 +2026-01-12 04:10:39,423 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:10:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:10:40,915 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1D, limit=500 +2026-01-12 04:10:41,937 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:10:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:10:43,107 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1W, limit=500 +2026-01-12 04:10:44,028 - app.data_sources.forex - ERROR - Tiingo API request failed: 400 Client Error: Bad Request for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=1891-11-16&endDate=2026-01-12&resampleFreq=1day&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 04:10:44,029 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:10:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:10:46,041 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1W, limit=500 +2026-01-12 04:10:46,957 - app.data_sources.forex - ERROR - Tiingo API request failed: 400 Client Error: Bad Request for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=1891-11-16&endDate=2026-01-12&resampleFreq=1day&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 04:10:46,958 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:10:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:11:04,435 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1D, limit=500 +2026-01-12 04:11:04,438 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:11:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:11:05,682 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1W, limit=500 +2026-01-12 04:11:06,594 - app.data_sources.forex - ERROR - Tiingo API request failed: 400 Client Error: Bad Request for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=1891-11-16&endDate=2026-01-12&resampleFreq=1day&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 04:11:06,595 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:11:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:11:07,582 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1D, limit=500 +2026-01-12 04:11:07,584 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:11:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:11:10,400 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=500 +2026-01-12 04:11:10,400 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 04:11:11,338 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:11:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:11:12,548 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=5m, limit=500 +2026-01-12 04:11:13,677 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:11:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:11:25,326 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:11:25] "GET /api/settings/schema?_t=1768162285006 HTTP/1.1" 200 - +2026-01-12 04:11:25,327 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:11:25] "GET /api/settings/values?_t=1768162285006 HTTP/1.1" 200 - +2026-01-12 04:14:58,037 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-12 04:14:58,038 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-12 04:14:58,044 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 04:14:58,380 - app.services.strategy - INFO - Found 0 running strategies: [] +2026-01-12 04:14:58,380 - app - INFO - No running strategies to restore. +2026-01-12 04:14:58,410 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-12 04:14:58,410 - werkzeug - INFO - Press CTRL+C to quit +2026-01-12 04:15:03,110 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:15:03] "GET /api/market/types?_t=1768162502784 HTTP/1.1" 200 - +2026-01-12 04:15:03,113 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:15:03] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 04:15:03,117 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:15:03] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 04:15:03,372 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 04:15:06,932 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:15:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:15:08,001 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1W, limit=500 +2026-01-12 04:15:08,441 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:15:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:15:13,023 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1W, limit=500 +2026-01-12 04:15:13,953 - app.data_sources.forex - ERROR - Tiingo API request failed: 400 Client Error: Bad Request for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2011-08-29&endDate=2026-01-12&resampleFreq=1day&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 04:15:13,955 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:15:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:15:15,834 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1W, limit=500 +2026-01-12 04:15:16,746 - app.data_sources.forex - ERROR - Tiingo API request failed: 400 Client Error: Bad Request for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2011-08-29&endDate=2026-01-12&resampleFreq=1day&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 04:15:16,749 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:15:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:15:40,404 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=5m, limit=500 +2026-01-12 04:15:41,454 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:15:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:15:42,486 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=500 +2026-01-12 04:15:42,486 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 04:15:43,415 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:15:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:16:36,191 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-12 04:16:36,191 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-12 04:16:36,197 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 04:16:36,556 - app.services.strategy - INFO - Found 0 running strategies: [] +2026-01-12 04:16:36,556 - app - INFO - No running strategies to restore. +2026-01-12 04:16:36,573 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-12 04:16:36,573 - werkzeug - INFO - Press CTRL+C to quit +2026-01-12 04:16:38,720 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=500 +2026-01-12 04:16:38,728 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 04:16:39,725 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:16:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:16:47,811 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=500 +2026-01-12 04:16:47,812 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 04:16:48,784 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:16:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:16:50,104 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1D, limit=500 +2026-01-12 04:16:51,093 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:16:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:16:51,784 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1W, limit=500 +2026-01-12 04:16:52,825 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:16:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:16:53,163 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1W, limit=500 +2026-01-12 04:16:54,164 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:16:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:16:54,233 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1W, limit=500 +2026-01-12 04:16:55,141 - app.data_sources.forex - ERROR - Tiingo API request failed: 400 Client Error: Bad Request for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2019-05-06&endDate=2022-03-21&resampleFreq=1day&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 04:16:55,142 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:16:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:19:36,411 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:19:36] "GET /api/market/types?_t=1768162776382 HTTP/1.1" 200 - +2026-01-12 04:19:36,417 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:19:36] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 04:19:36,417 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:19:36] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 04:19:36,531 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 04:19:40,680 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:19:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:19:51,813 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:19:51] "GET /api/market/types?_t=1768162791793 HTTP/1.1" 200 - +2026-01-12 04:19:51,816 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:19:51] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 04:19:51,819 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:19:51] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 04:19:51,904 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 04:19:51,907 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:19:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:19:52,182 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:19:52] "GET /api/market/types?_t=1768162792162 HTTP/1.1" 200 - +2026-01-12 04:19:52,184 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:19:52] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 04:19:52,378 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 04:19:52,379 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:19:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:19:52,380 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:19:52] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 04:20:47,620 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-12 04:20:47,620 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-12 04:20:47,627 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 04:20:48,042 - app.services.strategy - INFO - Found 0 running strategies: [] +2026-01-12 04:20:48,042 - app - INFO - No running strategies to restore. +2026-01-12 04:20:48,062 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-12 04:20:48,063 - werkzeug - INFO - Press CTRL+C to quit +2026-01-12 04:21:13,682 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1D, limit=500 +2026-01-12 04:21:14,718 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:21:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:21:16,033 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=500 +2026-01-12 04:21:16,034 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 04:21:17,055 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:21:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:21:26,416 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=500 +2026-01-12 04:21:26,416 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 04:21:27,363 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:21:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:21:34,338 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:21:34] "GET /api/settings/schema?_t=1768162894325 HTTP/1.1" 200 - +2026-01-12 04:21:34,651 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:21:34] "GET /api/settings/values?_t=1768162894325 HTTP/1.1" 200 - +2026-01-12 04:23:01,658 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:23:01] "GET /api/settings/schema?_t=1768162980616 HTTP/1.1" 200 - +2026-01-12 04:23:01,659 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:23:01] "GET /api/settings/values?_t=1768162980616 HTTP/1.1" 200 - +2026-01-12 04:23:51,063 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:23:51] "GET /api/settings/schema?_t=1768163031053 HTTP/1.1" 200 - +2026-01-12 04:23:51,066 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:23:51] "GET /api/settings/values?_t=1768163031053 HTTP/1.1" 200 - +2026-01-12 04:23:51,747 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:23:51] "GET /api/market/types?_t=1768163031738 HTTP/1.1" 200 - +2026-01-12 04:23:52,062 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:23:52] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 04:23:52,063 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:23:52] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 04:23:52,216 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 04:23:55,967 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:23:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 04:24:29,293 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:24:29] "GET /api/market/config?_t=1768163069256 HTTP/1.1" 200 - +2026-01-12 04:24:29,294 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:24:29] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 04:24:29,899 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:24:29] "GET /api/market/types?_t=1768163069347 HTTP/1.1" 200 - +2026-01-12 04:24:30,100 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 04:24:30,100 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 04:24:30,101 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 04:24:30,101 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 04:24:30,101 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 04:24:30,636 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:24:30] "GET /api/dashboard/summary?_t=1768163070582 HTTP/1.1" 200 - +2026-01-12 04:24:30,657 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:24:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768163070582 HTTP/1.1" 200 - +2026-01-12 04:24:30,910 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:24:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768163070582 HTTP/1.1" 200 - +2026-01-12 04:24:31,122 - app.data_sources.base - WARNING - Warning: 000858 data is delayed (275071s) +2026-01-12 04:24:31,134 - app.data_sources.base - WARNING - Warning: 300475 data is delayed (275071s) +2026-01-12 04:24:31,144 - app.data_sources.base - WARNING - Warning: 600519 data is delayed (275071s) +2026-01-12 04:24:31,199 - app.data_sources.base - WARNING - Warning: 00700 data is delayed (275071s) +2026-01-12 04:24:31,445 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (228271s) +2026-01-12 04:24:31,652 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:24:31] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-12 04:24:36,335 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:24:36] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768163076321 HTTP/1.1" 200 - +2026-01-12 04:24:41,622 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:24:41] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768163081308 HTTP/1.1" 200 - +2026-01-12 04:24:46,325 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:24:46] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768163086316 HTTP/1.1" 200 - +2026-01-12 04:24:51,628 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:24:51] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768163091312 HTTP/1.1" 200 - +2026-01-12 04:24:56,328 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:24:56] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768163096319 HTTP/1.1" 200 - +2026-01-12 04:25:01,625 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:25:01] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768163101311 HTTP/1.1" 200 - +2026-01-12 04:25:06,319 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:25:06] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768163106308 HTTP/1.1" 200 - +2026-01-12 04:25:11,635 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:25:11] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768163111321 HTTP/1.1" 200 - +2026-01-12 04:25:16,388 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:25:16] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768163116311 HTTP/1.1" 200 - +2026-01-12 04:25:21,631 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:25:21] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768163121320 HTTP/1.1" 200 - +2026-01-12 04:25:26,319 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:25:26] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768163126310 HTTP/1.1" 200 - +2026-01-12 04:25:31,638 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:25:31] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768163131318 HTTP/1.1" 200 - +2026-01-12 04:25:48,353 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:25:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768163148319 HTTP/1.1" 200 - +2026-01-12 04:26:48,651 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:26:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768163208316 HTTP/1.1" 200 - +2026-01-12 04:27:48,333 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:27:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768163268313 HTTP/1.1" 200 - +2026-01-12 04:28:48,624 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:28:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768163328311 HTTP/1.1" 200 - +2026-01-12 04:29:28,695 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:29:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768163368654 HTTP/1.1" 200 - +2026-01-12 04:30:15,628 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:30:15] "POST /api/user/login HTTP/1.1" 401 - +2026-01-12 04:30:30,696 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-12 04:30:30,698 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-12 04:30:30,710 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 04:30:32,121 - app.services.strategy - INFO - Found 0 running strategies: [] +2026-01-12 04:30:32,122 - app - INFO - No running strategies to restore. +2026-01-12 04:30:32,162 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-12 04:30:32,163 - werkzeug - INFO - Press CTRL+C to quit +2026-01-12 04:30:38,729 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:30:38] "POST /api/user/login HTTP/1.1" 401 - +2026-01-12 04:30:53,655 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:30:53] "POST /api/user/login HTTP/1.1" 401 - +2026-01-12 04:31:13,656 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:31:13] "POST /api/user/login HTTP/1.1" 401 - +2026-01-12 04:31:28,937 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:31:28] "POST /api/user/login HTTP/1.1" 200 - +2026-01-12 04:31:29,955 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:31:29] "GET /api/dashboard/summary?_t=1768163489797 HTTP/1.1" 200 - +2026-01-12 04:31:29,957 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:31:29] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768163489797 HTTP/1.1" 200 - +2026-01-12 04:31:29,962 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:31:29] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768163489797 HTTP/1.1" 200 - +2026-01-12 04:31:34,716 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:31:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768163494706 HTTP/1.1" 200 - +2026-01-12 04:31:39,739 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:31:39] "GET /api/market/config?_t=1768163499712 HTTP/1.1" 200 - +2026-01-12 04:31:39,741 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:31:39] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 04:31:40,129 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 04:31:40,129 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 04:31:40,129 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 04:31:40,129 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 04:31:40,129 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 04:31:40,148 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:31:40] "GET /api/market/types?_t=1768163499814 HTTP/1.1" 200 - +2026-01-12 04:31:41,138 - app.data_sources.base - WARNING - Warning: 300475 data is delayed (275501s) +2026-01-12 04:31:41,226 - app.data_sources.base - WARNING - Warning: 000858 data is delayed (275501s) +2026-01-12 04:31:41,292 - app.data_sources.base - WARNING - Warning: 600519 data is delayed (275501s) +2026-01-12 04:31:41,335 - app.data_sources.base - WARNING - Warning: 00700 data is delayed (275501s) +2026-01-12 04:31:41,526 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (228702s) +2026-01-12 04:31:44,526 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 04:31:44] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-12 16:16:41,111 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-12 16:16:41,111 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-12 16:16:41,118 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-12 16:16:41,118 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-12 16:16:41,148 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 16:16:41,167 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 16:16:41,639 - app.services.strategy - INFO - Found 0 running strategies: [] +2026-01-12 16:16:41,639 - app - INFO - No running strategies to restore. +2026-01-12 16:16:41,657 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-12 16:16:41,658 - werkzeug - INFO - Press CTRL+C to quit +2026-01-12 16:22:46,205 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-12 16:22:46,206 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-12 16:22:46,207 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-12 16:22:46,207 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-12 16:22:46,216 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 16:22:46,216 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 16:22:46,555 - app.services.strategy - INFO - Found 0 running strategies: [] +2026-01-12 16:22:46,555 - app - INFO - No running strategies to restore. +2026-01-12 16:22:46,569 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-12 16:22:46,569 - werkzeug - INFO - Press CTRL+C to quit +2026-01-12 16:33:22,024 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-12 16:33:22,025 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-12 16:33:22,034 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-12 16:33:22,035 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-12 16:33:22,085 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 16:33:22,098 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 16:33:22,461 - app.services.strategy - INFO - Found 0 running strategies: [] +2026-01-12 16:33:22,461 - app - INFO - No running strategies to restore. +2026-01-12 16:33:22,477 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-12 16:33:22,477 - werkzeug - INFO - Press CTRL+C to quit +2026-01-12 16:36:32,649 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-12 16:36:32,649 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-12 16:36:32,650 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-12 16:36:32,650 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-12 16:36:32,663 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 16:36:32,664 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 16:36:32,989 - app.services.strategy - INFO - Found 0 running strategies: [] +2026-01-12 16:36:32,990 - app - INFO - No running strategies to restore. +2026-01-12 16:36:33,016 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-12 16:36:33,017 - werkzeug - INFO - Press CTRL+C to quit +2026-01-12 16:39:58,654 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-12 16:39:58,654 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-12 16:39:58,655 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-12 16:39:58,655 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-12 16:39:58,669 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 16:39:58,669 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 16:39:59,074 - app.services.strategy - INFO - Found 0 running strategies: [] +2026-01-12 16:39:59,074 - app - INFO - No running strategies to restore. +2026-01-12 16:40:50,381 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-12 16:40:50,381 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-12 16:40:50,382 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-12 16:40:50,382 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-12 16:40:50,394 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 16:40:50,409 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 16:40:50,754 - app.services.strategy - INFO - Found 0 running strategies: [] +2026-01-12 16:40:50,754 - app - INFO - No running strategies to restore. +2026-01-12 16:40:50,771 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-12 16:40:50,771 - werkzeug - INFO - Press CTRL+C to quit +2026-01-12 16:52:36,071 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-12 16:52:36,072 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-12 16:52:36,072 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-12 16:52:36,072 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-12 16:52:36,084 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 16:52:36,096 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 16:52:36,424 - app.services.strategy - INFO - Found 0 running strategies: [] +2026-01-12 16:52:36,424 - app - INFO - No running strategies to restore. +2026-01-12 17:07:26,519 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-12 17:07:26,519 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-12 17:07:26,520 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-12 17:07:26,520 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-12 17:07:26,531 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 17:07:26,534 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 17:07:26,866 - app.services.strategy - INFO - Found 0 running strategies: [] +2026-01-12 17:07:26,866 - app - INFO - No running strategies to restore. +2026-01-12 17:07:26,880 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-12 17:07:26,880 - werkzeug - INFO - Press CTRL+C to quit +2026-01-12 17:15:08,068 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-12 17:15:08,068 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-12 17:15:08,069 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-12 17:15:08,069 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-12 17:15:08,078 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 17:15:08,079 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 17:15:08,395 - app.services.strategy - INFO - Found 0 running strategies: [] +2026-01-12 17:15:08,395 - app - INFO - No running strategies to restore. +2026-01-12 17:15:08,409 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-12 17:15:08,409 - werkzeug - INFO - Press CTRL+C to quit +2026-01-12 17:18:43,086 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-12 17:18:43,087 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-12 17:18:43,087 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-12 17:18:43,087 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-12 17:18:43,098 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 17:18:43,108 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 17:18:43,415 - app.services.strategy - INFO - Found 0 running strategies: [] +2026-01-12 17:18:43,416 - app - INFO - No running strategies to restore. +2026-01-12 17:18:43,456 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-12 17:18:43,457 - werkzeug - INFO - Press CTRL+C to quit +2026-01-12 17:19:14,001 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:19:14] "GET /api/user/info?_t=1768209553980 HTTP/1.1" 200 - +2026-01-12 17:19:14,002 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:19:14] "GET /api/market/types?_t=1768209553980 HTTP/1.1" 200 - +2026-01-12 17:19:14,004 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:19:14] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 17:19:14,006 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:19:14] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 17:19:14,298 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:19:14] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 17:19:14,357 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 17:19:14,368 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:19:14] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 17:19:15,967 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:19:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 17:19:19,967 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:19:19] "GET /api/market/types?_t=1768209559948 HTTP/1.1" 200 - +2026-01-12 17:19:19,971 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:19:19] "GET /api/portfolio/positions?_t=1768209559948 HTTP/1.1" 200 - +2026-01-12 17:19:19,983 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:19:19] "GET /api/portfolio/summary?_t=1768209559948 HTTP/1.1" 200 - +2026-01-12 17:19:19,991 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:19:19] "GET /api/portfolio/monitors?_t=1768209559948 HTTP/1.1" 200 - +2026-01-12 17:19:19,994 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:19:19] "GET /api/portfolio/groups?_t=1768209559948 HTTP/1.1" 200 - +2026-01-12 17:19:20,264 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:19:20] "GET /api/portfolio/alerts?_t=1768209559948 HTTP/1.1" 200 - +2026-01-12 17:19:22,430 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:19:22] "GET /api/strategies?_t=1768209562420 HTTP/1.1" 200 - +2026-01-12 17:19:23,413 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:19:23] "GET /api/market/types?_t=1768209563399 HTTP/1.1" 200 - +2026-01-12 17:19:23,725 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:19:23] "GET /api/portfolio/positions?_t=1768209563399 HTTP/1.1" 200 - +2026-01-12 17:19:23,726 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:19:23] "GET /api/portfolio/summary?_t=1768209563399 HTTP/1.1" 200 - +2026-01-12 17:19:23,730 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:19:23] "GET /api/portfolio/monitors?_t=1768209563399 HTTP/1.1" 200 - +2026-01-12 17:19:23,731 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:19:23] "GET /api/portfolio/alerts?_t=1768209563399 HTTP/1.1" 200 - +2026-01-12 17:19:23,731 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:19:23] "GET /api/portfolio/groups?_t=1768209563399 HTTP/1.1" 200 - +2026-01-12 17:19:53,729 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:19:53] "GET /api/portfolio/positions?_t=1768209593410 HTTP/1.1" 200 - +2026-01-12 17:19:53,729 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:19:53] "GET /api/portfolio/summary?_t=1768209593410 HTTP/1.1" 200 - +2026-01-12 17:20:23,406 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:20:23] "GET /api/portfolio/positions?_t=1768209623397 HTTP/1.1" 200 - +2026-01-12 17:20:23,718 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:20:23] "GET /api/portfolio/summary?_t=1768209623397 HTTP/1.1" 200 - +2026-01-12 17:20:53,720 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:20:53] "GET /api/portfolio/summary?_t=1768209653399 HTTP/1.1" 200 - +2026-01-12 17:20:53,721 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:20:53] "GET /api/portfolio/positions?_t=1768209653399 HTTP/1.1" 200 - +2026-01-12 17:21:23,412 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:21:23] "GET /api/portfolio/positions?_t=1768209683403 HTTP/1.1" 200 - +2026-01-12 17:21:23,724 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:21:23] "GET /api/portfolio/summary?_t=1768209683403 HTTP/1.1" 200 - +2026-01-12 17:21:36,632 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:21:36] "GET /api/market/types?_t=1768209696622 HTTP/1.1" 200 - +2026-01-12 17:21:36,634 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:21:36] "GET /api/portfolio/positions?_t=1768209696622 HTTP/1.1" 200 - +2026-01-12 17:21:36,634 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:21:36] "GET /api/portfolio/summary?_t=1768209696622 HTTP/1.1" 200 - +2026-01-12 17:21:36,947 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:21:36] "GET /api/portfolio/monitors?_t=1768209696622 HTTP/1.1" 200 - +2026-01-12 17:21:36,947 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:21:36] "GET /api/portfolio/alerts?_t=1768209696622 HTTP/1.1" 200 - +2026-01-12 17:21:36,948 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:21:36] "GET /api/portfolio/groups?_t=1768209696622 HTTP/1.1" 200 - +2026-01-12 17:22:06,937 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:22:06] "GET /api/portfolio/positions?_t=1768209726613 HTTP/1.1" 200 - +2026-01-12 17:22:06,937 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:22:06] "GET /api/portfolio/summary?_t=1768209726613 HTTP/1.1" 200 - +2026-01-12 17:22:36,629 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:22:36] "GET /api/portfolio/positions?_t=1768209756618 HTTP/1.1" 200 - +2026-01-12 17:22:36,936 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:22:36] "GET /api/portfolio/summary?_t=1768209756618 HTTP/1.1" 200 - +2026-01-12 17:23:06,930 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:23:06] "GET /api/portfolio/positions?_t=1768209786606 HTTP/1.1" 200 - +2026-01-12 17:23:06,930 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:23:06] "GET /api/portfolio/summary?_t=1768209786606 HTTP/1.1" 200 - +2026-01-12 17:23:36,624 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:23:36] "GET /api/portfolio/positions?_t=1768209816616 HTTP/1.1" 200 - +2026-01-12 17:23:36,939 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:23:36] "GET /api/portfolio/summary?_t=1768209816616 HTTP/1.1" 200 - +2026-01-12 17:24:06,937 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:24:06] "GET /api/portfolio/positions?_t=1768209846615 HTTP/1.1" 200 - +2026-01-12 17:24:06,938 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:24:06] "GET /api/portfolio/summary?_t=1768209846615 HTTP/1.1" 200 - +2026-01-12 17:24:36,613 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:24:36] "GET /api/portfolio/positions?_t=1768209876604 HTTP/1.1" 200 - +2026-01-12 17:24:36,915 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:24:36] "GET /api/portfolio/summary?_t=1768209876604 HTTP/1.1" 200 - +2026-01-12 17:25:07,382 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:25:07] "GET /api/portfolio/positions?_t=1768209906618 HTTP/1.1" 200 - +2026-01-12 17:25:07,383 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:25:07] "GET /api/portfolio/summary?_t=1768209906618 HTTP/1.1" 200 - +2026-01-12 17:25:17,953 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:25:17] "GET /api/market/types?_t=1768209917936 HTTP/1.1" 200 - +2026-01-12 17:25:17,957 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:25:17] "GET /api/portfolio/positions?_t=1768209917936 HTTP/1.1" 200 - +2026-01-12 17:25:17,967 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:25:17] "GET /api/portfolio/summary?_t=1768209917936 HTTP/1.1" 200 - +2026-01-12 17:25:18,273 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:25:18] "GET /api/portfolio/monitors?_t=1768209917936 HTTP/1.1" 200 - +2026-01-12 17:25:18,273 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:25:18] "GET /api/portfolio/alerts?_t=1768209917936 HTTP/1.1" 200 - +2026-01-12 17:25:18,274 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:25:18] "GET /api/portfolio/groups?_t=1768209917936 HTTP/1.1" 200 - +2026-01-12 17:25:36,858 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:25:36] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 17:25:37,746 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:25:37] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 17:25:46,309 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:25:46] "GET /api/market/types?_t=1768209946297 HTTP/1.1" 200 - +2026-01-12 17:25:46,312 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:25:46] "GET /api/portfolio/summary?_t=1768209946297 HTTP/1.1" 200 - +2026-01-12 17:25:46,330 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:25:46] "GET /api/portfolio/positions?_t=1768209946297 HTTP/1.1" 200 - +2026-01-12 17:25:46,623 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:25:46] "GET /api/portfolio/groups?_t=1768209946297 HTTP/1.1" 200 - +2026-01-12 17:25:46,624 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:25:46] "GET /api/portfolio/monitors?_t=1768209946297 HTTP/1.1" 200 - +2026-01-12 17:25:46,624 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:25:46] "GET /api/portfolio/alerts?_t=1768209946297 HTTP/1.1" 200 - +2026-01-12 17:25:54,406 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:25:54] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 17:25:54,955 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:25:54] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 17:26:16,593 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:26:16] "GET /api/portfolio/positions?_t=1768209976274 HTTP/1.1" 200 - +2026-01-12 17:26:16,594 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:26:16] "GET /api/portfolio/summary?_t=1768209976274 HTTP/1.1" 200 - +2026-01-12 17:26:46,289 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:26:46] "GET /api/portfolio/positions?_t=1768210006275 HTTP/1.1" 200 - +2026-01-12 17:26:46,596 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:26:46] "GET /api/portfolio/summary?_t=1768210006275 HTTP/1.1" 200 - +2026-01-12 17:27:16,597 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:27:16] "GET /api/portfolio/positions?_t=1768210036275 HTTP/1.1" 200 - +2026-01-12 17:27:16,597 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:27:16] "GET /api/portfolio/summary?_t=1768210036275 HTTP/1.1" 200 - +2026-01-12 17:27:39,301 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:27:39] "GET /api/market/types?_t=1768210059289 HTTP/1.1" 200 - +2026-01-12 17:27:39,568 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:27:39] "GET /api/portfolio/positions?_t=1768210059289 HTTP/1.1" 200 - +2026-01-12 17:27:39,618 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:27:39] "GET /api/portfolio/summary?_t=1768210059289 HTTP/1.1" 200 - +2026-01-12 17:27:39,618 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:27:39] "GET /api/portfolio/monitors?_t=1768210059289 HTTP/1.1" 200 - +2026-01-12 17:27:39,618 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:27:39] "GET /api/portfolio/alerts?_t=1768210059289 HTTP/1.1" 200 - +2026-01-12 17:27:39,619 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:27:39] "GET /api/portfolio/groups?_t=1768210059289 HTTP/1.1" 200 - +2026-01-12 17:28:09,599 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:28:09] "GET /api/portfolio/positions?_t=1768210089286 HTTP/1.1" 200 - +2026-01-12 17:28:09,600 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:28:09] "GET /api/portfolio/summary?_t=1768210089286 HTTP/1.1" 200 - +2026-01-12 17:28:39,293 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:28:39] "GET /api/portfolio/positions?_t=1768210119284 HTTP/1.1" 200 - +2026-01-12 17:28:39,606 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:28:39] "GET /api/portfolio/summary?_t=1768210119284 HTTP/1.1" 200 - +2026-01-12 17:28:42,551 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:28:42] "GET /api/market/types?_t=1768210122540 HTTP/1.1" 200 - +2026-01-12 17:28:42,773 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:28:42] "GET /api/portfolio/positions?_t=1768210122540 HTTP/1.1" 200 - +2026-01-12 17:28:42,817 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:28:42] "GET /api/portfolio/summary?_t=1768210122540 HTTP/1.1" 200 - +2026-01-12 17:28:42,867 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:28:42] "GET /api/portfolio/monitors?_t=1768210122540 HTTP/1.1" 200 - +2026-01-12 17:28:42,868 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:28:42] "GET /api/portfolio/alerts?_t=1768210122540 HTTP/1.1" 200 - +2026-01-12 17:28:42,868 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:28:42] "GET /api/portfolio/groups?_t=1768210122540 HTTP/1.1" 200 - +2026-01-12 17:28:49,674 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:28:49] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 17:28:50,066 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:28:50] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 17:28:50,762 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:28:50] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 17:29:12,563 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:29:12] "GET /api/portfolio/positions?_t=1768210152550 HTTP/1.1" 200 - +2026-01-12 17:29:12,872 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:29:12] "GET /api/portfolio/summary?_t=1768210152550 HTTP/1.1" 200 - +2026-01-12 17:29:42,864 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:29:42] "GET /api/portfolio/positions?_t=1768210182540 HTTP/1.1" 200 - +2026-01-12 17:29:42,865 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:29:42] "GET /api/portfolio/summary?_t=1768210182540 HTTP/1.1" 200 - +2026-01-12 17:29:52,590 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:29:52] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 17:29:53,241 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:29:53] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 17:29:53,508 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:29:53] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 17:29:54,439 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:29:54] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 17:29:55,669 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:29:55] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 17:29:58,706 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:29:58] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 17:30:00,329 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:30:00] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 17:30:00,592 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:30:00] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 17:30:02,012 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:30:02] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 17:30:04,007 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:30:04] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 17:30:04,427 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:30:04] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 17:30:12,871 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:30:12] "GET /api/portfolio/positions?_t=1768210212549 HTTP/1.1" 200 - +2026-01-12 17:30:12,871 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:30:12] "GET /api/portfolio/summary?_t=1768210212549 HTTP/1.1" 200 - +2026-01-12 17:30:42,562 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:30:42] "GET /api/portfolio/positions?_t=1768210242547 HTTP/1.1" 200 - +2026-01-12 17:30:42,869 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:30:42] "GET /api/portfolio/summary?_t=1768210242547 HTTP/1.1" 200 - +2026-01-12 17:31:12,872 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:31:12] "GET /api/portfolio/positions?_t=1768210272549 HTTP/1.1" 200 - +2026-01-12 17:31:12,873 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:31:12] "GET /api/portfolio/summary?_t=1768210272549 HTTP/1.1" 200 - +2026-01-12 17:31:42,559 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:31:42] "GET /api/portfolio/positions?_t=1768210302545 HTTP/1.1" 200 - +2026-01-12 17:31:42,868 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:31:42] "GET /api/portfolio/summary?_t=1768210302545 HTTP/1.1" 200 - +2026-01-12 17:32:12,873 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:32:12] "GET /api/portfolio/positions?_t=1768210332547 HTTP/1.1" 200 - +2026-01-12 17:32:12,873 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:32:12] "GET /api/portfolio/summary?_t=1768210332547 HTTP/1.1" 200 - +2026-01-12 17:32:42,567 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:32:42] "GET /api/portfolio/positions?_t=1768210362554 HTTP/1.1" 200 - +2026-01-12 17:32:42,873 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:32:42] "GET /api/portfolio/summary?_t=1768210362554 HTTP/1.1" 200 - +2026-01-12 17:32:53,914 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:32:53] "GET /api/market/types?_t=1768210373903 HTTP/1.1" 200 - +2026-01-12 17:32:54,105 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:32:54] "GET /api/portfolio/positions?_t=1768210373903 HTTP/1.1" 200 - +2026-01-12 17:32:54,169 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:32:54] "GET /api/portfolio/summary?_t=1768210373903 HTTP/1.1" 200 - +2026-01-12 17:32:54,232 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:32:54] "GET /api/portfolio/monitors?_t=1768210373903 HTTP/1.1" 200 - +2026-01-12 17:32:54,233 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:32:54] "GET /api/portfolio/groups?_t=1768210373903 HTTP/1.1" 200 - +2026-01-12 17:32:54,234 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:32:54] "GET /api/portfolio/alerts?_t=1768210373903 HTTP/1.1" 200 - +2026-01-12 17:33:11,429 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:33:11] "GET /api/market/types?_t=1768210391421 HTTP/1.1" 200 - +2026-01-12 17:33:11,651 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:33:11] "GET /api/portfolio/positions?_t=1768210391421 HTTP/1.1" 200 - +2026-01-12 17:33:11,705 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:33:11] "GET /api/portfolio/summary?_t=1768210391421 HTTP/1.1" 200 - +2026-01-12 17:33:11,746 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:33:11] "GET /api/portfolio/monitors?_t=1768210391421 HTTP/1.1" 200 - +2026-01-12 17:33:11,746 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:33:11] "GET /api/portfolio/alerts?_t=1768210391421 HTTP/1.1" 200 - +2026-01-12 17:33:11,746 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:33:11] "GET /api/portfolio/groups?_t=1768210391421 HTTP/1.1" 200 - +2026-01-12 17:33:41,741 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:33:41] "GET /api/portfolio/summary?_t=1768210421417 HTTP/1.1" 200 - +2026-01-12 17:33:41,741 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:33:41] "GET /api/portfolio/positions?_t=1768210421417 HTTP/1.1" 200 - +2026-01-12 17:34:11,426 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:34:11] "GET /api/portfolio/positions?_t=1768210451417 HTTP/1.1" 200 - +2026-01-12 17:34:11,740 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:34:11] "GET /api/portfolio/summary?_t=1768210451417 HTTP/1.1" 200 - +2026-01-12 17:34:41,729 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:34:41] "GET /api/portfolio/positions?_t=1768210481416 HTTP/1.1" 200 - +2026-01-12 17:34:41,729 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:34:41] "GET /api/portfolio/summary?_t=1768210481416 HTTP/1.1" 200 - +2026-01-12 17:35:11,545 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:35:11] "GET /api/portfolio/positions?_t=1768210511421 HTTP/1.1" 200 - +2026-01-12 17:35:11,857 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:35:11] "GET /api/portfolio/summary?_t=1768210511421 HTTP/1.1" 200 - +2026-01-12 17:35:41,743 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:35:41] "GET /api/portfolio/positions?_t=1768210541423 HTTP/1.1" 200 - +2026-01-12 17:35:41,744 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:35:41] "GET /api/portfolio/summary?_t=1768210541423 HTTP/1.1" 200 - +2026-01-12 17:36:12,859 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:36:12] "GET /api/portfolio/positions?_t=1768210571430 HTTP/1.1" 200 - +2026-01-12 17:36:12,859 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:36:12] "GET /api/portfolio/summary?_t=1768210571430 HTTP/1.1" 200 - +2026-01-12 17:36:34,305 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:36:34] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 17:36:41,750 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:36:41] "GET /api/portfolio/positions?_t=1768210601429 HTTP/1.1" 200 - +2026-01-12 17:36:41,751 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:36:41] "GET /api/portfolio/summary?_t=1768210601429 HTTP/1.1" 200 - +2026-01-12 17:36:45,852 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:36:45] "GET /api/market/types?_t=1768210605844 HTTP/1.1" 200 - +2026-01-12 17:36:46,132 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:36:46] "GET /api/portfolio/positions?_t=1768210605844 HTTP/1.1" 200 - +2026-01-12 17:36:46,168 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:36:46] "GET /api/portfolio/monitors?_t=1768210605844 HTTP/1.1" 200 - +2026-01-12 17:36:46,168 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:36:46] "GET /api/portfolio/summary?_t=1768210605844 HTTP/1.1" 200 - +2026-01-12 17:36:46,169 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:36:46] "GET /api/portfolio/alerts?_t=1768210605844 HTTP/1.1" 200 - +2026-01-12 17:36:46,176 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:36:46] "GET /api/portfolio/groups?_t=1768210605844 HTTP/1.1" 200 - +2026-01-12 17:36:46,202 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:36:46] "GET /api/market/types?_t=1768210606194 HTTP/1.1" 200 - +2026-01-12 17:36:46,476 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:36:46] "GET /api/portfolio/positions?_t=1768210606194 HTTP/1.1" 200 - +2026-01-12 17:36:46,512 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:36:46] "GET /api/portfolio/summary?_t=1768210606194 HTTP/1.1" 200 - +2026-01-12 17:36:46,512 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:36:46] "GET /api/portfolio/groups?_t=1768210606194 HTTP/1.1" 200 - +2026-01-12 17:36:46,513 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:36:46] "GET /api/portfolio/alerts?_t=1768210606194 HTTP/1.1" 200 - +2026-01-12 17:36:46,512 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:36:46] "GET /api/portfolio/monitors?_t=1768210606194 HTTP/1.1" 200 - +2026-01-12 17:36:47,363 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:36:47] "GET /api/market/types?_t=1768210607347 HTTP/1.1" 200 - +2026-01-12 17:36:47,367 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:36:47] "GET /api/portfolio/summary?_t=1768210607347 HTTP/1.1" 200 - +2026-01-12 17:36:47,368 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:36:47] "GET /api/portfolio/positions?_t=1768210607347 HTTP/1.1" 200 - +2026-01-12 17:36:47,671 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:36:47] "GET /api/portfolio/alerts?_t=1768210607347 HTTP/1.1" 200 - +2026-01-12 17:36:47,671 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:36:47] "GET /api/portfolio/monitors?_t=1768210607347 HTTP/1.1" 200 - +2026-01-12 17:36:47,671 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:36:47] "GET /api/portfolio/groups?_t=1768210607347 HTTP/1.1" 200 - +2026-01-12 17:36:58,649 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:36:58] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 17:37:01,021 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:37:01] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 17:37:02,129 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:37:02] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 17:37:17,345 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:37:17] "GET /api/portfolio/positions?_t=1768210637333 HTTP/1.1" 200 - +2026-01-12 17:37:17,651 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:37:17] "GET /api/portfolio/summary?_t=1768210637333 HTTP/1.1" 200 - +2026-01-12 17:37:18,086 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:37:18] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 17:37:19,191 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:37:19] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 17:37:19,804 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:37:19] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 17:37:33,659 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:37:33] "POST /api/portfolio/positions HTTP/1.1" 200 - +2026-01-12 17:37:34,007 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:37:34] "GET /api/portfolio/groups?_t=1768210653675 HTTP/1.1" 200 - +2026-01-12 17:37:34,008 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:37:34] "GET /api/portfolio/monitors?_t=1768210653675 HTTP/1.1" 200 - +2026-01-12 17:37:34,008 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:37:34] "GET /api/portfolio/alerts?_t=1768210653675 HTTP/1.1" 200 - +2026-01-12 17:37:34,089 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 17:37:34,089 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 17:37:35,193 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (275855s) +2026-01-12 17:37:35,194 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:37:35] "GET /api/portfolio/summary?_t=1768210653675 HTTP/1.1" 200 - +2026-01-12 17:37:35,310 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (275855s) +2026-01-12 17:37:35,310 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:37:35] "GET /api/portfolio/positions?_t=1768210653675 HTTP/1.1" 200 - +2026-01-12 17:37:46,850 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:37:46] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 17:37:47,649 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:37:47] "GET /api/portfolio/positions?_t=1768210667328 HTTP/1.1" 200 - +2026-01-12 17:37:47,649 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:37:47] "GET /api/portfolio/summary?_t=1768210667328 HTTP/1.1" 200 - +2026-01-12 17:37:57,369 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:37:57] "POST /api/portfolio/positions HTTP/1.1" 200 - +2026-01-12 17:37:57,710 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:37:57] "GET /api/portfolio/monitors?_t=1768210677383 HTTP/1.1" 200 - +2026-01-12 17:37:57,711 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:37:57] "GET /api/portfolio/groups?_t=1768210677383 HTTP/1.1" 200 - +2026-01-12 17:37:57,712 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:37:57] "GET /api/portfolio/alerts?_t=1768210677383 HTTP/1.1" 200 - +2026-01-12 17:37:57,903 - app.data_sources.base - WARNING - Warning: AMD data is delayed (275878s) +2026-01-12 17:37:57,904 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:37:57] "GET /api/portfolio/positions?_t=1768210677383 HTTP/1.1" 200 - +2026-01-12 17:37:57,975 - app.data_sources.base - WARNING - Warning: AMD data is delayed (275878s) +2026-01-12 17:37:57,976 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:37:57] "GET /api/portfolio/summary?_t=1768210677383 HTTP/1.1" 200 - +2026-01-12 17:38:10,376 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:38:10] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 17:38:11,154 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:38:11] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 17:38:17,337 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:38:17] "GET /api/portfolio/positions?_t=1768210697324 HTTP/1.1" 200 - +2026-01-12 17:38:17,642 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:38:17] "GET /api/portfolio/summary?_t=1768210697324 HTTP/1.1" 200 - +2026-01-12 17:38:27,221 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:38:27] "POST /api/portfolio/positions HTTP/1.1" 200 - +2026-01-12 17:38:27,554 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (275908s) +2026-01-12 17:38:27,555 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:38:27] "GET /api/portfolio/positions?_t=1768210707236 HTTP/1.1" 200 - +2026-01-12 17:38:27,567 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:38:27] "GET /api/portfolio/monitors?_t=1768210707236 HTTP/1.1" 200 - +2026-01-12 17:38:27,568 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:38:27] "GET /api/portfolio/summary?_t=1768210707236 HTTP/1.1" 200 - +2026-01-12 17:38:27,568 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:38:27] "GET /api/portfolio/alerts?_t=1768210707236 HTTP/1.1" 200 - +2026-01-12 17:38:27,569 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:38:27] "GET /api/portfolio/groups?_t=1768210707236 HTTP/1.1" 200 - +2026-01-12 17:38:40,005 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:38:40] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 17:38:40,265 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:38:40] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 17:38:47,333 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:38:47] "GET /api/portfolio/positions?_t=1768210727323 HTTP/1.1" 200 - +2026-01-12 17:38:47,639 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:38:47] "GET /api/portfolio/summary?_t=1768210727323 HTTP/1.1" 200 - +2026-01-12 17:38:52,842 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:38:52] "POST /api/portfolio/positions HTTP/1.1" 200 - +2026-01-12 17:38:53,186 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:38:53] "GET /api/portfolio/monitors?_t=1768210732858 HTTP/1.1" 200 - +2026-01-12 17:38:53,186 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:38:53] "GET /api/portfolio/alerts?_t=1768210732858 HTTP/1.1" 200 - +2026-01-12 17:38:53,186 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:38:53] "GET /api/portfolio/groups?_t=1768210732858 HTTP/1.1" 200 - +2026-01-12 17:38:53,428 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (275933s) +2026-01-12 17:38:53,429 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:38:53] "GET /api/portfolio/positions?_t=1768210732858 HTTP/1.1" 200 - +2026-01-12 17:38:53,435 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (275933s) +2026-01-12 17:38:53,437 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:38:53] "GET /api/portfolio/summary?_t=1768210732858 HTTP/1.1" 200 - +2026-01-12 17:39:04,447 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:04] "PUT /api/portfolio/positions/3 HTTP/1.1" 200 - +2026-01-12 17:39:04,788 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:04] "GET /api/portfolio/positions?_t=1768210744462 HTTP/1.1" 200 - +2026-01-12 17:39:04,788 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:04] "GET /api/portfolio/alerts?_t=1768210744462 HTTP/1.1" 200 - +2026-01-12 17:39:04,788 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:04] "GET /api/portfolio/monitors?_t=1768210744462 HTTP/1.1" 200 - +2026-01-12 17:39:04,788 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:04] "GET /api/portfolio/summary?_t=1768210744462 HTTP/1.1" 200 - +2026-01-12 17:39:04,792 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:04] "GET /api/portfolio/groups?_t=1768210744462 HTTP/1.1" 200 - +2026-01-12 17:39:10,887 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:10] "PUT /api/portfolio/positions/4 HTTP/1.1" 200 - +2026-01-12 17:39:11,240 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:11] "GET /api/portfolio/positions?_t=1768210750905 HTTP/1.1" 200 - +2026-01-12 17:39:11,241 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:11] "GET /api/portfolio/groups?_t=1768210750905 HTTP/1.1" 200 - +2026-01-12 17:39:11,241 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:11] "GET /api/portfolio/monitors?_t=1768210750905 HTTP/1.1" 200 - +2026-01-12 17:39:11,241 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:11] "GET /api/portfolio/alerts?_t=1768210750905 HTTP/1.1" 200 - +2026-01-12 17:39:11,242 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:11] "GET /api/portfolio/summary?_t=1768210750905 HTTP/1.1" 200 - +2026-01-12 17:39:17,358 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:17] "GET /api/portfolio/positions?_t=1768210757345 HTTP/1.1" 200 - +2026-01-12 17:39:17,662 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:17] "GET /api/portfolio/summary?_t=1768210757345 HTTP/1.1" 200 - +2026-01-12 17:39:18,626 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:18] "PUT /api/portfolio/positions/2 HTTP/1.1" 200 - +2026-01-12 17:39:18,883 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:18] "GET /api/portfolio/positions?_t=1768210758644 HTTP/1.1" 200 - +2026-01-12 17:39:18,978 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:18] "GET /api/portfolio/monitors?_t=1768210758644 HTTP/1.1" 200 - +2026-01-12 17:39:18,978 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:18] "GET /api/portfolio/groups?_t=1768210758644 HTTP/1.1" 200 - +2026-01-12 17:39:18,979 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:18] "GET /api/portfolio/summary?_t=1768210758644 HTTP/1.1" 200 - +2026-01-12 17:39:18,979 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:18] "GET /api/portfolio/alerts?_t=1768210758644 HTTP/1.1" 200 - +2026-01-12 17:39:21,837 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:21] "PUT /api/portfolio/positions/1 HTTP/1.1" 200 - +2026-01-12 17:39:22,187 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:22] "GET /api/portfolio/monitors?_t=1768210761853 HTTP/1.1" 200 - +2026-01-12 17:39:22,189 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:22] "GET /api/portfolio/positions?_t=1768210761853 HTTP/1.1" 200 - +2026-01-12 17:39:22,189 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:22] "GET /api/portfolio/alerts?_t=1768210761853 HTTP/1.1" 200 - +2026-01-12 17:39:22,190 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:22] "GET /api/portfolio/groups?_t=1768210761853 HTTP/1.1" 200 - +2026-01-12 17:39:22,191 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:22] "GET /api/portfolio/summary?_t=1768210761853 HTTP/1.1" 200 - +2026-01-12 17:39:24,671 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:24] "GET /api/market/types?_t=1768210764663 HTTP/1.1" 200 - +2026-01-12 17:39:24,990 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:24] "GET /api/portfolio/positions?_t=1768210764663 HTTP/1.1" 200 - +2026-01-12 17:39:24,991 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:24] "GET /api/portfolio/alerts?_t=1768210764663 HTTP/1.1" 200 - +2026-01-12 17:39:24,992 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:24] "GET /api/portfolio/summary?_t=1768210764663 HTTP/1.1" 200 - +2026-01-12 17:39:24,993 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:24] "GET /api/portfolio/monitors?_t=1768210764663 HTTP/1.1" 200 - +2026-01-12 17:39:24,994 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:24] "GET /api/portfolio/groups?_t=1768210764663 HTTP/1.1" 200 - +2026-01-12 17:39:41,565 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:41] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 17:39:54,694 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:54] "GET /api/portfolio/positions?_t=1768210794676 HTTP/1.1" 200 - +2026-01-12 17:39:54,994 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:54] "GET /api/portfolio/summary?_t=1768210794676 HTTP/1.1" 200 - +2026-01-12 17:39:55,603 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:55] "POST /api/portfolio/positions HTTP/1.1" 200 - +2026-01-12 17:39:55,942 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:55] "GET /api/portfolio/monitors?_t=1768210795618 HTTP/1.1" 200 - +2026-01-12 17:39:55,943 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:55] "GET /api/portfolio/groups?_t=1768210795618 HTTP/1.1" 200 - +2026-01-12 17:39:55,943 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:55] "GET /api/portfolio/alerts?_t=1768210795618 HTTP/1.1" 200 - +2026-01-12 17:39:56,227 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (275996s) +2026-01-12 17:39:56,227 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:56] "GET /api/portfolio/positions?_t=1768210795618 HTTP/1.1" 200 - +2026-01-12 17:39:56,353 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (275996s) +2026-01-12 17:39:56,354 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:39:56] "GET /api/portfolio/summary?_t=1768210795618 HTTP/1.1" 200 - +2026-01-12 17:40:14,533 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:40:14] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 17:40:15,783 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:40:15] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 17:40:16,080 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:40:16] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 17:40:24,990 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:40:24] "GET /api/portfolio/positions?_t=1768210824671 HTTP/1.1" 200 - +2026-01-12 17:40:24,990 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:40:24] "GET /api/portfolio/summary?_t=1768210824671 HTTP/1.1" 200 - +2026-01-12 17:40:26,519 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:40:26] "POST /api/portfolio/positions HTTP/1.1" 200 - +2026-01-12 17:40:26,870 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:40:26] "GET /api/portfolio/alerts?_t=1768210826536 HTTP/1.1" 200 - +2026-01-12 17:40:26,870 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:40:26] "GET /api/portfolio/groups?_t=1768210826536 HTTP/1.1" 200 - +2026-01-12 17:40:26,873 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:40:26] "GET /api/portfolio/monitors?_t=1768210826536 HTTP/1.1" 200 - +2026-01-12 17:40:27,341 - app.data_sources.base - WARNING - Warning: INTC data is delayed (276027s) +2026-01-12 17:40:27,342 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:40:27] "GET /api/portfolio/positions?_t=1768210826536 HTTP/1.1" 200 - +2026-01-12 17:40:27,488 - app.data_sources.base - WARNING - Warning: INTC data is delayed (276027s) +2026-01-12 17:40:27,489 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:40:27] "GET /api/portfolio/summary?_t=1768210826536 HTTP/1.1" 200 - +2026-01-12 17:40:38,423 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:40:38] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 17:40:39,383 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:40:39] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 17:40:51,527 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:40:51] "POST /api/portfolio/positions HTTP/1.1" 200 - +2026-01-12 17:40:51,883 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:40:51] "GET /api/portfolio/groups?_t=1768210851544 HTTP/1.1" 200 - +2026-01-12 17:40:51,884 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:40:51] "GET /api/portfolio/alerts?_t=1768210851544 HTTP/1.1" 200 - +2026-01-12 17:40:51,884 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:40:51] "GET /api/portfolio/monitors?_t=1768210851544 HTTP/1.1" 200 - +2026-01-12 17:40:52,229 - app.data_sources.base - WARNING - Warning: GD data is delayed (276052s) +2026-01-12 17:40:52,229 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:40:52] "GET /api/portfolio/summary?_t=1768210851544 HTTP/1.1" 200 - +2026-01-12 17:40:52,282 - app.data_sources.base - WARNING - Warning: GD data is delayed (276052s) +2026-01-12 17:40:52,282 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:40:52] "GET /api/portfolio/positions?_t=1768210851544 HTTP/1.1" 200 - +2026-01-12 17:40:54,692 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:40:54] "GET /api/portfolio/positions?_t=1768210854676 HTTP/1.1" 200 - +2026-01-12 17:40:54,995 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:40:54] "GET /api/portfolio/summary?_t=1768210854676 HTTP/1.1" 200 - +2026-01-12 17:41:08,315 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:41:08] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 17:41:08,781 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:41:08] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 17:41:20,419 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:41:20] "POST /api/portfolio/positions HTTP/1.1" 200 - +2026-01-12 17:41:20,642 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (276081s) +2026-01-12 17:41:20,642 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:41:20] "GET /api/portfolio/positions?_t=1768210880439 HTTP/1.1" 200 - +2026-01-12 17:41:20,759 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:41:20] "GET /api/portfolio/groups?_t=1768210880439 HTTP/1.1" 200 - +2026-01-12 17:41:20,759 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:41:20] "GET /api/portfolio/monitors?_t=1768210880439 HTTP/1.1" 200 - +2026-01-12 17:41:20,759 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:41:20] "GET /api/portfolio/alerts?_t=1768210880439 HTTP/1.1" 200 - +2026-01-12 17:41:20,760 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:41:20] "GET /api/portfolio/summary?_t=1768210880439 HTTP/1.1" 200 - +2026-01-12 17:41:24,999 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:41:24] "GET /api/portfolio/summary?_t=1768210884680 HTTP/1.1" 200 - +2026-01-12 17:41:25,000 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:41:25] "GET /api/portfolio/positions?_t=1768210884680 HTTP/1.1" 200 - +2026-01-12 17:41:27,145 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:41:27] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 17:41:28,118 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:41:28] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 17:41:47,079 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:41:47] "POST /api/portfolio/positions HTTP/1.1" 200 - +2026-01-12 17:41:47,424 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:41:47] "GET /api/portfolio/monitors?_t=1768210907098 HTTP/1.1" 200 - +2026-01-12 17:41:47,426 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:41:47] "GET /api/portfolio/groups?_t=1768210907098 HTTP/1.1" 200 - +2026-01-12 17:41:47,428 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:41:47] "GET /api/portfolio/alerts?_t=1768210907098 HTTP/1.1" 200 - +2026-01-12 17:41:47,730 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (276108s) +2026-01-12 17:41:47,730 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:41:47] "GET /api/portfolio/summary?_t=1768210907098 HTTP/1.1" 200 - +2026-01-12 17:41:47,769 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (276108s) +2026-01-12 17:41:47,770 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:41:47] "GET /api/portfolio/positions?_t=1768210907098 HTTP/1.1" 200 - +2026-01-12 17:41:54,696 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:41:54] "GET /api/portfolio/positions?_t=1768210914673 HTTP/1.1" 200 - +2026-01-12 17:41:55,000 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:41:55] "GET /api/portfolio/summary?_t=1768210914673 HTTP/1.1" 200 - +2026-01-12 17:42:25,005 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:42:25] "GET /api/portfolio/summary?_t=1768210944676 HTTP/1.1" 200 - +2026-01-12 17:42:25,006 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:42:25] "GET /api/portfolio/positions?_t=1768210944676 HTTP/1.1" 200 - +2026-01-12 17:42:54,696 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:42:54] "GET /api/portfolio/positions?_t=1768210974682 HTTP/1.1" 200 - +2026-01-12 17:42:54,996 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:42:54] "GET /api/portfolio/summary?_t=1768210974682 HTTP/1.1" 200 - +2026-01-12 17:43:25,001 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (276205s) +2026-01-12 17:43:25,001 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:43:25] "GET /api/portfolio/summary?_t=1768211004676 HTTP/1.1" 200 - +2026-01-12 17:43:25,002 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:43:25] "GET /api/portfolio/positions?_t=1768211004676 HTTP/1.1" 200 - +2026-01-12 17:43:54,713 - app.data_sources.base - WARNING - Warning: AMD data is delayed (276235s) +2026-01-12 17:43:54,715 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:43:54] "GET /api/portfolio/positions?_t=1768211034688 HTTP/1.1" 200 - +2026-01-12 17:43:55,011 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:43:55] "GET /api/portfolio/summary?_t=1768211034688 HTTP/1.1" 200 - +2026-01-12 17:44:25,018 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (276265s) +2026-01-12 17:44:25,026 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (276265s) +2026-01-12 17:44:25,034 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (276265s) +2026-01-12 17:44:25,036 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:44:25] "GET /api/portfolio/positions?_t=1768211064683 HTTP/1.1" 200 - +2026-01-12 17:44:25,037 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (276265s) +2026-01-12 17:44:25,037 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:44:25] "GET /api/portfolio/summary?_t=1768211064683 HTTP/1.1" 200 - +2026-01-12 17:44:54,691 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:44:54] "GET /api/portfolio/positions?_t=1768211094677 HTTP/1.1" 200 - +2026-01-12 17:44:54,998 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:44:54] "GET /api/portfolio/summary?_t=1768211094677 HTTP/1.1" 200 - +2026-01-12 17:45:25,003 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:45:25] "GET /api/portfolio/positions?_t=1768211124682 HTTP/1.1" 200 - +2026-01-12 17:45:25,003 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:45:25] "GET /api/portfolio/summary?_t=1768211124682 HTTP/1.1" 200 - +2026-01-12 17:45:54,690 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:45:54] "GET /api/portfolio/positions?_t=1768211154677 HTTP/1.1" 200 - +2026-01-12 17:45:55,012 - app.data_sources.base - WARNING - Warning: GD data is delayed (276355s) +2026-01-12 17:45:55,013 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (276355s) +2026-01-12 17:45:55,018 - app.data_sources.base - WARNING - Warning: INTC data is delayed (276355s) +2026-01-12 17:45:55,018 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:45:55] "GET /api/portfolio/summary?_t=1768211154677 HTTP/1.1" 200 - +2026-01-12 17:46:25,671 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:46:25] "GET /api/portfolio/summary?_t=1768211185342 HTTP/1.1" 200 - +2026-01-12 17:46:25,677 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:46:25] "GET /api/portfolio/positions?_t=1768211185342 HTTP/1.1" 200 - +2026-01-12 17:46:50,439 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:46:50] "GET /api/market/types?_t=1768211210433 HTTP/1.1" 200 - +2026-01-12 17:46:50,716 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:46:50] "GET /api/portfolio/positions?_t=1768211210433 HTTP/1.1" 200 - +2026-01-12 17:46:50,751 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:46:50] "GET /api/portfolio/alerts?_t=1768211210433 HTTP/1.1" 200 - +2026-01-12 17:46:50,751 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:46:50] "GET /api/portfolio/monitors?_t=1768211210433 HTTP/1.1" 200 - +2026-01-12 17:46:50,751 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:46:50] "GET /api/portfolio/groups?_t=1768211210433 HTTP/1.1" 200 - +2026-01-12 17:46:50,752 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:46:50] "GET /api/portfolio/summary?_t=1768211210433 HTTP/1.1" 200 - +2026-01-12 17:47:21,607 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (276442s) +2026-01-12 17:47:21,618 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (276442s) +2026-01-12 17:47:21,623 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (276442s) +2026-01-12 17:47:21,623 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (276442s) +2026-01-12 17:47:21,624 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:47:21] "GET /api/portfolio/positions?_t=1768211241281 HTTP/1.1" 200 - +2026-01-12 17:47:21,624 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:47:21] "GET /api/portfolio/summary?_t=1768211241281 HTTP/1.1" 200 - +2026-01-12 17:47:47,583 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:47:47] "GET /api/market/types?_t=1768211267575 HTTP/1.1" 200 - +2026-01-12 17:47:47,872 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:47:47] "GET /api/portfolio/positions?_t=1768211267575 HTTP/1.1" 200 - +2026-01-12 17:47:47,891 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:47:47] "GET /api/portfolio/monitors?_t=1768211267575 HTTP/1.1" 200 - +2026-01-12 17:47:47,892 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:47:47] "GET /api/portfolio/summary?_t=1768211267575 HTTP/1.1" 200 - +2026-01-12 17:47:47,892 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:47:47] "GET /api/portfolio/groups?_t=1768211267575 HTTP/1.1" 200 - +2026-01-12 17:47:47,898 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:47:47] "GET /api/portfolio/alerts?_t=1768211267575 HTTP/1.1" 200 - +2026-01-12 17:48:18,606 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:48:18] "GET /api/portfolio/positions?_t=1768211298286 HTTP/1.1" 200 - +2026-01-12 17:48:18,607 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:48:18] "GET /api/portfolio/summary?_t=1768211298286 HTTP/1.1" 200 - +2026-01-12 17:48:42,027 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:48:42] "GET /api/market/types?_t=1768211321997 HTTP/1.1" 200 - +2026-01-12 17:48:42,271 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (276522s) +2026-01-12 17:48:42,272 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:48:42] "GET /api/portfolio/positions?_t=1768211321997 HTTP/1.1" 200 - +2026-01-12 17:48:42,345 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:48:42] "GET /api/portfolio/monitors?_t=1768211321997 HTTP/1.1" 200 - +2026-01-12 17:48:42,346 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:48:42] "GET /api/portfolio/alerts?_t=1768211321997 HTTP/1.1" 200 - +2026-01-12 17:48:42,346 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:48:42] "GET /api/portfolio/summary?_t=1768211321997 HTTP/1.1" 200 - +2026-01-12 17:48:42,347 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:48:42] "GET /api/portfolio/groups?_t=1768211321997 HTTP/1.1" 200 - +2026-01-12 17:48:50,227 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:48:50] "GET /api/market/types?_t=1768211329911 HTTP/1.1" 200 - +2026-01-12 17:48:50,232 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:48:50] "GET /api/portfolio/monitors?_t=1768211329911 HTTP/1.1" 200 - +2026-01-12 17:48:50,232 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:48:50] "GET /api/portfolio/alerts?_t=1768211329911 HTTP/1.1" 200 - +2026-01-12 17:48:50,233 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:48:50] "GET /api/portfolio/summary?_t=1768211329911 HTTP/1.1" 200 - +2026-01-12 17:48:50,233 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:48:50] "GET /api/portfolio/groups?_t=1768211329911 HTTP/1.1" 200 - +2026-01-12 17:48:50,235 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:48:50] "GET /api/portfolio/positions?_t=1768211329911 HTTP/1.1" 200 - +2026-01-12 17:48:52,095 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:48:52] "GET /api/strategies?_t=1768211332083 HTTP/1.1" 200 - +2026-01-12 17:48:55,276 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:48:55] "GET /api/market/types?_t=1768211335262 HTTP/1.1" 200 - +2026-01-12 17:48:55,304 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:48:55] "GET /api/portfolio/positions?_t=1768211335262 HTTP/1.1" 200 - +2026-01-12 17:48:55,615 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:48:55] "GET /api/portfolio/summary?_t=1768211335262 HTTP/1.1" 200 - +2026-01-12 17:48:55,618 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:48:55] "GET /api/portfolio/monitors?_t=1768211335262 HTTP/1.1" 200 - +2026-01-12 17:48:55,619 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:48:55] "GET /api/portfolio/alerts?_t=1768211335262 HTTP/1.1" 200 - +2026-01-12 17:48:55,631 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:48:55] "GET /api/portfolio/groups?_t=1768211335262 HTTP/1.1" 200 - +2026-01-12 17:49:06,978 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:49:06] "GET /api/strategies?_t=1768211346965 HTTP/1.1" 200 - +2026-01-12 17:49:10,569 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:49:10] "GET /api/dashboard/summary?_t=1768211350555 HTTP/1.1" 200 - +2026-01-12 17:49:10,668 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:49:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768211350555 HTTP/1.1" 200 - +2026-01-12 17:49:10,878 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:49:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768211350555 HTTP/1.1" 200 - +2026-01-12 17:49:12,905 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:49:12] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 17:49:13,213 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:49:13] "GET /api/user/info?_t=1768211352880 HTTP/1.1" 200 - +2026-01-12 17:49:13,214 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:49:13] "GET /api/market/config?_t=1768211352880 HTTP/1.1" 200 - +2026-01-12 17:49:13,337 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 17:49:13,345 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 17:49:13,345 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 17:49:13,346 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 17:49:13,540 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:49:13] "GET /api/market/types?_t=1768211353226 HTTP/1.1" 200 - +2026-01-12 17:49:13,542 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:49:13] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 17:49:13,766 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (276554s) +2026-01-12 17:49:15,588 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:49:15] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-12 17:49:16,495 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:49:16] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-12 17:49:40,034 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:49:40] "GET /api/market/types?_t=1768211380020 HTTP/1.1" 200 - +2026-01-12 17:49:40,038 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:49:40] "GET /api/portfolio/positions?_t=1768211380020 HTTP/1.1" 200 - +2026-01-12 17:49:40,355 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:49:40] "GET /api/portfolio/alerts?_t=1768211380020 HTTP/1.1" 200 - +2026-01-12 17:49:40,355 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:49:40] "GET /api/portfolio/monitors?_t=1768211380020 HTTP/1.1" 200 - +2026-01-12 17:49:40,357 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:49:40] "GET /api/portfolio/summary?_t=1768211380020 HTTP/1.1" 200 - +2026-01-12 17:49:40,358 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:49:40] "GET /api/portfolio/groups?_t=1768211380020 HTTP/1.1" 200 - +2026-01-12 17:49:49,783 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:49:49] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768211389458 HTTP/1.1" 200 - +2026-01-12 17:49:49,783 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:49:49] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768211389458 HTTP/1.1" 200 - +2026-01-12 17:49:49,786 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:49:49] "GET /api/dashboard/summary?_t=1768211389458 HTTP/1.1" 200 - +2026-01-12 17:49:51,005 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:49:51] "GET /api/market/types?_t=1768211390790 HTTP/1.1" 200 - +2026-01-12 17:49:51,364 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (276591s) +2026-01-12 17:49:51,365 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:49:51] "GET /api/portfolio/alerts?_t=1768211390790 HTTP/1.1" 200 - +2026-01-12 17:49:51,374 - app.data_sources.base - WARNING - Warning: AMD data is delayed (276591s) +2026-01-12 17:49:51,375 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:49:51] "GET /api/portfolio/monitors?_t=1768211390790 HTTP/1.1" 200 - +2026-01-12 17:49:51,377 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (276591s) +2026-01-12 17:49:51,389 - app.data_sources.base - WARNING - Warning: AMD data is delayed (276591s) +2026-01-12 17:49:51,390 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (276591s) +2026-01-12 17:49:51,396 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (276591s) +2026-01-12 17:49:51,396 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:49:51] "GET /api/portfolio/groups?_t=1768211390790 HTTP/1.1" 200 - +2026-01-12 17:49:51,397 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:49:51] "GET /api/portfolio/summary?_t=1768211390790 HTTP/1.1" 200 - +2026-01-12 17:49:51,397 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:49:51] "GET /api/portfolio/positions?_t=1768211390790 HTTP/1.1" 200 - +2026-01-12 17:50:21,100 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:50:21] "GET /api/portfolio/positions?_t=1768211420790 HTTP/1.1" 200 - +2026-01-12 17:50:21,101 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:50:21] "GET /api/portfolio/summary?_t=1768211420790 HTTP/1.1" 200 - +2026-01-12 17:50:50,822 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:50:50] "GET /api/portfolio/positions?_t=1768211450801 HTTP/1.1" 200 - +2026-01-12 17:50:51,120 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:50:51] "GET /api/portfolio/summary?_t=1768211450801 HTTP/1.1" 200 - +2026-01-12 17:51:21,124 - app.data_sources.base - WARNING - Warning: INTC data is delayed (276681s) +2026-01-12 17:51:21,130 - app.data_sources.base - WARNING - Warning: GD data is delayed (276681s) +2026-01-12 17:51:21,137 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (276681s) +2026-01-12 17:51:21,138 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:51:21] "GET /api/portfolio/positions?_t=1768211480792 HTTP/1.1" 200 - +2026-01-12 17:51:21,139 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:51:21] "GET /api/portfolio/summary?_t=1768211480792 HTTP/1.1" 200 - +2026-01-12 17:51:50,808 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:51:50] "GET /api/portfolio/positions?_t=1768211510798 HTTP/1.1" 200 - +2026-01-12 17:51:51,119 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:51:51] "GET /api/portfolio/summary?_t=1768211510798 HTTP/1.1" 200 - +2026-01-12 17:52:21,114 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:52:21] "GET /api/portfolio/summary?_t=1768211540789 HTTP/1.1" 200 - +2026-01-12 17:52:21,115 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:52:21] "GET /api/portfolio/positions?_t=1768211540789 HTTP/1.1" 200 - +2026-01-12 17:52:50,817 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (276771s) +2026-01-12 17:52:50,817 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (276771s) +2026-01-12 17:52:50,817 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:52:50] "GET /api/portfolio/positions?_t=1768211570795 HTTP/1.1" 200 - +2026-01-12 17:52:51,112 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:52:51] "GET /api/portfolio/summary?_t=1768211570795 HTTP/1.1" 200 - +2026-01-12 17:53:21,107 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:53:21] "GET /api/portfolio/positions?_t=1768211600796 HTTP/1.1" 200 - +2026-01-12 17:53:21,108 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:53:21] "GET /api/portfolio/summary?_t=1768211600796 HTTP/1.1" 200 - +2026-01-12 17:53:30,871 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:53:30] "GET /api/market/types?_t=1768211610863 HTTP/1.1" 200 - +2026-01-12 17:53:31,117 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:53:31] "GET /api/portfolio/positions?_t=1768211610863 HTTP/1.1" 200 - +2026-01-12 17:53:31,185 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:53:31] "GET /api/portfolio/summary?_t=1768211610863 HTTP/1.1" 200 - +2026-01-12 17:53:31,185 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:53:31] "GET /api/portfolio/groups?_t=1768211610863 HTTP/1.1" 200 - +2026-01-12 17:53:31,185 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:53:31] "GET /api/portfolio/monitors?_t=1768211610863 HTTP/1.1" 200 - +2026-01-12 17:53:31,190 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:53:31] "GET /api/portfolio/alerts?_t=1768211610863 HTTP/1.1" 200 - +2026-01-12 17:53:31,258 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:53:31] "GET /api/market/types?_t=1768211611251 HTTP/1.1" 200 - +2026-01-12 17:53:31,490 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:53:31] "GET /api/portfolio/positions?_t=1768211611251 HTTP/1.1" 200 - +2026-01-12 17:53:31,572 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:53:31] "GET /api/portfolio/monitors?_t=1768211611251 HTTP/1.1" 200 - +2026-01-12 17:53:31,573 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:53:31] "GET /api/portfolio/summary?_t=1768211611251 HTTP/1.1" 200 - +2026-01-12 17:53:31,573 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:53:31] "GET /api/portfolio/alerts?_t=1768211611251 HTTP/1.1" 200 - +2026-01-12 17:53:31,573 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:53:31] "GET /api/portfolio/groups?_t=1768211611251 HTTP/1.1" 200 - +2026-01-12 17:53:31,656 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:53:31] "GET /api/market/types?_t=1768211611648 HTTP/1.1" 200 - +2026-01-12 17:53:31,881 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:53:31] "GET /api/portfolio/positions?_t=1768211611648 HTTP/1.1" 200 - +2026-01-12 17:53:31,978 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:53:31] "GET /api/portfolio/summary?_t=1768211611648 HTTP/1.1" 200 - +2026-01-12 17:53:31,979 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:53:31] "GET /api/portfolio/monitors?_t=1768211611648 HTTP/1.1" 200 - +2026-01-12 17:53:31,980 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:53:31] "GET /api/portfolio/alerts?_t=1768211611648 HTTP/1.1" 200 - +2026-01-12 17:53:31,980 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:53:31] "GET /api/portfolio/groups?_t=1768211611648 HTTP/1.1" 200 - +2026-01-12 17:53:32,827 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:53:32] "GET /api/market/types?_t=1768211612816 HTTP/1.1" 200 - +2026-01-12 17:53:32,831 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:53:32] "GET /api/portfolio/positions?_t=1768211612816 HTTP/1.1" 200 - +2026-01-12 17:53:32,831 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:53:32] "GET /api/portfolio/summary?_t=1768211612816 HTTP/1.1" 200 - +2026-01-12 17:53:33,137 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:53:33] "GET /api/portfolio/alerts?_t=1768211612816 HTTP/1.1" 200 - +2026-01-12 17:53:33,137 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:53:33] "GET /api/portfolio/monitors?_t=1768211612816 HTTP/1.1" 200 - +2026-01-12 17:53:33,138 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:53:33] "GET /api/portfolio/groups?_t=1768211612816 HTTP/1.1" 200 - +2026-01-12 17:53:58,911 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (276839s) +2026-01-12 17:53:58,912 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (276839s) +2026-01-12 17:53:58,912 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:53:58] "GET /api/portfolio/summary?_t=1768211638585 HTTP/1.1" 200 - +2026-01-12 17:53:58,913 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:53:58] "GET /api/portfolio/positions?_t=1768211638585 HTTP/1.1" 200 - +2026-01-12 17:54:02,819 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:54:02] "GET /api/portfolio/positions?_t=1768211642809 HTTP/1.1" 200 - +2026-01-12 17:54:03,125 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:54:03] "GET /api/portfolio/summary?_t=1768211642809 HTTP/1.1" 200 - +2026-01-12 17:54:16,513 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:54:16] "GET /api/market/types?_t=1768211656504 HTTP/1.1" 200 - +2026-01-12 17:54:16,529 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:54:16] "GET /api/portfolio/positions?_t=1768211656504 HTTP/1.1" 200 - +2026-01-12 17:54:16,757 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:54:16] "GET /api/portfolio/summary?_t=1768211656504 HTTP/1.1" 200 - +2026-01-12 17:54:16,829 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:54:16] "GET /api/portfolio/monitors?_t=1768211656504 HTTP/1.1" 200 - +2026-01-12 17:54:16,830 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:54:16] "GET /api/portfolio/groups?_t=1768211656504 HTTP/1.1" 200 - +2026-01-12 17:54:16,830 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:54:16] "GET /api/portfolio/alerts?_t=1768211656504 HTTP/1.1" 200 - +2026-01-12 17:54:46,822 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:54:46] "GET /api/portfolio/positions?_t=1768211686502 HTTP/1.1" 200 - +2026-01-12 17:54:46,822 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:54:46] "GET /api/portfolio/summary?_t=1768211686502 HTTP/1.1" 200 - +2026-01-12 17:55:16,530 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (276917s) +2026-01-12 17:55:16,543 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (276917s) +2026-01-12 17:55:16,550 - app.data_sources.base - WARNING - Warning: AMD data is delayed (276917s) +2026-01-12 17:55:16,551 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:55:16] "GET /api/portfolio/positions?_t=1768211716497 HTTP/1.1" 200 - +2026-01-12 17:55:16,832 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:55:16] "GET /api/portfolio/summary?_t=1768211716497 HTTP/1.1" 200 - +2026-01-12 17:55:46,824 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:55:46] "GET /api/portfolio/positions?_t=1768211746499 HTTP/1.1" 200 - +2026-01-12 17:55:46,825 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:55:46] "GET /api/portfolio/summary?_t=1768211746499 HTTP/1.1" 200 - +2026-01-12 17:56:04,054 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:56:04] "GET /api/market/types?_t=1768211764046 HTTP/1.1" 200 - +2026-01-12 17:56:04,331 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:56:04] "GET /api/portfolio/positions?_t=1768211764046 HTTP/1.1" 200 - +2026-01-12 17:56:04,366 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:56:04] "GET /api/portfolio/monitors?_t=1768211764046 HTTP/1.1" 200 - +2026-01-12 17:56:04,368 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:56:04] "GET /api/portfolio/summary?_t=1768211764046 HTTP/1.1" 200 - +2026-01-12 17:56:04,373 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:56:04] "GET /api/portfolio/groups?_t=1768211764046 HTTP/1.1" 200 - +2026-01-12 17:56:04,375 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:56:04] "GET /api/portfolio/alerts?_t=1768211764046 HTTP/1.1" 200 - +2026-01-12 17:56:19,886 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:56:19] "GET /api/market/types?_t=1768211779877 HTTP/1.1" 200 - +2026-01-12 17:56:20,089 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:56:20] "GET /api/portfolio/positions?_t=1768211779877 HTTP/1.1" 200 - +2026-01-12 17:56:20,155 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:56:20] "GET /api/portfolio/summary?_t=1768211779877 HTTP/1.1" 200 - +2026-01-12 17:56:20,202 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:56:20] "GET /api/portfolio/alerts?_t=1768211779877 HTTP/1.1" 200 - +2026-01-12 17:56:20,202 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:56:20] "GET /api/portfolio/monitors?_t=1768211779877 HTTP/1.1" 200 - +2026-01-12 17:56:20,203 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:56:20] "GET /api/portfolio/groups?_t=1768211779877 HTTP/1.1" 200 - +2026-01-12 17:56:41,568 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:56:41] "GET /api/market/types?_t=1768211801561 HTTP/1.1" 200 - +2026-01-12 17:56:41,797 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:56:41] "GET /api/portfolio/positions?_t=1768211801561 HTTP/1.1" 200 - +2026-01-12 17:56:41,849 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:56:41] "GET /api/portfolio/summary?_t=1768211801561 HTTP/1.1" 200 - +2026-01-12 17:56:41,877 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:56:41] "GET /api/portfolio/monitors?_t=1768211801561 HTTP/1.1" 200 - +2026-01-12 17:56:41,878 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:56:41] "GET /api/portfolio/groups?_t=1768211801561 HTTP/1.1" 200 - +2026-01-12 17:56:41,878 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:56:41] "GET /api/portfolio/alerts?_t=1768211801561 HTTP/1.1" 200 - +2026-01-12 17:56:54,700 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:56:54] "PUT /api/portfolio/positions/5 HTTP/1.1" 200 - +2026-01-12 17:56:54,963 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:56:54] "GET /api/portfolio/positions?_t=1768211814727 HTTP/1.1" 200 - +2026-01-12 17:56:55,059 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:56:55] "GET /api/portfolio/alerts?_t=1768211814727 HTTP/1.1" 200 - +2026-01-12 17:56:55,060 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:56:55] "GET /api/portfolio/summary?_t=1768211814727 HTTP/1.1" 200 - +2026-01-12 17:56:55,060 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:56:55] "GET /api/portfolio/groups?_t=1768211814727 HTTP/1.1" 200 - +2026-01-12 17:56:55,063 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:56:55] "GET /api/portfolio/monitors?_t=1768211814727 HTTP/1.1" 200 - +2026-01-12 17:56:59,125 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:56:59] "PUT /api/portfolio/positions/7 HTTP/1.1" 200 - +2026-01-12 17:56:59,465 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:56:59] "GET /api/portfolio/positions?_t=1768211819147 HTTP/1.1" 200 - +2026-01-12 17:56:59,466 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:56:59] "GET /api/portfolio/monitors?_t=1768211819147 HTTP/1.1" 200 - +2026-01-12 17:56:59,466 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:56:59] "GET /api/portfolio/groups?_t=1768211819147 HTTP/1.1" 200 - +2026-01-12 17:56:59,467 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:56:59] "GET /api/portfolio/summary?_t=1768211819147 HTTP/1.1" 200 - +2026-01-12 17:56:59,467 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:56:59] "GET /api/portfolio/alerts?_t=1768211819147 HTTP/1.1" 200 - +2026-01-12 17:57:02,973 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:57:02] "PUT /api/portfolio/positions/6 HTTP/1.1" 200 - +2026-01-12 17:57:03,327 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:57:03] "GET /api/portfolio/positions?_t=1768211822993 HTTP/1.1" 200 - +2026-01-12 17:57:03,328 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:57:03] "GET /api/portfolio/monitors?_t=1768211822993 HTTP/1.1" 200 - +2026-01-12 17:57:03,329 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:57:03] "GET /api/portfolio/groups?_t=1768211822993 HTTP/1.1" 200 - +2026-01-12 17:57:03,329 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:57:03] "GET /api/portfolio/summary?_t=1768211822993 HTTP/1.1" 200 - +2026-01-12 17:57:03,330 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:57:03] "GET /api/portfolio/alerts?_t=1768211822993 HTTP/1.1" 200 - +2026-01-12 17:57:07,672 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:57:07] "PUT /api/portfolio/positions/8 HTTP/1.1" 200 - +2026-01-12 17:57:08,020 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:57:08] "GET /api/portfolio/monitors?_t=1768211827693 HTTP/1.1" 200 - +2026-01-12 17:57:08,022 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:57:08] "GET /api/portfolio/positions?_t=1768211827693 HTTP/1.1" 200 - +2026-01-12 17:57:08,022 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:57:08] "GET /api/portfolio/summary?_t=1768211827693 HTTP/1.1" 200 - +2026-01-12 17:57:08,022 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:57:08] "GET /api/portfolio/alerts?_t=1768211827693 HTTP/1.1" 200 - +2026-01-12 17:57:08,023 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:57:08] "GET /api/portfolio/groups?_t=1768211827693 HTTP/1.1" 200 - +2026-01-12 17:57:11,307 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:57:11] "PUT /api/portfolio/positions/9 HTTP/1.1" 200 - +2026-01-12 17:57:11,666 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:57:11] "GET /api/portfolio/positions?_t=1768211831329 HTTP/1.1" 200 - +2026-01-12 17:57:11,666 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:57:11] "GET /api/portfolio/monitors?_t=1768211831329 HTTP/1.1" 200 - +2026-01-12 17:57:11,667 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:57:11] "GET /api/portfolio/alerts?_t=1768211831329 HTTP/1.1" 200 - +2026-01-12 17:57:11,667 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:57:11] "GET /api/portfolio/groups?_t=1768211831329 HTTP/1.1" 200 - +2026-01-12 17:57:11,668 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:57:11] "GET /api/portfolio/summary?_t=1768211831329 HTTP/1.1" 200 - +2026-01-12 17:57:11,895 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:57:11] "GET /api/portfolio/positions?_t=1768211831575 HTTP/1.1" 200 - +2026-01-12 17:57:11,990 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:57:11] "GET /api/portfolio/summary?_t=1768211831575 HTTP/1.1" 200 - +2026-01-12 17:57:22,403 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:57:22] "GET /api/market/types?_t=1768211842394 HTTP/1.1" 200 - +2026-01-12 17:57:22,414 - app.data_sources.base - WARNING - Warning: INTC data is delayed (277042s) +2026-01-12 17:57:22,420 - app.data_sources.base - WARNING - Warning: GD data is delayed (277042s) +2026-01-12 17:57:22,426 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (277042s) +2026-01-12 17:57:22,427 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:57:22] "GET /api/portfolio/positions?_t=1768211842394 HTTP/1.1" 200 - +2026-01-12 17:57:22,707 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:57:22] "GET /api/portfolio/summary?_t=1768211842394 HTTP/1.1" 200 - +2026-01-12 17:57:22,715 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:57:22] "GET /api/portfolio/monitors?_t=1768211842394 HTTP/1.1" 200 - +2026-01-12 17:57:22,716 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:57:22] "GET /api/portfolio/alerts?_t=1768211842394 HTTP/1.1" 200 - +2026-01-12 17:57:22,716 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:57:22] "GET /api/portfolio/groups?_t=1768211842394 HTTP/1.1" 200 - +2026-01-12 17:57:52,714 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:57:52] "GET /api/portfolio/positions?_t=1768211872395 HTTP/1.1" 200 - +2026-01-12 17:57:52,714 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:57:52] "GET /api/portfolio/summary?_t=1768211872395 HTTP/1.1" 200 - +2026-01-12 17:58:22,395 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:58:22] "GET /api/portfolio/positions?_t=1768211902386 HTTP/1.1" 200 - +2026-01-12 17:58:22,720 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (277103s) +2026-01-12 17:58:22,723 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (277103s) +2026-01-12 17:58:22,724 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:58:22] "GET /api/portfolio/summary?_t=1768211902386 HTTP/1.1" 200 - +2026-01-12 17:58:52,720 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:58:52] "GET /api/portfolio/positions?_t=1768211932398 HTTP/1.1" 200 - +2026-01-12 17:58:52,720 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:58:52] "GET /api/portfolio/summary?_t=1768211932398 HTTP/1.1" 200 - +2026-01-12 17:59:08,597 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:59:08] "GET /api/market/types?_t=1768211948590 HTTP/1.1" 200 - +2026-01-12 17:59:08,872 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:59:08] "GET /api/portfolio/positions?_t=1768211948590 HTTP/1.1" 200 - +2026-01-12 17:59:08,908 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:59:08] "GET /api/portfolio/groups?_t=1768211948590 HTTP/1.1" 200 - +2026-01-12 17:59:08,911 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:59:08] "GET /api/portfolio/summary?_t=1768211948590 HTTP/1.1" 200 - +2026-01-12 17:59:08,913 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:59:08] "GET /api/portfolio/alerts?_t=1768211948590 HTTP/1.1" 200 - +2026-01-12 17:59:08,914 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:59:08] "GET /api/portfolio/monitors?_t=1768211948590 HTTP/1.1" 200 - +2026-01-12 17:59:33,422 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:59:33] "GET /api/market/types?_t=1768211973108 HTTP/1.1" 200 - +2026-01-12 17:59:33,428 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:59:33] "GET /api/portfolio/alerts?_t=1768211973108 HTTP/1.1" 200 - +2026-01-12 17:59:33,428 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:59:33] "GET /api/portfolio/monitors?_t=1768211973108 HTTP/1.1" 200 - +2026-01-12 17:59:33,430 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:59:33] "GET /api/portfolio/groups?_t=1768211973108 HTTP/1.1" 200 - +2026-01-12 17:59:33,436 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (277173s) +2026-01-12 17:59:33,442 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (277173s) +2026-01-12 17:59:33,442 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:59:33] "GET /api/portfolio/positions?_t=1768211973108 HTTP/1.1" 200 - +2026-01-12 17:59:33,443 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 17:59:33] "GET /api/portfolio/summary?_t=1768211973108 HTTP/1.1" 200 - +2026-01-12 18:00:03,440 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:00:03] "GET /api/portfolio/positions?_t=1768212003120 HTTP/1.1" 200 - +2026-01-12 18:00:03,441 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:00:03] "GET /api/portfolio/summary?_t=1768212003120 HTTP/1.1" 200 - +2026-01-12 18:00:32,764 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:00:32] "GET /api/market/types?_t=1768212032755 HTTP/1.1" 200 - +2026-01-12 18:00:33,033 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:00:33] "GET /api/portfolio/positions?_t=1768212032755 HTTP/1.1" 200 - +2026-01-12 18:00:33,086 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:00:33] "GET /api/portfolio/monitors?_t=1768212032755 HTTP/1.1" 200 - +2026-01-12 18:00:33,086 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:00:33] "GET /api/portfolio/alerts?_t=1768212032755 HTTP/1.1" 200 - +2026-01-12 18:00:33,087 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:00:33] "GET /api/portfolio/summary?_t=1768212032755 HTTP/1.1" 200 - +2026-01-12 18:00:33,089 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:00:33] "GET /api/portfolio/groups?_t=1768212032755 HTTP/1.1" 200 - +2026-01-12 18:01:03,098 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (277263s) +2026-01-12 18:01:03,104 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (277263s) +2026-01-12 18:01:03,108 - app.data_sources.base - WARNING - Warning: AMD data is delayed (277263s) +2026-01-12 18:01:03,116 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:01:03] "GET /api/portfolio/positions?_t=1768212062765 HTTP/1.1" 200 - +2026-01-12 18:01:03,118 - app.data_sources.base - WARNING - Warning: AMD data is delayed (277263s) +2026-01-12 18:01:03,118 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:01:03] "GET /api/portfolio/summary?_t=1768212062765 HTTP/1.1" 200 - +2026-01-12 18:01:08,201 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:01:08] "GET /api/market/types?_t=1768212068192 HTTP/1.1" 200 - +2026-01-12 18:01:08,203 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:01:08] "GET /api/portfolio/positions?_t=1768212068192 HTTP/1.1" 200 - +2026-01-12 18:01:08,525 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:01:08] "GET /api/portfolio/monitors?_t=1768212068192 HTTP/1.1" 200 - +2026-01-12 18:01:08,526 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:01:08] "GET /api/portfolio/alerts?_t=1768212068192 HTTP/1.1" 200 - +2026-01-12 18:01:08,526 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:01:08] "GET /api/portfolio/groups?_t=1768212068192 HTTP/1.1" 200 - +2026-01-12 18:01:08,542 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:01:08] "GET /api/portfolio/summary?_t=1768212068192 HTTP/1.1" 200 - +2026-01-12 18:01:38,503 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:01:38] "GET /api/portfolio/positions?_t=1768212098183 HTTP/1.1" 200 - +2026-01-12 18:01:38,503 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:01:38] "GET /api/portfolio/summary?_t=1768212098183 HTTP/1.1" 200 - +2026-01-12 18:02:08,202 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:02:08] "GET /api/portfolio/positions?_t=1768212128191 HTTP/1.1" 200 - +2026-01-12 18:02:08,507 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:02:08] "GET /api/portfolio/summary?_t=1768212128191 HTTP/1.1" 200 - +2026-01-12 18:02:38,506 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:02:38] "GET /api/portfolio/positions?_t=1768212158188 HTTP/1.1" 200 - +2026-01-12 18:02:38,507 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:02:38] "GET /api/portfolio/summary?_t=1768212158188 HTTP/1.1" 200 - +2026-01-12 18:03:08,192 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:03:08] "GET /api/portfolio/positions?_t=1768212188183 HTTP/1.1" 200 - +2026-01-12 18:03:08,512 - app.data_sources.base - WARNING - Warning: INTC data is delayed (277389s) +2026-01-12 18:03:08,513 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (277389s) +2026-01-12 18:03:08,513 - app.data_sources.base - WARNING - Warning: GD data is delayed (277389s) +2026-01-12 18:03:08,514 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:03:08] "GET /api/portfolio/summary?_t=1768212188183 HTTP/1.1" 200 - +2026-01-12 18:03:38,505 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:03:38] "GET /api/portfolio/positions?_t=1768212218187 HTTP/1.1" 200 - +2026-01-12 18:03:38,505 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:03:38] "GET /api/portfolio/summary?_t=1768212218187 HTTP/1.1" 200 - +2026-01-12 18:04:08,199 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:04:08] "GET /api/portfolio/positions?_t=1768212248188 HTTP/1.1" 200 - +2026-01-12 18:04:08,512 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (277449s) +2026-01-12 18:04:08,513 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (277449s) +2026-01-12 18:04:08,513 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:04:08] "GET /api/portfolio/summary?_t=1768212248188 HTTP/1.1" 200 - +2026-01-12 18:04:38,500 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:04:38] "GET /api/portfolio/positions?_t=1768212278187 HTTP/1.1" 200 - +2026-01-12 18:04:38,500 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:04:38] "GET /api/portfolio/summary?_t=1768212278187 HTTP/1.1" 200 - +2026-01-12 18:05:08,200 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:05:08] "GET /api/portfolio/positions?_t=1768212308189 HTTP/1.1" 200 - +2026-01-12 18:05:08,501 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:05:08] "GET /api/portfolio/summary?_t=1768212308189 HTTP/1.1" 200 - +2026-01-12 18:05:38,518 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (277539s) +2026-01-12 18:05:38,519 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:05:38] "GET /api/portfolio/positions?_t=1768212338187 HTTP/1.1" 200 - +2026-01-12 18:05:38,519 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:05:38] "GET /api/portfolio/summary?_t=1768212338187 HTTP/1.1" 200 - +2026-01-12 18:06:08,192 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:06:08] "GET /api/portfolio/positions?_t=1768212368182 HTTP/1.1" 200 - +2026-01-12 18:06:08,496 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:06:08] "GET /api/portfolio/summary?_t=1768212368182 HTTP/1.1" 200 - +2026-01-12 18:06:38,510 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:06:38] "GET /api/portfolio/summary?_t=1768212398188 HTTP/1.1" 200 - +2026-01-12 18:06:38,511 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:06:38] "GET /api/portfolio/positions?_t=1768212398188 HTTP/1.1" 200 - +2026-01-12 18:07:08,212 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (277628s) +2026-01-12 18:07:08,221 - app.data_sources.base - WARNING - Warning: AMD data is delayed (277628s) +2026-01-12 18:07:08,223 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (277628s) +2026-01-12 18:07:08,223 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:07:08] "GET /api/portfolio/positions?_t=1768212428192 HTTP/1.1" 200 - +2026-01-12 18:07:08,506 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:07:08] "GET /api/portfolio/summary?_t=1768212428192 HTTP/1.1" 200 - +2026-01-12 18:07:38,506 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:07:38] "GET /api/portfolio/positions?_t=1768212458189 HTTP/1.1" 200 - +2026-01-12 18:07:38,506 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:07:38] "GET /api/portfolio/summary?_t=1768212458189 HTTP/1.1" 200 - +2026-01-12 18:07:55,580 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:07:55] "GET /api/market/types?_t=1768212475572 HTTP/1.1" 200 - +2026-01-12 18:07:55,850 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:07:55] "GET /api/portfolio/positions?_t=1768212475572 HTTP/1.1" 200 - +2026-01-12 18:07:55,910 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:07:55] "GET /api/portfolio/summary?_t=1768212475572 HTTP/1.1" 200 - +2026-01-12 18:07:55,910 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:07:55] "GET /api/portfolio/alerts?_t=1768212475572 HTTP/1.1" 200 - +2026-01-12 18:07:55,910 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:07:55] "GET /api/portfolio/monitors?_t=1768212475572 HTTP/1.1" 200 - +2026-01-12 18:07:55,911 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:07:55] "GET /api/portfolio/groups?_t=1768212475572 HTTP/1.1" 200 - +2026-01-12 18:08:25,923 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (277706s) +2026-01-12 18:08:25,934 - app.data_sources.base - WARNING - Warning: GD data is delayed (277706s) +2026-01-12 18:08:25,941 - app.data_sources.base - WARNING - Warning: INTC data is delayed (277706s) +2026-01-12 18:08:25,942 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:08:25] "GET /api/portfolio/positions?_t=1768212505586 HTTP/1.1" 200 - +2026-01-12 18:08:25,951 - app.data_sources.base - WARNING - Warning: INTC data is delayed (277706s) +2026-01-12 18:08:25,955 - app.data_sources.base - WARNING - Warning: GD data is delayed (277706s) +2026-01-12 18:08:25,956 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:08:25] "GET /api/portfolio/summary?_t=1768212505586 HTTP/1.1" 200 - +2026-01-12 18:08:55,601 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:08:55] "GET /api/portfolio/positions?_t=1768212535591 HTTP/1.1" 200 - +2026-01-12 18:08:55,907 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:08:55] "GET /api/portfolio/summary?_t=1768212535591 HTTP/1.1" 200 - +2026-01-12 18:09:25,920 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (277766s) +2026-01-12 18:09:25,925 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (277766s) +2026-01-12 18:09:25,932 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (277766s) +2026-01-12 18:09:25,933 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:09:25] "GET /api/portfolio/summary?_t=1768212565595 HTTP/1.1" 200 - +2026-01-12 18:09:25,939 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (277766s) +2026-01-12 18:09:25,939 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:09:25] "GET /api/portfolio/positions?_t=1768212565595 HTTP/1.1" 200 - +2026-01-12 18:09:55,597 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:09:55] "GET /api/portfolio/positions?_t=1768212595585 HTTP/1.1" 200 - +2026-01-12 18:09:55,912 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:09:55] "GET /api/portfolio/summary?_t=1768212595585 HTTP/1.1" 200 - +2026-01-12 18:10:25,898 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:10:25] "GET /api/portfolio/summary?_t=1768212625581 HTTP/1.1" 200 - +2026-01-12 18:10:25,899 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:10:25] "GET /api/portfolio/positions?_t=1768212625581 HTTP/1.1" 200 - +2026-01-12 18:10:55,607 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (277856s) +2026-01-12 18:10:55,608 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:10:55] "GET /api/portfolio/positions?_t=1768212655591 HTTP/1.1" 200 - +2026-01-12 18:10:55,913 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:10:55] "GET /api/portfolio/summary?_t=1768212655591 HTTP/1.1" 200 - +2026-01-12 18:11:25,914 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:11:25] "GET /api/portfolio/positions?_t=1768212685596 HTTP/1.1" 200 - +2026-01-12 18:11:25,914 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:11:25] "GET /api/portfolio/summary?_t=1768212685596 HTTP/1.1" 200 - +2026-01-12 18:11:55,603 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:11:55] "GET /api/portfolio/positions?_t=1768212715593 HTTP/1.1" 200 - +2026-01-12 18:11:55,910 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:11:55] "GET /api/portfolio/summary?_t=1768212715593 HTTP/1.1" 200 - +2026-01-12 18:12:25,898 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:12:25] "GET /api/portfolio/positions?_t=1768212745580 HTTP/1.1" 200 - +2026-01-12 18:12:25,899 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:12:25] "GET /api/portfolio/summary?_t=1768212745580 HTTP/1.1" 200 - +2026-01-12 18:12:55,404 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:12:55] "GET /api/market/types?_t=1768212775395 HTTP/1.1" 200 - +2026-01-12 18:12:55,731 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (277976s) +2026-01-12 18:12:55,733 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:12:55] "GET /api/portfolio/monitors?_t=1768212775395 HTTP/1.1" 200 - +2026-01-12 18:12:55,739 - app.data_sources.base - WARNING - Warning: AMD data is delayed (277976s) +2026-01-12 18:12:55,744 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (277976s) +2026-01-12 18:12:55,745 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:12:55] "GET /api/portfolio/positions?_t=1768212775395 HTTP/1.1" 200 - +2026-01-12 18:12:55,751 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:12:55] "GET /api/portfolio/alerts?_t=1768212775395 HTTP/1.1" 200 - +2026-01-12 18:12:55,753 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (277976s) +2026-01-12 18:12:55,754 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:12:55] "GET /api/portfolio/groups?_t=1768212775395 HTTP/1.1" 200 - +2026-01-12 18:12:55,755 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:12:55] "GET /api/portfolio/summary?_t=1768212775395 HTTP/1.1" 200 - +2026-01-12 18:13:07,524 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:13:07] "GET /api/market/types?_t=1768212787503 HTTP/1.1" 200 - +2026-01-12 18:13:07,528 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:13:07] "GET /api/portfolio/positions?_t=1768212787503 HTTP/1.1" 200 - +2026-01-12 18:13:07,537 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:13:07] "GET /api/portfolio/summary?_t=1768212787503 HTTP/1.1" 200 - +2026-01-12 18:13:07,839 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:13:07] "GET /api/portfolio/monitors?_t=1768212787503 HTTP/1.1" 200 - +2026-01-12 18:13:07,840 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:13:07] "GET /api/portfolio/alerts?_t=1768212787503 HTTP/1.1" 200 - +2026-01-12 18:13:07,841 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:13:07] "GET /api/portfolio/groups?_t=1768212787503 HTTP/1.1" 200 - +2026-01-12 18:13:17,917 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:13:17] "GET /api/market/types?_t=1768212797907 HTTP/1.1" 200 - +2026-01-12 18:13:17,921 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:13:17] "GET /api/portfolio/positions?_t=1768212797907 HTTP/1.1" 200 - +2026-01-12 18:13:17,922 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:13:17] "GET /api/portfolio/summary?_t=1768212797907 HTTP/1.1" 200 - +2026-01-12 18:13:18,225 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:13:18] "GET /api/portfolio/monitors?_t=1768212797907 HTTP/1.1" 200 - +2026-01-12 18:13:18,225 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:13:18] "GET /api/portfolio/alerts?_t=1768212797907 HTTP/1.1" 200 - +2026-01-12 18:13:18,225 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:13:18] "GET /api/portfolio/groups?_t=1768212797907 HTTP/1.1" 200 - +2026-01-12 18:13:48,219 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:13:48] "GET /api/portfolio/positions?_t=1768212827901 HTTP/1.1" 200 - +2026-01-12 18:13:48,219 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:13:48] "GET /api/portfolio/summary?_t=1768212827901 HTTP/1.1" 200 - +2026-01-12 18:14:17,929 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (278058s) +2026-01-12 18:14:17,929 - app.data_sources.base - WARNING - Warning: GD data is delayed (278058s) +2026-01-12 18:14:17,934 - app.data_sources.base - WARNING - Warning: INTC data is delayed (278058s) +2026-01-12 18:14:17,934 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:14:17] "GET /api/portfolio/positions?_t=1768212857908 HTTP/1.1" 200 - +2026-01-12 18:14:18,228 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:14:18] "GET /api/portfolio/summary?_t=1768212857908 HTTP/1.1" 200 - +2026-01-12 18:14:48,218 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:14:48] "GET /api/portfolio/positions?_t=1768212887898 HTTP/1.1" 200 - +2026-01-12 18:14:48,219 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:14:48] "GET /api/portfolio/summary?_t=1768212887898 HTTP/1.1" 200 - +2026-01-12 18:15:17,915 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:15:17] "GET /api/portfolio/positions?_t=1768212917907 HTTP/1.1" 200 - +2026-01-12 18:15:18,231 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (278118s) +2026-01-12 18:15:18,236 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (278118s) +2026-01-12 18:15:18,236 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:15:18] "GET /api/portfolio/summary?_t=1768212917907 HTTP/1.1" 200 - +2026-01-12 18:15:48,225 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:15:48] "GET /api/portfolio/positions?_t=1768212947906 HTTP/1.1" 200 - +2026-01-12 18:15:48,227 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:15:48] "GET /api/portfolio/summary?_t=1768212947906 HTTP/1.1" 200 - +2026-01-12 18:15:50,763 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:15:50] "GET /api/market/types?_t=1768212950754 HTTP/1.1" 200 - +2026-01-12 18:15:51,038 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:15:51] "GET /api/portfolio/positions?_t=1768212950754 HTTP/1.1" 200 - +2026-01-12 18:15:51,073 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:15:51] "GET /api/portfolio/groups?_t=1768212950754 HTTP/1.1" 200 - +2026-01-12 18:15:51,074 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:15:51] "GET /api/portfolio/summary?_t=1768212950754 HTTP/1.1" 200 - +2026-01-12 18:15:51,074 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:15:51] "GET /api/portfolio/alerts?_t=1768212950754 HTTP/1.1" 200 - +2026-01-12 18:15:51,075 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:15:51] "GET /api/portfolio/monitors?_t=1768212950754 HTTP/1.1" 200 - +2026-01-12 18:16:02,216 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:16:02] "GET /api/market/types?_t=1768212962207 HTTP/1.1" 200 - +2026-01-12 18:16:02,442 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:16:02] "GET /api/portfolio/positions?_t=1768212962207 HTTP/1.1" 200 - +2026-01-12 18:16:02,492 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:16:02] "GET /api/portfolio/summary?_t=1768212962207 HTTP/1.1" 200 - +2026-01-12 18:16:02,524 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:16:02] "GET /api/portfolio/monitors?_t=1768212962207 HTTP/1.1" 200 - +2026-01-12 18:16:02,525 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:16:02] "GET /api/portfolio/alerts?_t=1768212962207 HTTP/1.1" 200 - +2026-01-12 18:16:02,525 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:16:02] "GET /api/portfolio/groups?_t=1768212962207 HTTP/1.1" 200 - +2026-01-12 18:16:32,549 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (278193s) +2026-01-12 18:16:32,550 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:16:32] "GET /api/portfolio/positions?_t=1768212992224 HTTP/1.1" 200 - +2026-01-12 18:16:32,550 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:16:32] "GET /api/portfolio/summary?_t=1768212992224 HTTP/1.1" 200 - +2026-01-12 18:16:36,753 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:16:36] "GET /api/market/types?_t=1768212996746 HTTP/1.1" 200 - +2026-01-12 18:16:37,024 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:16:37] "GET /api/portfolio/positions?_t=1768212996746 HTTP/1.1" 200 - +2026-01-12 18:16:37,076 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:16:37] "GET /api/portfolio/monitors?_t=1768212996746 HTTP/1.1" 200 - +2026-01-12 18:16:37,077 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:16:37] "GET /api/portfolio/summary?_t=1768212996746 HTTP/1.1" 200 - +2026-01-12 18:16:37,077 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:16:37] "GET /api/portfolio/alerts?_t=1768212996746 HTTP/1.1" 200 - +2026-01-12 18:16:37,078 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:16:37] "GET /api/portfolio/groups?_t=1768212996746 HTTP/1.1" 200 - +2026-01-12 18:17:07,525 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:17:07] "GET /api/portfolio/positions?_t=1768213026763 HTTP/1.1" 200 - +2026-01-12 18:17:07,525 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:17:07] "GET /api/portfolio/summary?_t=1768213026763 HTTP/1.1" 200 - +2026-01-12 18:17:07,609 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:17:07] "GET /api/market/types?_t=1768213027601 HTTP/1.1" 200 - +2026-01-12 18:17:07,844 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:17:07] "GET /api/portfolio/positions?_t=1768213027601 HTTP/1.1" 200 - +2026-01-12 18:17:07,927 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:17:07] "GET /api/portfolio/monitors?_t=1768213027601 HTTP/1.1" 200 - +2026-01-12 18:17:07,927 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:17:07] "GET /api/portfolio/alerts?_t=1768213027601 HTTP/1.1" 200 - +2026-01-12 18:17:07,928 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:17:07] "GET /api/portfolio/summary?_t=1768213027601 HTTP/1.1" 200 - +2026-01-12 18:17:07,928 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:17:07] "GET /api/portfolio/groups?_t=1768213027601 HTTP/1.1" 200 - +2026-01-12 18:17:19,535 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:17:19] "GET /api/market/types?_t=1768213039525 HTTP/1.1" 200 - +2026-01-12 18:17:19,743 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:17:19] "GET /api/portfolio/positions?_t=1768213039525 HTTP/1.1" 200 - +2026-01-12 18:17:19,807 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:17:19] "GET /api/portfolio/summary?_t=1768213039525 HTTP/1.1" 200 - +2026-01-12 18:17:19,841 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:17:19] "GET /api/portfolio/monitors?_t=1768213039525 HTTP/1.1" 200 - +2026-01-12 18:17:19,841 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:17:19] "GET /api/portfolio/groups?_t=1768213039525 HTTP/1.1" 200 - +2026-01-12 18:17:19,841 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:17:19] "GET /api/portfolio/alerts?_t=1768213039525 HTTP/1.1" 200 - +2026-01-12 18:17:49,857 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:17:49] "GET /api/portfolio/positions?_t=1768213069533 HTTP/1.1" 200 - +2026-01-12 18:17:49,858 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:17:49] "GET /api/portfolio/summary?_t=1768213069533 HTTP/1.1" 200 - +2026-01-12 18:18:00,194 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:18:00] "GET /api/market/types?_t=1768213080179 HTTP/1.1" 200 - +2026-01-12 18:18:00,197 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:18:00] "GET /api/portfolio/positions?_t=1768213080179 HTTP/1.1" 200 - +2026-01-12 18:18:00,511 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:18:00] "GET /api/portfolio/monitors?_t=1768213080180 HTTP/1.1" 200 - +2026-01-12 18:18:00,512 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:18:00] "GET /api/portfolio/alerts?_t=1768213080180 HTTP/1.1" 200 - +2026-01-12 18:18:00,512 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:18:00] "GET /api/portfolio/summary?_t=1768213080179 HTTP/1.1" 200 - +2026-01-12 18:18:00,513 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:18:00] "GET /api/portfolio/groups?_t=1768213080180 HTTP/1.1" 200 - +2026-01-12 18:18:30,509 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:18:30] "GET /api/portfolio/positions?_t=1768213110184 HTTP/1.1" 200 - +2026-01-12 18:18:30,509 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:18:30] "GET /api/portfolio/summary?_t=1768213110184 HTTP/1.1" 200 - +2026-01-12 18:19:00,198 - app.data_sources.base - WARNING - Warning: AMD data is delayed (278340s) +2026-01-12 18:19:00,213 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (278340s) +2026-01-12 18:19:00,215 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (278340s) +2026-01-12 18:19:00,215 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:19:00] "GET /api/portfolio/positions?_t=1768213140179 HTTP/1.1" 200 - +2026-01-12 18:19:00,498 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:19:00] "GET /api/portfolio/summary?_t=1768213140179 HTTP/1.1" 200 - +2026-01-12 18:19:30,499 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:19:30] "GET /api/portfolio/positions?_t=1768213170176 HTTP/1.1" 200 - +2026-01-12 18:19:30,500 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:19:30] "GET /api/portfolio/summary?_t=1768213170176 HTTP/1.1" 200 - +2026-01-12 18:20:00,203 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (278400s) +2026-01-12 18:20:00,208 - app.data_sources.base - WARNING - Warning: GD data is delayed (278400s) +2026-01-12 18:20:00,208 - app.data_sources.base - WARNING - Warning: INTC data is delayed (278400s) +2026-01-12 18:20:00,209 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:20:00] "GET /api/portfolio/positions?_t=1768213200183 HTTP/1.1" 200 - +2026-01-12 18:20:00,497 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:20:00] "GET /api/portfolio/summary?_t=1768213200183 HTTP/1.1" 200 - +2026-01-12 18:20:30,499 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:20:30] "GET /api/portfolio/positions?_t=1768213230189 HTTP/1.1" 200 - +2026-01-12 18:20:30,499 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:20:30] "GET /api/portfolio/summary?_t=1768213230189 HTTP/1.1" 200 - +2026-01-12 18:21:00,209 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (278460s) +2026-01-12 18:21:00,212 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (278460s) +2026-01-12 18:21:00,213 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:21:00] "GET /api/portfolio/positions?_t=1768213260185 HTTP/1.1" 200 - +2026-01-12 18:21:00,498 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:21:00] "GET /api/portfolio/summary?_t=1768213260185 HTTP/1.1" 200 - +2026-01-12 18:21:30,494 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:21:30] "GET /api/portfolio/positions?_t=1768213290178 HTTP/1.1" 200 - +2026-01-12 18:21:30,495 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:21:30] "GET /api/portfolio/summary?_t=1768213290178 HTTP/1.1" 200 - +2026-01-12 18:22:00,184 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:22:00] "GET /api/portfolio/positions?_t=1768213320176 HTTP/1.1" 200 - +2026-01-12 18:22:00,496 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (278520s) +2026-01-12 18:22:00,496 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:22:00] "GET /api/portfolio/summary?_t=1768213320176 HTTP/1.1" 200 - +2026-01-12 18:22:30,503 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:22:30] "GET /api/portfolio/positions?_t=1768213350187 HTTP/1.1" 200 - +2026-01-12 18:22:30,504 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:22:30] "GET /api/portfolio/summary?_t=1768213350187 HTTP/1.1" 200 - +2026-01-12 18:23:00,340 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:23:00] "GET /api/portfolio/positions?_t=1768213380178 HTTP/1.1" 200 - +2026-01-12 18:23:00,492 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:23:00] "GET /api/portfolio/summary?_t=1768213380178 HTTP/1.1" 200 - +2026-01-12 18:23:01,387 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:23:01] "GET /api/market/types?_t=1768213381376 HTTP/1.1" 200 - +2026-01-12 18:23:01,392 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:23:01] "GET /api/portfolio/summary?_t=1768213381376 HTTP/1.1" 200 - +2026-01-12 18:23:01,392 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:23:01] "GET /api/portfolio/positions?_t=1768213381376 HTTP/1.1" 200 - +2026-01-12 18:23:01,393 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:23:01] "GET /api/portfolio/monitors?_t=1768213381376 HTTP/1.1" 200 - +2026-01-12 18:23:01,690 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:23:01] "GET /api/portfolio/groups?_t=1768213381376 HTTP/1.1" 200 - +2026-01-12 18:23:01,691 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:23:01] "GET /api/portfolio/alerts?_t=1768213381376 HTTP/1.1" 200 - +2026-01-12 18:23:01,705 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:23:01] "GET /api/strategies/notifications?limit=50&_t=1768213381376 HTTP/1.1" 200 - +2026-01-12 18:23:03,673 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:23:03] "GET /api/strategies/notifications?limit=50&_t=1768213383650 HTTP/1.1" 200 - +2026-01-12 18:23:08,449 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:23:08] "POST /api/strategies/notifications/read HTTP/1.1" 404 - +2026-01-12 18:23:09,359 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:23:09] "GET /api/strategies/notifications?limit=50&_t=1768213389341 HTTP/1.1" 200 - +2026-01-12 18:23:31,683 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:23:31] "GET /api/strategies/notifications?limit=50&_t=1768213411363 HTTP/1.1" 200 - +2026-01-12 18:23:31,691 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:23:31] "GET /api/portfolio/summary?_t=1768213411377 HTTP/1.1" 200 - +2026-01-12 18:23:31,692 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:23:31] "GET /api/portfolio/positions?_t=1768213411377 HTTP/1.1" 200 - +2026-01-12 18:24:01,366 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:24:01] "GET /api/strategies/notifications?limit=50&_t=1768213441358 HTTP/1.1" 200 - +2026-01-12 18:24:01,692 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:24:01] "GET /api/portfolio/positions?_t=1768213441373 HTTP/1.1" 200 - +2026-01-12 18:24:01,693 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:24:01] "GET /api/portfolio/summary?_t=1768213441373 HTTP/1.1" 200 - +2026-01-12 18:24:31,371 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:24:31] "GET /api/strategies/notifications?limit=50&_t=1768213471363 HTTP/1.1" 200 - +2026-01-12 18:24:31,712 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (278672s) +2026-01-12 18:24:31,713 - app.data_sources.base - WARNING - Warning: AMD data is delayed (278672s) +2026-01-12 18:24:31,713 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (278672s) +2026-01-12 18:24:31,714 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:24:31] "GET /api/portfolio/positions?_t=1768213471377 HTTP/1.1" 200 - +2026-01-12 18:24:31,715 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:24:31] "GET /api/portfolio/summary?_t=1768213471377 HTTP/1.1" 200 - +2026-01-12 18:25:01,368 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:25:01] "GET /api/strategies/notifications?limit=50&_t=1768213501358 HTTP/1.1" 200 - +2026-01-12 18:25:01,690 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:25:01] "GET /api/portfolio/positions?_t=1768213501370 HTTP/1.1" 200 - +2026-01-12 18:25:01,691 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:25:01] "GET /api/portfolio/summary?_t=1768213501370 HTTP/1.1" 200 - +2026-01-12 18:25:09,830 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:25:09] "GET /api/market/types?_t=1768213509819 HTTP/1.1" 200 - +2026-01-12 18:25:09,836 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:25:09] "GET /api/portfolio/positions?_t=1768213509819 HTTP/1.1" 200 - +2026-01-12 18:25:09,838 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:25:09] "GET /api/portfolio/summary?_t=1768213509819 HTTP/1.1" 200 - +2026-01-12 18:25:10,151 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:25:10] "GET /api/portfolio/groups?_t=1768213509819 HTTP/1.1" 200 - +2026-01-12 18:25:10,152 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:25:10] "GET /api/portfolio/alerts?_t=1768213509819 HTTP/1.1" 200 - +2026-01-12 18:25:10,152 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:25:10] "GET /api/portfolio/monitors?_t=1768213509819 HTTP/1.1" 200 - +2026-01-12 18:25:10,154 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:25:10] "GET /api/strategies/notifications?limit=50&_t=1768213509819 HTTP/1.1" 200 - +2026-01-12 18:25:13,254 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:25:13] "GET /api/strategies/notifications?limit=50&_t=1768213513234 HTTP/1.1" 200 - +2026-01-12 18:25:17,036 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:25:17] "POST /api/strategies/notifications/read HTTP/1.1" 404 - +2026-01-12 18:25:18,280 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:25:18] "GET /api/strategies/notifications?limit=50&_t=1768213518262 HTTP/1.1" 200 - +2026-01-12 18:25:19,424 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:25:19] "POST /api/strategies/notifications/read HTTP/1.1" 404 - +2026-01-12 18:25:20,055 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:25:20] "GET /api/strategies/notifications?limit=50&_t=1768213520038 HTTP/1.1" 200 - +2026-01-12 18:25:21,931 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:25:21] "POST /api/strategies/notifications/read HTTP/1.1" 404 - +2026-01-12 18:25:23,476 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:25:23] "GET /api/strategies/notifications?limit=50&_t=1768213523458 HTTP/1.1" 200 - +2026-01-12 18:25:28,635 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:25:28] "POST /api/strategies/notifications/read HTTP/1.1" 404 - +2026-01-12 18:25:29,335 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:25:29] "GET /api/strategies/notifications?limit=50&_t=1768213529317 HTTP/1.1" 200 - +2026-01-12 18:25:30,405 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:25:30] "POST /api/strategies/notifications/read HTTP/1.1" 404 - +2026-01-12 18:25:30,988 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:25:30] "GET /api/strategies/notifications?limit=50&_t=1768213530970 HTTP/1.1" 200 - +2026-01-12 18:25:33,418 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:25:33] "POST /api/strategies/notifications/read HTTP/1.1" 404 - +2026-01-12 18:25:34,159 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:25:34] "GET /api/strategies/notifications?limit=50&_t=1768213534141 HTTP/1.1" 200 - +2026-01-12 18:25:40,106 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:25:40] "GET /api/strategies/notifications?limit=50&_t=1768213539790 HTTP/1.1" 200 - +2026-01-12 18:25:40,130 - app.data_sources.base - WARNING - Warning: GD data is delayed (278740s) +2026-01-12 18:25:40,131 - app.data_sources.base - WARNING - Warning: INTC data is delayed (278740s) +2026-01-12 18:25:40,139 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (278740s) +2026-01-12 18:25:40,140 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:25:40] "GET /api/portfolio/positions?_t=1768213539802 HTTP/1.1" 200 - +2026-01-12 18:25:40,141 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:25:40] "GET /api/portfolio/summary?_t=1768213539802 HTTP/1.1" 200 - +2026-01-12 18:25:50,176 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:25:50] "GET /api/market/types?_t=1768213550163 HTTP/1.1" 200 - +2026-01-12 18:25:50,179 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:25:50] "GET /api/portfolio/positions?_t=1768213550163 HTTP/1.1" 200 - +2026-01-12 18:25:50,504 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:25:50] "GET /api/portfolio/summary?_t=1768213550163 HTTP/1.1" 200 - +2026-01-12 18:25:50,553 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:25:50] "GET /api/portfolio/monitors?_t=1768213550163 HTTP/1.1" 200 - +2026-01-12 18:25:50,560 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:25:50] "GET /api/portfolio/groups?_t=1768213550163 HTTP/1.1" 200 - +2026-01-12 18:25:50,595 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:25:50] "GET /api/portfolio/alerts?_t=1768213550163 HTTP/1.1" 200 - +2026-01-12 18:25:50,615 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:25:50] "GET /api/strategies/notifications?limit=50&_t=1768213550163 HTTP/1.1" 200 - +2026-01-12 18:26:17,833 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:26:17] "GET /api/strategies/notifications?limit=50&_t=1768213577826 HTTP/1.1" 200 - +2026-01-12 18:26:18,095 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:26:18] "GET /api/strategies/notifications?limit=50&_t=1768213578089 HTTP/1.1" 200 - +2026-01-12 18:26:20,188 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (278780s) +2026-01-12 18:26:20,189 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (278780s) +2026-01-12 18:26:20,190 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:26:20] "GET /api/portfolio/positions?_t=1768213580160 HTTP/1.1" 200 - +2026-01-12 18:26:20,474 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:26:20] "GET /api/portfolio/summary?_t=1768213580160 HTTP/1.1" 200 - +2026-01-12 18:26:48,410 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:26:48] "GET /api/strategies/notifications?limit=50&_t=1768213608097 HTTP/1.1" 200 - +2026-01-12 18:26:50,168 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:26:50] "GET /api/portfolio/positions?_t=1768213610160 HTTP/1.1" 200 - +2026-01-12 18:26:50,476 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:26:50] "GET /api/portfolio/summary?_t=1768213610160 HTTP/1.1" 200 - +2026-01-12 18:27:18,414 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:27:18] "GET /api/strategies/notifications?limit=50&_t=1768213638096 HTTP/1.1" 200 - +2026-01-12 18:27:20,179 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (278840s) +2026-01-12 18:27:20,180 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:27:20] "GET /api/portfolio/positions?_t=1768213640163 HTTP/1.1" 200 - +2026-01-12 18:27:20,479 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:27:20] "GET /api/portfolio/summary?_t=1768213640163 HTTP/1.1" 200 - +2026-01-12 18:27:47,360 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-12 18:27:47,360 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-12 18:27:47,369 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-12 18:27:47,369 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-12 18:27:47,383 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 18:27:47,402 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 18:27:47,715 - app.services.strategy - INFO - Found 0 running strategies: [] +2026-01-12 18:27:47,716 - app - INFO - No running strategies to restore. +2026-01-12 18:27:47,739 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-12 18:27:47,739 - werkzeug - INFO - Press CTRL+C to quit +2026-01-12 18:27:48,421 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:27:48] "GET /api/strategies/notifications?limit=50&_t=1768213668101 HTTP/1.1" 200 - +2026-01-12 18:27:50,258 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 18:27:50,259 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 18:27:50,259 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 18:27:50,259 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 18:27:50,259 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 18:27:50,260 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 18:27:50,260 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 18:27:50,261 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 18:27:50,261 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 18:27:50,965 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (278871s) +2026-01-12 18:27:50,993 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (278871s) +2026-01-12 18:27:51,000 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (278871s) +2026-01-12 18:27:51,075 - app.data_sources.base - WARNING - Warning: INTC data is delayed (278871s) +2026-01-12 18:27:51,083 - app.data_sources.base - WARNING - Warning: AMD data is delayed (278871s) +2026-01-12 18:27:51,089 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (278871s) +2026-01-12 18:27:51,095 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (278871s) +2026-01-12 18:27:51,135 - app.data_sources.base - WARNING - Warning: AMD data is delayed (278871s) +2026-01-12 18:27:51,140 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (278871s) +2026-01-12 18:27:51,179 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (278871s) +2026-01-12 18:27:51,187 - app.data_sources.base - WARNING - Warning: GD data is delayed (278871s) +2026-01-12 18:27:51,222 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (278871s) +2026-01-12 18:27:51,233 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (278871s) +2026-01-12 18:27:51,234 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:27:51] "GET /api/portfolio/summary?_t=1768213670151 HTTP/1.1" 200 - +2026-01-12 18:27:51,273 - app.data_sources.base - WARNING - Warning: GD data is delayed (278871s) +2026-01-12 18:27:51,274 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:27:51] "GET /api/portfolio/positions?_t=1768213670151 HTTP/1.1" 200 - +2026-01-12 18:27:51,846 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:27:51] "GET /api/market/types?_t=1768213671839 HTTP/1.1" 200 - +2026-01-12 18:27:51,849 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:27:51] "GET /api/portfolio/positions?_t=1768213671839 HTTP/1.1" 200 - +2026-01-12 18:27:52,158 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:27:52] "GET /api/portfolio/monitors?_t=1768213671839 HTTP/1.1" 200 - +2026-01-12 18:27:52,158 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:27:52] "GET /api/portfolio/groups?_t=1768213671839 HTTP/1.1" 200 - +2026-01-12 18:27:52,159 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:27:52] "GET /api/portfolio/summary?_t=1768213671839 HTTP/1.1" 200 - +2026-01-12 18:27:52,159 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:27:52] "GET /api/portfolio/alerts?_t=1768213671839 HTTP/1.1" 200 - +2026-01-12 18:27:52,162 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:27:52] "GET /api/strategies/notifications?limit=50&_t=1768213671839 HTTP/1.1" 200 - +2026-01-12 18:27:53,334 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:27:53] "GET /api/strategies/notifications?limit=50&_t=1768213673315 HTTP/1.1" 200 - +2026-01-12 18:27:54,593 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:27:54] "POST /api/strategies/notifications/read HTTP/1.1" 200 - +2026-01-12 18:27:55,417 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:27:55] "GET /api/strategies/notifications?limit=50&_t=1768213675399 HTTP/1.1" 200 - +2026-01-12 18:27:56,957 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:27:56] "POST /api/strategies/notifications/read HTTP/1.1" 200 - +2026-01-12 18:27:57,702 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:27:57] "GET /api/strategies/notifications?limit=50&_t=1768213677682 HTTP/1.1" 200 - +2026-01-12 18:27:58,956 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:27:58] "POST /api/strategies/notifications/read HTTP/1.1" 200 - +2026-01-12 18:27:59,478 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:27:59] "GET /api/strategies/notifications?limit=50&_t=1768213679461 HTTP/1.1" 200 - +2026-01-12 18:28:22,136 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:28:22] "GET /api/strategies/notifications?limit=50&_t=1768213701822 HTTP/1.1" 200 - +2026-01-12 18:28:22,153 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:28:22] "GET /api/portfolio/positions?_t=1768213701836 HTTP/1.1" 200 - +2026-01-12 18:28:22,154 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:28:22] "GET /api/portfolio/summary?_t=1768213701836 HTTP/1.1" 200 - +2026-01-12 18:28:51,836 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:28:51] "GET /api/strategies/notifications?limit=50&_t=1768213731829 HTTP/1.1" 200 - +2026-01-12 18:28:52,165 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:28:52] "GET /api/portfolio/positions?_t=1768213731843 HTTP/1.1" 200 - +2026-01-12 18:28:52,165 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:28:52] "GET /api/portfolio/summary?_t=1768213731843 HTTP/1.1" 200 - +2026-01-12 18:29:21,838 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:29:21] "GET /api/strategies/notifications?limit=50&_t=1768213761830 HTTP/1.1" 200 - +2026-01-12 18:29:22,157 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:29:22] "GET /api/portfolio/positions?_t=1768213761844 HTTP/1.1" 200 - +2026-01-12 18:29:22,158 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:29:22] "GET /api/portfolio/summary?_t=1768213761844 HTTP/1.1" 200 - +2026-01-12 18:29:51,835 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:29:51] "GET /api/strategies/notifications?limit=50&_t=1768213791828 HTTP/1.1" 200 - +2026-01-12 18:29:52,158 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:29:52] "GET /api/portfolio/positions?_t=1768213791842 HTTP/1.1" 200 - +2026-01-12 18:29:52,159 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:29:52] "GET /api/portfolio/summary?_t=1768213791842 HTTP/1.1" 200 - +2026-01-12 18:30:21,832 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:30:21] "GET /api/strategies/notifications?limit=50&_t=1768213821823 HTTP/1.1" 200 - +2026-01-12 18:30:22,158 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:30:22] "GET /api/portfolio/positions?_t=1768213821837 HTTP/1.1" 200 - +2026-01-12 18:30:22,159 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:30:22] "GET /api/portfolio/summary?_t=1768213821837 HTTP/1.1" 200 - +2026-01-12 18:30:51,836 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:30:51] "GET /api/strategies/notifications?limit=50&_t=1768213851826 HTTP/1.1" 200 - +2026-01-12 18:30:52,157 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:30:52] "GET /api/portfolio/positions?_t=1768213851840 HTTP/1.1" 200 - +2026-01-12 18:30:52,158 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:30:52] "GET /api/portfolio/summary?_t=1768213851840 HTTP/1.1" 200 - +2026-01-12 18:31:21,830 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:31:21] "GET /api/strategies/notifications?limit=50&_t=1768213881820 HTTP/1.1" 200 - +2026-01-12 18:31:22,154 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:31:22] "GET /api/portfolio/summary?_t=1768213881834 HTTP/1.1" 200 - +2026-01-12 18:31:22,154 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:31:22] "GET /api/portfolio/positions?_t=1768213881834 HTTP/1.1" 200 - +2026-01-12 18:31:51,825 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:31:51] "GET /api/strategies/notifications?limit=50&_t=1768213911817 HTTP/1.1" 200 - +2026-01-12 18:31:52,152 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:31:52] "GET /api/portfolio/positions?_t=1768213911831 HTTP/1.1" 200 - +2026-01-12 18:31:52,152 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:31:52] "GET /api/portfolio/summary?_t=1768213911831 HTTP/1.1" 200 - +2026-01-12 18:32:21,828 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:32:21] "GET /api/strategies/notifications?limit=50&_t=1768213941820 HTTP/1.1" 200 - +2026-01-12 18:32:22,156 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:32:22] "GET /api/portfolio/positions?_t=1768213941834 HTTP/1.1" 200 - +2026-01-12 18:32:22,156 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:32:22] "GET /api/portfolio/summary?_t=1768213941834 HTTP/1.1" 200 - +2026-01-12 18:32:52,288 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:32:52] "GET /api/strategies/notifications?limit=50&_t=1768213972281 HTTP/1.1" 200 - +2026-01-12 18:32:52,628 - app.data_sources.base - WARNING - Warning: AMD data is delayed (279173s) +2026-01-12 18:32:52,630 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (279173s) +2026-01-12 18:32:52,643 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (279173s) +2026-01-12 18:32:52,644 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (279173s) +2026-01-12 18:32:52,644 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (279173s) +2026-01-12 18:32:52,647 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (279173s) +2026-01-12 18:32:52,649 - app.data_sources.base - WARNING - Warning: INTC data is delayed (279173s) +2026-01-12 18:32:52,656 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (279173s) +2026-01-12 18:32:52,661 - app.data_sources.base - WARNING - Warning: GD data is delayed (279173s) +2026-01-12 18:32:52,661 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:32:52] "GET /api/portfolio/positions?_t=1768213972295 HTTP/1.1" 200 - +2026-01-12 18:32:52,662 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:32:52] "GET /api/portfolio/summary?_t=1768213972296 HTTP/1.1" 200 - +2026-01-12 18:33:19,333 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:33:19] "GET /api/strategies/notifications?limit=50&_t=1768213999320 HTTP/1.1" 200 - +2026-01-12 18:33:20,795 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:33:20] "GET /api/market/types?_t=1768214000784 HTTP/1.1" 200 - +2026-01-12 18:33:20,799 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:33:20] "GET /api/portfolio/positions?_t=1768214000784 HTTP/1.1" 200 - +2026-01-12 18:33:20,799 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:33:20] "GET /api/portfolio/summary?_t=1768214000784 HTTP/1.1" 200 - +2026-01-12 18:33:20,812 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:33:20] "GET /api/portfolio/monitors?_t=1768214000784 HTTP/1.1" 200 - +2026-01-12 18:33:21,105 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:33:21] "GET /api/portfolio/groups?_t=1768214000784 HTTP/1.1" 200 - +2026-01-12 18:33:21,105 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:33:21] "GET /api/portfolio/alerts?_t=1768214000784 HTTP/1.1" 200 - +2026-01-12 18:33:21,113 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:33:21] "GET /api/strategies/notifications?limit=50&_t=1768214000784 HTTP/1.1" 200 - +2026-01-12 18:33:23,259 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:33:23] "GET /api/strategies/notifications?limit=50&_t=1768214003238 HTTP/1.1" 200 - +2026-01-12 18:33:24,172 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:33:24] "POST /api/strategies/notifications/read HTTP/1.1" 200 - +2026-01-12 18:33:29,202 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:33:29] "GET /api/strategies/notifications?limit=50&_t=1768214009182 HTTP/1.1" 200 - +2026-01-12 18:33:32,793 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:33:32] "POST /api/strategies/notifications/read HTTP/1.1" 200 - +2026-01-12 18:33:43,523 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:33:43] "GET /api/strategies/notifications?limit=50&_t=1768214023504 HTTP/1.1" 200 - +2026-01-12 18:33:45,109 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:33:45] "POST /api/strategies/notifications/read HTTP/1.1" 200 - +2026-01-12 18:33:49,057 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:33:49] "GET /api/strategies/notifications?limit=50&_t=1768214029036 HTTP/1.1" 200 - +2026-01-12 18:33:50,323 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:33:50] "POST /api/strategies/notifications/read-all HTTP/1.1" 200 - +2026-01-12 18:33:50,708 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:33:50] "GET /api/strategies/notifications?limit=50&_t=1768214030700 HTTP/1.1" 200 - +2026-01-12 18:33:51,031 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:33:51] "GET /api/portfolio/positions?_t=1768214030715 HTTP/1.1" 200 - +2026-01-12 18:33:51,031 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:33:51] "GET /api/portfolio/summary?_t=1768214030715 HTTP/1.1" 200 - +2026-01-12 18:34:20,710 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:34:20] "GET /api/strategies/notifications?limit=50&_t=1768214060701 HTTP/1.1" 200 - +2026-01-12 18:34:21,038 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:34:21] "GET /api/portfolio/positions?_t=1768214060724 HTTP/1.1" 200 - +2026-01-12 18:34:21,039 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:34:21] "GET /api/portfolio/summary?_t=1768214060724 HTTP/1.1" 200 - +2026-01-12 18:34:50,714 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:34:50] "GET /api/strategies/notifications?limit=50&_t=1768214090707 HTTP/1.1" 200 - +2026-01-12 18:34:51,059 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:34:51] "GET /api/portfolio/summary?_t=1768214090736 HTTP/1.1" 200 - +2026-01-12 18:34:51,067 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:34:51] "GET /api/portfolio/positions?_t=1768214090736 HTTP/1.1" 200 - +2026-01-12 18:35:05,544 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:35:05] "POST /api/portfolio/monitors HTTP/1.1" 200 - +2026-01-12 18:35:05,895 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:35:05] "GET /api/portfolio/monitors?_t=1768214105575 HTTP/1.1" 200 - +2026-01-12 18:35:11,155 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:35:11] "PUT /api/portfolio/monitors/1 HTTP/1.1" 200 - +2026-01-12 18:35:11,503 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:35:11] "GET /api/portfolio/monitors?_t=1768214111185 HTTP/1.1" 200 - +2026-01-12 18:35:15,123 - app.data_sources.base - WARNING - Warning: AMD data is delayed (279315s) +2026-01-12 18:35:15,245 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (279315s) +2026-01-12 18:35:15,427 - app.data_sources.base - WARNING - Warning: GD data is delayed (279315s) +2026-01-12 18:35:15,536 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (279316s) +2026-01-12 18:35:15,690 - app.data_sources.base - WARNING - Warning: INTC data is delayed (279316s) +2026-01-12 18:35:15,827 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (279316s) +2026-01-12 18:35:16,019 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (279316s) +2026-01-12 18:35:16,145 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (279316s) +2026-01-12 18:35:16,249 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (279316s) +2026-01-12 18:35:16,250 - app.services.portfolio_monitor - INFO - Running multi-agent analysis for USStock:AMD +2026-01-12 18:35:16,265 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-12 18:35:16,265 - app.services.analysis - INFO - Starting analysis USStock:AMD, language=zh-CN, mode=multi-agent +2026-01-12 18:35:16,265 - app.services.analysis - INFO - Run coordinator: USStock:AMD +2026-01-12 18:35:16,266 - app.services.agents.coordinator - INFO - Multi-agent analysis start: USStock:AMD, model=None, language=zh-CN +2026-01-12 18:35:20,052 - app.services.agents.tools - INFO - Running news search: "Advanced Micro Devices Inc" AMD stock news +2026-01-12 18:35:20,924 - app.services.agents.tools - INFO - Deep reading: AMD ื€ together we advance_AI +2026-01-12 18:35:21,017 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:35:21] "GET /api/strategies/notifications?limit=50&_t=1768214120698 HTTP/1.1" 200 - +2026-01-12 18:35:21,050 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:35:21] "GET /api/portfolio/summary?_t=1768214120726 HTTP/1.1" 200 - +2026-01-12 18:35:21,050 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:35:21] "GET /api/portfolio/positions?_t=1768214120726 HTTP/1.1" 200 - +2026-01-12 18:35:26,257 - app.services.agents.tools - INFO - Deep reading: AMD Stock Quote Price and Forecast | CNN +2026-01-12 18:35:41,921 - app.services.agents.tools - WARNING - Jina Reader content fetch failed https://www.cnn.com/markets/stocks/AMD: SOCKSHTTPSConnectionPool(host='r.jina.ai', port=443): Read timed out. (read timeout=15) +2026-01-12 18:35:41,922 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-12 18:35:42,940 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:35:43,065 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:35:43,125 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:35:43,133 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:35:43,159 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:35:43,602 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:35:43,602 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:35:43,602 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:35:43,947 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:35:43,948 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:35:43,948 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:35:44,062 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:35:44,063 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:35:44,063 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:35:44,091 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:35:44,092 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:35:44,092 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:35:44,143 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:35:44,143 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:35:44,144 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:35:44,145 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-12 18:35:44,789 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:35:45,379 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:35:45,380 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:35:45,380 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:35:45,406 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:35:46,044 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:35:46,044 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:35:46,044 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:35:46,045 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-12 18:35:46,564 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:35:47,173 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:35:47,173 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:35:47,174 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:35:47,174 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-12 18:35:47,952 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:35:48,044 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:35:48,606 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:35:48,607 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:35:48,607 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:35:48,906 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:35:48,907 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:35:48,907 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:35:50,774 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:35:51,018 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:35:51] "GET /api/strategies/notifications?limit=50&_t=1768214150702 HTTP/1.1" 200 - +2026-01-12 18:35:51,049 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:35:51] "GET /api/portfolio/positions?_t=1768214150727 HTTP/1.1" 200 - +2026-01-12 18:35:51,049 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:35:51] "GET /api/portfolio/summary?_t=1768214150727 HTTP/1.1" 200 - +2026-01-12 18:35:51,374 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:35:51,375 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:35:51,375 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:35:51,382 - app.services.agents.reflection - INFO - Recorded analysis for reflection: USStock:AMD, will verify after 7 day(s) +2026-01-12 18:35:51,383 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: USStock:AMD +2026-01-12 18:35:51,383 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-12 18:35:51,383 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-12 18:35:51,383 - app.services.portfolio_monitor - INFO - Analysis completed for USStock:AMD: HOLD +2026-01-12 18:35:51,383 - app.services.portfolio_monitor - INFO - Running multi-agent analysis for USStock:AVGO +2026-01-12 18:35:51,393 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-12 18:35:51,394 - app.services.analysis - INFO - Starting analysis USStock:AVGO, language=zh-CN, mode=multi-agent +2026-01-12 18:35:51,394 - app.services.analysis - INFO - Run coordinator: USStock:AVGO +2026-01-12 18:35:51,394 - app.services.agents.coordinator - INFO - Multi-agent analysis start: USStock:AVGO, model=None, language=zh-CN +2026-01-12 18:35:55,000 - app.services.agents.tools - INFO - Running news search: "Broadcom Inc" AVGO stock news +2026-01-12 18:35:56,182 - app.services.agents.tools - INFO - Deep reading: Investor Center | Broadcom Inc. +2026-01-12 18:36:00,034 - app.services.agents.tools - INFO - Deep reading: Broadcom Inc. Common Stock (AVGO) Stock Price, Quote, News ... +2026-01-12 18:36:08,873 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-12 18:36:09,607 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:36:09,614 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:36:09,637 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:36:09,684 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:36:09,824 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:36:10,406 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:36:10,406 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:10,407 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:10,427 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:36:10,428 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:10,428 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:10,449 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:36:10,449 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:10,449 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:10,499 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:36:10,499 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:10,499 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:13,981 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:36:13,981 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:13,982 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:13,983 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-12 18:36:14,629 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:36:14,727 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:36:15,543 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:36:15,544 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:36:15,545 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:15,545 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:15,545 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:15,545 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:15,547 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-12 18:36:16,165 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:36:16,722 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:36:16,723 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:16,723 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:16,725 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-12 18:36:17,390 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:36:17,435 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:36:17,478 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:36:18,176 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:36:18,177 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:18,177 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:18,184 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:36:18,184 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:18,184 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:18,195 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:36:18,195 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:18,195 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:18,203 - app.services.agents.reflection - INFO - Recorded analysis for reflection: USStock:AVGO, will verify after 7 day(s) +2026-01-12 18:36:18,203 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: USStock:AVGO +2026-01-12 18:36:18,203 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-12 18:36:18,205 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-12 18:36:18,205 - app.services.portfolio_monitor - INFO - Analysis completed for USStock:AVGO: HOLD +2026-01-12 18:36:18,205 - app.services.portfolio_monitor - INFO - Running multi-agent analysis for USStock:GD +2026-01-12 18:36:18,214 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-12 18:36:18,215 - app.services.analysis - INFO - Starting analysis USStock:GD, language=zh-CN, mode=multi-agent +2026-01-12 18:36:18,215 - app.services.analysis - INFO - Run coordinator: USStock:GD +2026-01-12 18:36:18,215 - app.services.agents.coordinator - INFO - Multi-agent analysis start: USStock:GD, model=None, language=zh-CN +2026-01-12 18:36:20,712 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:36:20] "GET /api/strategies/notifications?limit=50&_t=1768214180704 HTTP/1.1" 200 - +2026-01-12 18:36:21,052 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:36:21] "GET /api/portfolio/positions?_t=1768214180731 HTTP/1.1" 200 - +2026-01-12 18:36:21,053 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:36:21] "GET /api/portfolio/summary?_t=1768214180731 HTTP/1.1" 200 - +2026-01-12 18:36:22,126 - app.services.agents.tools - INFO - Running news search: "General Dynamics Corp" GD stock news +2026-01-12 18:36:22,944 - app.services.agents.tools - INFO - Deep reading: GD: General Dynamics Corp - Stock Price, Quote and News - CNBC +2026-01-12 18:36:23,682 - app.services.agents.tools - INFO - Deep reading: GD Stock Price | General Dynamics Corp. Stock Quote (U.S.: NYSE ... +2026-01-12 18:36:24,015 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:36:24] "GET /api/market/types?_t=1768214184009 HTTP/1.1" 200 - +2026-01-12 18:36:24,289 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:36:24] "GET /api/portfolio/positions?_t=1768214184009 HTTP/1.1" 200 - +2026-01-12 18:36:24,324 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:36:24] "GET /api/portfolio/groups?_t=1768214184009 HTTP/1.1" 200 - +2026-01-12 18:36:24,324 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:36:24] "GET /api/portfolio/monitors?_t=1768214184009 HTTP/1.1" 200 - +2026-01-12 18:36:24,324 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:36:24] "GET /api/portfolio/summary?_t=1768214184009 HTTP/1.1" 200 - +2026-01-12 18:36:24,325 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:36:24] "GET /api/portfolio/alerts?_t=1768214184009 HTTP/1.1" 200 - +2026-01-12 18:36:26,297 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-12 18:36:27,009 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:36:27,017 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:36:27,053 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:36:27,111 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:36:27,180 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:36:27,809 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:36:27,809 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:27,809 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:27,857 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:36:27,858 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:27,858 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:27,907 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:36:27,907 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:27,908 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:27,920 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:36:27,920 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:27,920 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:28,056 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:36:28,056 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:28,056 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:28,058 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-12 18:36:28,661 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:36:28,662 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:36:29,514 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:36:29,514 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:29,514 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:29,521 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:36:29,521 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:29,522 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:29,523 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-12 18:36:30,154 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:36:30,703 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:36:30,703 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:30,703 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:30,704 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-12 18:36:31,379 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:36:31,538 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:36:31,546 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:36:32,112 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:36:32,112 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:32,112 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:32,214 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:36:32,214 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:32,214 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:32,253 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:36:32,253 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:32,253 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:32,262 - app.services.agents.reflection - INFO - Recorded analysis for reflection: USStock:GD, will verify after 7 day(s) +2026-01-12 18:36:32,263 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: USStock:GD +2026-01-12 18:36:32,263 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-12 18:36:32,264 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-12 18:36:32,264 - app.services.portfolio_monitor - INFO - Analysis completed for USStock:GD: HOLD +2026-01-12 18:36:32,264 - app.services.portfolio_monitor - INFO - Running multi-agent analysis for USStock:GOOGL +2026-01-12 18:36:32,273 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-12 18:36:32,273 - app.services.analysis - INFO - Starting analysis USStock:GOOGL, language=zh-CN, mode=multi-agent +2026-01-12 18:36:32,274 - app.services.analysis - INFO - Run coordinator: USStock:GOOGL +2026-01-12 18:36:32,274 - app.services.agents.coordinator - INFO - Multi-agent analysis start: USStock:GOOGL, model=None, language=zh-CN +2026-01-12 18:36:34,833 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:36:34] "GET /api/market/types?_t=1768214194826 HTTP/1.1" 200 - +2026-01-12 18:36:35,048 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:36:35] "GET /api/portfolio/positions?_t=1768214194827 HTTP/1.1" 200 - +2026-01-12 18:36:35,113 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:36:35] "GET /api/portfolio/summary?_t=1768214194827 HTTP/1.1" 200 - +2026-01-12 18:36:35,148 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:36:35] "GET /api/portfolio/monitors?_t=1768214194827 HTTP/1.1" 200 - +2026-01-12 18:36:35,148 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:36:35] "GET /api/portfolio/alerts?_t=1768214194827 HTTP/1.1" 200 - +2026-01-12 18:36:35,152 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:36:35] "GET /api/portfolio/groups?_t=1768214194827 HTTP/1.1" 200 - +2026-01-12 18:36:36,037 - app.services.agents.tools - INFO - Running news search: "Alphabet Inc" GOOGL stock news +2026-01-12 18:36:37,242 - app.services.agents.tools - INFO - Deep reading: Alphabet Inc. (GOOGL) +2026-01-12 18:36:37,989 - app.services.agents.tools - INFO - Deep reading: GOOGL: Alphabet Class A - Stock Price, Quote and News - CNBC +2026-01-12 18:36:38,727 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-12 18:36:39,502 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:36:39,531 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:36:39,536 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:36:39,575 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:36:39,712 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:36:40,346 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:36:40,346 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:40,347 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:40,355 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:36:40,356 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:40,356 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:40,458 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:36:40,458 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:40,458 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:40,485 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:36:40,485 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:40,485 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:40,537 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:36:40,537 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:40,537 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:40,538 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-12 18:36:41,135 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:36:41,252 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:36:41,719 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:36:41,720 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:41,720 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:41,840 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:36:41,841 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:41,841 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:41,842 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-12 18:36:42,374 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:36:42,943 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:36:42,943 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:42,943 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:42,944 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-12 18:36:43,598 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:36:43,712 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:36:43,751 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:36:44,269 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:36:44,270 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:44,270 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:44,388 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:36:44,388 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:44,388 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:44,454 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:36:44,454 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:44,454 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:44,462 - app.services.agents.reflection - INFO - Recorded analysis for reflection: USStock:GOOGL, will verify after 7 day(s) +2026-01-12 18:36:44,463 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: USStock:GOOGL +2026-01-12 18:36:44,463 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-12 18:36:44,465 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-12 18:36:44,465 - app.services.portfolio_monitor - INFO - Analysis completed for USStock:GOOGL: HOLD +2026-01-12 18:36:44,465 - app.services.portfolio_monitor - INFO - Running multi-agent analysis for USStock:INTC +2026-01-12 18:36:44,475 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-12 18:36:44,475 - app.services.analysis - INFO - Starting analysis USStock:INTC, language=zh-CN, mode=multi-agent +2026-01-12 18:36:44,475 - app.services.analysis - INFO - Run coordinator: USStock:INTC +2026-01-12 18:36:44,475 - app.services.agents.coordinator - INFO - Multi-agent analysis start: USStock:INTC, model=None, language=zh-CN +2026-01-12 18:36:48,126 - app.services.agents.tools - INFO - Running news search: "Intel Corp" INTC stock news +2026-01-12 18:36:48,992 - app.services.agents.tools - INFO - Deep reading: Intel: INTC Stock Price Quote & News | Robinhood +2026-01-12 18:36:51,021 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:36:51] "GET /api/strategies/notifications?limit=50&_t=1768214210707 HTTP/1.1" 200 - +2026-01-12 18:36:54,693 - app.services.agents.tools - INFO - Deep reading: Intel Corp. (INTC) Soars 6.5% Ahead of FY25 Earnings +2026-01-12 18:36:55,414 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-12 18:36:56,138 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:36:56,150 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:36:56,168 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:36:56,178 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:36:56,344 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:36:56,908 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:36:56,908 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:56,908 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:56,957 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:36:56,958 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:56,958 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:56,984 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:36:56,984 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:56,984 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:57,004 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:36:57,004 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:57,004 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:57,092 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:36:57,092 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:57,092 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:57,094 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-12 18:36:57,697 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:36:57,853 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:36:58,274 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:36:58,274 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:36:58,274 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:01,727 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:37:01,727 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:01,727 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:01,728 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-12 18:37:02,308 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:37:03,106 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:37:03,106 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:03,107 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:03,108 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-12 18:37:03,825 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:37:03,869 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:37:03,970 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:37:04,499 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:37:04,499 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:04,499 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:04,844 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:37:04] "GET /api/portfolio/positions?_t=1768214224835 HTTP/1.1" 200 - +2026-01-12 18:37:04,999 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:37:04,999 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:04,999 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:05,158 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:37:05] "GET /api/portfolio/summary?_t=1768214224835 HTTP/1.1" 200 - +2026-01-12 18:37:05,240 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:37:05,240 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:05,240 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:05,249 - app.services.agents.reflection - INFO - Recorded analysis for reflection: USStock:INTC, will verify after 7 day(s) +2026-01-12 18:37:05,250 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: USStock:INTC +2026-01-12 18:37:05,250 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-12 18:37:05,251 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-12 18:37:05,251 - app.services.portfolio_monitor - INFO - Analysis completed for USStock:INTC: HOLD +2026-01-12 18:37:05,251 - app.services.portfolio_monitor - INFO - Running multi-agent analysis for USStock:MSFT +2026-01-12 18:37:05,259 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-12 18:37:05,260 - app.services.analysis - INFO - Starting analysis USStock:MSFT, language=zh-CN, mode=multi-agent +2026-01-12 18:37:05,260 - app.services.analysis - INFO - Run coordinator: USStock:MSFT +2026-01-12 18:37:05,260 - app.services.agents.coordinator - INFO - Multi-agent analysis start: USStock:MSFT, model=None, language=zh-CN +2026-01-12 18:37:08,832 - app.services.agents.tools - INFO - Running news search: "Microsoft Corp" MSFT stock news +2026-01-12 18:37:09,706 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:37:09] "GET /api/market/types?_t=1768214229700 HTTP/1.1" 200 - +2026-01-12 18:37:09,909 - app.services.agents.tools - INFO - Deep reading: MSFT: Microsoft Corp - Stock Price, Quote and News - CNBC +2026-01-12 18:37:09,917 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:37:09] "GET /api/portfolio/positions?_t=1768214229700 HTTP/1.1" 200 - +2026-01-12 18:37:09,982 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:37:09] "GET /api/portfolio/summary?_t=1768214229700 HTTP/1.1" 200 - +2026-01-12 18:37:10,029 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:37:10] "GET /api/portfolio/monitors?_t=1768214229700 HTTP/1.1" 200 - +2026-01-12 18:37:10,030 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:37:10] "GET /api/portfolio/alerts?_t=1768214229700 HTTP/1.1" 200 - +2026-01-12 18:37:10,030 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:37:10] "GET /api/portfolio/groups?_t=1768214229700 HTTP/1.1" 200 - +2026-01-12 18:37:10,881 - app.services.agents.tools - INFO - Deep reading: Buy or Sell Microsoft Stock - MSFT Stock Price Quote & News ... +2026-01-12 18:37:18,554 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-12 18:37:19,337 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:37:19,361 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:37:19,395 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:37:19,396 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:37:19,910 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:37:20,027 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:37:20,027 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:20,027 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:20,077 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:37:20,078 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:20,078 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:20,095 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:37:20,095 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:20,095 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:20,500 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:37:20,501 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:20,501 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:20,511 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:37:20,511 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:20,511 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:20,513 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-12 18:37:21,015 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:37:21] "GET /api/strategies/notifications?limit=50&_t=1768214240702 HTTP/1.1" 200 - +2026-01-12 18:37:21,394 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:37:21,920 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:37:21,920 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:21,920 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:23,317 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:37:26,535 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:37:26,536 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:26,536 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:26,537 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-12 18:37:27,114 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:37:27,909 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:37:27,909 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:27,909 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:27,911 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-12 18:37:28,635 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:37:28,649 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:37:28] "GET /api/market/types?_t=1768214248642 HTTP/1.1" 200 - +2026-01-12 18:37:28,661 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:37:28,927 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:37:28] "GET /api/portfolio/positions?_t=1768214248642 HTTP/1.1" 200 - +2026-01-12 18:37:28,962 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:37:28] "GET /api/portfolio/monitors?_t=1768214248642 HTTP/1.1" 200 - +2026-01-12 18:37:28,964 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:37:28] "GET /api/portfolio/summary?_t=1768214248642 HTTP/1.1" 200 - +2026-01-12 18:37:28,964 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:37:28] "GET /api/portfolio/alerts?_t=1768214248642 HTTP/1.1" 200 - +2026-01-12 18:37:28,967 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:37:28] "GET /api/portfolio/groups?_t=1768214248642 HTTP/1.1" 200 - +2026-01-12 18:37:28,973 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:37:29,299 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:37:29,299 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:29,299 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:29,372 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:37:29,372 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:29,372 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:29,596 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:37:29,596 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:29,597 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:29,604 - app.services.agents.reflection - INFO - Recorded analysis for reflection: USStock:MSFT, will verify after 7 day(s) +2026-01-12 18:37:29,604 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: USStock:MSFT +2026-01-12 18:37:29,605 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-12 18:37:29,606 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-12 18:37:29,606 - app.services.portfolio_monitor - INFO - Analysis completed for USStock:MSFT: HOLD +2026-01-12 18:37:29,606 - app.services.portfolio_monitor - INFO - Running multi-agent analysis for USStock:OMDA +2026-01-12 18:37:29,616 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-12 18:37:29,616 - app.services.analysis - INFO - Starting analysis USStock:OMDA, language=zh-CN, mode=multi-agent +2026-01-12 18:37:29,616 - app.services.analysis - INFO - Run coordinator: USStock:OMDA +2026-01-12 18:37:29,616 - app.services.agents.coordinator - INFO - Multi-agent analysis start: USStock:OMDA, model=None, language=zh-CN +2026-01-12 18:37:32,641 - app.services.agents.tools - INFO - Running news search: "Omada Health Inc" OMDA stock news +2026-01-12 18:37:33,409 - app.services.agents.tools - INFO - Deep reading: Stock Quote & Chart | Omada Health, Inc. +2026-01-12 18:37:34,831 - app.services.agents.tools - INFO - Deep reading: OMADA HEALTH, INC. (OMDA) Stock, Price, News, Quotes ... +2026-01-12 18:37:45,009 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-12 18:37:45,734 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:37:45,772 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:37:45,787 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:37:45,805 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:37:45,830 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:37:46,588 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:37:46,588 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:46,589 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:46,665 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:37:46,665 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:46,666 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:46,682 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:37:46,683 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:37:46,683 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:46,683 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:46,683 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:46,683 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:46,731 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:37:46,731 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:46,731 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:46,734 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-12 18:37:47,419 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:37:47,476 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:37:47,896 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:37:47] "GET /api/market/types?_t=1768214267886 HTTP/1.1" 200 - +2026-01-12 18:37:48,016 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:37:48,016 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:48,016 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:48,105 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:37:48] "GET /api/portfolio/positions?_t=1768214267886 HTTP/1.1" 200 - +2026-01-12 18:37:48,153 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:37:48,153 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:48,153 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:48,154 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-12 18:37:48,169 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:37:48] "GET /api/portfolio/summary?_t=1768214267886 HTTP/1.1" 200 - +2026-01-12 18:37:48,208 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:37:48] "GET /api/portfolio/monitors?_t=1768214267886 HTTP/1.1" 200 - +2026-01-12 18:37:48,208 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:37:48] "GET /api/portfolio/alerts?_t=1768214267886 HTTP/1.1" 200 - +2026-01-12 18:37:48,209 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:37:48] "GET /api/portfolio/groups?_t=1768214267886 HTTP/1.1" 200 - +2026-01-12 18:37:48,825 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:37:49,409 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:37:49,409 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:49,409 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:49,410 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-12 18:37:50,097 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:37:50,166 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:37:50,368 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:37:50,761 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:37:50,761 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:50,761 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:50,789 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:37:50,789 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:50,789 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:51,009 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:37:51,010 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:51,010 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:37:51,019 - app.services.agents.reflection - INFO - Recorded analysis for reflection: USStock:OMDA, will verify after 7 day(s) +2026-01-12 18:37:51,019 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: USStock:OMDA +2026-01-12 18:37:51,019 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-12 18:37:51,020 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-12 18:37:51,021 - app.services.portfolio_monitor - INFO - Analysis completed for USStock:OMDA: HOLD +2026-01-12 18:37:51,021 - app.services.portfolio_monitor - INFO - Running multi-agent analysis for USStock:ORCL +2026-01-12 18:37:51,024 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:37:51] "GET /api/strategies/notifications?limit=50&_t=1768214270708 HTTP/1.1" 200 - +2026-01-12 18:37:51,039 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-12 18:37:51,039 - app.services.analysis - INFO - Starting analysis USStock:ORCL, language=zh-CN, mode=multi-agent +2026-01-12 18:37:51,039 - app.services.analysis - INFO - Run coordinator: USStock:ORCL +2026-01-12 18:37:51,040 - app.services.agents.coordinator - INFO - Multi-agent analysis start: USStock:ORCL, model=None, language=zh-CN +2026-01-12 18:37:54,679 - app.services.agents.tools - INFO - Running news search: "Oracle Corp" ORCL stock news +2026-01-12 18:37:55,526 - app.services.agents.tools - INFO - Deep reading: ORCL: Oracle Corp - Stock Price, Quote and News - CNBC +2026-01-12 18:37:56,245 - app.services.agents.tools - INFO - Deep reading: Oracle: ORCL Stock Price Quote & News | Robinhood +2026-01-12 18:37:59,139 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:37:59] "GET /api/market/types?_t=1768214279132 HTTP/1.1" 200 - +2026-01-12 18:37:59,428 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:37:59] "GET /api/portfolio/positions?_t=1768214279132 HTTP/1.1" 200 - +2026-01-12 18:37:59,446 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:37:59] "GET /api/portfolio/summary?_t=1768214279132 HTTP/1.1" 200 - +2026-01-12 18:37:59,446 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:37:59] "GET /api/portfolio/alerts?_t=1768214279132 HTTP/1.1" 200 - +2026-01-12 18:37:59,446 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:37:59] "GET /api/portfolio/monitors?_t=1768214279132 HTTP/1.1" 200 - +2026-01-12 18:37:59,447 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:37:59] "GET /api/portfolio/groups?_t=1768214279132 HTTP/1.1" 200 - +2026-01-12 18:38:01,723 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-12 18:38:02,458 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:38:02,726 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:38:02,913 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:38:02,943 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:38:03,072 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:38:03,470 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:38:03,470 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:03,471 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:03,596 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:38:03,596 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:03,596 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:03,722 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:38:03,722 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:03,722 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:04,018 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:38:04,018 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:04,018 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:04,770 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:38:04,771 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:04,771 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:04,773 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-12 18:38:05,437 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:38:05,461 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:38:06,065 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:38:06,065 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:06,065 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:06,301 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:38:06,301 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:06,301 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:06,302 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-12 18:38:09,820 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:38:10,368 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:38:10,368 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:10,368 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:10,369 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-12 18:38:11,045 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:38:11,067 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:38:11,154 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:38:11,815 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:38:11,815 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:11,815 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:11,991 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:38:11,991 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:11,991 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:12,004 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:38:12,004 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:12,004 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:12,012 - app.services.agents.reflection - INFO - Recorded analysis for reflection: USStock:ORCL, will verify after 7 day(s) +2026-01-12 18:38:12,012 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: USStock:ORCL +2026-01-12 18:38:12,012 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-12 18:38:12,013 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-12 18:38:12,013 - app.services.portfolio_monitor - INFO - Analysis completed for USStock:ORCL: HOLD +2026-01-12 18:38:12,013 - app.services.portfolio_monitor - INFO - Running multi-agent analysis for USStock:SPCE +2026-01-12 18:38:12,023 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-12 18:38:12,024 - app.services.analysis - INFO - Starting analysis USStock:SPCE, language=zh-CN, mode=multi-agent +2026-01-12 18:38:12,024 - app.services.analysis - INFO - Run coordinator: USStock:SPCE +2026-01-12 18:38:12,024 - app.services.agents.coordinator - INFO - Multi-agent analysis start: USStock:SPCE, model=None, language=zh-CN +2026-01-12 18:38:15,179 - app.services.agents.tools - INFO - Running news search: "Virgin Galactic Holdings Inc" SPCE stock news +2026-01-12 18:38:16,258 - app.services.agents.tools - INFO - Deep reading: Virgin Galactic Holdings, Inc. (SPCE) Stock Price, News, Quote ... +2026-01-12 18:38:16,933 - app.services.agents.tools - INFO - Deep reading: Virgin Galactic (SPCE) Stock Price, News & Analysis +2026-01-12 18:38:21,027 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:38:21] "GET /api/strategies/notifications?limit=50&_t=1768214300712 HTTP/1.1" 200 - +2026-01-12 18:38:21,329 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-12 18:38:22,064 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:38:22,073 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:38:22,078 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:38:22,102 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:38:22,188 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:38:22,774 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:38:22,774 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:22,774 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:22,804 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:38:22,805 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:22,805 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:22,828 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:38:22,828 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:22,828 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:22,905 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:38:22,906 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:22,906 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:23,019 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:38:23,020 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:23,020 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:23,022 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-12 18:38:23,771 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:38:23,984 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:38:24,652 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:38:24,652 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:24,652 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:24,814 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:38:24,815 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:24,815 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:24,816 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-12 18:38:25,785 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:38:26,310 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:38:26,311 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:26,311 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:26,312 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-12 18:38:27,044 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:38:27,069 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:38:27,088 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:38:27,708 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:38:27,708 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:27,708 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:27,710 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:38:27,710 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:27,710 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:27,726 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:38:27,726 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:27,727 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:38:27,735 - app.services.agents.reflection - INFO - Recorded analysis for reflection: USStock:SPCE, will verify after 7 day(s) +2026-01-12 18:38:27,735 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: USStock:SPCE +2026-01-12 18:38:27,735 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-12 18:38:27,736 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-12 18:38:27,737 - app.services.portfolio_monitor - INFO - Analysis completed for USStock:SPCE: HOLD +2026-01-12 18:38:27,751 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:38:27] "POST /api/portfolio/monitors/1/run HTTP/1.1" 200 - +2026-01-12 18:38:29,152 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (279509s) +2026-01-12 18:38:29,160 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (279509s) +2026-01-12 18:38:29,173 - app.data_sources.base - WARNING - Warning: GD data is delayed (279509s) +2026-01-12 18:38:29,174 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (279509s) +2026-01-12 18:38:29,180 - app.data_sources.base - WARNING - Warning: AMD data is delayed (279509s) +2026-01-12 18:38:29,188 - app.data_sources.base - WARNING - Warning: INTC data is delayed (279509s) +2026-01-12 18:38:29,189 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (279509s) +2026-01-12 18:38:29,190 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (279509s) +2026-01-12 18:38:29,194 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (279509s) +2026-01-12 18:38:29,195 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:38:29] "GET /api/portfolio/positions?_t=1768214309137 HTTP/1.1" 200 - +2026-01-12 18:38:29,454 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:38:29] "GET /api/portfolio/summary?_t=1768214309137 HTTP/1.1" 200 - +2026-01-12 18:38:35,124 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:38:35] "GET /api/market/types?_t=1768214315112 HTTP/1.1" 200 - +2026-01-12 18:38:35,130 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:38:35] "GET /api/portfolio/monitors?_t=1768214315112 HTTP/1.1" 200 - +2026-01-12 18:38:35,131 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:38:35] "GET /api/portfolio/positions?_t=1768214315112 HTTP/1.1" 200 - +2026-01-12 18:38:35,131 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:38:35] "GET /api/portfolio/summary?_t=1768214315112 HTTP/1.1" 200 - +2026-01-12 18:38:35,430 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:38:35] "GET /api/portfolio/alerts?_t=1768214315112 HTTP/1.1" 200 - +2026-01-12 18:38:35,431 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:38:35] "GET /api/portfolio/groups?_t=1768214315112 HTTP/1.1" 200 - +2026-01-12 18:38:35,442 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:38:35] "GET /api/strategies/notifications?limit=50&_t=1768214315112 HTTP/1.1" 200 - +2026-01-12 18:39:05,408 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:39:05] "GET /api/strategies/notifications?limit=50&_t=1768214345092 HTTP/1.1" 200 - +2026-01-12 18:39:05,424 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:39:05] "GET /api/portfolio/positions?_t=1768214345108 HTTP/1.1" 200 - +2026-01-12 18:39:05,424 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:39:05] "GET /api/portfolio/summary?_t=1768214345108 HTTP/1.1" 200 - +2026-01-12 18:39:07,615 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:39:07] "GET /api/market/types?_t=1768214347602 HTTP/1.1" 200 - +2026-01-12 18:39:07,620 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:39:07] "GET /api/portfolio/positions?_t=1768214347602 HTTP/1.1" 200 - +2026-01-12 18:39:07,925 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:39:07] "GET /api/portfolio/monitors?_t=1768214347602 HTTP/1.1" 200 - +2026-01-12 18:39:07,926 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:39:07] "GET /api/portfolio/summary?_t=1768214347602 HTTP/1.1" 200 - +2026-01-12 18:39:07,927 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:39:07] "GET /api/portfolio/groups?_t=1768214347602 HTTP/1.1" 200 - +2026-01-12 18:39:07,937 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:39:07] "GET /api/strategies/notifications?limit=50&_t=1768214347602 HTTP/1.1" 200 - +2026-01-12 18:39:07,941 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:39:07] "GET /api/portfolio/alerts?_t=1768214347602 HTTP/1.1" 200 - +2026-01-12 18:39:37,907 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:39:37] "GET /api/strategies/notifications?limit=50&_t=1768214377584 HTTP/1.1" 200 - +2026-01-12 18:39:37,927 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:39:37] "GET /api/portfolio/positions?_t=1768214377600 HTTP/1.1" 200 - +2026-01-12 18:39:37,928 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:39:37] "GET /api/portfolio/summary?_t=1768214377600 HTTP/1.1" 200 - +2026-01-12 18:40:03,329 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:40:03] "GET /api/market/types?_t=1768214403318 HTTP/1.1" 200 - +2026-01-12 18:40:03,583 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:40:03] "GET /api/portfolio/positions?_t=1768214403318 HTTP/1.1" 200 - +2026-01-12 18:40:03,641 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:40:03] "GET /api/portfolio/monitors?_t=1768214403318 HTTP/1.1" 200 - +2026-01-12 18:40:03,642 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:40:03] "GET /api/portfolio/summary?_t=1768214403318 HTTP/1.1" 200 - +2026-01-12 18:40:03,642 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:40:03] "GET /api/portfolio/alerts?_t=1768214403318 HTTP/1.1" 200 - +2026-01-12 18:40:03,642 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:40:03] "GET /api/portfolio/groups?_t=1768214403318 HTTP/1.1" 200 - +2026-01-12 18:40:07,896 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:40:07] "GET /api/strategies/notifications?limit=50&_t=1768214407581 HTTP/1.1" 200 - +2026-01-12 18:40:33,338 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:40:33] "GET /api/portfolio/positions?_t=1768214433329 HTTP/1.1" 200 - +2026-01-12 18:40:33,649 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:40:33] "GET /api/portfolio/summary?_t=1768214433329 HTTP/1.1" 200 - +2026-01-12 18:40:37,887 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:40:37] "GET /api/strategies/notifications?limit=50&_t=1768214437572 HTTP/1.1" 200 - +2026-01-12 18:40:44,862 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:40:44] "GET /api/market/types?_t=1768214444851 HTTP/1.1" 200 - +2026-01-12 18:40:44,867 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:40:44] "GET /api/portfolio/summary?_t=1768214444851 HTTP/1.1" 200 - +2026-01-12 18:40:44,869 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:40:44] "GET /api/portfolio/positions?_t=1768214444851 HTTP/1.1" 200 - +2026-01-12 18:40:45,184 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:40:45] "GET /api/portfolio/monitors?_t=1768214444851 HTTP/1.1" 200 - +2026-01-12 18:40:45,185 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:40:45] "GET /api/portfolio/alerts?_t=1768214444851 HTTP/1.1" 200 - +2026-01-12 18:40:45,185 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:40:45] "GET /api/portfolio/groups?_t=1768214444851 HTTP/1.1" 200 - +2026-01-12 18:40:45,186 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:40:45] "GET /api/strategies/notifications?limit=50&_t=1768214444851 HTTP/1.1" 200 - +2026-01-12 18:41:04,911 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:41:04] "GET /api/market/types?_t=1768214464902 HTTP/1.1" 200 - +2026-01-12 18:41:04,914 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:41:04] "GET /api/portfolio/positions?_t=1768214464902 HTTP/1.1" 200 - +2026-01-12 18:41:04,915 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:41:04] "GET /api/portfolio/summary?_t=1768214464902 HTTP/1.1" 200 - +2026-01-12 18:41:05,219 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:41:05] "GET /api/portfolio/monitors?_t=1768214464902 HTTP/1.1" 200 - +2026-01-12 18:41:05,219 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:41:05] "GET /api/portfolio/alerts?_t=1768214464902 HTTP/1.1" 200 - +2026-01-12 18:41:05,220 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:41:05] "GET /api/portfolio/groups?_t=1768214464902 HTTP/1.1" 200 - +2026-01-12 18:41:05,231 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:41:05] "GET /api/strategies/notifications?limit=50&_t=1768214464902 HTTP/1.1" 200 - +2026-01-12 18:41:35,183 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:41:35] "GET /api/strategies/notifications?limit=50&_t=1768214494870 HTTP/1.1" 200 - +2026-01-12 18:41:35,199 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:41:35] "GET /api/portfolio/positions?_t=1768214494886 HTTP/1.1" 200 - +2026-01-12 18:41:35,201 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:41:35] "GET /api/portfolio/summary?_t=1768214494887 HTTP/1.1" 200 - +2026-01-12 18:42:04,889 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:42:04] "GET /api/strategies/notifications?limit=50&_t=1768214524874 HTTP/1.1" 200 - +2026-01-12 18:42:05,228 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:42:05] "GET /api/portfolio/positions?_t=1768214524906 HTTP/1.1" 200 - +2026-01-12 18:42:05,230 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:42:05] "GET /api/portfolio/summary?_t=1768214524906 HTTP/1.1" 200 - +2026-01-12 18:42:34,890 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:42:34] "GET /api/strategies/notifications?limit=50&_t=1768214554881 HTTP/1.1" 200 - +2026-01-12 18:42:35,214 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:42:35] "GET /api/portfolio/positions?_t=1768214554897 HTTP/1.1" 200 - +2026-01-12 18:42:35,214 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:42:35] "GET /api/portfolio/summary?_t=1768214554897 HTTP/1.1" 200 - +2026-01-12 18:43:04,891 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:43:04] "GET /api/strategies/notifications?limit=50&_t=1768214584883 HTTP/1.1" 200 - +2026-01-12 18:43:05,214 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:43:05] "GET /api/portfolio/summary?_t=1768214584897 HTTP/1.1" 200 - +2026-01-12 18:43:05,215 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:43:05] "GET /api/portfolio/positions?_t=1768214584897 HTTP/1.1" 200 - +2026-01-12 18:43:34,892 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:43:34] "GET /api/strategies/notifications?limit=50&_t=1768214614883 HTTP/1.1" 200 - +2026-01-12 18:43:35,237 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (279815s) +2026-01-12 18:43:35,238 - app.data_sources.base - WARNING - Warning: GD data is delayed (279815s) +2026-01-12 18:43:35,246 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (279815s) +2026-01-12 18:43:35,247 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (279815s) +2026-01-12 18:43:35,253 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (279815s) +2026-01-12 18:43:35,268 - app.data_sources.base - WARNING - Warning: AMD data is delayed (279815s) +2026-01-12 18:43:35,270 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (279815s) +2026-01-12 18:43:35,276 - app.data_sources.base - WARNING - Warning: INTC data is delayed (279815s) +2026-01-12 18:43:35,279 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (279815s) +2026-01-12 18:43:35,281 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:43:35] "GET /api/portfolio/positions?_t=1768214614898 HTTP/1.1" 200 - +2026-01-12 18:43:35,287 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (279815s) +2026-01-12 18:43:35,287 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:43:35] "GET /api/portfolio/summary?_t=1768214614898 HTTP/1.1" 200 - +2026-01-12 18:43:47,749 - app.services.portfolio_monitor - INFO - Running due monitor #1 +2026-01-12 18:43:47,757 - app.data_sources.base - WARNING - Warning: AMD data is delayed (279828s) +2026-01-12 18:43:47,763 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (279828s) +2026-01-12 18:43:47,768 - app.data_sources.base - WARNING - Warning: GD data is delayed (279828s) +2026-01-12 18:43:47,773 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (279828s) +2026-01-12 18:43:47,778 - app.data_sources.base - WARNING - Warning: INTC data is delayed (279828s) +2026-01-12 18:43:47,783 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (279828s) +2026-01-12 18:43:47,789 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (279828s) +2026-01-12 18:43:47,794 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (279828s) +2026-01-12 18:43:47,800 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (279828s) +2026-01-12 18:43:47,800 - app.services.portfolio_monitor - INFO - Running multi-agent analysis for USStock:AMD +2026-01-12 18:43:47,811 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-12 18:43:47,811 - app.services.analysis - INFO - Starting analysis USStock:AMD, language=zh-CN, mode=multi-agent +2026-01-12 18:43:47,811 - app.services.analysis - INFO - Run coordinator: USStock:AMD +2026-01-12 18:43:47,811 - app.services.agents.coordinator - INFO - Multi-agent analysis start: USStock:AMD, model=None, language=zh-CN +2026-01-12 18:43:51,267 - app.services.agents.tools - INFO - Running news search: "Advanced Micro Devices Inc" AMD stock news +2026-01-12 18:43:52,267 - app.services.agents.tools - INFO - Deep reading: AMD ื€ together we advance_AI +2026-01-12 18:43:53,202 - app.services.agents.tools - INFO - Deep reading: AMD Stock Quote Price and Forecast | CNN +2026-01-12 18:44:03,357 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-12 18:44:04,403 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:04,446 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:04,488 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:04,493 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:04,506 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:04,877 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:44:04] "GET /api/strategies/notifications?limit=50&_t=1768214644868 HTTP/1.1" 200 - +2026-01-12 18:44:05,200 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:44:05] "GET /api/portfolio/summary?_t=1768214644882 HTTP/1.1" 200 - +2026-01-12 18:44:05,211 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:44:05] "GET /api/portfolio/positions?_t=1768214644882 HTTP/1.1" 200 - +2026-01-12 18:44:05,294 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:05,295 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:05,295 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:05,306 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:05,306 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:05,306 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:05,515 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:05,516 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:05,516 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:05,614 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:05,614 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:05,614 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:05,757 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:05,757 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:05,758 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:05,760 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-12 18:44:06,599 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:06,633 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:07,246 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:07,246 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:07,246 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:07,620 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:07,620 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:07,620 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:07,621 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-12 18:44:08,702 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:09,477 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:09,477 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:09,477 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:09,478 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-12 18:44:10,116 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:10,371 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:10,547 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:10,653 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:10,654 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:10,654 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:10,981 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:10,982 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:10,982 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:11,641 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:11,641 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:11,641 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:11,649 - app.services.agents.reflection - INFO - Recorded analysis for reflection: USStock:AMD, will verify after 7 day(s) +2026-01-12 18:44:11,649 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: USStock:AMD +2026-01-12 18:44:11,649 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-12 18:44:11,651 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-12 18:44:11,651 - app.services.portfolio_monitor - INFO - Analysis completed for USStock:AMD: HOLD +2026-01-12 18:44:11,652 - app.services.portfolio_monitor - INFO - Running multi-agent analysis for USStock:AVGO +2026-01-12 18:44:11,661 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-12 18:44:11,662 - app.services.analysis - INFO - Starting analysis USStock:AVGO, language=zh-CN, mode=multi-agent +2026-01-12 18:44:11,662 - app.services.analysis - INFO - Run coordinator: USStock:AVGO +2026-01-12 18:44:11,662 - app.services.agents.coordinator - INFO - Multi-agent analysis start: USStock:AVGO, model=None, language=zh-CN +2026-01-12 18:44:14,802 - app.services.agents.tools - INFO - Running news search: "Broadcom Inc" AVGO stock news +2026-01-12 18:44:15,619 - app.services.agents.tools - INFO - Deep reading: Investor Center | Broadcom Inc. +2026-01-12 18:44:16,421 - app.services.agents.tools - INFO - Deep reading: Broadcom Inc. Common Stock (AVGO) Stock Price, Quote, News ... +2026-01-12 18:44:17,559 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-12 18:44:18,284 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:18,299 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:18,350 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:18,395 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:18,589 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:18,947 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:18,947 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:18,947 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:19,051 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:19,051 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:19,051 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:19,107 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:19,108 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:19,108 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:19,342 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:19,342 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:19,342 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:19,458 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:19,458 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:19,458 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:19,460 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-12 18:44:20,072 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:20,120 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:20,686 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:20,686 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:20,687 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:20,709 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:20,709 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:20,709 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:20,711 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-12 18:44:21,241 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:21,813 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:21,813 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:21,813 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:21,814 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-12 18:44:22,531 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:22,541 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:22,550 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:23,172 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:23,172 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:23,172 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:23,270 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:23,270 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:23,270 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:23,557 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:23,557 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:23,558 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:23,566 - app.services.agents.reflection - INFO - Recorded analysis for reflection: USStock:AVGO, will verify after 7 day(s) +2026-01-12 18:44:23,567 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: USStock:AVGO +2026-01-12 18:44:23,567 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-12 18:44:23,568 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-12 18:44:23,568 - app.services.portfolio_monitor - INFO - Analysis completed for USStock:AVGO: HOLD +2026-01-12 18:44:23,568 - app.services.portfolio_monitor - INFO - Running multi-agent analysis for USStock:GD +2026-01-12 18:44:23,577 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-12 18:44:23,578 - app.services.analysis - INFO - Starting analysis USStock:GD, language=zh-CN, mode=multi-agent +2026-01-12 18:44:23,578 - app.services.analysis - INFO - Run coordinator: USStock:GD +2026-01-12 18:44:23,578 - app.services.agents.coordinator - INFO - Multi-agent analysis start: USStock:GD, model=None, language=zh-CN +2026-01-12 18:44:26,899 - app.services.agents.tools - INFO - Running news search: "General Dynamics Corp" GD stock news +2026-01-12 18:44:27,861 - app.services.agents.tools - INFO - Deep reading: GD: General Dynamics Corp - Stock Price, Quote and News - CNBC +2026-01-12 18:44:28,650 - app.services.agents.tools - INFO - Deep reading: GD Stock Price | General Dynamics Corp. Stock Quote (U.S.: NYSE ... +2026-01-12 18:44:31,417 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-12 18:44:32,142 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:32,166 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:32,175 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:32,181 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:32,610 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:32,894 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:32,894 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:32,894 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:32,972 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:32,972 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:32,972 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:32,974 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:32,974 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:32,974 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:32,991 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:32,991 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:32,991 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:33,278 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:33,279 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:33,279 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:33,281 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-12 18:44:33,941 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:34,078 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:34,605 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:34,605 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:34,605 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:34,784 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:34,785 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:34,785 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:34,786 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-12 18:44:34,892 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:44:34] "GET /api/strategies/notifications?limit=50&_t=1768214674883 HTTP/1.1" 200 - +2026-01-12 18:44:35,217 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:44:35] "GET /api/portfolio/positions?_t=1768214674896 HTTP/1.1" 200 - +2026-01-12 18:44:35,218 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:44:35] "GET /api/portfolio/summary?_t=1768214674896 HTTP/1.1" 200 - +2026-01-12 18:44:35,356 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:36,039 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:36,039 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:36,040 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:36,040 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-12 18:44:36,690 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:36,700 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:36,847 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:37,337 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:37,338 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:37,338 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:37,369 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:37,370 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:37,370 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:37,473 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:37,473 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:37,474 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:37,482 - app.services.agents.reflection - INFO - Recorded analysis for reflection: USStock:GD, will verify after 7 day(s) +2026-01-12 18:44:37,482 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: USStock:GD +2026-01-12 18:44:37,483 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-12 18:44:37,484 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-12 18:44:37,484 - app.services.portfolio_monitor - INFO - Analysis completed for USStock:GD: HOLD +2026-01-12 18:44:37,484 - app.services.portfolio_monitor - INFO - Running multi-agent analysis for USStock:GOOGL +2026-01-12 18:44:37,493 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-12 18:44:37,493 - app.services.analysis - INFO - Starting analysis USStock:GOOGL, language=zh-CN, mode=multi-agent +2026-01-12 18:44:37,493 - app.services.analysis - INFO - Run coordinator: USStock:GOOGL +2026-01-12 18:44:37,493 - app.services.agents.coordinator - INFO - Multi-agent analysis start: USStock:GOOGL, model=None, language=zh-CN +2026-01-12 18:44:40,796 - app.services.agents.tools - INFO - Running news search: "Alphabet Inc" GOOGL stock news +2026-01-12 18:44:41,990 - app.services.agents.tools - INFO - Deep reading: Alphabet Inc. (GOOGL) +2026-01-12 18:44:42,997 - app.services.agents.tools - INFO - Deep reading: GOOGL: Alphabet Class A - Stock Price, Quote and News - CNBC +2026-01-12 18:44:43,864 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-12 18:44:44,588 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:44,625 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:44,669 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:44,677 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:44,680 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:45,554 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:45,554 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:45,555 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:45,656 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:45,656 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:45,657 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:45,658 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:45,658 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:45,658 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:45,668 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:45,668 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:45,669 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:45,676 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:45,676 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:45,676 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:45,679 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-12 18:44:46,278 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:46,296 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:46,888 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:46,889 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:46,889 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:46,984 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:46,985 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:46,985 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:46,986 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-12 18:44:47,564 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:48,211 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:48,211 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:48,212 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:48,212 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-12 18:44:48,877 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:48,879 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:48,988 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:49,537 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:49,537 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:49,538 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:49,633 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:49,633 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:49,633 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:49,735 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:49,735 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:49,735 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:49,743 - app.services.agents.reflection - INFO - Recorded analysis for reflection: USStock:GOOGL, will verify after 7 day(s) +2026-01-12 18:44:49,743 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: USStock:GOOGL +2026-01-12 18:44:49,743 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-12 18:44:49,745 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-12 18:44:49,746 - app.services.portfolio_monitor - INFO - Analysis completed for USStock:GOOGL: HOLD +2026-01-12 18:44:49,746 - app.services.portfolio_monitor - INFO - Running multi-agent analysis for USStock:INTC +2026-01-12 18:44:49,757 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-12 18:44:49,758 - app.services.analysis - INFO - Starting analysis USStock:INTC, language=zh-CN, mode=multi-agent +2026-01-12 18:44:49,758 - app.services.analysis - INFO - Run coordinator: USStock:INTC +2026-01-12 18:44:49,758 - app.services.agents.coordinator - INFO - Multi-agent analysis start: USStock:INTC, model=None, language=zh-CN +2026-01-12 18:44:53,145 - app.services.agents.tools - INFO - Running news search: "Intel Corp" INTC stock news +2026-01-12 18:44:54,159 - app.services.agents.tools - INFO - Deep reading: Intel: INTC Stock Price Quote & News | Robinhood +2026-01-12 18:44:55,064 - app.services.agents.tools - INFO - Deep reading: Intel Corp. (INTC) Soars 6.5% Ahead of FY25 Earnings +2026-01-12 18:44:57,731 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-12 18:44:58,481 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:58,515 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:58,558 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:58,576 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:58,696 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:44:59,307 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:59,307 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:59,307 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:59,330 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:59,330 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:59,330 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:59,372 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:59,372 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:59,372 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:59,400 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:59,401 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:59,401 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:59,549 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:44:59,549 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:59,549 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:44:59,551 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-12 18:45:00,255 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:00,407 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:00,985 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:00,986 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:00,986 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:01,135 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:01,136 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:01,136 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:01,137 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-12 18:45:01,717 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:02,304 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:02,305 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:02,305 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:02,306 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-12 18:45:03,035 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:03,079 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:03,176 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:03,686 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:03,686 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:03,686 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:03,844 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:03,844 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:03,844 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:03,887 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:03,887 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:03,887 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:03,895 - app.services.agents.reflection - INFO - Recorded analysis for reflection: USStock:INTC, will verify after 7 day(s) +2026-01-12 18:45:03,895 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: USStock:INTC +2026-01-12 18:45:03,896 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-12 18:45:03,897 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-12 18:45:03,897 - app.services.portfolio_monitor - INFO - Analysis completed for USStock:INTC: HOLD +2026-01-12 18:45:03,897 - app.services.portfolio_monitor - INFO - Running multi-agent analysis for USStock:MSFT +2026-01-12 18:45:03,906 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-12 18:45:03,907 - app.services.analysis - INFO - Starting analysis USStock:MSFT, language=zh-CN, mode=multi-agent +2026-01-12 18:45:03,907 - app.services.analysis - INFO - Run coordinator: USStock:MSFT +2026-01-12 18:45:03,907 - app.services.agents.coordinator - INFO - Multi-agent analysis start: USStock:MSFT, model=None, language=zh-CN +2026-01-12 18:45:04,090 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:45:04] "GET /api/strategies/notifications?limit=50&_t=1768214704056 HTTP/1.1" 200 - +2026-01-12 18:45:05,191 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:45:05] "GET /api/strategies/notifications?limit=50&_t=1768214704877 HTTP/1.1" 200 - +2026-01-12 18:45:05,209 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:45:05] "GET /api/portfolio/positions?_t=1768214704897 HTTP/1.1" 200 - +2026-01-12 18:45:05,210 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:45:05] "GET /api/portfolio/summary?_t=1768214704897 HTTP/1.1" 200 - +2026-01-12 18:45:05,386 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:45:05] "POST /api/strategies/notifications/read HTTP/1.1" 200 - +2026-01-12 18:45:07,410 - app.services.agents.tools - INFO - Running news search: "Microsoft Corp" MSFT stock news +2026-01-12 18:45:08,173 - app.services.agents.tools - INFO - Deep reading: MSFT: Microsoft Corp - Stock Price, Quote and News - CNBC +2026-01-12 18:45:08,905 - app.services.agents.tools - INFO - Deep reading: Buy or Sell Microsoft Stock - MSFT Stock Price Quote & News ... +2026-01-12 18:45:10,057 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-12 18:45:10,768 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:10,784 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:10,794 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:10,844 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:10,887 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:11,512 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:11,512 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:11,513 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:11,609 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:11,609 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:11,609 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:11,623 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:11,623 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:11,623 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:11,976 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:11,976 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:11,976 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:14,087 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:14,087 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:14,087 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:14,089 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-12 18:45:14,765 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:14,834 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:15,419 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:15,419 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:15,419 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:15,464 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:15,464 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:15,464 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:15,465 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-12 18:45:15,993 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:16,657 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:16,657 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:16,657 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:16,658 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-12 18:45:17,311 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:17,315 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:17,321 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:17,968 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:17,968 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:17,969 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:18,020 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:18,020 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:18,020 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:18,063 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:18,063 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:18,063 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:18,072 - app.services.agents.reflection - INFO - Recorded analysis for reflection: USStock:MSFT, will verify after 7 day(s) +2026-01-12 18:45:18,072 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: USStock:MSFT +2026-01-12 18:45:18,072 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-12 18:45:18,073 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-12 18:45:18,073 - app.services.portfolio_monitor - INFO - Analysis completed for USStock:MSFT: HOLD +2026-01-12 18:45:18,074 - app.services.portfolio_monitor - INFO - Running multi-agent analysis for USStock:OMDA +2026-01-12 18:45:18,083 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-12 18:45:18,083 - app.services.analysis - INFO - Starting analysis USStock:OMDA, language=zh-CN, mode=multi-agent +2026-01-12 18:45:18,083 - app.services.analysis - INFO - Run coordinator: USStock:OMDA +2026-01-12 18:45:18,083 - app.services.agents.coordinator - INFO - Multi-agent analysis start: USStock:OMDA, model=None, language=zh-CN +2026-01-12 18:45:20,659 - app.services.agents.tools - INFO - Running news search: "Omada Health Inc" OMDA stock news +2026-01-12 18:45:21,473 - app.services.agents.tools - INFO - Deep reading: Stock Quote & Chart | Omada Health, Inc. +2026-01-12 18:45:23,246 - app.services.agents.tools - INFO - Deep reading: OMADA HEALTH, INC. (OMDA) Stock, Price, News, Quotes ... +2026-01-12 18:45:24,523 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-12 18:45:25,267 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:25,359 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:25,493 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:25,555 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:25,751 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:26,140 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:26,141 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:26,141 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:26,144 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:26,144 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:26,144 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:26,209 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:26,209 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:26,210 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:26,405 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:26,406 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:26,406 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:26,713 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:26,714 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:26,714 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:26,715 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-12 18:45:27,596 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:27,743 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:28,221 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:28,221 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:28,221 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:28,981 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:28,981 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:28,981 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:28,982 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-12 18:45:29,528 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:30,758 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:30,758 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:30,758 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:30,759 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-12 18:45:31,431 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:31,530 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:31,894 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:32,115 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:32,115 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:32,115 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:32,188 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:32,189 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:32,189 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:32,442 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:32,444 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:32,444 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:32,452 - app.services.agents.reflection - INFO - Recorded analysis for reflection: USStock:OMDA, will verify after 7 day(s) +2026-01-12 18:45:32,452 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: USStock:OMDA +2026-01-12 18:45:32,452 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-12 18:45:32,453 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-12 18:45:32,454 - app.services.portfolio_monitor - INFO - Analysis completed for USStock:OMDA: HOLD +2026-01-12 18:45:32,454 - app.services.portfolio_monitor - INFO - Running multi-agent analysis for USStock:ORCL +2026-01-12 18:45:32,463 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-12 18:45:32,464 - app.services.analysis - INFO - Starting analysis USStock:ORCL, language=zh-CN, mode=multi-agent +2026-01-12 18:45:32,464 - app.services.analysis - INFO - Run coordinator: USStock:ORCL +2026-01-12 18:45:32,464 - app.services.agents.coordinator - INFO - Multi-agent analysis start: USStock:ORCL, model=None, language=zh-CN +2026-01-12 18:45:34,878 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:45:34] "GET /api/strategies/notifications?limit=50&_t=1768214734870 HTTP/1.1" 200 - +2026-01-12 18:45:35,200 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:45:35] "GET /api/portfolio/positions?_t=1768214734887 HTTP/1.1" 200 - +2026-01-12 18:45:35,201 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:45:35] "GET /api/portfolio/summary?_t=1768214734887 HTTP/1.1" 200 - +2026-01-12 18:45:35,828 - app.services.agents.tools - INFO - Running news search: "Oracle Corp" ORCL stock news +2026-01-12 18:45:36,719 - app.services.agents.tools - INFO - Deep reading: ORCL: Oracle Corp - Stock Price, Quote and News - CNBC +2026-01-12 18:45:37,580 - app.services.agents.tools - INFO - Deep reading: Oracle: ORCL Stock Price Quote & News | Robinhood +2026-01-12 18:45:38,672 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-12 18:45:39,403 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:39,418 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:39,443 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:39,462 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:39,575 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:40,084 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:40,084 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:40,085 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:40,199 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:40,200 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:40,200 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:40,230 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:40,231 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:40,231 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:40,252 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:40,252 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:40,252 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:40,629 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:40,630 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:40,630 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:40,632 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-12 18:45:41,385 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:41,474 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:41,979 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:41,979 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:41,979 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:42,074 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:42,075 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:42,075 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:42,076 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-12 18:45:42,583 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:43,186 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:43,186 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:43,187 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:43,187 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-12 18:45:43,874 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:43,918 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:44,005 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:44,619 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:44,619 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:44,619 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:44,675 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:44,676 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:44,676 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:44,685 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:44,685 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:44,686 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:44,694 - app.services.agents.reflection - INFO - Recorded analysis for reflection: USStock:ORCL, will verify after 7 day(s) +2026-01-12 18:45:44,694 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: USStock:ORCL +2026-01-12 18:45:44,694 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-12 18:45:44,696 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-12 18:45:44,696 - app.services.portfolio_monitor - INFO - Analysis completed for USStock:ORCL: HOLD +2026-01-12 18:45:44,696 - app.services.portfolio_monitor - INFO - Running multi-agent analysis for USStock:SPCE +2026-01-12 18:45:44,706 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-12 18:45:44,706 - app.services.analysis - INFO - Starting analysis USStock:SPCE, language=zh-CN, mode=multi-agent +2026-01-12 18:45:44,706 - app.services.analysis - INFO - Run coordinator: USStock:SPCE +2026-01-12 18:45:44,707 - app.services.agents.coordinator - INFO - Multi-agent analysis start: USStock:SPCE, model=None, language=zh-CN +2026-01-12 18:45:47,522 - app.services.agents.tools - INFO - Running news search: "Virgin Galactic Holdings Inc" SPCE stock news +2026-01-12 18:45:48,473 - app.services.agents.tools - INFO - Deep reading: Virgin Galactic Holdings, Inc. (SPCE) Stock Price, News, Quote ... +2026-01-12 18:45:49,171 - app.services.agents.tools - INFO - Deep reading: Virgin Galactic (SPCE) Stock Price, News & Analysis +2026-01-12 18:45:52,857 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-12 18:45:53,586 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:53,619 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:53,628 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:53,655 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:53,672 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:54,291 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:54,291 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:54,291 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:54,323 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:54,323 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:54,323 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:54,389 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:54,390 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:54,390 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:54,485 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:54,485 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:54,485 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:54,529 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:54,529 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:54,529 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:54,531 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-12 18:45:55,125 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:55,157 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:55,747 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:55,748 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:55,748 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:55,846 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:55,846 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:55,846 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:55,847 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-12 18:45:56,354 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:56,925 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:56,925 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:56,925 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:56,926 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-12 18:45:57,569 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:57,603 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:57,639 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 18:45:58,222 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:58,222 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:58,223 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:58,257 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:58,257 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:58,257 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:58,574 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 18:45:58,574 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:58,574 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 18:45:58,582 - app.services.agents.reflection - INFO - Recorded analysis for reflection: USStock:SPCE, will verify after 7 day(s) +2026-01-12 18:45:58,582 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: USStock:SPCE +2026-01-12 18:45:58,582 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-12 18:45:58,583 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-12 18:45:58,583 - app.services.portfolio_monitor - INFO - Analysis completed for USStock:SPCE: HOLD +2026-01-12 18:46:04,880 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:46:04] "GET /api/strategies/notifications?limit=50&_t=1768214764871 HTTP/1.1" 200 - +2026-01-12 18:46:05,214 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:46:05] "GET /api/portfolio/positions?_t=1768214764893 HTTP/1.1" 200 - +2026-01-12 18:46:05,215 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:46:05] "GET /api/portfolio/summary?_t=1768214764893 HTTP/1.1" 200 - +2026-01-12 18:46:34,885 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:46:34] "GET /api/strategies/notifications?limit=50&_t=1768214794877 HTTP/1.1" 200 - +2026-01-12 18:46:35,223 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:46:35] "GET /api/portfolio/positions?_t=1768214794898 HTTP/1.1" 200 - +2026-01-12 18:46:35,223 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:46:35] "GET /api/portfolio/summary?_t=1768214794898 HTTP/1.1" 200 - +2026-01-12 18:46:52,914 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:46:52] "PUT /api/portfolio/monitors/1 HTTP/1.1" 200 - +2026-01-12 18:46:53,261 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:46:53] "GET /api/portfolio/monitors?_t=1768214812938 HTTP/1.1" 200 - +2026-01-12 18:46:56,031 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:46:56] "GET /api/market/types?_t=1768214816020 HTTP/1.1" 200 - +2026-01-12 18:46:56,035 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:46:56] "GET /api/portfolio/positions?_t=1768214816020 HTTP/1.1" 200 - +2026-01-12 18:46:56,362 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:46:56] "GET /api/portfolio/summary?_t=1768214816020 HTTP/1.1" 200 - +2026-01-12 18:46:56,365 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:46:56] "GET /api/portfolio/alerts?_t=1768214816020 HTTP/1.1" 200 - +2026-01-12 18:46:56,366 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:46:56] "GET /api/portfolio/monitors?_t=1768214816020 HTTP/1.1" 200 - +2026-01-12 18:46:56,366 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:46:56] "GET /api/portfolio/groups?_t=1768214816020 HTTP/1.1" 200 - +2026-01-12 18:46:56,370 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:46:56] "GET /api/strategies/notifications?limit=50&_t=1768214816020 HTTP/1.1" 200 - +2026-01-12 18:46:57,525 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:46:57] "GET /api/strategies/notifications?limit=50&_t=1768214817507 HTTP/1.1" 200 - +2026-01-12 18:47:01,728 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:47:01] "POST /api/strategies/notifications/read HTTP/1.1" 200 - +2026-01-12 18:47:03,865 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:47:03] "GET /api/strategies/notifications?limit=50&_t=1768214823846 HTTP/1.1" 200 - +2026-01-12 18:47:07,782 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:47:07] "POST /api/strategies/notifications/read HTTP/1.1" 200 - +2026-01-12 18:47:26,003 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:47:26] "GET /api/strategies/notifications?limit=50&_t=1768214845994 HTTP/1.1" 200 - +2026-01-12 18:47:26,329 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:47:26] "GET /api/portfolio/positions?_t=1768214846009 HTTP/1.1" 200 - +2026-01-12 18:47:26,331 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:47:26] "GET /api/portfolio/summary?_t=1768214846009 HTTP/1.1" 200 - +2026-01-12 18:47:56,310 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:47:56] "GET /api/strategies/notifications?limit=50&_t=1768214875994 HTTP/1.1" 200 - +2026-01-12 18:47:56,322 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:47:56] "GET /api/portfolio/summary?_t=1768214876009 HTTP/1.1" 200 - +2026-01-12 18:47:56,322 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:47:56] "GET /api/portfolio/positions?_t=1768214876009 HTTP/1.1" 200 - +2026-01-12 18:48:26,001 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:48:26] "GET /api/strategies/notifications?limit=50&_t=1768214905992 HTTP/1.1" 200 - +2026-01-12 18:48:26,328 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:48:26] "GET /api/portfolio/positions?_t=1768214906007 HTTP/1.1" 200 - +2026-01-12 18:48:26,329 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:48:26] "GET /api/portfolio/summary?_t=1768214906007 HTTP/1.1" 200 - +2026-01-12 18:48:56,315 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:48:56] "GET /api/strategies/notifications?limit=50&_t=1768214935996 HTTP/1.1" 200 - +2026-01-12 18:48:56,344 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (280136s) +2026-01-12 18:48:56,345 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (280136s) +2026-01-12 18:48:56,345 - app.data_sources.base - WARNING - Warning: GD data is delayed (280136s) +2026-01-12 18:48:56,351 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (280136s) +2026-01-12 18:48:56,353 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:48:56] "GET /api/portfolio/positions?_t=1768214936009 HTTP/1.1" 200 - +2026-01-12 18:48:56,354 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:48:56] "GET /api/portfolio/summary?_t=1768214936009 HTTP/1.1" 200 - +2026-01-12 18:49:26,013 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:49:26] "GET /api/strategies/notifications?limit=50&_t=1768214966005 HTTP/1.1" 200 - +2026-01-12 18:49:26,349 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (280166s) +2026-01-12 18:49:26,363 - app.data_sources.base - WARNING - Warning: AMD data is delayed (280166s) +2026-01-12 18:49:26,369 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (280166s) +2026-01-12 18:49:26,370 - app.data_sources.base - WARNING - Warning: INTC data is delayed (280166s) +2026-01-12 18:49:26,371 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (280166s) +2026-01-12 18:49:26,371 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:49:26] "GET /api/portfolio/positions?_t=1768214966019 HTTP/1.1" 200 - +2026-01-12 18:49:26,372 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:49:26] "GET /api/portfolio/summary?_t=1768214966019 HTTP/1.1" 200 - +2026-01-12 18:49:56,015 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:49:56] "GET /api/strategies/notifications?limit=50&_t=1768214996004 HTTP/1.1" 200 - +2026-01-12 18:49:56,334 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:49:56] "GET /api/portfolio/positions?_t=1768214996021 HTTP/1.1" 200 - +2026-01-12 18:49:56,335 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:49:56] "GET /api/portfolio/summary?_t=1768214996021 HTTP/1.1" 200 - +2026-01-12 18:50:26,005 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:50:26] "GET /api/strategies/notifications?limit=50&_t=1768215025996 HTTP/1.1" 200 - +2026-01-12 18:50:26,332 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:50:26] "GET /api/portfolio/positions?_t=1768215026010 HTTP/1.1" 200 - +2026-01-12 18:50:26,333 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:50:26] "GET /api/portfolio/summary?_t=1768215026010 HTTP/1.1" 200 - +2026-01-12 18:50:56,014 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:50:56] "GET /api/strategies/notifications?limit=50&_t=1768215056005 HTTP/1.1" 200 - +2026-01-12 18:50:56,338 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:50:56] "GET /api/portfolio/positions?_t=1768215056019 HTTP/1.1" 200 - +2026-01-12 18:50:56,340 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:50:56] "GET /api/portfolio/summary?_t=1768215056019 HTTP/1.1" 200 - +2026-01-12 18:51:24,034 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:51:24] "GET /api/strategies/notifications?limit=50&_t=1768215084026 HTTP/1.1" 200 - +2026-01-12 18:51:26,352 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:51:26] "GET /api/portfolio/summary?_t=1768215086027 HTTP/1.1" 200 - +2026-01-12 18:51:26,363 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:51:26] "GET /api/portfolio/positions?_t=1768215086026 HTTP/1.1" 200 - +2026-01-12 18:51:37,456 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:51:37] "GET /api/strategies/notifications?limit=50&_t=1768215097444 HTTP/1.1" 200 - +2026-01-12 18:51:56,331 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:51:56] "GET /api/portfolio/positions?_t=1768215116010 HTTP/1.1" 200 - +2026-01-12 18:51:56,331 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:51:56] "GET /api/portfolio/summary?_t=1768215116010 HTTP/1.1" 200 - +2026-01-12 18:52:00,892 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:52:00] "GET /api/strategies/notifications?limit=50&_t=1768215120856 HTTP/1.1" 200 - +2026-01-12 18:52:15,403 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:52:15] "GET /api/strategies/notifications?limit=50&_t=1768215135393 HTTP/1.1" 200 - +2026-01-12 18:52:26,045 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:52:26] "GET /api/portfolio/positions?_t=1768215146037 HTTP/1.1" 200 - +2026-01-12 18:52:26,359 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:52:26] "GET /api/portfolio/summary?_t=1768215146037 HTTP/1.1" 200 - +2026-01-12 18:52:32,760 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:52:32] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 18:52:39,666 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:52:39] "GET /api/strategies/notifications?limit=50&_t=1768215159653 HTTP/1.1" 200 - +2026-01-12 18:52:52,003 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:52:52] "POST /api/portfolio/positions HTTP/1.1" 200 - +2026-01-12 18:52:52,358 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:52:52] "GET /api/portfolio/monitors?_t=1768215172028 HTTP/1.1" 200 - +2026-01-12 18:52:52,359 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:52:52] "GET /api/portfolio/alerts?_t=1768215172028 HTTP/1.1" 200 - +2026-01-12 18:52:52,359 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:52:52] "GET /api/portfolio/groups?_t=1768215172028 HTTP/1.1" 200 - +2026-01-12 18:52:54,322 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:52:54] "GET /api/portfolio/positions?_t=1768215172028 HTTP/1.1" 200 - +2026-01-12 18:52:54,747 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:52:54] "GET /api/portfolio/summary?_t=1768215172028 HTTP/1.1" 200 - +2026-01-12 18:52:56,039 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:52:56] "GET /api/portfolio/positions?_t=1768215176025 HTTP/1.1" 200 - +2026-01-12 18:52:56,339 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:52:56] "GET /api/portfolio/summary?_t=1768215176025 HTTP/1.1" 200 - +2026-01-12 18:53:09,983 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:53:09] "GET /api/strategies/notifications?limit=50&_t=1768215189660 HTTP/1.1" 200 - +2026-01-12 18:53:15,775 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:53:15] "GET /api/strategies/notifications?limit=50&_t=1768215195765 HTTP/1.1" 200 - +2026-01-12 18:53:18,997 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:53:18] "POST /api/portfolio/alerts HTTP/1.1" 200 - +2026-01-12 18:53:19,255 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:53:19] "GET /api/portfolio/alerts?_t=1768215199027 HTTP/1.1" 200 - +2026-01-12 18:53:23,158 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:53:23] "GET /api/market/types?_t=1768215203148 HTTP/1.1" 200 - +2026-01-12 18:53:23,475 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:53:23] "GET /api/portfolio/groups?_t=1768215203148 HTTP/1.1" 200 - +2026-01-12 18:53:23,476 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:53:23] "GET /api/portfolio/monitors?_t=1768215203148 HTTP/1.1" 200 - +2026-01-12 18:53:23,476 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:53:23] "GET /api/portfolio/alerts?_t=1768215203148 HTTP/1.1" 200 - +2026-01-12 18:53:23,478 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:53:23] "GET /api/portfolio/positions?_t=1768215203148 HTTP/1.1" 200 - +2026-01-12 18:53:23,480 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:53:23] "GET /api/portfolio/summary?_t=1768215203148 HTTP/1.1" 200 - +2026-01-12 18:53:28,826 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.6% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 18:53:31,212 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:53:31] "GET /api/strategies/notifications?limit=50&_t=1768215211205 HTTP/1.1" 200 - +2026-01-12 18:53:35,892 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:53:35] "GET /api/strategies/notifications?limit=50&_t=1768215215871 HTTP/1.1" 200 - +2026-01-12 18:53:37,557 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:53:37] "POST /api/strategies/notifications/read HTTP/1.1" 200 - +2026-01-12 18:53:44,760 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:53:44] "GET /api/strategies/notifications?limit=50&_t=1768215224739 HTTP/1.1" 200 - +2026-01-12 18:53:45,990 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:53:45] "POST /api/strategies/notifications/read HTTP/1.1" 200 - +2026-01-12 18:53:49,693 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:53:49] "GET /api/strategies/notifications?limit=50&_t=1768215229672 HTTP/1.1" 200 - +2026-01-12 18:53:53,471 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:53:53] "GET /api/portfolio/positions?_t=1768215233148 HTTP/1.1" 200 - +2026-01-12 18:53:53,471 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:53:53] "GET /api/portfolio/summary?_t=1768215233148 HTTP/1.1" 200 - +2026-01-12 18:53:58,843 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.6% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 18:54:01,227 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:54:01] "GET /api/strategies/notifications?limit=50&_t=1768215241220 HTTP/1.1" 200 - +2026-01-12 18:54:23,480 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:54:23] "GET /api/portfolio/positions?_t=1768215263156 HTTP/1.1" 200 - +2026-01-12 18:54:23,480 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:54:23] "GET /api/portfolio/summary?_t=1768215263156 HTTP/1.1" 200 - +2026-01-12 18:54:28,871 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.6% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 18:54:31,213 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:54:31] "GET /api/strategies/notifications?limit=50&_t=1768215271205 HTTP/1.1" 200 - +2026-01-12 18:54:53,486 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (280493s) +2026-01-12 18:54:53,497 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (280493s) +2026-01-12 18:54:53,497 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (280493s) +2026-01-12 18:54:53,503 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (280494s) +2026-01-12 18:54:53,522 - app.data_sources.base - WARNING - Warning: GD data is delayed (280494s) +2026-01-12 18:54:53,523 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (280494s) +2026-01-12 18:54:53,523 - app.data_sources.base - WARNING - Warning: INTC data is delayed (280494s) +2026-01-12 18:54:53,527 - app.data_sources.base - WARNING - Warning: AMD data is delayed (280494s) +2026-01-12 18:54:53,528 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (280494s) +2026-01-12 18:54:53,537 - app.data_sources.base - WARNING - Warning: AMD data is delayed (280494s) +2026-01-12 18:54:53,545 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (280494s) +2026-01-12 18:54:53,551 - app.data_sources.base - WARNING - Warning: INTC data is delayed (280494s) +2026-01-12 18:54:53,552 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (280494s) +2026-01-12 18:54:53,552 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:54:53] "GET /api/portfolio/positions?_t=1768215293156 HTTP/1.1" 200 - +2026-01-12 18:54:53,553 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:54:53] "GET /api/portfolio/summary?_t=1768215293156 HTTP/1.1" 200 - +2026-01-12 18:54:58,900 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.6% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 18:55:01,222 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:55:01] "GET /api/strategies/notifications?limit=50&_t=1768215301214 HTTP/1.1" 200 - +2026-01-12 18:55:23,475 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:55:23] "GET /api/portfolio/positions?_t=1768215323149 HTTP/1.1" 200 - +2026-01-12 18:55:23,476 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:55:23] "GET /api/portfolio/summary?_t=1768215323149 HTTP/1.1" 200 - +2026-01-12 18:55:28,915 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.6% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 18:55:31,218 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:55:31] "GET /api/strategies/notifications?limit=50&_t=1768215331210 HTTP/1.1" 200 - +2026-01-12 18:55:53,481 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:55:53] "GET /api/portfolio/positions?_t=1768215353162 HTTP/1.1" 200 - +2026-01-12 18:55:53,482 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:55:53] "GET /api/portfolio/summary?_t=1768215353162 HTTP/1.1" 200 - +2026-01-12 18:55:58,932 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.6% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 18:56:01,226 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:56:01] "GET /api/strategies/notifications?limit=50&_t=1768215361219 HTTP/1.1" 200 - +2026-01-12 18:56:23,464 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:56:23] "GET /api/portfolio/positions?_t=1768215383152 HTTP/1.1" 200 - +2026-01-12 18:56:23,465 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:56:23] "GET /api/portfolio/summary?_t=1768215383152 HTTP/1.1" 200 - +2026-01-12 18:56:28,951 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.6% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 18:56:31,214 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:56:31] "GET /api/strategies/notifications?limit=50&_t=1768215391207 HTTP/1.1" 200 - +2026-01-12 18:56:53,481 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:56:53] "GET /api/portfolio/positions?_t=1768215413158 HTTP/1.1" 200 - +2026-01-12 18:56:53,489 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:56:53] "GET /api/portfolio/summary?_t=1768215413158 HTTP/1.1" 200 - +2026-01-12 18:56:55,033 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:56:55] "POST /api/strategies/notifications/read HTTP/1.1" 200 - +2026-01-12 18:56:58,981 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.6% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 18:57:01,531 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:57:01] "GET /api/strategies/notifications?limit=50&_t=1768215421216 HTTP/1.1" 200 - +2026-01-12 18:57:03,877 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:57:03] "GET /api/market/types?_t=1768215423870 HTTP/1.1" 200 - +2026-01-12 18:57:04,150 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:57:04] "GET /api/portfolio/positions?_t=1768215423870 HTTP/1.1" 200 - +2026-01-12 18:57:04,187 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:57:04] "GET /api/portfolio/summary?_t=1768215423870 HTTP/1.1" 200 - +2026-01-12 18:57:04,187 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:57:04] "GET /api/portfolio/alerts?_t=1768215423870 HTTP/1.1" 200 - +2026-01-12 18:57:04,188 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:57:04] "GET /api/portfolio/monitors?_t=1768215423870 HTTP/1.1" 200 - +2026-01-12 18:57:04,188 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:57:04] "GET /api/portfolio/groups?_t=1768215423870 HTTP/1.1" 200 - +2026-01-12 18:57:19,555 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:57:19] "GET /api/market/types?_t=1768215439546 HTTP/1.1" 200 - +2026-01-12 18:57:19,786 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:57:19] "GET /api/portfolio/positions?_t=1768215439546 HTTP/1.1" 200 - +2026-01-12 18:57:19,835 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:57:19] "GET /api/portfolio/summary?_t=1768215439546 HTTP/1.1" 200 - +2026-01-12 18:57:19,867 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:57:19] "GET /api/portfolio/monitors?_t=1768215439547 HTTP/1.1" 200 - +2026-01-12 18:57:19,868 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:57:19] "GET /api/portfolio/groups?_t=1768215439547 HTTP/1.1" 200 - +2026-01-12 18:57:19,868 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:57:19] "GET /api/portfolio/alerts?_t=1768215439547 HTTP/1.1" 200 - +2026-01-12 18:57:29,007 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.6% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 18:57:31,520 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:57:31] "GET /api/strategies/notifications?limit=50&_t=1768215451204 HTTP/1.1" 200 - +2026-01-12 18:57:49,574 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:57:49] "GET /api/portfolio/positions?_t=1768215469566 HTTP/1.1" 200 - +2026-01-12 18:57:49,884 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:57:49] "GET /api/portfolio/summary?_t=1768215469566 HTTP/1.1" 200 - +2026-01-12 18:57:59,035 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.6% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 18:58:01,524 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:58:01] "GET /api/strategies/notifications?limit=50&_t=1768215481206 HTTP/1.1" 200 - +2026-01-12 18:58:19,644 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:58:19] "GET /api/portfolio/positions?_t=1768215499564 HTTP/1.1" 200 - +2026-01-12 18:58:19,881 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:58:19] "GET /api/portfolio/summary?_t=1768215499564 HTTP/1.1" 200 - +2026-01-12 18:58:29,117 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.5% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 18:58:31,525 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:58:31] "GET /api/strategies/notifications?limit=50&_t=1768215511210 HTTP/1.1" 200 - +2026-01-12 18:58:49,574 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:58:49] "GET /api/portfolio/positions?_t=1768215529566 HTTP/1.1" 200 - +2026-01-12 18:58:49,882 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:58:49] "GET /api/portfolio/summary?_t=1768215529566 HTTP/1.1" 200 - +2026-01-12 18:58:59,138 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.5% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 18:59:01,531 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:59:01] "GET /api/strategies/notifications?limit=50&_t=1768215541213 HTTP/1.1" 200 - +2026-01-12 18:59:19,573 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:59:19] "GET /api/portfolio/positions?_t=1768215559564 HTTP/1.1" 200 - +2026-01-12 18:59:19,885 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:59:19] "GET /api/portfolio/summary?_t=1768215559564 HTTP/1.1" 200 - +2026-01-12 18:59:29,166 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.5% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 18:59:31,523 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:59:31] "GET /api/strategies/notifications?limit=50&_t=1768215571207 HTTP/1.1" 200 - +2026-01-12 18:59:49,565 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:59:49] "GET /api/portfolio/positions?_t=1768215589557 HTTP/1.1" 200 - +2026-01-12 18:59:49,883 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 18:59:49] "GET /api/portfolio/summary?_t=1768215589557 HTTP/1.1" 200 - +2026-01-12 18:59:59,194 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.5% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 19:00:01,527 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:00:01] "GET /api/strategies/notifications?limit=50&_t=1768215601210 HTTP/1.1" 200 - +2026-01-12 19:00:06,255 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-12 19:00:06,256 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-12 19:00:06,270 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-12 19:00:06,270 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-12 19:00:06,272 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 19:00:06,308 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 19:00:06,631 - app.services.strategy - INFO - Found 0 running strategies: [] +2026-01-12 19:00:06,632 - app - INFO - No running strategies to restore. +2026-01-12 19:00:06,648 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-12 19:00:06,648 - werkzeug - INFO - Press CTRL+C to quit +2026-01-12 19:00:08,843 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.6% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 19:00:09,781 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:00:09] "GET /api/market/types?_t=1768215609769 HTTP/1.1" 200 - +2026-01-12 19:00:09,919 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 19:00:09,919 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 19:00:09,919 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 19:00:09,919 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 19:00:09,920 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 19:00:09,920 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 19:00:09,920 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 19:00:09,920 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 19:00:09,921 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 19:00:10,105 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:00:10] "GET /api/portfolio/groups?_t=1768215609769 HTTP/1.1" 200 - +2026-01-12 19:00:10,106 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:00:10] "GET /api/portfolio/alerts?_t=1768215609769 HTTP/1.1" 200 - +2026-01-12 19:00:10,108 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:00:10] "GET /api/portfolio/monitors?_t=1768215609769 HTTP/1.1" 200 - +2026-01-12 19:00:10,109 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:00:10] "GET /api/strategies/notifications?limit=50&_t=1768215609769 HTTP/1.1" 200 - +2026-01-12 19:00:10,762 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (280811s) +2026-01-12 19:00:10,786 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (280811s) +2026-01-12 19:00:10,787 - app.data_sources.base - WARNING - Warning: AMD data is delayed (280811s) +2026-01-12 19:00:10,857 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (280811s) +2026-01-12 19:00:10,880 - app.data_sources.base - WARNING - Warning: GD data is delayed (280811s) +2026-01-12 19:00:10,885 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (280811s) +2026-01-12 19:00:10,904 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (280811s) +2026-01-12 19:00:10,905 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (280811s) +2026-01-12 19:00:10,911 - app.data_sources.base - WARNING - Warning: GD data is delayed (280811s) +2026-01-12 19:00:10,928 - app.data_sources.base - WARNING - Warning: INTC data is delayed (280811s) +2026-01-12 19:00:10,928 - app.data_sources.base - WARNING - Warning: AMD data is delayed (280811s) +2026-01-12 19:00:10,957 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (280811s) +2026-01-12 19:00:10,966 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (280811s) +2026-01-12 19:00:10,967 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:00:10] "GET /api/portfolio/positions?_t=1768215609769 HTTP/1.1" 200 - +2026-01-12 19:00:10,997 - app.data_sources.base - WARNING - Warning: INTC data is delayed (280811s) +2026-01-12 19:00:11,116 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (280811s) +2026-01-12 19:00:11,117 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:00:11] "GET /api/portfolio/summary?_t=1768215609769 HTTP/1.1" 200 - +2026-01-12 19:00:38,861 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.6% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 19:00:40,068 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:00:40] "GET /api/strategies/notifications?limit=50&_t=1768215639753 HTTP/1.1" 200 - +2026-01-12 19:00:40,102 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:00:40] "GET /api/portfolio/positions?_t=1768215639779 HTTP/1.1" 200 - +2026-01-12 19:00:40,103 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:00:40] "GET /api/portfolio/summary?_t=1768215639780 HTTP/1.1" 200 - +2026-01-12 19:00:47,680 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:00:47] "GET /api/strategies/notifications?limit=50&_t=1768215647660 HTTP/1.1" 200 - +2026-01-12 19:00:48,774 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:00:48] "POST /api/strategies/notifications/read HTTP/1.1" 200 - +2026-01-12 19:00:50,517 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:00:50] "GET /api/strategies/notifications?limit=50&_t=1768215650498 HTTP/1.1" 200 - +2026-01-12 19:00:51,985 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:00:51] "POST /api/strategies/notifications/read-all HTTP/1.1" 200 - +2026-01-12 19:00:53,400 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:00:53] "GET /api/market/types?_t=1768215653082 HTTP/1.1" 200 - +2026-01-12 19:00:53,403 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:00:53] "GET /api/portfolio/summary?_t=1768215653082 HTTP/1.1" 200 - +2026-01-12 19:00:53,404 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:00:53] "GET /api/portfolio/alerts?_t=1768215653082 HTTP/1.1" 200 - +2026-01-12 19:00:53,404 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:00:53] "GET /api/portfolio/monitors?_t=1768215653082 HTTP/1.1" 200 - +2026-01-12 19:00:53,405 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:00:53] "GET /api/portfolio/groups?_t=1768215653082 HTTP/1.1" 200 - +2026-01-12 19:00:53,407 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:00:53] "GET /api/portfolio/positions?_t=1768215653082 HTTP/1.1" 200 - +2026-01-12 19:01:08,883 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.6% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 19:01:10,067 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:01:10] "GET /api/strategies/notifications?limit=50&_t=1768215669751 HTTP/1.1" 200 - +2026-01-12 19:01:23,100 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:01:23] "GET /api/portfolio/positions?_t=1768215683092 HTTP/1.1" 200 - +2026-01-12 19:01:23,408 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:01:23] "GET /api/portfolio/summary?_t=1768215683092 HTTP/1.1" 200 - +2026-01-12 19:01:38,918 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.6% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 19:01:40,066 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:01:40] "GET /api/strategies/notifications?limit=50&_t=1768215699749 HTTP/1.1" 200 - +2026-01-12 19:01:53,100 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:01:53] "GET /api/portfolio/positions?_t=1768215713091 HTTP/1.1" 200 - +2026-01-12 19:01:53,407 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:01:53] "GET /api/portfolio/summary?_t=1768215713091 HTTP/1.1" 200 - +2026-01-12 19:02:08,934 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.6% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 19:02:09,633 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:02:09] "GET /api/strategies/notifications?limit=50&_t=1768215729311 HTTP/1.1" 200 - +2026-01-12 19:02:09,898 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:02:09] "GET /api/strategies/notifications?limit=50&_t=1768215729747 HTTP/1.1" 200 - +2026-01-12 19:02:10,798 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:02:10] "POST /api/strategies/notifications/read HTTP/1.1" 200 - +2026-01-12 19:02:19,544 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:02:19] "GET /api/strategies/notifications?limit=50&_t=1768215739224 HTTP/1.1" 200 - +2026-01-12 19:02:23,102 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:02:23] "GET /api/portfolio/positions?_t=1768215743089 HTTP/1.1" 200 - +2026-01-12 19:02:23,409 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:02:23] "GET /api/portfolio/summary?_t=1768215743089 HTTP/1.1" 200 - +2026-01-12 19:02:38,956 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.6% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 19:02:40,069 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:02:40] "GET /api/strategies/notifications?limit=50&_t=1768215759749 HTTP/1.1" 200 - +2026-01-12 19:02:53,100 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:02:53] "GET /api/portfolio/positions?_t=1768215773092 HTTP/1.1" 200 - +2026-01-12 19:02:53,409 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:02:53] "GET /api/portfolio/summary?_t=1768215773092 HTTP/1.1" 200 - +2026-01-12 19:03:00,689 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:03:00] "GET /api/strategies/notifications?limit=50&_t=1768215780352 HTTP/1.1" 200 - +2026-01-12 19:03:01,363 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:03:01] "POST /api/strategies/notifications/read HTTP/1.1" 200 - +2026-01-12 19:03:08,984 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.6% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 19:03:10,071 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:03:10] "GET /api/strategies/notifications?limit=50&_t=1768215789750 HTTP/1.1" 200 - +2026-01-12 19:03:23,099 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:03:23] "GET /api/portfolio/positions?_t=1768215803090 HTTP/1.1" 200 - +2026-01-12 19:03:23,409 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:03:23] "GET /api/portfolio/summary?_t=1768215803090 HTTP/1.1" 200 - +2026-01-12 19:03:30,992 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:03:30] "GET /api/strategies/notifications?limit=50&_t=1768215810671 HTTP/1.1" 200 - +2026-01-12 19:03:32,076 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:03:32] "POST /api/strategies/notifications/read HTTP/1.1" 200 - +2026-01-12 19:03:39,010 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.6% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 19:03:40,065 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:03:40] "GET /api/strategies/notifications?limit=50&_t=1768215819751 HTTP/1.1" 200 - +2026-01-12 19:03:53,105 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:03:53] "GET /api/portfolio/positions?_t=1768215833097 HTTP/1.1" 200 - +2026-01-12 19:03:53,413 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:03:53] "GET /api/portfolio/summary?_t=1768215833097 HTTP/1.1" 200 - +2026-01-12 19:04:09,040 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.6% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 19:04:10,071 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:04:10] "GET /api/strategies/notifications?limit=50&_t=1768215849752 HTTP/1.1" 200 - +2026-01-12 19:04:23,107 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:04:23] "GET /api/portfolio/positions?_t=1768215863089 HTTP/1.1" 200 - +2026-01-12 19:04:23,409 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:04:23] "GET /api/portfolio/summary?_t=1768215863089 HTTP/1.1" 200 - +2026-01-12 19:04:39,063 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.6% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 19:04:40,077 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:04:40] "GET /api/strategies/notifications?limit=50&_t=1768215879758 HTTP/1.1" 200 - +2026-01-12 19:04:53,334 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:04:53] "GET /api/portfolio/positions?_t=1768215893096 HTTP/1.1" 200 - +2026-01-12 19:04:53,413 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:04:53] "GET /api/portfolio/summary?_t=1768215893096 HTTP/1.1" 200 - +2026-01-12 19:05:09,144 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.6% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 19:05:10,069 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:05:10] "GET /api/strategies/notifications?limit=50&_t=1768215909750 HTTP/1.1" 200 - +2026-01-12 19:05:23,098 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:05:23] "GET /api/portfolio/positions?_t=1768215923090 HTTP/1.1" 200 - +2026-01-12 19:05:23,408 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:05:23] "GET /api/portfolio/summary?_t=1768215923090 HTTP/1.1" 200 - +2026-01-12 19:05:39,164 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.6% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 19:05:40,061 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:05:40] "GET /api/strategies/notifications?limit=50&_t=1768215939750 HTTP/1.1" 200 - +2026-01-12 19:05:53,422 - app.data_sources.base - WARNING - Warning: AMD data is delayed (281153s) +2026-01-12 19:05:53,426 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (281153s) +2026-01-12 19:05:53,431 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (281153s) +2026-01-12 19:05:53,450 - app.data_sources.base - WARNING - Warning: INTC data is delayed (281153s) +2026-01-12 19:05:53,452 - app.data_sources.base - WARNING - Warning: GD data is delayed (281153s) +2026-01-12 19:05:53,453 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (281153s) +2026-01-12 19:05:53,453 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (281153s) +2026-01-12 19:05:53,463 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (281153s) +2026-01-12 19:05:53,467 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (281153s) +2026-01-12 19:05:53,472 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (281153s) +2026-01-12 19:05:53,478 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (281153s) +2026-01-12 19:05:53,483 - app.data_sources.base - WARNING - Warning: GD data is delayed (281153s) +2026-01-12 19:05:53,488 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (281153s) +2026-01-12 19:05:53,490 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:05:53] "GET /api/portfolio/summary?_t=1768215953096 HTTP/1.1" 200 - +2026-01-12 19:05:54,302 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:05:54] "GET /api/portfolio/positions?_t=1768215953096 HTTP/1.1" 200 - +2026-01-12 19:06:09,192 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.6% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 19:06:09,757 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:06:09] "GET /api/strategies/notifications?limit=50&_t=1768215969749 HTTP/1.1" 200 - +2026-01-12 19:06:23,419 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:06:23] "GET /api/portfolio/positions?_t=1768215983102 HTTP/1.1" 200 - +2026-01-12 19:06:23,420 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:06:23] "GET /api/portfolio/summary?_t=1768215983102 HTTP/1.1" 200 - +2026-01-12 19:06:39,219 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.6% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 19:06:39,751 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:06:39] "GET /api/strategies/notifications?limit=50&_t=1768215999744 HTTP/1.1" 200 - +2026-01-12 19:06:53,409 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:06:53] "GET /api/portfolio/positions?_t=1768216013089 HTTP/1.1" 200 - +2026-01-12 19:06:53,411 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:06:53] "GET /api/portfolio/summary?_t=1768216013089 HTTP/1.1" 200 - +2026-01-12 19:07:09,249 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.6% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 19:07:09,765 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:07:09] "GET /api/strategies/notifications?limit=50&_t=1768216029756 HTTP/1.1" 200 - +2026-01-12 19:07:23,419 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:07:23] "GET /api/portfolio/positions?_t=1768216043102 HTTP/1.1" 200 - +2026-01-12 19:07:23,420 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:07:23] "GET /api/portfolio/summary?_t=1768216043102 HTTP/1.1" 200 - +2026-01-12 19:07:39,269 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.6% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 19:07:39,754 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:07:39] "GET /api/strategies/notifications?limit=50&_t=1768216059746 HTTP/1.1" 200 - +2026-01-12 19:07:53,408 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:07:53] "GET /api/portfolio/positions?_t=1768216073091 HTTP/1.1" 200 - +2026-01-12 19:07:53,408 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:07:53] "GET /api/portfolio/summary?_t=1768216073091 HTTP/1.1" 200 - +2026-01-12 19:08:09,288 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.6% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 19:08:09,758 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:08:09] "GET /api/strategies/notifications?limit=50&_t=1768216089751 HTTP/1.1" 200 - +2026-01-12 19:08:23,420 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:08:23] "GET /api/portfolio/positions?_t=1768216103097 HTTP/1.1" 200 - +2026-01-12 19:08:23,421 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:08:23] "GET /api/portfolio/summary?_t=1768216103097 HTTP/1.1" 200 - +2026-01-12 19:08:39,304 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.6% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 19:08:39,758 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:08:39] "GET /api/strategies/notifications?limit=50&_t=1768216119749 HTTP/1.1" 200 - +2026-01-12 19:08:53,416 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:08:53] "GET /api/portfolio/summary?_t=1768216133098 HTTP/1.1" 200 - +2026-01-12 19:08:53,417 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:08:53] "GET /api/portfolio/positions?_t=1768216133098 HTTP/1.1" 200 - +2026-01-12 19:08:57,869 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:08:57] "GET /api/market/types?_t=1768216137861 HTTP/1.1" 200 - +2026-01-12 19:08:58,151 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:08:58] "GET /api/portfolio/positions?_t=1768216137861 HTTP/1.1" 200 - +2026-01-12 19:08:58,186 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:08:58] "GET /api/portfolio/summary?_t=1768216137861 HTTP/1.1" 200 - +2026-01-12 19:08:58,186 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:08:58] "GET /api/portfolio/monitors?_t=1768216137861 HTTP/1.1" 200 - +2026-01-12 19:08:58,186 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:08:58] "GET /api/portfolio/alerts?_t=1768216137861 HTTP/1.1" 200 - +2026-01-12 19:08:58,187 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:08:58] "GET /api/portfolio/groups?_t=1768216137861 HTTP/1.1" 200 - +2026-01-12 19:08:58,310 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:08:58] "GET /api/market/types?_t=1768216138303 HTTP/1.1" 200 - +2026-01-12 19:08:58,587 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:08:58] "GET /api/portfolio/positions?_t=1768216138303 HTTP/1.1" 200 - +2026-01-12 19:08:58,621 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:08:58] "GET /api/portfolio/summary?_t=1768216138303 HTTP/1.1" 200 - +2026-01-12 19:08:58,623 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:08:58] "GET /api/portfolio/monitors?_t=1768216138303 HTTP/1.1" 200 - +2026-01-12 19:08:58,624 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:08:58] "GET /api/portfolio/groups?_t=1768216138303 HTTP/1.1" 200 - +2026-01-12 19:08:58,624 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:08:58] "GET /api/portfolio/alerts?_t=1768216138303 HTTP/1.1" 200 - +2026-01-12 19:08:58,752 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:08:58] "GET /api/market/types?_t=1768216138741 HTTP/1.1" 200 - +2026-01-12 19:08:59,019 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:08:59] "GET /api/portfolio/positions?_t=1768216138741 HTTP/1.1" 200 - +2026-01-12 19:08:59,072 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:08:59] "GET /api/portfolio/monitors?_t=1768216138741 HTTP/1.1" 200 - +2026-01-12 19:08:59,073 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:08:59] "GET /api/portfolio/groups?_t=1768216138741 HTTP/1.1" 200 - +2026-01-12 19:08:59,074 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:08:59] "GET /api/portfolio/summary?_t=1768216138741 HTTP/1.1" 200 - +2026-01-12 19:08:59,073 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:08:59] "GET /api/portfolio/alerts?_t=1768216138741 HTTP/1.1" 200 - +2026-01-12 19:08:59,177 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:08:59] "GET /api/market/types?_t=1768216139165 HTTP/1.1" 200 - +2026-01-12 19:08:59,376 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:08:59] "GET /api/portfolio/positions?_t=1768216139165 HTTP/1.1" 200 - +2026-01-12 19:08:59,490 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:08:59] "GET /api/portfolio/summary?_t=1768216139165 HTTP/1.1" 200 - +2026-01-12 19:08:59,490 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:08:59] "GET /api/portfolio/monitors?_t=1768216139165 HTTP/1.1" 200 - +2026-01-12 19:08:59,491 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:08:59] "GET /api/portfolio/alerts?_t=1768216139165 HTTP/1.1" 200 - +2026-01-12 19:08:59,491 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:08:59] "GET /api/portfolio/groups?_t=1768216139165 HTTP/1.1" 200 - +2026-01-12 19:08:59,586 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:08:59] "GET /api/market/types?_t=1768216139577 HTTP/1.1" 200 - +2026-01-12 19:08:59,795 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:08:59] "GET /api/portfolio/positions?_t=1768216139577 HTTP/1.1" 200 - +2026-01-12 19:08:59,891 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:08:59] "GET /api/portfolio/summary?_t=1768216139577 HTTP/1.1" 200 - +2026-01-12 19:08:59,891 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:08:59] "GET /api/portfolio/alerts?_t=1768216139577 HTTP/1.1" 200 - +2026-01-12 19:08:59,892 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:08:59] "GET /api/portfolio/monitors?_t=1768216139577 HTTP/1.1" 200 - +2026-01-12 19:08:59,892 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:08:59] "GET /api/portfolio/groups?_t=1768216139577 HTTP/1.1" 200 - +2026-01-12 19:09:00,002 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:09:00] "GET /api/market/types?_t=1768216139993 HTTP/1.1" 200 - +2026-01-12 19:09:00,276 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:09:00] "GET /api/portfolio/positions?_t=1768216139993 HTTP/1.1" 200 - +2026-01-12 19:09:00,310 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:09:00] "GET /api/portfolio/monitors?_t=1768216139993 HTTP/1.1" 200 - +2026-01-12 19:09:00,311 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:09:00] "GET /api/portfolio/summary?_t=1768216139993 HTTP/1.1" 200 - +2026-01-12 19:09:00,312 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:09:00] "GET /api/portfolio/alerts?_t=1768216139993 HTTP/1.1" 200 - +2026-01-12 19:09:00,313 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:09:00] "GET /api/portfolio/groups?_t=1768216139993 HTTP/1.1" 200 - +2026-01-12 19:09:00,438 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:09:00] "GET /api/market/types?_t=1768216140428 HTTP/1.1" 200 - +2026-01-12 19:09:00,698 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:09:00] "GET /api/portfolio/positions?_t=1768216140428 HTTP/1.1" 200 - +2026-01-12 19:09:00,748 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:09:00] "GET /api/portfolio/monitors?_t=1768216140428 HTTP/1.1" 200 - +2026-01-12 19:09:00,749 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:09:00] "GET /api/portfolio/groups?_t=1768216140428 HTTP/1.1" 200 - +2026-01-12 19:09:00,754 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:09:00] "GET /api/portfolio/alerts?_t=1768216140428 HTTP/1.1" 200 - +2026-01-12 19:09:00,756 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:09:00] "GET /api/portfolio/summary?_t=1768216140428 HTTP/1.1" 200 - +2026-01-12 19:09:09,018 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-12 19:09:09,018 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-12 19:09:09,033 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-12 19:09:09,033 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-12 19:09:09,044 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 19:09:09,045 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 19:09:09,379 - app.services.strategy - INFO - Found 0 running strategies: [] +2026-01-12 19:09:09,379 - app - INFO - No running strategies to restore. +2026-01-12 19:09:09,393 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-12 19:09:09,394 - werkzeug - INFO - Press CTRL+C to quit +2026-01-12 19:09:10,068 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:09:10] "GET /api/strategies/notifications?limit=50&_t=1768216149752 HTTP/1.1" 200 - +2026-01-12 19:09:11,150 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.6% has reached 1.0% target +2026-01-12 19:09:12,582 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:09:12] "GET /api/market/types?_t=1768216152574 HTTP/1.1" 200 - +2026-01-12 19:09:12,904 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:09:12] "GET /api/portfolio/alerts?_t=1768216152574 HTTP/1.1" 200 - +2026-01-12 19:09:12,905 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:09:12] "GET /api/portfolio/groups?_t=1768216152574 HTTP/1.1" 200 - +2026-01-12 19:09:12,908 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:09:12] "GET /api/portfolio/monitors?_t=1768216152574 HTTP/1.1" 200 - +2026-01-12 19:09:12,991 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 19:09:12,991 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 19:09:12,991 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 19:09:12,991 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 19:09:12,991 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 19:09:12,991 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 19:09:12,991 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 19:09:12,992 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 19:09:13,705 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (281354s) +2026-01-12 19:09:13,724 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (281354s) +2026-01-12 19:09:13,791 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (281354s) +2026-01-12 19:09:13,796 - app.data_sources.base - WARNING - Warning: AMD data is delayed (281354s) +2026-01-12 19:09:13,803 - app.data_sources.base - WARNING - Warning: INTC data is delayed (281354s) +2026-01-12 19:09:13,843 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (281354s) +2026-01-12 19:09:13,854 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (281354s) +2026-01-12 19:09:13,856 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (281354s) +2026-01-12 19:09:13,884 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (281354s) +2026-01-12 19:09:13,895 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (281354s) +2026-01-12 19:09:13,908 - app.data_sources.base - WARNING - Warning: GD data is delayed (281354s) +2026-01-12 19:09:13,922 - app.data_sources.base - WARNING - Warning: INTC data is delayed (281354s) +2026-01-12 19:09:13,970 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (281354s) +2026-01-12 19:09:13,975 - app.data_sources.base - WARNING - Warning: GD data is delayed (281354s) +2026-01-12 19:09:13,976 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:09:13] "GET /api/portfolio/summary?_t=1768216152574 HTTP/1.1" 200 - +2026-01-12 19:09:13,983 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (281354s) +2026-01-12 19:09:13,984 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:09:13] "GET /api/portfolio/positions?_t=1768216152574 HTTP/1.1" 200 - +2026-01-12 19:09:16,502 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:09:16] "GET /api/strategies/notifications?limit=50&_t=1768216156171 HTTP/1.1" 200 - +2026-01-12 19:09:17,309 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:09:17] "POST /api/strategies/notifications/read HTTP/1.1" 200 - +2026-01-12 19:09:20,703 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:09:20] "GET /api/strategies/notifications?limit=50&_t=1768216160374 HTTP/1.1" 200 - +2026-01-12 19:09:21,795 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:09:21] "POST /api/strategies/notifications/read HTTP/1.1" 200 - +2026-01-12 19:09:24,417 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:09:24] "GET /api/strategies/notifications?limit=50&_t=1768216164083 HTTP/1.1" 200 - +2026-01-12 19:09:25,014 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:09:25] "POST /api/strategies/notifications/read HTTP/1.1" 200 - +2026-01-12 19:09:39,762 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:09:39] "GET /api/strategies/notifications?limit=50&_t=1768216179755 HTTP/1.1" 200 - +2026-01-12 19:09:41,176 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.6% has reached 1.0% target +2026-01-12 19:09:42,607 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:09:42] "GET /api/portfolio/positions?_t=1768216182595 HTTP/1.1" 200 - +2026-01-12 19:09:42,908 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:09:42] "GET /api/portfolio/summary?_t=1768216182595 HTTP/1.1" 200 - +2026-01-12 19:10:10,063 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:10:10] "GET /api/strategies/notifications?limit=50&_t=1768216209750 HTTP/1.1" 200 - +2026-01-12 19:10:11,201 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.6% has reached 1.0% target +2026-01-12 19:10:12,592 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:10:12] "GET /api/portfolio/positions?_t=1768216212583 HTTP/1.1" 200 - +2026-01-12 19:10:12,899 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:10:12] "GET /api/portfolio/summary?_t=1768216212583 HTTP/1.1" 200 - +2026-01-12 19:10:40,068 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:10:40] "GET /api/strategies/notifications?limit=50&_t=1768216239750 HTTP/1.1" 200 - +2026-01-12 19:10:41,232 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.6% has reached 1.0% target +2026-01-12 19:10:42,597 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:10:42] "GET /api/portfolio/positions?_t=1768216242588 HTTP/1.1" 200 - +2026-01-12 19:10:42,904 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:10:42] "GET /api/portfolio/summary?_t=1768216242588 HTTP/1.1" 200 - +2026-01-12 19:11:10,061 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:11:10] "GET /api/strategies/notifications?limit=50&_t=1768216269748 HTTP/1.1" 200 - +2026-01-12 19:11:11,257 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.6% has reached 1.0% target +2026-01-12 19:11:12,593 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:11:12] "GET /api/portfolio/positions?_t=1768216272581 HTTP/1.1" 200 - +2026-01-12 19:11:12,900 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:11:12] "GET /api/portfolio/summary?_t=1768216272581 HTTP/1.1" 200 - +2026-01-12 19:11:40,064 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:11:40] "GET /api/strategies/notifications?limit=50&_t=1768216299749 HTTP/1.1" 200 - +2026-01-12 19:11:41,283 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.6% has reached 1.0% target +2026-01-12 19:11:42,604 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:11:42] "GET /api/portfolio/positions?_t=1768216302595 HTTP/1.1" 200 - +2026-01-12 19:11:42,908 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:11:42] "GET /api/portfolio/summary?_t=1768216302595 HTTP/1.1" 200 - +2026-01-12 19:11:49,428 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:11:49] "GET /api/market/types?_t=1768216309421 HTTP/1.1" 200 - +2026-01-12 19:11:49,647 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:11:49] "GET /api/portfolio/positions?_t=1768216309421 HTTP/1.1" 200 - +2026-01-12 19:11:49,692 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:11:49] "GET /api/portfolio/summary?_t=1768216309421 HTTP/1.1" 200 - +2026-01-12 19:11:49,742 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:11:49] "GET /api/portfolio/monitors?_t=1768216309421 HTTP/1.1" 200 - +2026-01-12 19:11:49,743 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:11:49] "GET /api/portfolio/groups?_t=1768216309421 HTTP/1.1" 200 - +2026-01-12 19:11:49,748 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:11:49] "GET /api/portfolio/alerts?_t=1768216309421 HTTP/1.1" 200 - +2026-01-12 19:12:10,060 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:12:10] "GET /api/strategies/notifications?limit=50&_t=1768216329743 HTTP/1.1" 200 - +2026-01-12 19:12:11,310 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.6% has reached 1.0% target +2026-01-12 19:12:19,444 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:12:19] "GET /api/portfolio/positions?_t=1768216339435 HTTP/1.1" 200 - +2026-01-12 19:12:19,751 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:12:19] "GET /api/portfolio/summary?_t=1768216339435 HTTP/1.1" 200 - +2026-01-12 19:12:23,721 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:12:23] "GET /api/market/types?_t=1768216343710 HTTP/1.1" 200 - +2026-01-12 19:12:23,931 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:12:23] "GET /api/portfolio/positions?_t=1768216343710 HTTP/1.1" 200 - +2026-01-12 19:12:23,998 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:12:23] "GET /api/portfolio/summary?_t=1768216343710 HTTP/1.1" 200 - +2026-01-12 19:12:24,046 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:12:24] "GET /api/portfolio/groups?_t=1768216343710 HTTP/1.1" 200 - +2026-01-12 19:12:24,047 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:12:24] "GET /api/portfolio/alerts?_t=1768216343710 HTTP/1.1" 200 - +2026-01-12 19:12:24,047 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:12:24] "GET /api/portfolio/monitors?_t=1768216343710 HTTP/1.1" 200 - +2026-01-12 19:12:40,063 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:12:40] "GET /api/strategies/notifications?limit=50&_t=1768216359751 HTTP/1.1" 200 - +2026-01-12 19:12:41,329 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.6% has reached 1.0% target +2026-01-12 19:12:48,381 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:12:48] "GET /api/market/types?_t=1768216368359 HTTP/1.1" 200 - +2026-01-12 19:12:48,385 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:12:48] "GET /api/portfolio/positions?_t=1768216368359 HTTP/1.1" 200 - +2026-01-12 19:12:48,685 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:12:48] "GET /api/portfolio/monitors?_t=1768216368359 HTTP/1.1" 200 - +2026-01-12 19:12:48,686 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:12:48] "GET /api/portfolio/summary?_t=1768216368359 HTTP/1.1" 200 - +2026-01-12 19:12:48,687 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:12:48] "GET /api/portfolio/groups?_t=1768216368359 HTTP/1.1" 200 - +2026-01-12 19:12:48,688 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:12:48] "GET /api/portfolio/alerts?_t=1768216368359 HTTP/1.1" 200 - +2026-01-12 19:12:48,697 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:12:48] "GET /api/strategies/notifications?limit=50&_t=1768216368359 HTTP/1.1" 200 - +2026-01-12 19:12:55,934 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:12:55] "GET /api/strategies/notifications?limit=50&_t=1768216375598 HTTP/1.1" 200 - +2026-01-12 19:12:56,800 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:12:56] "POST /api/strategies/notifications/read HTTP/1.1" 200 - +2026-01-12 19:13:11,291 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:13:11] "GET /api/market/types?_t=1768216391273 HTTP/1.1" 200 - +2026-01-12 19:13:11,296 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:13:11] "GET /api/portfolio/positions?_t=1768216391273 HTTP/1.1" 200 - +2026-01-12 19:13:11,298 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:13:11] "GET /api/portfolio/summary?_t=1768216391273 HTTP/1.1" 200 - +2026-01-12 19:13:11,360 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.6% has reached 1.0% target +2026-01-12 19:13:11,603 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:13:11] "GET /api/portfolio/monitors?_t=1768216391273 HTTP/1.1" 200 - +2026-01-12 19:13:11,603 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:13:11] "GET /api/portfolio/alerts?_t=1768216391273 HTTP/1.1" 200 - +2026-01-12 19:13:11,603 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:13:11] "GET /api/portfolio/groups?_t=1768216391273 HTTP/1.1" 200 - +2026-01-12 19:13:11,614 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:13:11] "GET /api/strategies/notifications?limit=50&_t=1768216391273 HTTP/1.1" 200 - +2026-01-12 19:13:14,028 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:13:14] "GET /api/settings/schema?_t=1768216394004 HTTP/1.1" 200 - +2026-01-12 19:13:14,221 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:13:14] "GET /api/settings/values?_t=1768216394004 HTTP/1.1" 200 - +2026-01-12 19:13:16,975 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:13:16] "GET /api/strategies?_t=1768216396955 HTTP/1.1" 200 - +2026-01-12 19:13:18,996 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:13:18] "GET /api/strategies/positions?id=14&_t=1768216398666 HTTP/1.1" 200 - +2026-01-12 19:13:18,996 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:13:18] "GET /api/strategies/equityCurve?id=14&_t=1768216398662 HTTP/1.1" 200 - +2026-01-12 19:13:19,005 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:13:19] "GET /api/strategies/equityCurve?id=14&_t=1768216398662 HTTP/1.1" 200 - +2026-01-12 19:13:19,292 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:13:19] "GET /api/strategies/notifications?limit=50&_t=1768216399284 HTTP/1.1" 200 - +2026-01-12 19:13:19,663 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:13:19] "GET /api/portfolio/positions?_t=1768216399347 HTTP/1.1" 200 - +2026-01-12 19:13:19,664 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:13:19] "GET /api/portfolio/summary?_t=1768216399347 HTTP/1.1" 200 - +2026-01-12 19:13:20,544 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:13:20] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 19:13:20,852 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:13:20] "GET /api/credentials/list?user_id=1&_t=1768216400534 HTTP/1.1" 200 - +2026-01-12 19:13:20,852 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:13:20] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 19:13:23,984 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:13:23] "GET /api/strategies/positions?id=14&_t=1768216403669 HTTP/1.1" 200 - +2026-01-12 19:13:29,301 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:13:29] "GET /api/strategies/positions?id=14&_t=1768216409292 HTTP/1.1" 200 - +2026-01-12 19:13:34,619 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:13:34] "GET /api/strategies/positions?id=14&_t=1768216414293 HTTP/1.1" 200 - +2026-01-12 19:13:39,295 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:13:39] "GET /api/strategies/positions?id=14&_t=1768216419286 HTTP/1.1" 200 - +2026-01-12 19:13:39,916 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:13:39] "POST /api/portfolio/alerts HTTP/1.1" 200 - +2026-01-12 19:13:40,158 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:13:40] "GET /api/portfolio/alerts?_t=1768216419942 HTTP/1.1" 200 - +2026-01-12 19:13:41,298 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:13:41] "GET /api/strategies/notifications?limit=50&_t=1768216421286 HTTP/1.1" 200 - +2026-01-12 19:13:41,383 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.6% has reached 1.0% target +2026-01-12 19:13:41,677 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (281622s) +2026-01-12 19:13:41,677 - app.services.portfolio_monitor - INFO - Alert #2 triggered: ๐Ÿ”” Price Alert: SPCE current price $3.1800 has exceeded $3.1800 +2026-01-12 19:13:44,603 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:13:44] "GET /api/strategies/positions?id=14&_t=1768216424286 HTTP/1.1" 200 - +2026-01-12 19:13:48,342 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:13:48] "GET /api/strategies/notifications?limit=50&_t=1768216428333 HTTP/1.1" 200 - +2026-01-12 19:13:48,667 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:13:48] "GET /api/portfolio/positions?_t=1768216428353 HTTP/1.1" 200 - +2026-01-12 19:13:48,668 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:13:48] "GET /api/portfolio/summary?_t=1768216428353 HTTP/1.1" 200 - +2026-01-12 19:13:49,297 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:13:49] "GET /api/strategies/equityCurve?id=14&_t=1768216429289 HTTP/1.1" 200 - +2026-01-12 19:13:49,601 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:13:49] "GET /api/strategies/positions?id=14&_t=1768216429290 HTTP/1.1" 200 - +2026-01-12 19:13:54,606 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:13:54] "GET /api/strategies/positions?id=14&_t=1768216434290 HTTP/1.1" 200 - +2026-01-12 19:13:59,301 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:13:59] "GET /api/strategies/positions?id=14&_t=1768216439293 HTTP/1.1" 200 - +2026-01-12 19:14:04,594 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:14:04] "GET /api/strategies/positions?id=14&_t=1768216444280 HTTP/1.1" 200 - +2026-01-12 19:14:09,291 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:14:09] "GET /api/strategies/positions?id=14&_t=1768216449283 HTTP/1.1" 200 - +2026-01-12 19:14:11,600 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:14:11] "GET /api/strategies/notifications?limit=50&_t=1768216451285 HTTP/1.1" 200 - +2026-01-12 19:14:14,290 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:14:14] "GET /api/strategies/positions?id=14&_t=1768216454279 HTTP/1.1" 200 - +2026-01-12 19:14:15,818 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.8% has reached 1.0% target +2026-01-12 19:14:18,633 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:14:18] "GET /api/strategies/notifications?limit=50&_t=1768216458318 HTTP/1.1" 200 - +2026-01-12 19:14:18,666 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:14:18] "GET /api/portfolio/summary?_t=1768216458351 HTTP/1.1" 200 - +2026-01-12 19:14:18,673 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:14:18] "GET /api/portfolio/positions?_t=1768216458351 HTTP/1.1" 200 - +2026-01-12 19:14:19,297 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:14:19] "GET /api/strategies/equityCurve?id=14&_t=1768216459288 HTTP/1.1" 200 - +2026-01-12 19:14:19,600 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:14:19] "GET /api/strategies/positions?id=14&_t=1768216459289 HTTP/1.1" 200 - +2026-01-12 19:14:24,598 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:14:24] "GET /api/strategies/positions?id=14&_t=1768216464282 HTTP/1.1" 200 - +2026-01-12 19:14:41,302 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:14:41] "GET /api/strategies/notifications?limit=50&_t=1768216481290 HTTP/1.1" 200 - +2026-01-12 19:14:45,840 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.8% has reached 1.0% target +2026-01-12 19:14:48,600 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:14:48] "GET /api/strategies/positions?id=14&_t=1768216488286 HTTP/1.1" 200 - +2026-01-12 19:14:48,650 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:14:48] "GET /api/strategies/notifications?limit=50&_t=1768216488331 HTTP/1.1" 200 - +2026-01-12 19:14:48,659 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:14:48] "GET /api/portfolio/positions?_t=1768216488350 HTTP/1.1" 200 - +2026-01-12 19:14:48,660 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:14:48] "GET /api/portfolio/summary?_t=1768216488350 HTTP/1.1" 200 - +2026-01-12 19:14:49,287 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:14:49] "GET /api/strategies/equityCurve?id=14&_t=1768216489279 HTTP/1.1" 200 - +2026-01-12 19:15:11,610 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:15:11] "GET /api/strategies/notifications?limit=50&_t=1768216511293 HTTP/1.1" 200 - +2026-01-12 19:15:15,866 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.8% has reached 1.0% target +2026-01-12 19:15:18,334 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:15:18] "GET /api/strategies/notifications?limit=50&_t=1768216518326 HTTP/1.1" 200 - +2026-01-12 19:15:18,676 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (281719s) +2026-01-12 19:15:18,682 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (281719s) +2026-01-12 19:15:18,683 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (281719s) +2026-01-12 19:15:18,695 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (281719s) +2026-01-12 19:15:18,700 - app.data_sources.base - WARNING - Warning: GD data is delayed (281719s) +2026-01-12 19:15:18,705 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (281719s) +2026-01-12 19:15:18,705 - app.data_sources.base - WARNING - Warning: AMD data is delayed (281719s) +2026-01-12 19:15:18,714 - app.data_sources.base - WARNING - Warning: INTC data is delayed (281719s) +2026-01-12 19:15:18,719 - app.data_sources.base - WARNING - Warning: AMD data is delayed (281719s) +2026-01-12 19:15:18,724 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (281719s) +2026-01-12 19:15:18,743 - app.data_sources.base - WARNING - Warning: INTC data is delayed (281719s) +2026-01-12 19:15:18,743 - app.data_sources.base - WARNING - Warning: GD data is delayed (281719s) +2026-01-12 19:15:18,744 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (281719s) +2026-01-12 19:15:18,809 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:15:18] "GET /api/portfolio/summary?_t=1768216518349 HTTP/1.1" 200 - +2026-01-12 19:15:18,949 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:15:18] "GET /api/portfolio/positions?_t=1768216518349 HTTP/1.1" 200 - +2026-01-12 19:15:19,294 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:15:19] "GET /api/strategies/equityCurve?id=14&_t=1768216519286 HTTP/1.1" 200 - +2026-01-12 19:15:41,599 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:15:41] "GET /api/strategies/notifications?limit=50&_t=1768216541281 HTTP/1.1" 200 - +2026-01-12 19:15:45,889 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.8% has reached 1.0% target +2026-01-12 19:15:48,287 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:15:48] "GET /api/strategies/positions?id=14&_t=1768216548280 HTTP/1.1" 200 - +2026-01-12 19:15:48,638 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:15:48] "GET /api/strategies/notifications?limit=50&_t=1768216548325 HTTP/1.1" 200 - +2026-01-12 19:15:48,657 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:15:48] "GET /api/portfolio/positions?_t=1768216548345 HTTP/1.1" 200 - +2026-01-12 19:15:48,658 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:15:48] "GET /api/portfolio/summary?_t=1768216548345 HTTP/1.1" 200 - +2026-01-12 19:15:48,874 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:15:48] "GET /api/settings/schema?_t=1768216548866 HTTP/1.1" 200 - +2026-01-12 19:15:48,902 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:15:48] "GET /api/settings/values?_t=1768216548866 HTTP/1.1" 200 - +2026-01-12 19:15:49,289 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:15:49] "GET /api/strategies/equityCurve?id=14&_t=1768216549280 HTTP/1.1" 200 - +2026-01-12 19:16:03,916 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:16:03] "GET /api/strategies/positions?id=14&_t=1768216563579 HTTP/1.1" 200 - +2026-01-12 19:16:09,300 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:16:09] "GET /api/strategies/positions?id=14&_t=1768216569281 HTTP/1.1" 200 - +2026-01-12 19:16:11,601 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:16:11] "GET /api/strategies/notifications?limit=50&_t=1768216571286 HTTP/1.1" 200 - +2026-01-12 19:16:14,291 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:16:14] "GET /api/strategies/positions?id=14&_t=1768216574284 HTTP/1.1" 200 - +2026-01-12 19:16:15,916 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.8% has reached 1.0% target +2026-01-12 19:16:19,612 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:16:19] "GET /api/strategies/notifications?limit=50&_t=1768216579285 HTTP/1.1" 200 - +2026-01-12 19:16:19,613 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:16:19] "GET /api/strategies/positions?id=14&_t=1768216579285 HTTP/1.1" 200 - +2026-01-12 19:16:19,613 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:16:19] "GET /api/strategies/equityCurve?id=14&_t=1768216579285 HTTP/1.1" 200 - +2026-01-12 19:16:24,292 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:16:24] "GET /api/strategies/positions?id=14&_t=1768216584283 HTTP/1.1" 200 - +2026-01-12 19:16:29,605 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:16:29] "GET /api/strategies/positions?id=14&_t=1768216589293 HTTP/1.1" 200 - +2026-01-12 19:16:34,299 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:16:34] "GET /api/strategies/positions?id=14&_t=1768216594291 HTTP/1.1" 200 - +2026-01-12 19:16:39,608 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:16:39] "GET /api/strategies/positions?id=14&_t=1768216599291 HTTP/1.1" 200 - +2026-01-12 19:16:41,300 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:16:41] "GET /api/strategies/notifications?limit=50&_t=1768216601291 HTTP/1.1" 200 - +2026-01-12 19:16:44,607 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:16:44] "GET /api/strategies/positions?id=14&_t=1768216604293 HTTP/1.1" 200 - +2026-01-12 19:16:45,949 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.8% has reached 1.0% target +2026-01-12 19:16:48,340 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:16:48] "GET /api/strategies/notifications?limit=50&_t=1768216608331 HTTP/1.1" 200 - +2026-01-12 19:16:49,694 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:16:49] "GET /api/strategies/positions?id=14&_t=1768216609280 HTTP/1.1" 200 - +2026-01-12 19:16:49,695 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:16:49] "GET /api/strategies/equityCurve?id=14&_t=1768216609280 HTTP/1.1" 200 - +2026-01-12 19:16:49,772 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:16:49] "GET /api/strategies?_t=1768216609738 HTTP/1.1" 200 - +2026-01-12 19:16:51,417 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:16:51] "GET /api/market/types?_t=1768216611407 HTTP/1.1" 200 - +2026-01-12 19:16:51,732 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:16:51] "GET /api/portfolio/summary?_t=1768216611407 HTTP/1.1" 200 - +2026-01-12 19:16:51,733 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:16:51] "GET /api/portfolio/monitors?_t=1768216611407 HTTP/1.1" 200 - +2026-01-12 19:16:51,734 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:16:51] "GET /api/portfolio/alerts?_t=1768216611407 HTTP/1.1" 200 - +2026-01-12 19:16:51,734 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:16:51] "GET /api/portfolio/groups?_t=1768216611407 HTTP/1.1" 200 - +2026-01-12 19:16:51,735 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:16:51] "GET /api/portfolio/positions?_t=1768216611407 HTTP/1.1" 200 - +2026-01-12 19:16:54,599 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:16:54] "GET /api/strategies/positions?id=14&_t=1768216614281 HTTP/1.1" 200 - +2026-01-12 19:16:55,090 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:16:55] "GET /api/settings/schema?_t=1768216615072 HTTP/1.1" 200 - +2026-01-12 19:16:55,391 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:16:55] "GET /api/settings/values?_t=1768216615072 HTTP/1.1" 200 - +2026-01-12 19:16:59,609 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:16:59] "GET /api/strategies/positions?id=14&_t=1768216619293 HTTP/1.1" 200 - +2026-01-12 19:17:04,295 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:17:04] "GET /api/strategies/positions?id=14&_t=1768216624286 HTTP/1.1" 200 - +2026-01-12 19:17:05,282 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:17:05] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768216625262 HTTP/1.1" 200 - +2026-01-12 19:17:05,284 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:17:05] "GET /api/dashboard/summary?_t=1768216625262 HTTP/1.1" 200 - +2026-01-12 19:17:05,359 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:17:05] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768216625262 HTTP/1.1" 200 - +2026-01-12 19:17:06,887 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:17:06] "GET /api/strategies/notifications?limit=50&_t=1768216626867 HTTP/1.1" 200 - +2026-01-12 19:17:08,625 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:17:08] "POST /api/strategies/notifications/read-all HTTP/1.1" 200 - +2026-01-12 19:17:10,262 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:17:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768216630252 HTTP/1.1" 200 - +2026-01-12 19:17:12,231 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:17:12] "GET /api/market/types?_t=1768216631902 HTTP/1.1" 200 - +2026-01-12 19:17:12,250 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:17:12] "GET /api/portfolio/summary?_t=1768216631902 HTTP/1.1" 200 - +2026-01-12 19:17:12,251 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:17:12] "GET /api/portfolio/monitors?_t=1768216631902 HTTP/1.1" 200 - +2026-01-12 19:17:12,252 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:17:12] "GET /api/portfolio/groups?_t=1768216631902 HTTP/1.1" 200 - +2026-01-12 19:17:12,253 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:17:12] "GET /api/portfolio/positions?_t=1768216631902 HTTP/1.1" 200 - +2026-01-12 19:17:12,254 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:17:12] "GET /api/portfolio/alerts?_t=1768216631902 HTTP/1.1" 200 - +2026-01-12 19:17:15,976 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.8% has reached 1.0% target +2026-01-12 19:17:18,639 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:17:18] "GET /api/strategies/notifications?limit=50&_t=1768216638321 HTTP/1.1" 200 - +2026-01-12 19:17:41,917 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:17:41] "GET /api/portfolio/positions?_t=1768216661906 HTTP/1.1" 200 - +2026-01-12 19:17:42,220 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:17:42] "GET /api/portfolio/summary?_t=1768216661906 HTTP/1.1" 200 - +2026-01-12 19:17:45,997 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.8% has reached 1.0% target +2026-01-12 19:17:48,608 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:17:48] "GET /api/strategies/notifications?limit=50&_t=1768216668292 HTTP/1.1" 200 - +2026-01-12 19:17:48,609 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:17:48] "GET /api/strategies/positions?id=14&_t=1768216668292 HTTP/1.1" 200 - +2026-01-12 19:17:48,609 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:17:48] "GET /api/strategies/equityCurve?id=14&_t=1768216668293 HTTP/1.1" 200 - +2026-01-12 19:17:48,636 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:17:48] "GET /api/strategies/notifications?limit=50&_t=1768216668321 HTTP/1.1" 200 - +2026-01-12 19:18:11,918 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:18:11] "GET /api/portfolio/positions?_t=1768216691908 HTTP/1.1" 200 - +2026-01-12 19:18:12,224 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:18:12] "GET /api/portfolio/summary?_t=1768216691908 HTTP/1.1" 200 - +2026-01-12 19:18:16,027 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.8% has reached 1.0% target +2026-01-12 19:18:18,639 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:18:18] "GET /api/strategies/notifications?limit=50&_t=1768216698319 HTTP/1.1" 200 - +2026-01-12 19:18:41,919 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:18:41] "GET /api/portfolio/positions?_t=1768216721910 HTTP/1.1" 200 - +2026-01-12 19:18:42,228 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:18:42] "GET /api/portfolio/summary?_t=1768216721910 HTTP/1.1" 200 - +2026-01-12 19:18:46,046 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.8% has reached 1.0% target +2026-01-12 19:18:48,606 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:18:48] "GET /api/strategies/notifications?limit=50&_t=1768216728289 HTTP/1.1" 200 - +2026-01-12 19:18:48,606 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:18:48] "GET /api/strategies/positions?id=14&_t=1768216728288 HTTP/1.1" 200 - +2026-01-12 19:18:48,607 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:18:48] "GET /api/strategies/equityCurve?id=14&_t=1768216728289 HTTP/1.1" 200 - +2026-01-12 19:18:48,635 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:18:48] "GET /api/strategies/notifications?limit=50&_t=1768216728318 HTTP/1.1" 200 - +2026-01-12 19:18:58,865 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:18:58] "GET /api/settings/schema?_t=1768216738858 HTTP/1.1" 200 - +2026-01-12 19:18:59,175 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:18:59] "GET /api/settings/values?_t=1768216738858 HTTP/1.1" 200 - +2026-01-12 19:19:16,245 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.7% has reached 1.0% target +2026-01-12 19:19:18,643 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:19:18] "GET /api/strategies/notifications?limit=50&_t=1768216758326 HTTP/1.1" 200 - +2026-01-12 19:19:46,281 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.7% has reached 1.0% target +2026-01-12 19:19:48,289 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:19:48] "GET /api/strategies/positions?id=14&_t=1768216788280 HTTP/1.1" 200 - +2026-01-12 19:19:48,593 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:19:48] "GET /api/strategies/equityCurve?id=14&_t=1768216788281 HTTP/1.1" 200 - +2026-01-12 19:19:48,603 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:19:48] "GET /api/strategies/notifications?limit=50&_t=1768216788281 HTTP/1.1" 200 - +2026-01-12 19:19:48,639 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:19:48] "GET /api/strategies/notifications?limit=50&_t=1768216788327 HTTP/1.1" 200 - +2026-01-12 19:20:16,307 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.7% has reached 1.0% target +2026-01-12 19:20:18,638 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:20:18] "GET /api/strategies/notifications?limit=50&_t=1768216818324 HTTP/1.1" 200 - +2026-01-12 19:20:46,326 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.7% has reached 1.0% target +2026-01-12 19:20:48,308 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:20:48] "GET /api/strategies/positions?id=14&_t=1768216848291 HTTP/1.1" 200 - +2026-01-12 19:20:48,648 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:20:48] "GET /api/strategies/notifications?limit=50&_t=1768216848292 HTTP/1.1" 200 - +2026-01-12 19:20:48,649 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:20:48] "GET /api/strategies/notifications?limit=50&_t=1768216848322 HTTP/1.1" 200 - +2026-01-12 19:20:48,649 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:20:48] "GET /api/strategies/equityCurve?id=14&_t=1768216848292 HTTP/1.1" 200 - +2026-01-12 19:21:16,346 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.7% has reached 1.0% target +2026-01-12 19:21:18,648 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:21:18] "GET /api/strategies/notifications?limit=50&_t=1768216878331 HTTP/1.1" 200 - +2026-01-12 19:21:46,366 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.7% has reached 1.0% target +2026-01-12 19:21:48,299 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:21:48] "GET /api/strategies/positions?id=14&_t=1768216908290 HTTP/1.1" 200 - +2026-01-12 19:21:48,601 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:21:48] "GET /api/strategies/notifications?limit=50&_t=1768216908291 HTTP/1.1" 200 - +2026-01-12 19:21:48,608 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:21:48] "GET /api/strategies/equityCurve?id=14&_t=1768216908291 HTTP/1.1" 200 - +2026-01-12 19:21:48,632 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:21:48] "GET /api/strategies/notifications?limit=50&_t=1768216908319 HTTP/1.1" 200 - +2026-01-12 19:22:16,391 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.7% has reached 1.0% target +2026-01-12 19:22:18,646 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:22:18] "GET /api/strategies/notifications?limit=50&_t=1768216938331 HTTP/1.1" 200 - +2026-01-12 19:22:46,410 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.7% has reached 1.0% target +2026-01-12 19:22:48,293 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:22:48] "GET /api/strategies/positions?id=14&_t=1768216968285 HTTP/1.1" 200 - +2026-01-12 19:22:48,599 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:22:48] "GET /api/strategies/notifications?limit=50&_t=1768216968285 HTTP/1.1" 200 - +2026-01-12 19:22:48,600 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:22:48] "GET /api/strategies/equityCurve?id=14&_t=1768216968286 HTTP/1.1" 200 - +2026-01-12 19:22:48,645 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:22:48] "GET /api/strategies/notifications?limit=50&_t=1768216968330 HTTP/1.1" 200 - +2026-01-12 19:22:54,600 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:22:54] "GET /api/strategies/positions?id=14&_t=1768216974287 HTTP/1.1" 200 - +2026-01-12 19:23:16,438 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.7% has reached 1.0% target +2026-01-12 19:23:18,340 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:23:18] "GET /api/strategies/notifications?limit=50&_t=1768216998332 HTTP/1.1" 200 - +2026-01-12 19:23:32,596 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:23:32] "GET /api/strategies/positions?id=14&_t=1768217012280 HTTP/1.1" 200 - +2026-01-12 19:23:32,596 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:23:32] "GET /api/strategies/notifications?limit=50&_t=1768217012281 HTTP/1.1" 200 - +2026-01-12 19:23:32,598 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:23:32] "GET /api/strategies/equityCurve?id=14&_t=1768217012282 HTTP/1.1" 200 - +2026-01-12 19:23:34,302 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:23:34] "GET /api/strategies/positions?id=14&_t=1768217014282 HTTP/1.1" 200 - +2026-01-12 19:23:46,458 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.7% has reached 1.0% target +2026-01-12 19:23:48,602 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:23:48] "GET /api/strategies/notifications?limit=50&_t=1768217028286 HTTP/1.1" 200 - +2026-01-12 19:23:48,602 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:23:48] "GET /api/strategies/positions?id=14&_t=1768217028286 HTTP/1.1" 200 - +2026-01-12 19:23:48,645 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:23:48] "GET /api/strategies/notifications?limit=50&_t=1768217028331 HTTP/1.1" 200 - +2026-01-12 19:23:54,303 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:23:54] "GET /api/strategies/equityCurve?id=14&_t=1768217034294 HTTP/1.1" 200 - +2026-01-12 19:23:54,606 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:23:54] "GET /api/strategies/positions?id=14&_t=1768217034294 HTTP/1.1" 200 - +2026-01-12 19:24:09,606 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:24:09] "GET /api/strategies/positions?id=14&_t=1768217049294 HTTP/1.1" 200 - +2026-01-12 19:24:11,297 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:24:11] "GET /api/strategies/notifications?limit=50&_t=1768217051289 HTTP/1.1" 200 - +2026-01-12 19:24:16,536 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:24:18,648 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:24:18] "GET /api/strategies/notifications?limit=50&_t=1768217058330 HTTP/1.1" 200 - +2026-01-12 19:24:38,296 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:24:38] "GET /api/strategies/positions?id=14&_t=1768217078289 HTTP/1.1" 200 - +2026-01-12 19:24:38,606 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:24:38] "GET /api/strategies/equityCurve?id=14&_t=1768217078289 HTTP/1.1" 200 - +2026-01-12 19:24:39,593 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:24:39] "GET /api/strategies/positions?id=14&_t=1768217079281 HTTP/1.1" 200 - +2026-01-12 19:24:46,555 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:24:48,302 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:24:48] "GET /api/strategies/notifications?limit=50&_t=1768217088294 HTTP/1.1" 200 - +2026-01-12 19:24:48,604 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:24:48] "GET /api/strategies/positions?id=14&_t=1768217088294 HTTP/1.1" 200 - +2026-01-12 19:24:48,636 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:24:48] "GET /api/strategies/notifications?limit=50&_t=1768217088323 HTTP/1.1" 200 - +2026-01-12 19:25:10,601 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:25:10] "GET /api/strategies/positions?id=14&_t=1768217110287 HTTP/1.1" 200 - +2026-01-12 19:25:10,602 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:25:10] "GET /api/strategies/equityCurve?id=14&_t=1768217110286 HTTP/1.1" 200 - +2026-01-12 19:25:11,297 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:25:11] "GET /api/strategies/notifications?limit=50&_t=1768217111290 HTTP/1.1" 200 - +2026-01-12 19:25:16,578 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:25:18,649 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:25:18] "GET /api/strategies/notifications?limit=50&_t=1768217118332 HTTP/1.1" 200 - +2026-01-12 19:25:45,293 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:25:45] "GET /api/strategies/positions?id=14&_t=1768217145284 HTTP/1.1" 200 - +2026-01-12 19:25:45,599 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:25:45] "GET /api/strategies/notifications?limit=50&_t=1768217145285 HTTP/1.1" 200 - +2026-01-12 19:25:45,599 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:25:45] "GET /api/strategies/equityCurve?id=14&_t=1768217145284 HTTP/1.1" 200 - +2026-01-12 19:25:46,600 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:25:48,648 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:25:48] "GET /api/strategies/notifications?limit=50&_t=1768217148333 HTTP/1.1" 200 - +2026-01-12 19:26:16,630 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:26:18,332 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:26:18] "GET /api/strategies/notifications?limit=50&_t=1768217178325 HTTP/1.1" 200 - +2026-01-12 19:26:21,597 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:26:21] "GET /api/strategies/positions?id=14&_t=1768217181282 HTTP/1.1" 200 - +2026-01-12 19:26:21,597 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:26:21] "GET /api/strategies/notifications?limit=50&_t=1768217181282 HTTP/1.1" 200 - +2026-01-12 19:26:21,597 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:26:21] "GET /api/strategies/equityCurve?id=14&_t=1768217181282 HTTP/1.1" 200 - +2026-01-12 19:26:46,656 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:26:48,290 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:26:48] "GET /api/strategies/positions?id=14&_t=1768217208281 HTTP/1.1" 200 - +2026-01-12 19:26:48,595 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:26:48] "GET /api/strategies/notifications?limit=50&_t=1768217208281 HTTP/1.1" 200 - +2026-01-12 19:26:48,642 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:26:48] "GET /api/strategies/notifications?limit=50&_t=1768217208327 HTTP/1.1" 200 - +2026-01-12 19:27:16,680 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:27:18,633 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:27:18] "GET /api/strategies/notifications?limit=50&_t=1768217238319 HTTP/1.1" 200 - +2026-01-12 19:27:46,699 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:27:48,296 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:27:48] "GET /api/strategies/equityCurve?id=14&_t=1768217268284 HTTP/1.1" 200 - +2026-01-12 19:27:48,611 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:27:48] "GET /api/strategies/notifications?limit=50&_t=1768217268285 HTTP/1.1" 200 - +2026-01-12 19:27:48,612 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:27:48] "GET /api/strategies/positions?id=14&_t=1768217268285 HTTP/1.1" 200 - +2026-01-12 19:27:48,641 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:27:48] "GET /api/strategies/notifications?limit=50&_t=1768217268328 HTTP/1.1" 200 - +2026-01-12 19:28:16,727 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:28:18,638 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:28:18] "GET /api/strategies/notifications?limit=50&_t=1768217298327 HTTP/1.1" 200 - +2026-01-12 19:28:46,758 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:28:48,305 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:28:48] "GET /api/strategies/positions?id=14&_t=1768217328297 HTTP/1.1" 200 - +2026-01-12 19:28:48,620 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:28:48] "GET /api/strategies/notifications?limit=50&_t=1768217328297 HTTP/1.1" 200 - +2026-01-12 19:28:48,621 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:28:48] "GET /api/strategies/equityCurve?id=14&_t=1768217328298 HTTP/1.1" 200 - +2026-01-12 19:28:48,634 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:28:48] "GET /api/strategies/notifications?limit=50&_t=1768217328322 HTTP/1.1" 200 - +2026-01-12 19:29:16,928 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 19:29:18,637 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:29:18] "GET /api/strategies/notifications?limit=50&_t=1768217358322 HTTP/1.1" 200 - +2026-01-12 19:29:46,955 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 19:29:48,290 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:29:48] "GET /api/strategies/positions?id=14&_t=1768217388281 HTTP/1.1" 200 - +2026-01-12 19:29:48,596 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:29:48] "GET /api/strategies/notifications?limit=50&_t=1768217388282 HTTP/1.1" 200 - +2026-01-12 19:29:48,597 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:29:48] "GET /api/strategies/equityCurve?id=14&_t=1768217388282 HTTP/1.1" 200 - +2026-01-12 19:29:48,642 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:29:48] "GET /api/strategies/notifications?limit=50&_t=1768217388328 HTTP/1.1" 200 - +2026-01-12 19:30:16,975 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 19:30:18,649 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:30:18] "GET /api/strategies/notifications?limit=50&_t=1768217418320 HTTP/1.1" 200 - +2026-01-12 19:30:46,993 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 19:30:48,296 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:30:48] "GET /api/strategies/positions?id=14&_t=1768217448287 HTTP/1.1" 200 - +2026-01-12 19:30:48,601 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:30:48] "GET /api/strategies/notifications?limit=50&_t=1768217448287 HTTP/1.1" 200 - +2026-01-12 19:30:48,602 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:30:48] "GET /api/strategies/equityCurve?id=14&_t=1768217448287 HTTP/1.1" 200 - +2026-01-12 19:30:48,649 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:30:48] "GET /api/strategies/notifications?limit=50&_t=1768217448333 HTTP/1.1" 200 - +2026-01-12 19:31:17,010 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 19:31:18,642 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:31:18] "GET /api/strategies/notifications?limit=50&_t=1768217478324 HTTP/1.1" 200 - +2026-01-12 19:31:47,042 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 19:31:48,303 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:31:48] "GET /api/strategies/positions?id=14&_t=1768217508293 HTTP/1.1" 200 - +2026-01-12 19:31:48,610 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:31:48] "GET /api/strategies/notifications?limit=50&_t=1768217508293 HTTP/1.1" 200 - +2026-01-12 19:31:48,611 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:31:48] "GET /api/strategies/equityCurve?id=14&_t=1768217508294 HTTP/1.1" 200 - +2026-01-12 19:31:48,641 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:31:48] "GET /api/strategies/notifications?limit=50&_t=1768217508324 HTTP/1.1" 200 - +2026-01-12 19:32:17,059 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 19:32:18,644 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:32:18] "GET /api/strategies/notifications?limit=50&_t=1768217538328 HTTP/1.1" 200 - +2026-01-12 19:32:47,088 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 19:32:48,291 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:32:48] "GET /api/strategies/positions?id=14&_t=1768217568283 HTTP/1.1" 200 - +2026-01-12 19:32:48,601 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:32:48] "GET /api/strategies/notifications?limit=50&_t=1768217568283 HTTP/1.1" 200 - +2026-01-12 19:32:48,603 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:32:48] "GET /api/strategies/equityCurve?id=14&_t=1768217568283 HTTP/1.1" 200 - +2026-01-12 19:32:48,646 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:32:48] "GET /api/strategies/notifications?limit=50&_t=1768217568329 HTTP/1.1" 200 - +2026-01-12 19:32:57,121 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:32:57] "GET /api/settings/schema?_t=1768217577101 HTTP/1.1" 200 - +2026-01-12 19:32:57,122 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:32:57] "GET /api/settings/values?_t=1768217577101 HTTP/1.1" 200 - +2026-01-12 19:32:57,125 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:32:57] "GET /api/strategies/notifications?limit=50&_t=1768217577101 HTTP/1.1" 200 - +2026-01-12 19:33:01,168 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:33:01] "GET /api/strategies?_t=1768217581155 HTTP/1.1" 200 - +2026-01-12 19:33:02,467 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:33:02] "GET /api/market/types?_t=1768217582458 HTTP/1.1" 200 - +2026-01-12 19:33:02,469 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:33:02] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 19:33:02,777 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:33:02] "GET /api/user/info?_t=1768217582458 HTTP/1.1" 200 - +2026-01-12 19:33:02,779 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 19:33:02,782 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:33:02] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 19:33:02,894 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:33:02] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 19:33:02,942 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:33:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 19:33:03,111 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:33:03] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 19:33:06,841 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:33:06] "GET /api/market/types?_t=1768217586825 HTTP/1.1" 200 - +2026-01-12 19:33:06,847 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:33:06] "GET /api/portfolio/monitors?_t=1768217586825 HTTP/1.1" 200 - +2026-01-12 19:33:06,883 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (282787s) +2026-01-12 19:33:06,912 - app.data_sources.base - WARNING - Warning: AMD data is delayed (282787s) +2026-01-12 19:33:06,921 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (282787s) +2026-01-12 19:33:06,922 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (282787s) +2026-01-12 19:33:06,927 - app.data_sources.base - WARNING - Warning: GD data is delayed (282787s) +2026-01-12 19:33:06,928 - app.data_sources.base - WARNING - Warning: INTC data is delayed (282787s) +2026-01-12 19:33:06,941 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (282787s) +2026-01-12 19:33:06,943 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (282787s) +2026-01-12 19:33:06,945 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (282787s) +2026-01-12 19:33:06,946 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:33:06] "GET /api/portfolio/groups?_t=1768217586825 HTTP/1.1" 200 - +2026-01-12 19:33:06,947 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:33:06] "GET /api/portfolio/summary?_t=1768217586825 HTTP/1.1" 200 - +2026-01-12 19:33:06,949 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:33:06] "GET /api/portfolio/positions?_t=1768217586825 HTTP/1.1" 200 - +2026-01-12 19:33:07,145 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:33:07] "GET /api/portfolio/alerts?_t=1768217586825 HTTP/1.1" 200 - +2026-01-12 19:33:09,300 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:33:09] "GET /api/strategies/notifications?limit=50&_t=1768217588970 HTTP/1.1" 200 - +2026-01-12 19:33:10,718 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:33:10] "POST /api/strategies/notifications/read-all HTTP/1.1" 200 - +2026-01-12 19:33:17,115 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 19:33:27,402 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:33:27] "GET /api/strategies/notifications?limit=50&_t=1768217607084 HTTP/1.1" 200 - +2026-01-12 19:33:32,150 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:33:32] "GET /api/market/types?_t=1768217612141 HTTP/1.1" 200 - +2026-01-12 19:33:32,467 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:33:32] "GET /api/portfolio/positions?_t=1768217612141 HTTP/1.1" 200 - +2026-01-12 19:33:32,470 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:33:32] "GET /api/portfolio/summary?_t=1768217612141 HTTP/1.1" 200 - +2026-01-12 19:33:32,471 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:33:32] "GET /api/portfolio/groups?_t=1768217612141 HTTP/1.1" 200 - +2026-01-12 19:33:32,472 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:33:32] "GET /api/portfolio/alerts?_t=1768217612141 HTTP/1.1" 200 - +2026-01-12 19:33:32,472 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:33:32] "GET /api/portfolio/monitors?_t=1768217612141 HTTP/1.1" 200 - +2026-01-12 19:33:47,146 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 19:33:48,600 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:33:48] "GET /api/strategies/notifications?limit=50&_t=1768217628280 HTTP/1.1" 200 - +2026-01-12 19:33:48,601 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:33:48] "GET /api/strategies/positions?id=14&_t=1768217628279 HTTP/1.1" 200 - +2026-01-12 19:33:48,604 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:33:48] "GET /api/strategies/equityCurve?id=14&_t=1768217628280 HTTP/1.1" 200 - +2026-01-12 19:33:58,596 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:33:58] "GET /api/strategies/notifications?limit=50&_t=1768217637078 HTTP/1.1" 200 - +2026-01-12 19:33:58,596 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:33:58] "GET /api/strategies/positions?id=14&_t=1768217638042 HTTP/1.1" 200 - +2026-01-12 19:33:58,975 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:33:58] "GET /api/strategies/positions?id=14&_t=1768217638659 HTTP/1.1" 200 - +2026-01-12 19:34:02,318 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:34:02] "GET /api/portfolio/positions?_t=1768217642159 HTTP/1.1" 200 - +2026-01-12 19:34:02,626 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:34:02] "GET /api/portfolio/summary?_t=1768217642159 HTTP/1.1" 200 - +2026-01-12 19:34:04,106 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:34:04] "POST /api/portfolio/alerts HTTP/1.1" 200 - +2026-01-12 19:34:04,361 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:34:04] "GET /api/portfolio/alerts?_t=1768217644131 HTTP/1.1" 200 - +2026-01-12 19:34:04,452 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:34:04] "GET /api/strategies/positions?id=14&_t=1768217644294 HTTP/1.1" 200 - +2026-01-12 19:34:09,300 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:34:09] "GET /api/strategies/positions?id=14&_t=1768217649292 HTTP/1.1" 200 - +2026-01-12 19:34:11,596 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:34:11] "GET /api/strategies/notifications?limit=50&_t=1768217651283 HTTP/1.1" 200 - +2026-01-12 19:34:14,298 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:34:14] "GET /api/strategies/positions?id=14&_t=1768217654287 HTTP/1.1" 200 - +2026-01-12 19:34:17,237 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:34:17,257 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (282857s) +2026-01-12 19:34:17,257 - app.services.portfolio_monitor - INFO - Alert #3 triggered: ๐Ÿ”” Price Alert: SPCE current price $3.1800 has exceeded $3.1800 +2026-01-12 19:34:19,605 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:34:19] "GET /api/strategies/positions?id=14&_t=1768217659286 HTTP/1.1" 200 - +2026-01-12 19:34:19,606 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:34:19] "GET /api/strategies/equityCurve?id=14&_t=1768217659285 HTTP/1.1" 200 - +2026-01-12 19:34:24,289 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:34:24] "GET /api/strategies/positions?id=14&_t=1768217664281 HTTP/1.1" 200 - +2026-01-12 19:34:27,406 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:34:27] "GET /api/strategies/notifications?limit=50&_t=1768217667087 HTTP/1.1" 200 - +2026-01-12 19:34:29,298 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:34:29] "GET /api/strategies/positions?id=14&_t=1768217669290 HTTP/1.1" 200 - +2026-01-12 19:34:32,465 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:34:32] "GET /api/portfolio/positions?_t=1768217672146 HTTP/1.1" 200 - +2026-01-12 19:34:32,466 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:34:32] "GET /api/portfolio/summary?_t=1768217672146 HTTP/1.1" 200 - +2026-01-12 19:34:34,295 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:34:34] "GET /api/strategies/positions?id=14&_t=1768217674288 HTTP/1.1" 200 - +2026-01-12 19:34:39,603 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:34:39] "GET /api/strategies/positions?id=14&_t=1768217679291 HTTP/1.1" 200 - +2026-01-12 19:34:41,292 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:34:41] "GET /api/strategies/notifications?limit=50&_t=1768217681284 HTTP/1.1" 200 - +2026-01-12 19:34:44,595 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:34:44] "GET /api/strategies/positions?id=14&_t=1768217684279 HTTP/1.1" 200 - +2026-01-12 19:34:49,289 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:34:49] "GET /api/strategies/equityCurve?id=14&_t=1768217689281 HTTP/1.1" 200 - +2026-01-12 19:34:49,595 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:34:49] "GET /api/strategies/positions?id=14&_t=1768217689281 HTTP/1.1" 200 - +2026-01-12 19:34:51,314 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:34:54,597 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:34:54] "GET /api/strategies/positions?id=14&_t=1768217694282 HTTP/1.1" 200 - +2026-01-12 19:34:57,086 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:34:57] "GET /api/strategies/notifications?limit=50&_t=1768217697079 HTTP/1.1" 200 - +2026-01-12 19:34:59,608 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:34:59] "GET /api/strategies/positions?id=14&_t=1768217699293 HTTP/1.1" 200 - +2026-01-12 19:35:02,156 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:35:02] "GET /api/portfolio/positions?_t=1768217702148 HTTP/1.1" 200 - +2026-01-12 19:35:02,463 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:35:02] "GET /api/portfolio/summary?_t=1768217702148 HTTP/1.1" 200 - +2026-01-12 19:35:09,601 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:35:09] "GET /api/strategies/positions?id=14&_t=1768217709287 HTTP/1.1" 200 - +2026-01-12 19:35:11,301 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:35:11] "GET /api/strategies/notifications?limit=50&_t=1768217711292 HTTP/1.1" 200 - +2026-01-12 19:35:21,337 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:35:27,392 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:35:27] "GET /api/strategies/notifications?limit=50&_t=1768217727078 HTTP/1.1" 200 - +2026-01-12 19:35:32,162 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:35:32] "GET /api/portfolio/positions?_t=1768217732152 HTTP/1.1" 200 - +2026-01-12 19:35:32,463 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:35:32] "GET /api/portfolio/summary?_t=1768217732152 HTTP/1.1" 200 - +2026-01-12 19:35:32,603 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:35:32] "GET /api/strategies/positions?id=14&_t=1768217732288 HTTP/1.1" 200 - +2026-01-12 19:35:32,604 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:35:32] "GET /api/strategies/equityCurve?id=14&_t=1768217732288 HTTP/1.1" 200 - +2026-01-12 19:35:34,598 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:35:34] "GET /api/strategies/positions?id=14&_t=1768217734284 HTTP/1.1" 200 - +2026-01-12 19:35:48,302 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:35:48] "GET /api/strategies/positions?id=14&_t=1768217748294 HTTP/1.1" 200 - +2026-01-12 19:35:48,607 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:35:48] "GET /api/strategies/notifications?limit=50&_t=1768217748294 HTTP/1.1" 200 - +2026-01-12 19:35:51,360 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:35:57,401 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:35:57] "GET /api/strategies/notifications?limit=50&_t=1768217757086 HTTP/1.1" 200 - +2026-01-12 19:36:02,163 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:36:02] "GET /api/portfolio/positions?_t=1768217762153 HTTP/1.1" 200 - +2026-01-12 19:36:02,480 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:36:02] "GET /api/portfolio/summary?_t=1768217762153 HTTP/1.1" 200 - +2026-01-12 19:36:09,610 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:36:09] "GET /api/strategies/equityCurve?id=14&_t=1768217769294 HTTP/1.1" 200 - +2026-01-12 19:36:09,610 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:36:09] "GET /api/strategies/positions?id=14&_t=1768217769294 HTTP/1.1" 200 - +2026-01-12 19:36:11,304 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:36:11] "GET /api/strategies/notifications?limit=50&_t=1768217771296 HTTP/1.1" 200 - +2026-01-12 19:36:21,381 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:36:27,400 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:36:27] "GET /api/strategies/notifications?limit=50&_t=1768217787083 HTTP/1.1" 200 - +2026-01-12 19:36:32,155 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:36:32] "GET /api/portfolio/positions?_t=1768217792146 HTTP/1.1" 200 - +2026-01-12 19:36:32,457 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:36:32] "GET /api/portfolio/summary?_t=1768217792146 HTTP/1.1" 200 - +2026-01-12 19:36:48,609 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:36:48] "GET /api/strategies/positions?id=14&_t=1768217808292 HTTP/1.1" 200 - +2026-01-12 19:36:48,612 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:36:48] "GET /api/strategies/notifications?limit=50&_t=1768217808292 HTTP/1.1" 200 - +2026-01-12 19:36:48,613 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:36:48] "GET /api/strategies/equityCurve?id=14&_t=1768217808292 HTTP/1.1" 200 - +2026-01-12 19:36:51,407 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:36:57,096 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:36:57] "GET /api/strategies/notifications?limit=50&_t=1768217817086 HTTP/1.1" 200 - +2026-01-12 19:37:02,473 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:02] "GET /api/portfolio/positions?_t=1768217822160 HTTP/1.1" 200 - +2026-01-12 19:37:02,473 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:02] "GET /api/portfolio/summary?_t=1768217822160 HTTP/1.1" 200 - +2026-01-12 19:37:21,437 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:37:27,094 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:27] "GET /api/strategies/notifications?limit=50&_t=1768217847086 HTTP/1.1" 200 - +2026-01-12 19:37:32,468 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:32] "GET /api/portfolio/positions?_t=1768217852143 HTTP/1.1" 200 - +2026-01-12 19:37:32,468 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:32] "GET /api/portfolio/summary?_t=1768217852143 HTTP/1.1" 200 - +2026-01-12 19:37:40,213 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:40] "GET /api/market/types?_t=1768217860203 HTTP/1.1" 200 - +2026-01-12 19:37:40,464 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:40] "GET /api/portfolio/positions?_t=1768217860203 HTTP/1.1" 200 - +2026-01-12 19:37:40,472 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:40] "GET /api/portfolio/monitors?_t=1768217860203 HTTP/1.1" 200 - +2026-01-12 19:37:40,472 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:40] "GET /api/portfolio/summary?_t=1768217860203 HTTP/1.1" 200 - +2026-01-12 19:37:40,473 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:40] "GET /api/portfolio/groups?_t=1768217860203 HTTP/1.1" 200 - +2026-01-12 19:37:40,526 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:40] "GET /api/portfolio/alerts?_t=1768217860203 HTTP/1.1" 200 - +2026-01-12 19:37:40,619 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:40] "GET /api/market/types?_t=1768217860610 HTTP/1.1" 200 - +2026-01-12 19:37:40,788 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:40] "GET /api/portfolio/positions?_t=1768217860610 HTTP/1.1" 200 - +2026-01-12 19:37:40,851 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:40] "GET /api/portfolio/summary?_t=1768217860610 HTTP/1.1" 200 - +2026-01-12 19:37:40,866 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:40] "GET /api/portfolio/monitors?_t=1768217860610 HTTP/1.1" 200 - +2026-01-12 19:37:40,875 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:40] "GET /api/portfolio/groups?_t=1768217860610 HTTP/1.1" 200 - +2026-01-12 19:37:40,876 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:40] "GET /api/portfolio/alerts?_t=1768217860610 HTTP/1.1" 200 - +2026-01-12 19:37:40,983 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:40] "GET /api/market/types?_t=1768217860971 HTTP/1.1" 200 - +2026-01-12 19:37:41,103 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:41] "GET /api/portfolio/positions?_t=1768217860971 HTTP/1.1" 200 - +2026-01-12 19:37:41,243 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:41] "GET /api/portfolio/monitors?_t=1768217860971 HTTP/1.1" 200 - +2026-01-12 19:37:41,243 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:41] "GET /api/portfolio/summary?_t=1768217860971 HTTP/1.1" 200 - +2026-01-12 19:37:41,253 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:41] "GET /api/portfolio/groups?_t=1768217860971 HTTP/1.1" 200 - +2026-01-12 19:37:41,290 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:41] "GET /api/portfolio/alerts?_t=1768217860971 HTTP/1.1" 200 - +2026-01-12 19:37:41,537 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:41] "GET /api/market/types?_t=1768217861511 HTTP/1.1" 200 - +2026-01-12 19:37:41,570 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:41] "GET /api/portfolio/positions?_t=1768217861511 HTTP/1.1" 200 - +2026-01-12 19:37:41,623 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:41] "GET /api/portfolio/monitors?_t=1768217861511 HTTP/1.1" 200 - +2026-01-12 19:37:41,624 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:41] "GET /api/portfolio/summary?_t=1768217861511 HTTP/1.1" 200 - +2026-01-12 19:37:41,624 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:41] "GET /api/portfolio/groups?_t=1768217861511 HTTP/1.1" 200 - +2026-01-12 19:37:41,833 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:41] "GET /api/portfolio/alerts?_t=1768217861511 HTTP/1.1" 200 - +2026-01-12 19:37:41,899 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:41] "GET /api/market/types?_t=1768217861886 HTTP/1.1" 200 - +2026-01-12 19:37:41,902 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:41] "GET /api/portfolio/positions?_t=1768217861886 HTTP/1.1" 200 - +2026-01-12 19:37:42,175 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:42] "GET /api/portfolio/summary?_t=1768217861886 HTTP/1.1" 200 - +2026-01-12 19:37:42,211 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:42] "GET /api/portfolio/monitors?_t=1768217861886 HTTP/1.1" 200 - +2026-01-12 19:37:42,212 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:42] "GET /api/portfolio/alerts?_t=1768217861887 HTTP/1.1" 200 - +2026-01-12 19:37:42,212 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:42] "GET /api/portfolio/groups?_t=1768217861887 HTTP/1.1" 200 - +2026-01-12 19:37:42,247 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:42] "GET /api/strategies/notifications?limit=50&_t=1768217862232 HTTP/1.1" 200 - +2026-01-12 19:37:42,253 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:42] "GET /api/strategies?_t=1768217862232 HTTP/1.1" 200 - +2026-01-12 19:37:42,528 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:42] "GET /api/market/types?_t=1768217862310 HTTP/1.1" 200 - +2026-01-12 19:37:42,536 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:42] "GET /api/portfolio/positions?_t=1768217862310 HTTP/1.1" 200 - +2026-01-12 19:37:42,641 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:42] "GET /api/portfolio/alerts?_t=1768217862310 HTTP/1.1" 200 - +2026-01-12 19:37:42,642 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:42] "GET /api/portfolio/monitors?_t=1768217862310 HTTP/1.1" 200 - +2026-01-12 19:37:42,642 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:42] "GET /api/portfolio/summary?_t=1768217862310 HTTP/1.1" 200 - +2026-01-12 19:37:42,646 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:42] "GET /api/portfolio/groups?_t=1768217862310 HTTP/1.1" 200 - +2026-01-12 19:37:51,455 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:37:57,404 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:37:57] "GET /api/strategies/notifications?limit=50&_t=1768217877087 HTTP/1.1" 200 - +2026-01-12 19:38:06,971 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:38:06] "GET /api/market/types?_t=1768217886961 HTTP/1.1" 200 - +2026-01-12 19:38:06,991 - app.data_sources.base - WARNING - Warning: GD data is delayed (283087s) +2026-01-12 19:38:07,000 - app.data_sources.base - WARNING - Warning: AMD data is delayed (283087s) +2026-01-12 19:38:07,005 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (283087s) +2026-01-12 19:38:07,010 - app.data_sources.base - WARNING - Warning: INTC data is delayed (283087s) +2026-01-12 19:38:07,023 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (283087s) +2026-01-12 19:38:07,046 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (283087s) +2026-01-12 19:38:07,047 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (283087s) +2026-01-12 19:38:07,047 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (283087s) +2026-01-12 19:38:07,052 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (283087s) +2026-01-12 19:38:07,066 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:38:07] "GET /api/portfolio/positions?_t=1768217886961 HTTP/1.1" 200 - +2026-01-12 19:38:07,277 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:38:07] "GET /api/portfolio/monitors?_t=1768217886961 HTTP/1.1" 200 - +2026-01-12 19:38:07,278 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:38:07] "GET /api/portfolio/summary?_t=1768217886961 HTTP/1.1" 200 - +2026-01-12 19:38:07,279 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:38:07] "GET /api/portfolio/alerts?_t=1768217886961 HTTP/1.1" 200 - +2026-01-12 19:38:07,279 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:38:07] "GET /api/portfolio/groups?_t=1768217886961 HTTP/1.1" 200 - +2026-01-12 19:38:07,292 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:38:07] "GET /api/strategies/notifications?limit=50&_t=1768217886961 HTTP/1.1" 200 - +2026-01-12 19:38:12,301 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:38:12] "GET /api/strategies/notifications?limit=50&_t=1768217892292 HTTP/1.1" 200 - +2026-01-12 19:38:21,481 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:38:39,559 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-12 19:38:39,560 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-12 19:38:39,560 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-12 19:38:39,561 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-12 19:38:39,573 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 19:38:39,584 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 19:38:39,928 - app.services.strategy - INFO - Found 0 running strategies: [] +2026-01-12 19:38:39,928 - app - INFO - No running strategies to restore. +2026-01-12 19:38:39,946 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-12 19:38:39,947 - werkzeug - INFO - Press CTRL+C to quit +2026-01-12 19:38:41,372 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:38:42,294 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:38:42] "GET /api/strategies/notifications?limit=50&_t=1768217922286 HTTP/1.1" 200 - +2026-01-12 19:38:44,141 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:38:44] "GET /api/market/types?_t=1768217924132 HTTP/1.1" 200 - +2026-01-12 19:38:44,224 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 19:38:44,224 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 19:38:44,225 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 19:38:44,225 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 19:38:44,225 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 19:38:44,225 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 19:38:44,225 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 19:38:44,226 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 19:38:44,226 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 19:38:44,457 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:38:44] "GET /api/portfolio/groups?_t=1768217924132 HTTP/1.1" 200 - +2026-01-12 19:38:44,457 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:38:44] "GET /api/portfolio/monitors?_t=1768217924132 HTTP/1.1" 200 - +2026-01-12 19:38:44,459 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:38:44] "GET /api/portfolio/alerts?_t=1768217924132 HTTP/1.1" 200 - +2026-01-12 19:38:44,876 - app.data_sources.base - WARNING - Warning: AMD data is delayed (283125s) +2026-01-12 19:38:44,883 - app.data_sources.base - WARNING - Warning: AMD data is delayed (283125s) +2026-01-12 19:38:44,939 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (283125s) +2026-01-12 19:38:44,956 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (283125s) +2026-01-12 19:38:44,962 - app.data_sources.base - WARNING - Warning: INTC data is delayed (283125s) +2026-01-12 19:38:44,981 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (283125s) +2026-01-12 19:38:45,012 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (283125s) +2026-01-12 19:38:45,035 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (283125s) +2026-01-12 19:38:45,040 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (283125s) +2026-01-12 19:38:45,056 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (283125s) +2026-01-12 19:38:45,061 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (283125s) +2026-01-12 19:38:45,086 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (283125s) +2026-01-12 19:38:45,099 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (283125s) +2026-01-12 19:38:45,104 - app.data_sources.base - WARNING - Warning: GD data is delayed (283125s) +2026-01-12 19:38:45,111 - app.data_sources.base - WARNING - Warning: INTC data is delayed (283125s) +2026-01-12 19:38:45,111 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:38:45] "GET /api/portfolio/summary?_t=1768217924132 HTTP/1.1" 200 - +2026-01-12 19:38:45,130 - app.data_sources.base - WARNING - Warning: GD data is delayed (283125s) +2026-01-12 19:38:45,131 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:38:45] "GET /api/portfolio/positions?_t=1768217924132 HTTP/1.1" 200 - +2026-01-12 19:39:07,264 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:39:07] "GET /api/strategies/notifications?limit=50&_t=1768217946947 HTTP/1.1" 200 - +2026-01-12 19:39:11,402 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:39:12,294 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:39:12] "GET /api/strategies/notifications?limit=50&_t=1768217952286 HTTP/1.1" 200 - +2026-01-12 19:39:14,456 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:39:14] "GET /api/portfolio/positions?_t=1768217954142 HTTP/1.1" 200 - +2026-01-12 19:39:14,456 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:39:14] "GET /api/portfolio/summary?_t=1768217954142 HTTP/1.1" 200 - +2026-01-12 19:39:14,886 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:39:14] "PUT /api/portfolio/monitors/1 HTTP/1.1" 200 - +2026-01-12 19:39:15,229 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:39:15] "GET /api/portfolio/monitors?_t=1768217954905 HTTP/1.1" 200 - +2026-01-12 19:39:18,187 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:39:18] "GET /api/market/types?_t=1768217958177 HTTP/1.1" 200 - +2026-01-12 19:39:18,191 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:39:18] "GET /api/portfolio/positions?_t=1768217958177 HTTP/1.1" 200 - +2026-01-12 19:39:18,515 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:39:18] "GET /api/portfolio/summary?_t=1768217958177 HTTP/1.1" 200 - +2026-01-12 19:39:18,518 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:39:18] "GET /api/strategies/notifications?limit=50&_t=1768217958177 HTTP/1.1" 200 - +2026-01-12 19:39:18,531 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:39:18] "GET /api/portfolio/monitors?_t=1768217958177 HTTP/1.1" 200 - +2026-01-12 19:39:18,531 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:39:18] "GET /api/portfolio/alerts?_t=1768217958177 HTTP/1.1" 200 - +2026-01-12 19:39:18,532 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:39:18] "GET /api/portfolio/groups?_t=1768217958177 HTTP/1.1" 200 - +2026-01-12 19:39:36,479 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:39:36] "POST /api/portfolio/alerts HTTP/1.1" 200 - +2026-01-12 19:39:36,741 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:39:36] "GET /api/portfolio/alerts?_t=1768217976508 HTTP/1.1" 200 - +2026-01-12 19:39:41,427 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:39:41,661 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (283182s) +2026-01-12 19:39:41,662 - app.services.portfolio_monitor - INFO - Alert #4 triggered: ๐Ÿ”” Price Alert: SPCE current price $3.1800 has exceeded $3.1800 +2026-01-12 19:39:42,291 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:39:42] "GET /api/strategies/notifications?limit=50&_t=1768217982283 HTTP/1.1" 200 - +2026-01-12 19:39:48,480 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:39:48] "GET /api/strategies/notifications?limit=50&_t=1768217988161 HTTP/1.1" 200 - +2026-01-12 19:39:48,512 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:39:48] "GET /api/portfolio/positions?_t=1768217988189 HTTP/1.1" 200 - +2026-01-12 19:39:48,513 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:39:48] "GET /api/portfolio/summary?_t=1768217988189 HTTP/1.1" 200 - +2026-01-12 19:40:12,290 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:40:12] "GET /api/strategies/notifications?limit=50&_t=1768218012282 HTTP/1.1" 200 - +2026-01-12 19:40:16,218 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:40:18,472 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:40:18] "GET /api/strategies/notifications?limit=50&_t=1768218018155 HTTP/1.1" 200 - +2026-01-12 19:40:18,504 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:40:18] "GET /api/portfolio/positions?_t=1768218018183 HTTP/1.1" 200 - +2026-01-12 19:40:18,505 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:40:18] "GET /api/portfolio/summary?_t=1768218018183 HTTP/1.1" 200 - +2026-01-12 19:40:42,291 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:40:42] "GET /api/strategies/notifications?limit=50&_t=1768218042284 HTTP/1.1" 200 - +2026-01-12 19:40:46,240 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:40:48,484 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:40:48] "GET /api/strategies/notifications?limit=50&_t=1768218048168 HTTP/1.1" 200 - +2026-01-12 19:40:48,514 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:40:48] "GET /api/portfolio/positions?_t=1768218048194 HTTP/1.1" 200 - +2026-01-12 19:40:48,515 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:40:48] "GET /api/portfolio/summary?_t=1768218048194 HTTP/1.1" 200 - +2026-01-12 19:41:16,265 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:41:18,175 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:41:18] "GET /api/strategies/notifications?limit=50&_t=1768218078165 HTTP/1.1" 200 - +2026-01-12 19:41:18,511 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:41:18] "GET /api/portfolio/positions?_t=1768218078194 HTTP/1.1" 200 - +2026-01-12 19:41:18,512 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:41:18] "GET /api/portfolio/summary?_t=1768218078194 HTTP/1.1" 200 - +2026-01-12 19:41:46,295 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:41:48,174 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:41:48] "GET /api/strategies/notifications?limit=50&_t=1768218108166 HTTP/1.1" 200 - +2026-01-12 19:41:48,513 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:41:48] "GET /api/portfolio/positions?_t=1768218108193 HTTP/1.1" 200 - +2026-01-12 19:41:48,513 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:41:48] "GET /api/portfolio/summary?_t=1768218108193 HTTP/1.1" 200 - +2026-01-12 19:41:48,606 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:41:48] "GET /api/strategies/notifications?limit=50&_t=1768218108291 HTTP/1.1" 200 - +2026-01-12 19:42:16,315 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:42:18,167 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:42:18] "GET /api/strategies/notifications?limit=50&_t=1768218138159 HTTP/1.1" 200 - +2026-01-12 19:42:18,509 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:42:18] "GET /api/portfolio/summary?_t=1768218138193 HTTP/1.1" 200 - +2026-01-12 19:42:18,509 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:42:18] "GET /api/portfolio/positions?_t=1768218138193 HTTP/1.1" 200 - +2026-01-12 19:42:46,337 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:42:48,169 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:42:48] "GET /api/strategies/notifications?limit=50&_t=1768218168160 HTTP/1.1" 200 - +2026-01-12 19:42:48,511 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:42:48] "GET /api/portfolio/summary?_t=1768218168186 HTTP/1.1" 200 - +2026-01-12 19:42:48,512 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:42:48] "GET /api/portfolio/positions?_t=1768218168186 HTTP/1.1" 200 - +2026-01-12 19:42:48,606 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:42:48] "GET /api/strategies/notifications?limit=50&_t=1768218168284 HTTP/1.1" 200 - +2026-01-12 19:43:16,361 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:43:18,304 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:43:18] "GET /api/strategies/notifications?limit=50&_t=1768218198294 HTTP/1.1" 200 - +2026-01-12 19:43:18,838 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:43:18] "GET /api/portfolio/positions?_t=1768218198361 HTTP/1.1" 200 - +2026-01-12 19:43:18,850 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:43:18] "GET /api/portfolio/summary?_t=1768218198361 HTTP/1.1" 200 - +2026-01-12 19:43:46,445 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.8% has reached 1.0% target +2026-01-12 19:43:48,291 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:43:48] "GET /api/strategies/notifications?limit=50&_t=1768218228282 HTTP/1.1" 200 - +2026-01-12 19:43:48,596 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:43:48] "GET /api/strategies/notifications?limit=50&_t=1768218228283 HTTP/1.1" 200 - +2026-01-12 19:43:48,645 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:43:48] "GET /api/portfolio/positions?_t=1768218228332 HTTP/1.1" 200 - +2026-01-12 19:43:48,645 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:43:48] "GET /api/portfolio/summary?_t=1768218228332 HTTP/1.1" 200 - +2026-01-12 19:44:16,466 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.8% has reached 1.0% target +2026-01-12 19:44:16,480 - app.services.portfolio_monitor - INFO - Running due monitor #1 +2026-01-12 19:44:16,685 - app.data_sources.base - WARNING - Warning: AMD data is delayed (283457s) +2026-01-12 19:44:16,814 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (283457s) +2026-01-12 19:44:17,034 - app.data_sources.base - WARNING - Warning: GD data is delayed (283457s) +2026-01-12 19:44:17,261 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (283457s) +2026-01-12 19:44:17,407 - app.data_sources.base - WARNING - Warning: INTC data is delayed (283457s) +2026-01-12 19:44:17,598 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (283458s) +2026-01-12 19:44:17,708 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (283458s) +2026-01-12 19:44:17,826 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (283458s) +2026-01-12 19:44:17,827 - app.services.portfolio_monitor - INFO - Running multi-agent analysis for Crypto:ETH/USDT +2026-01-12 19:44:17,845 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-12 19:44:17,845 - app.services.analysis - INFO - Starting analysis Crypto:ETH/USDT, language=en-US, mode=multi-agent +2026-01-12 19:44:17,846 - app.services.analysis - INFO - Run coordinator: Crypto:ETH/USDT +2026-01-12 19:44:17,846 - app.services.agents.coordinator - INFO - Multi-agent analysis start: Crypto:ETH/USDT, model=None, language=en-US +2026-01-12 19:44:20,970 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:ETH/USDT: binance does not have market symbol ETH/USDT/USDT +2026-01-12 19:44:24,683 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:ETH/USDT: binance does not have market symbol ETH/USDT/USDT +2026-01-12 19:44:24,708 - app.services.agents.tools - WARNING - Finnhub news fetch failed: 'Client' object has no attribute 'crypto_news' +2026-01-12 19:44:24,708 - app.services.agents.tools - INFO - Running news search: "ETH/USDT Cryptocurrency" ETH/USDT crypto news analysis +2026-01-12 19:44:25,581 - app.services.search - WARNING - Google Search returned no 'items'. Full response: {"kind": "customsearch#search", "url": {"type": "application/json", "template": "https://www.googleapis.com/customsearch/v1?q={searchTerms}&num={count?}&start={startIndex?}&lr={language?}&safe={safe?}&cx={cx?}&sort={sort?}&filter={filter?}&gl={gl?}&cr={cr?}&googlehost={googleHost?}&c2coff={disableCnTwTranslation?}&hq={hq?}&hl={hl?}&siteSearch={siteSearch?}&siteSearchFilter={siteSearchFilter?}&exactTerms={exactTerms?}&excludeTerms={excludeTerms?}&linkSite={linkSite?}&orTerms={orTerms?}&dateRestrict={dateRestrict?}&lowRange={lowRange?}&highRange={highRange?}&searchType={searchType}&fileType={fileType?}&rights={rights?}&imgSize={imgSize?}&imgType={imgType?}&imgColorType={imgColorType?}&imgDominantColor={imgDominantColor?}&alt=json"}, "queries": {"request": [{"title": "Google Custom Search - \"ETH/USDT Cryptocurrency\" ETH/USDT crypto news analysis", "searchTerms": "\"ETH/USDT Cryptocurrency\" ETH/USDT crypto news analysis", "count": 10, "startIndex": 1, "inputEncoding": "utf8", "outputEncoding": "utf8", "safe": "off", "cx": "17f675b8e3b994281", "dateRestrict": "d7"}]}, "context": {"title": "Global News Search"}, "searchInformation": {"searchTime": 0.114046, "formattedSearchTime": "0.11", "totalResults": "0", "formattedTotalResults": "0"}} +2026-01-12 19:44:25,582 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-12 19:44:26,545 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:44:26,554 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:44:26,568 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:44:26,627 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:44:27,535 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:44:27,535 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:27,536 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:27,566 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:44:27,567 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:27,567 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:27,663 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:44:27,663 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:27,663 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:27,685 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:44:27,685 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:27,685 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:28,755 - app.services.agents.tools - ERROR - Failed to fetch kline data Crypto:ETH/USDT: binance does not have market symbol ETH/USDT/USDT +2026-01-12 19:44:31,713 - app.services.agents.tools - ERROR - Failed to fetch current price Crypto:ETH/USDT: binance does not have market symbol ETH/USDT/USDT +2026-01-12 19:44:32,733 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:44:33,306 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:44:33,306 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:33,306 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:33,308 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-12 19:44:33,989 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:44:34,448 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:44:34,517 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:44:34,517 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:34,517 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:34,982 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:44:34,983 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:34,983 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:34,984 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-12 19:44:35,521 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:44:36,220 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:44:36,220 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:36,220 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:36,221 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-12 19:44:36,875 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:44:37,010 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:44:37,010 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:44:37,519 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:44:37,519 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:37,519 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:37,763 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:44:37,763 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:37,763 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:37,864 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:44:37,864 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:37,864 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:37,865 - app.services.agents.coordinator - WARNING - Record reflection failed: 'NoneType' object has no attribute 'get' +2026-01-12 19:44:37,865 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: Crypto:ETH/USDT +2026-01-12 19:44:37,866 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-12 19:44:37,866 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-12 19:44:37,866 - app.services.portfolio_monitor - INFO - Analysis completed for Crypto:ETH/USDT: HOLD +2026-01-12 19:44:37,866 - app.services.portfolio_monitor - INFO - Running multi-agent analysis for USStock:AMD +2026-01-12 19:44:37,878 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-12 19:44:37,878 - app.services.analysis - INFO - Starting analysis USStock:AMD, language=en-US, mode=multi-agent +2026-01-12 19:44:37,878 - app.services.analysis - INFO - Run coordinator: USStock:AMD +2026-01-12 19:44:37,878 - app.services.agents.coordinator - INFO - Multi-agent analysis start: USStock:AMD, model=None, language=en-US +2026-01-12 19:44:41,409 - app.services.agents.tools - INFO - Running news search: "Advanced Micro Devices Inc" AMD stock news +2026-01-12 19:44:42,532 - app.services.agents.tools - INFO - Deep reading: AMD ื€ together we advance_AI +2026-01-12 19:44:47,465 - app.services.agents.tools - INFO - Deep reading: AMD: AMD Stock Price Quote & News | Robinhood +2026-01-12 19:44:48,598 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:44:48] "GET /api/strategies/notifications?limit=50&_t=1768218288282 HTTP/1.1" 200 - +2026-01-12 19:44:48,599 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:44:48] "GET /api/strategies/notifications?limit=50&_t=1768218288282 HTTP/1.1" 200 - +2026-01-12 19:44:48,670 - app.data_sources.base - WARNING - Warning: GD data is delayed (283489s) +2026-01-12 19:44:48,671 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (283489s) +2026-01-12 19:44:48,697 - app.data_sources.base - WARNING - Warning: INTC data is delayed (283489s) +2026-01-12 19:44:48,697 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (283489s) +2026-01-12 19:44:48,697 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (283489s) +2026-01-12 19:44:48,698 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (283489s) +2026-01-12 19:44:48,700 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (283489s) +2026-01-12 19:44:48,708 - app.data_sources.base - WARNING - Warning: AMD data is delayed (283489s) +2026-01-12 19:44:48,709 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (283489s) +2026-01-12 19:44:48,721 - app.data_sources.base - WARNING - Warning: AMD data is delayed (283489s) +2026-01-12 19:44:48,726 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (283489s) +2026-01-12 19:44:48,732 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (283489s) +2026-01-12 19:44:48,732 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (283489s) +2026-01-12 19:44:48,757 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:44:48] "GET /api/portfolio/positions?_t=1768218288333 HTTP/1.1" 200 - +2026-01-12 19:44:49,511 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:44:49] "GET /api/portfolio/summary?_t=1768218288333 HTTP/1.1" 200 - +2026-01-12 19:44:52,791 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-12 19:44:53,571 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:44:53,732 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:44:53,785 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:44:53,794 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:44:53,989 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:44:54,268 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:44:54,268 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:54,268 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:54,409 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:44:54,409 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:54,409 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:54,723 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:44:54,724 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:54,724 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:54,725 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:44:54,726 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:54,726 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:54,880 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:44:54,881 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:54,881 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:54,883 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-12 19:44:55,602 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:44:55,749 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:44:56,382 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:44:56,382 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:56,383 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:56,581 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:44:56,581 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:56,581 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:56,582 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-12 19:44:57,300 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:44:57,878 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:44:57,879 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:57,879 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:57,880 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-12 19:44:58,525 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:44:58,624 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:44:58,668 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:44:59,312 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:44:59,313 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:59,313 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:59,496 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:44:59,496 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:59,496 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:59,592 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:44:59,592 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:59,592 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:44:59,600 - app.services.agents.reflection - INFO - Recorded analysis for reflection: USStock:AMD, will verify after 7 day(s) +2026-01-12 19:44:59,600 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: USStock:AMD +2026-01-12 19:44:59,600 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-12 19:44:59,601 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-12 19:44:59,601 - app.services.portfolio_monitor - INFO - Analysis completed for USStock:AMD: HOLD +2026-01-12 19:44:59,601 - app.services.portfolio_monitor - INFO - Running multi-agent analysis for USStock:AVGO +2026-01-12 19:44:59,611 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-12 19:44:59,611 - app.services.analysis - INFO - Starting analysis USStock:AVGO, language=en-US, mode=multi-agent +2026-01-12 19:44:59,611 - app.services.analysis - INFO - Run coordinator: USStock:AVGO +2026-01-12 19:44:59,611 - app.services.agents.coordinator - INFO - Multi-agent analysis start: USStock:AVGO, model=None, language=en-US +2026-01-12 19:45:03,844 - app.services.agents.tools - INFO - Running news search: "Broadcom Inc" AVGO stock news +2026-01-12 19:45:04,979 - app.services.agents.tools - INFO - Deep reading: Investor Center | Broadcom Inc. +2026-01-12 19:45:10,830 - app.services.agents.tools - INFO - Deep reading: Broadcom Inc. Common Stock (AVGO) Stock Price, Quote, News ... +2026-01-12 19:45:18,260 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-12 19:45:19,048 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:45:19,055 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:45:19,056 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:45:19,064 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:45:19,113 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:45:19,766 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:45:19,766 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:19,767 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:19,861 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:45:19,861 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:19,861 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:19,897 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:45:19,897 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:45:19,897 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:19,898 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:19,898 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:19,898 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:20,011 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:45:20,011 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:20,011 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:20,013 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-12 19:45:20,640 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:45:20,863 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:45:21,207 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:45:21,208 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:21,208 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:21,492 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:45:21,492 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:21,492 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:21,493 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-12 19:45:22,122 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:45:22,787 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:45:22,787 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:22,787 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:22,788 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-12 19:45:23,425 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:45:23,452 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:45:23,457 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:45:24,074 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:45:24,074 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:24,075 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:24,166 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:45:24,166 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:24,166 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:24,184 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:45:24,184 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:24,184 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:24,194 - app.services.agents.reflection - INFO - Recorded analysis for reflection: USStock:AVGO, will verify after 7 day(s) +2026-01-12 19:45:24,194 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: USStock:AVGO +2026-01-12 19:45:24,195 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-12 19:45:24,196 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-12 19:45:24,197 - app.services.portfolio_monitor - INFO - Analysis completed for USStock:AVGO: HOLD +2026-01-12 19:45:24,197 - app.services.portfolio_monitor - INFO - Running multi-agent analysis for USStock:GD +2026-01-12 19:45:24,216 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-12 19:45:24,216 - app.services.analysis - INFO - Starting analysis USStock:GD, language=en-US, mode=multi-agent +2026-01-12 19:45:24,216 - app.services.analysis - INFO - Run coordinator: USStock:GD +2026-01-12 19:45:24,217 - app.services.agents.coordinator - INFO - Multi-agent analysis start: USStock:GD, model=None, language=en-US +2026-01-12 19:45:27,910 - app.services.agents.tools - INFO - Running news search: "General Dynamics Corp" GD stock news +2026-01-12 19:45:28,836 - app.services.agents.tools - INFO - Deep reading: GD: General Dynamics Corp - Stock Price, Quote and News - CNBC +2026-01-12 19:45:29,895 - app.services.agents.tools - INFO - Deep reading: GD Stock Price | General Dynamics Corp. Stock Quote (U.S.: NYSE ... +2026-01-12 19:45:34,863 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-12 19:45:35,580 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:45:35,616 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:45:35,627 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:45:35,660 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:45:35,710 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:45:36,423 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:45:36,423 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:36,423 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:36,444 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:45:36,444 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:36,444 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:36,499 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:45:36,499 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:36,499 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:36,523 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:45:36,523 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:36,524 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:36,696 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:45:36,697 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:36,697 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:36,699 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-12 19:45:37,505 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:45:37,513 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:45:38,098 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:45:38,098 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:38,098 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:38,245 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:45:38,245 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:38,245 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:38,246 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-12 19:45:38,894 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:45:39,444 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:45:39,444 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:39,445 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:39,445 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-12 19:45:40,069 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:45:40,157 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:45:40,229 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:45:40,739 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:45:40,739 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:40,739 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:40,891 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:45:40,891 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:40,891 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:41,176 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:45:41,176 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:41,176 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:41,184 - app.services.agents.reflection - INFO - Recorded analysis for reflection: USStock:GD, will verify after 7 day(s) +2026-01-12 19:45:41,184 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: USStock:GD +2026-01-12 19:45:41,184 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-12 19:45:41,185 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-12 19:45:41,185 - app.services.portfolio_monitor - INFO - Analysis completed for USStock:GD: HOLD +2026-01-12 19:45:41,186 - app.services.portfolio_monitor - INFO - Running multi-agent analysis for USStock:GOOGL +2026-01-12 19:45:41,195 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-12 19:45:41,195 - app.services.analysis - INFO - Starting analysis USStock:GOOGL, language=en-US, mode=multi-agent +2026-01-12 19:45:41,195 - app.services.analysis - INFO - Run coordinator: USStock:GOOGL +2026-01-12 19:45:41,195 - app.services.agents.coordinator - INFO - Multi-agent analysis start: USStock:GOOGL, model=None, language=en-US +2026-01-12 19:45:44,882 - app.services.agents.tools - INFO - Running news search: "Alphabet Inc" GOOGL stock news +2026-01-12 19:45:45,967 - app.services.agents.tools - INFO - Deep reading: Alphabet Inc. (GOOGL) +2026-01-12 19:45:46,993 - app.services.agents.tools - INFO - Deep reading: GOOGL: Alphabet Class A - Stock Price, Quote and News - CNBC +2026-01-12 19:45:47,985 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-12 19:45:48,302 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:45:48] "GET /api/strategies/notifications?limit=50&_t=1768218348288 HTTP/1.1" 200 - +2026-01-12 19:45:48,620 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:45:48] "GET /api/strategies/notifications?limit=50&_t=1768218348288 HTTP/1.1" 200 - +2026-01-12 19:45:48,675 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:45:48] "GET /api/portfolio/positions?_t=1768218348351 HTTP/1.1" 200 - +2026-01-12 19:45:48,677 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:45:48] "GET /api/portfolio/summary?_t=1768218348351 HTTP/1.1" 200 - +2026-01-12 19:45:48,870 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:45:48,898 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:45:49,249 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:45:49,249 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:45:49,298 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:45:49,851 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:45:49,851 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:49,851 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:49,953 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:45:49,954 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:49,954 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:50,241 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:45:50,241 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:50,241 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:50,319 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:45:50,320 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:50,320 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:50,625 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:45:50,625 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:50,626 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:50,630 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-12 19:45:51,317 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:45:51] "GET /api/market/types?_t=1768218351308 HTTP/1.1" 200 - +2026-01-12 19:45:51,481 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:45:51,512 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:45:51] "GET /api/portfolio/positions?_t=1768218351308 HTTP/1.1" 200 - +2026-01-12 19:45:51,532 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:45:51,584 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:45:51] "GET /api/portfolio/summary?_t=1768218351308 HTTP/1.1" 200 - +2026-01-12 19:45:51,584 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:45:51] "GET /api/portfolio/monitors?_t=1768218351308 HTTP/1.1" 200 - +2026-01-12 19:45:51,585 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:45:51] "GET /api/portfolio/groups?_t=1768218351308 HTTP/1.1" 200 - +2026-01-12 19:45:51,620 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:45:51] "GET /api/portfolio/alerts?_t=1768218351308 HTTP/1.1" 200 - +2026-01-12 19:45:52,199 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:45:52,200 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:52,200 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:52,381 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:45:52,381 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:52,381 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:52,383 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-12 19:45:53,062 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:45:53,925 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:45:53,925 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:53,925 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:53,926 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-12 19:45:54,705 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:45:54,983 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:45:54,989 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:45:55,272 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:45:55,272 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:55,272 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:55,674 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:45:55,674 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:55,674 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:55,718 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:45:55,719 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:55,719 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:45:55,726 - app.services.agents.reflection - INFO - Recorded analysis for reflection: USStock:GOOGL, will verify after 7 day(s) +2026-01-12 19:45:55,726 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: USStock:GOOGL +2026-01-12 19:45:55,726 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-12 19:45:55,729 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-12 19:45:55,729 - app.services.portfolio_monitor - INFO - Analysis completed for USStock:GOOGL: HOLD +2026-01-12 19:45:55,729 - app.services.portfolio_monitor - INFO - Running multi-agent analysis for USStock:INTC +2026-01-12 19:45:55,738 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-12 19:45:55,739 - app.services.analysis - INFO - Starting analysis USStock:INTC, language=en-US, mode=multi-agent +2026-01-12 19:45:55,739 - app.services.analysis - INFO - Run coordinator: USStock:INTC +2026-01-12 19:45:55,739 - app.services.agents.coordinator - INFO - Multi-agent analysis start: USStock:INTC, model=None, language=en-US +2026-01-12 19:45:59,864 - app.services.agents.tools - INFO - Running news search: "Intel Corp" INTC stock news +2026-01-12 19:46:00,727 - app.services.agents.tools - INFO - Deep reading: Intel: INTC Stock Price Quote & News | Robinhood +2026-01-12 19:46:05,041 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:46:05] "GET /api/market/types?_t=1768218365032 HTTP/1.1" 200 - +2026-01-12 19:46:05,268 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:46:05] "GET /api/portfolio/positions?_t=1768218365032 HTTP/1.1" 200 - +2026-01-12 19:46:05,319 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:46:05] "GET /api/portfolio/monitors?_t=1768218365032 HTTP/1.1" 200 - +2026-01-12 19:46:05,320 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:46:05] "GET /api/portfolio/summary?_t=1768218365032 HTTP/1.1" 200 - +2026-01-12 19:46:05,320 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:46:05] "GET /api/portfolio/groups?_t=1768218365032 HTTP/1.1" 200 - +2026-01-12 19:46:05,356 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:46:05] "GET /api/portfolio/alerts?_t=1768218365032 HTTP/1.1" 200 - +2026-01-12 19:46:08,096 - app.services.agents.tools - INFO - Deep reading: Intel Corp. (INTC) Soars 6.5% Ahead of FY25 Earnings +2026-01-12 19:46:08,861 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-12 19:46:09,618 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:46:09,640 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:46:09,707 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:46:09,744 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:46:09,810 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:46:10,437 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:46:10,438 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:10,438 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:10,493 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:46:10,493 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:10,493 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:10,523 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:46:10,523 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:10,523 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:10,638 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:46:10,639 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:10,639 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:10,718 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:46:10,718 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:10,718 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:10,720 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-12 19:46:11,360 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:46:11,449 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:46:12,000 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:46:12,001 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:12,001 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:12,075 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:46:12,076 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:12,076 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:12,077 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-12 19:46:12,628 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:46:12,637 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:46:12] "GET /api/strategies/notifications?limit=50&_t=1768218372295 HTTP/1.1" 200 - +2026-01-12 19:46:13,201 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:46:13,201 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:13,201 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:13,202 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-12 19:46:13,860 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:46:13,899 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:46:13,931 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:46:14,536 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:46:14,536 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:14,536 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:14,619 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:46:14,619 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:14,619 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:14,723 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:46:14,724 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:14,724 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:14,738 - app.services.agents.reflection - INFO - Recorded analysis for reflection: USStock:INTC, will verify after 7 day(s) +2026-01-12 19:46:14,738 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: USStock:INTC +2026-01-12 19:46:14,738 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-12 19:46:14,740 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-12 19:46:14,740 - app.services.portfolio_monitor - INFO - Analysis completed for USStock:INTC: HOLD +2026-01-12 19:46:14,740 - app.services.portfolio_monitor - INFO - Running multi-agent analysis for USStock:MSFT +2026-01-12 19:46:14,759 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-12 19:46:14,760 - app.services.analysis - INFO - Starting analysis USStock:MSFT, language=en-US, mode=multi-agent +2026-01-12 19:46:14,760 - app.services.analysis - INFO - Run coordinator: USStock:MSFT +2026-01-12 19:46:14,760 - app.services.agents.coordinator - INFO - Multi-agent analysis start: USStock:MSFT, model=None, language=en-US +2026-01-12 19:46:18,176 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:46:18] "GET /api/strategies/notifications?limit=50&_t=1768218378163 HTTP/1.1" 200 - +2026-01-12 19:46:18,941 - app.services.agents.tools - INFO - Running news search: "Microsoft Corp" MSFT stock news +2026-01-12 19:46:20,024 - app.services.agents.tools - INFO - Deep reading: MSFT: Microsoft Corp - Stock Price, Quote and News - CNBC +2026-01-12 19:46:20,748 - app.services.agents.tools - INFO - Deep reading: Buy or Sell Microsoft Stock - MSFT Stock Price Quote & News ... +2026-01-12 19:46:27,486 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-12 19:46:28,209 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:46:28,433 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:46:28,499 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:46:28,522 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:46:28,555 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:46:28,886 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:46:28,886 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:28,886 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:29,195 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:46:29,196 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:29,196 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:29,273 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:46:29,273 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:29,273 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:29,277 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:46:29,277 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:29,277 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:29,299 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:46:29,299 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:29,299 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:29,301 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-12 19:46:29,983 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:46:30,038 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:46:30,629 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:46:30,629 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:30,629 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:30,861 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:46:30,861 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:30,861 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:30,863 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-12 19:46:31,400 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:46:32,058 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:46:32,058 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:32,058 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:32,059 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-12 19:46:32,719 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:46:32,808 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:46:33,005 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:46:33,423 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:46:33,424 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:33,424 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:33,608 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:46:33,608 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:33,608 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:33,844 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:46:33,844 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:33,844 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:33,855 - app.services.agents.reflection - INFO - Recorded analysis for reflection: USStock:MSFT, will verify after 7 day(s) +2026-01-12 19:46:33,856 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: USStock:MSFT +2026-01-12 19:46:33,856 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-12 19:46:33,858 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-12 19:46:33,858 - app.services.portfolio_monitor - INFO - Analysis completed for USStock:MSFT: HOLD +2026-01-12 19:46:33,858 - app.services.portfolio_monitor - INFO - Running multi-agent analysis for USStock:OMDA +2026-01-12 19:46:33,869 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-12 19:46:33,869 - app.services.analysis - INFO - Starting analysis USStock:OMDA, language=en-US, mode=multi-agent +2026-01-12 19:46:33,869 - app.services.analysis - INFO - Run coordinator: USStock:OMDA +2026-01-12 19:46:33,869 - app.services.agents.coordinator - INFO - Multi-agent analysis start: USStock:OMDA, model=None, language=en-US +2026-01-12 19:46:35,365 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:46:35] "GET /api/portfolio/positions?_t=1768218395044 HTTP/1.1" 200 - +2026-01-12 19:46:35,366 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:46:35] "GET /api/portfolio/summary?_t=1768218395044 HTTP/1.1" 200 - +2026-01-12 19:46:36,680 - app.services.agents.tools - INFO - Running news search: "Omada Health Inc" OMDA stock news +2026-01-12 19:46:37,625 - app.services.agents.tools - INFO - Deep reading: Stock Quote & Chart | Omada Health, Inc. +2026-01-12 19:46:39,042 - app.services.agents.tools - INFO - Deep reading: OMADA HEALTH, INC. (OMDA) Stock, Price, News, Quotes ... +2026-01-12 19:46:42,301 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:46:42] "GET /api/strategies/notifications?limit=50&_t=1768218402293 HTTP/1.1" 200 - +2026-01-12 19:46:48,471 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:46:48] "GET /api/strategies/notifications?limit=50&_t=1768218408155 HTTP/1.1" 200 - +2026-01-12 19:46:54,465 - app.services.agents.tools - WARNING - Jina Reader content fetch failed https://www.msn.com/en-us/money/stockdetails/omda-us-stock/fi-ch1gdm: SOCKSHTTPSConnectionPool(host='r.jina.ai', port=443): Read timed out. (read timeout=15) +2026-01-12 19:46:54,465 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-12 19:46:55,467 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:46:55,550 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:46:55,551 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:46:55,584 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:46:55,689 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:46:56,578 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:46:56,578 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:56,578 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:56,619 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:46:56,619 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:56,620 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:56,622 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:46:56,623 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:46:56,623 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:56,623 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:56,623 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:56,623 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:56,628 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:46:56,628 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:56,628 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:56,632 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-12 19:46:57,515 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:46:57,620 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:46:58,031 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:46:58] "GET /api/market/types?_t=1768218418023 HTTP/1.1" 200 - +2026-01-12 19:46:58,294 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:46:58] "GET /api/portfolio/positions?_t=1768218418023 HTTP/1.1" 200 - +2026-01-12 19:46:58,304 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:46:58] "GET /api/portfolio/monitors?_t=1768218418023 HTTP/1.1" 200 - +2026-01-12 19:46:58,305 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:46:58] "GET /api/portfolio/summary?_t=1768218418023 HTTP/1.1" 200 - +2026-01-12 19:46:58,306 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:46:58,306 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:58,306 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:58,328 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:46:58,328 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:58,329 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:58,331 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-12 19:46:58,342 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:46:58] "GET /api/portfolio/groups?_t=1768218418023 HTTP/1.1" 200 - +2026-01-12 19:46:58,343 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:46:58] "GET /api/portfolio/alerts?_t=1768218418023 HTTP/1.1" 200 - +2026-01-12 19:46:59,115 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:46:59,642 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:46:59,642 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:59,643 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:46:59,643 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-12 19:47:00,343 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:47:00,574 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:47:00,741 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:47:01,209 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:47:01,210 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:01,210 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:01,221 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:47:01,221 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:01,222 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:01,458 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:47:01,458 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:01,458 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:01,466 - app.services.agents.reflection - INFO - Recorded analysis for reflection: USStock:OMDA, will verify after 7 day(s) +2026-01-12 19:47:01,466 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: USStock:OMDA +2026-01-12 19:47:01,466 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-12 19:47:01,467 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-12 19:47:01,467 - app.services.portfolio_monitor - INFO - Analysis completed for USStock:OMDA: HOLD +2026-01-12 19:47:01,467 - app.services.portfolio_monitor - INFO - Running multi-agent analysis for USStock:ORCL +2026-01-12 19:47:01,476 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-12 19:47:01,476 - app.services.analysis - INFO - Starting analysis USStock:ORCL, language=en-US, mode=multi-agent +2026-01-12 19:47:01,476 - app.services.analysis - INFO - Run coordinator: USStock:ORCL +2026-01-12 19:47:01,477 - app.services.agents.coordinator - INFO - Multi-agent analysis start: USStock:ORCL, model=None, language=en-US +2026-01-12 19:47:05,306 - app.services.agents.tools - INFO - Running news search: "Oracle Corp" ORCL stock news +2026-01-12 19:47:06,551 - app.services.agents.tools - INFO - Deep reading: ORCL: Oracle Corp - Stock Price, Quote and News - CNBC +2026-01-12 19:47:07,261 - app.services.agents.tools - INFO - Deep reading: Oracle: ORCL Stock Price Quote & News | Robinhood +2026-01-12 19:47:12,372 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-12 19:47:12,602 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:47:12] "GET /api/strategies/notifications?limit=50&_t=1768218432286 HTTP/1.1" 200 - +2026-01-12 19:47:13,178 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:47:13,182 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:47:13,184 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:47:13,198 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:47:13,273 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:47:14,007 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:47:14,007 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:14,007 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:14,017 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:47:14,018 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:14,018 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:14,060 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:47:14,060 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:14,061 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:14,104 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:47:14,104 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:14,104 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:14,130 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:47:14,130 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:14,130 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:14,132 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-12 19:47:14,786 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:47:14,800 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:47:15,405 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:47:15,406 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:15,406 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:15,501 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:47:15,501 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:15,502 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:15,503 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-12 19:47:16,020 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:47:16,581 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:47:16,581 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:16,581 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:16,582 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-12 19:47:17,232 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:47:17,269 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:47:17,276 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:47:17,953 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:47:17,953 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:17,953 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:18,028 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:47:18,028 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:18,028 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:18,172 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:47:18] "GET /api/strategies/notifications?limit=50&_t=1768218438164 HTTP/1.1" 200 - +2026-01-12 19:47:18,431 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:47:18,432 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:18,432 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:18,439 - app.services.agents.reflection - INFO - Recorded analysis for reflection: USStock:ORCL, will verify after 7 day(s) +2026-01-12 19:47:18,439 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: USStock:ORCL +2026-01-12 19:47:18,439 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-12 19:47:18,440 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-12 19:47:18,441 - app.services.portfolio_monitor - INFO - Analysis completed for USStock:ORCL: HOLD +2026-01-12 19:47:18,441 - app.services.portfolio_monitor - INFO - Running multi-agent analysis for USStock:SPCE +2026-01-12 19:47:18,450 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-12 19:47:18,450 - app.services.analysis - INFO - Starting analysis USStock:SPCE, language=en-US, mode=multi-agent +2026-01-12 19:47:18,450 - app.services.analysis - INFO - Run coordinator: USStock:SPCE +2026-01-12 19:47:18,450 - app.services.agents.coordinator - INFO - Multi-agent analysis start: USStock:SPCE, model=None, language=en-US +2026-01-12 19:47:21,835 - app.services.agents.tools - INFO - Running news search: "Virgin Galactic Holdings Inc" SPCE stock news +2026-01-12 19:47:22,755 - app.services.agents.tools - INFO - Deep reading: Virgin Galactic Holdings, Inc. (SPCE) Stock Price, News, Quote ... +2026-01-12 19:47:23,114 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:47:23] "GET /api/market/types?_t=1768218443107 HTTP/1.1" 200 - +2026-01-12 19:47:23,340 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:47:23] "GET /api/portfolio/positions?_t=1768218443107 HTTP/1.1" 200 - +2026-01-12 19:47:23,405 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:47:23] "GET /api/portfolio/summary?_t=1768218443107 HTTP/1.1" 200 - +2026-01-12 19:47:23,407 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:47:23] "GET /api/portfolio/groups?_t=1768218443107 HTTP/1.1" 200 - +2026-01-12 19:47:23,416 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:47:23] "GET /api/portfolio/monitors?_t=1768218443107 HTTP/1.1" 200 - +2026-01-12 19:47:23,428 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:47:23] "GET /api/portfolio/alerts?_t=1768218443107 HTTP/1.1" 200 - +2026-01-12 19:47:23,474 - app.services.agents.tools - INFO - Deep reading: Virgin Galactic (SPCE) Stock Price, News & Analysis +2026-01-12 19:47:26,878 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-12 19:47:27,625 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:47:27,635 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:47:27,674 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:47:27,681 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:47:27,682 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:47:28,368 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:47:28,368 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:28,368 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:28,416 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:47:28,416 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:28,417 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:28,470 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:47:28,470 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:28,470 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:28,499 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:47:28,499 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:28,499 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:28,535 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:47:28,535 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:28,535 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:28,537 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-12 19:47:29,186 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:47:29,197 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:47:29,824 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:47:29,824 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:29,825 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:30,018 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:47:30,018 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:30,018 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:30,020 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-12 19:47:30,799 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:47:31,616 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:47:31,616 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:31,616 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:31,617 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-12 19:47:32,374 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:47:32,406 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:47:32,578 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o; trying fallback model... +2026-01-12 19:47:35,220 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:47:35,220 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:35,221 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:35,712 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:47:35,713 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:35,713 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:42,607 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:47:42] "GET /api/strategies/notifications?limit=50&_t=1768218462290 HTTP/1.1" 200 - +2026-01-12 19:47:43,801 - app.services.llm - WARNING - OpenRouter returned 402 for model openai/gpt-4o-mini; trying fallback model... +2026-01-12 19:47:43,802 - app.services.llm - ERROR - All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:43,802 - app.services.llm - ERROR - LLM call failed: All model calls failed. Last error: 402 Payment Required for model openai/gpt-4o-mini +2026-01-12 19:47:43,809 - app.services.agents.reflection - INFO - Recorded analysis for reflection: USStock:SPCE, will verify after 7 day(s) +2026-01-12 19:47:43,810 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: USStock:SPCE +2026-01-12 19:47:43,810 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-12 19:47:43,811 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-12 19:47:43,811 - app.services.portfolio_monitor - INFO - Analysis completed for USStock:SPCE: HOLD +2026-01-12 19:47:45,080 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:47:45] "PUT /api/portfolio/monitors/1 HTTP/1.1" 200 - +2026-01-12 19:47:45,429 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:47:45] "GET /api/portfolio/monitors?_t=1768218465106 HTTP/1.1" 200 - +2026-01-12 19:47:48,177 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:47:48] "GET /api/strategies/notifications?limit=50&_t=1768218468164 HTTP/1.1" 200 - +2026-01-12 19:47:53,446 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:47:53] "GET /api/portfolio/positions?_t=1768218473128 HTTP/1.1" 200 - +2026-01-12 19:47:53,447 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:47:53] "GET /api/portfolio/summary?_t=1768218473128 HTTP/1.1" 200 - +2026-01-12 19:48:00,771 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:48:00] "PUT /api/portfolio/monitors/1 HTTP/1.1" 200 - +2026-01-12 19:48:01,116 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:48:01] "GET /api/portfolio/monitors?_t=1768218480794 HTTP/1.1" 200 - +2026-01-12 19:48:12,304 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:48:12] "GET /api/strategies/notifications?limit=50&_t=1768218492296 HTTP/1.1" 200 - +2026-01-12 19:48:18,482 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:48:18] "GET /api/strategies/notifications?limit=50&_t=1768218498162 HTTP/1.1" 200 - +2026-01-12 19:48:22,718 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.8% has reached 1.0% target +2026-01-12 19:48:23,132 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:48:23] "GET /api/portfolio/positions?_t=1768218503122 HTTP/1.1" 200 - +2026-01-12 19:48:23,441 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:48:23] "GET /api/portfolio/summary?_t=1768218503122 HTTP/1.1" 200 - +2026-01-12 19:48:42,601 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:48:42] "GET /api/strategies/notifications?limit=50&_t=1768218522287 HTTP/1.1" 200 - +2026-01-12 19:48:48,168 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:48:48] "GET /api/strategies/notifications?limit=50&_t=1768218528161 HTTP/1.1" 200 - +2026-01-12 19:48:52,803 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:48:53,455 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:48:53] "GET /api/portfolio/positions?_t=1768218533127 HTTP/1.1" 200 - +2026-01-12 19:48:53,455 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:48:53] "GET /api/portfolio/summary?_t=1768218533127 HTTP/1.1" 200 - +2026-01-12 19:49:12,294 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:49:12] "GET /api/strategies/notifications?limit=50&_t=1768218552285 HTTP/1.1" 200 - +2026-01-12 19:49:18,480 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:49:18] "GET /api/strategies/notifications?limit=50&_t=1768218558166 HTTP/1.1" 200 - +2026-01-12 19:49:22,826 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:49:23,146 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:49:23] "GET /api/portfolio/positions?_t=1768218563124 HTTP/1.1" 200 - +2026-01-12 19:49:23,464 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:49:23] "GET /api/portfolio/summary?_t=1768218563124 HTTP/1.1" 200 - +2026-01-12 19:49:29,580 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:49:29] "POST /api/portfolio/alerts HTTP/1.1" 200 - +2026-01-12 19:49:29,836 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:49:29] "GET /api/portfolio/alerts?_t=1768218569616 HTTP/1.1" 200 - +2026-01-12 19:49:36,770 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-12 19:49:36,770 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-12 19:49:36,771 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-12 19:49:36,771 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-12 19:49:36,782 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 19:49:36,783 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 19:49:37,130 - app.services.strategy - INFO - Found 0 running strategies: [] +2026-01-12 19:49:37,130 - app - INFO - No running strategies to restore. +2026-01-12 19:49:37,145 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-12 19:49:37,145 - werkzeug - INFO - Press CTRL+C to quit +2026-01-12 19:49:38,762 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:49:38,857 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 19:49:39,998 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (283780s) +2026-01-12 19:49:39,998 - app.services.portfolio_monitor - INFO - Alert #5 triggered: ๐Ÿ”” Price Alert: SPCE current price $3.1800 has exceeded $3.1800 +2026-01-12 19:49:42,329 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:49:42] "GET /api/strategies/notifications?limit=50&_t=1768218582289 HTTP/1.1" 200 - +2026-01-12 19:49:44,216 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:49:44] "POST /api/portfolio/alerts HTTP/1.1" 200 - +2026-01-12 19:49:44,472 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:49:44] "GET /api/portfolio/alerts?_t=1768218584248 HTTP/1.1" 200 - +2026-01-12 19:49:48,181 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:49:48] "GET /api/market/types?_t=1768218588172 HTTP/1.1" 200 - +2026-01-12 19:49:48,420 - app.data_sources.base - WARNING - Warning: AMD data is delayed (283788s) +2026-01-12 19:49:48,446 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (283788s) +2026-01-12 19:49:48,462 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (283788s) +2026-01-12 19:49:48,495 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (283788s) +2026-01-12 19:49:48,503 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (283789s) +2026-01-12 19:49:48,513 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:49:48] "GET /api/portfolio/groups?_t=1768218588172 HTTP/1.1" 200 - +2026-01-12 19:49:48,515 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:49:48] "GET /api/portfolio/monitors?_t=1768218588172 HTTP/1.1" 200 - +2026-01-12 19:49:48,525 - app.data_sources.base - WARNING - Warning: GD data is delayed (283789s) +2026-01-12 19:49:48,528 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:49:48] "GET /api/portfolio/alerts?_t=1768218588172 HTTP/1.1" 200 - +2026-01-12 19:49:48,536 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (283789s) +2026-01-12 19:49:48,544 - app.data_sources.base - WARNING - Warning: INTC data is delayed (283789s) +2026-01-12 19:49:48,546 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:49:48] "GET /api/strategies/notifications?limit=50&_t=1768218588172 HTTP/1.1" 200 - +2026-01-12 19:49:48,562 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (283789s) +2026-01-12 19:49:48,563 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:49:48] "GET /api/portfolio/positions?_t=1768218588172 HTTP/1.1" 200 - +2026-01-12 19:49:48,650 - app.data_sources.base - WARNING - Warning: INTC data is delayed (283789s) +2026-01-12 19:49:48,678 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (283789s) +2026-01-12 19:49:48,690 - app.data_sources.base - WARNING - Warning: GD data is delayed (283789s) +2026-01-12 19:49:48,810 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (283789s) +2026-01-12 19:49:48,810 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:49:48] "GET /api/portfolio/summary?_t=1768218588172 HTTP/1.1" 200 - +2026-01-12 19:49:52,309 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:49:52] "POST /api/portfolio/alerts HTTP/1.1" 200 - +2026-01-12 19:49:52,646 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:49:52] "GET /api/portfolio/alerts?_t=1768218592334 HTTP/1.1" 200 - +2026-01-12 19:50:11,193 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:50:11,210 - app.services.portfolio_monitor - INFO - Alert #6 triggered: ๐Ÿ”” Price Alert: SPCE current price $3.1800 has exceeded $3.1800 +2026-01-12 19:50:12,301 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:50:12] "GET /api/strategies/notifications?limit=50&_t=1768218612291 HTTP/1.1" 200 - +2026-01-12 19:50:12,395 - app.services.portfolio_monitor - INFO - Alert #7 triggered: ๐Ÿ”” Price Alert: SPCE current price $3.1800 has exceeded $3.1800 +2026-01-12 19:50:18,463 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:50:18] "GET /api/strategies/notifications?limit=50&_t=1768218618147 HTTP/1.1" 200 - +2026-01-12 19:50:18,495 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:50:18] "GET /api/portfolio/positions?_t=1768218618180 HTTP/1.1" 200 - +2026-01-12 19:50:18,496 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:50:18] "GET /api/portfolio/summary?_t=1768218618180 HTTP/1.1" 200 - +2026-01-12 19:50:42,294 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:50:42] "GET /api/strategies/notifications?limit=50&_t=1768218642280 HTTP/1.1" 200 - +2026-01-12 19:50:43,539 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:50:48,466 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:50:48] "GET /api/strategies/notifications?limit=50&_t=1768218648149 HTTP/1.1" 200 - +2026-01-12 19:50:48,499 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:50:48] "GET /api/portfolio/summary?_t=1768218648175 HTTP/1.1" 200 - +2026-01-12 19:50:48,499 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:50:48] "GET /api/portfolio/positions?_t=1768218648175 HTTP/1.1" 200 - +2026-01-12 19:51:13,566 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:51:17,219 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:51:17] "GET /api/market/types?_t=1768218677213 HTTP/1.1" 200 - +2026-01-12 19:51:17,487 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:51:17] "GET /api/portfolio/positions?_t=1768218677213 HTTP/1.1" 200 - +2026-01-12 19:51:17,487 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:51:17] "GET /api/portfolio/summary?_t=1768218677213 HTTP/1.1" 200 - +2026-01-12 19:51:17,525 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:51:17] "GET /api/portfolio/monitors?_t=1768218677213 HTTP/1.1" 200 - +2026-01-12 19:51:17,525 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:51:17] "GET /api/portfolio/alerts?_t=1768218677213 HTTP/1.1" 200 - +2026-01-12 19:51:17,526 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:51:17] "GET /api/portfolio/groups?_t=1768218677213 HTTP/1.1" 200 - +2026-01-12 19:51:18,462 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:51:18] "GET /api/strategies/notifications?limit=50&_t=1768218678147 HTTP/1.1" 200 - +2026-01-12 19:51:36,021 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:51:36] "GET /api/market/types?_t=1768218696014 HTTP/1.1" 200 - +2026-01-12 19:51:36,303 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:51:36] "GET /api/portfolio/summary?_t=1768218696014 HTTP/1.1" 200 - +2026-01-12 19:51:36,303 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:51:36] "GET /api/portfolio/positions?_t=1768218696014 HTTP/1.1" 200 - +2026-01-12 19:51:36,304 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:51:36] "GET /api/portfolio/monitors?_t=1768218696014 HTTP/1.1" 200 - +2026-01-12 19:51:36,333 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:51:36] "GET /api/portfolio/groups?_t=1768218696014 HTTP/1.1" 200 - +2026-01-12 19:51:36,333 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:51:36] "GET /api/portfolio/alerts?_t=1768218696014 HTTP/1.1" 200 - +2026-01-12 19:51:43,594 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:51:48,470 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:51:48] "GET /api/strategies/notifications?limit=50&_t=1768218708157 HTTP/1.1" 200 - +2026-01-12 19:51:48,603 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:51:48] "GET /api/strategies/notifications?limit=50&_t=1768218708279 HTTP/1.1" 200 - +2026-01-12 19:52:03,050 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:52:03] "GET /api/market/types?_t=1768218723044 HTTP/1.1" 200 - +2026-01-12 19:52:03,335 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:52:03] "GET /api/portfolio/summary?_t=1768218723044 HTTP/1.1" 200 - +2026-01-12 19:52:03,336 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:52:03] "GET /api/portfolio/positions?_t=1768218723044 HTTP/1.1" 200 - +2026-01-12 19:52:03,336 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:52:03] "GET /api/portfolio/monitors?_t=1768218723044 HTTP/1.1" 200 - +2026-01-12 19:52:03,367 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:52:03] "GET /api/portfolio/groups?_t=1768218723044 HTTP/1.1" 200 - +2026-01-12 19:52:03,367 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:52:03] "GET /api/portfolio/alerts?_t=1768218723044 HTTP/1.1" 200 - +2026-01-12 19:52:13,611 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:52:18,471 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:52:18] "GET /api/strategies/notifications?limit=50&_t=1768218738154 HTTP/1.1" 200 - +2026-01-12 19:52:23,480 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:52:23] "GET /api/market/types?_t=1768218743473 HTTP/1.1" 200 - +2026-01-12 19:52:23,753 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:52:23] "GET /api/portfolio/positions?_t=1768218743473 HTTP/1.1" 200 - +2026-01-12 19:52:23,754 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:52:23] "GET /api/portfolio/monitors?_t=1768218743473 HTTP/1.1" 200 - +2026-01-12 19:52:23,754 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:52:23] "GET /api/portfolio/summary?_t=1768218743473 HTTP/1.1" 200 - +2026-01-12 19:52:23,783 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:52:23] "GET /api/portfolio/groups?_t=1768218743473 HTTP/1.1" 200 - +2026-01-12 19:52:23,784 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:52:23] "GET /api/portfolio/alerts?_t=1768218743473 HTTP/1.1" 200 - +2026-01-12 19:52:43,632 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:52:48,465 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:52:48] "GET /api/strategies/notifications?limit=50&_t=1768218768145 HTTP/1.1" 200 - +2026-01-12 19:52:48,602 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:52:48] "GET /api/strategies/notifications?limit=50&_t=1768218768288 HTTP/1.1" 200 - +2026-01-12 19:52:52,777 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:52:52] "GET /api/market/types?_t=1768218772728 HTTP/1.1" 200 - +2026-01-12 19:52:52,976 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:52:52] "GET /api/portfolio/positions?_t=1768218772728 HTTP/1.1" 200 - +2026-01-12 19:52:52,987 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:52:52] "GET /api/portfolio/summary?_t=1768218772728 HTTP/1.1" 200 - +2026-01-12 19:52:52,988 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:52:52] "GET /api/portfolio/monitors?_t=1768218772728 HTTP/1.1" 200 - +2026-01-12 19:52:53,055 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:52:53] "GET /api/portfolio/groups?_t=1768218772728 HTTP/1.1" 200 - +2026-01-12 19:52:53,055 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:52:53] "GET /api/portfolio/alerts?_t=1768218772728 HTTP/1.1" 200 - +2026-01-12 19:53:13,658 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:53:18,468 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:53:18] "GET /api/strategies/notifications?limit=50&_t=1768218798151 HTTP/1.1" 200 - +2026-01-12 19:53:22,752 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:53:22] "GET /api/portfolio/positions?_t=1768218802742 HTTP/1.1" 200 - +2026-01-12 19:53:23,062 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:53:23] "GET /api/portfolio/summary?_t=1768218802742 HTTP/1.1" 200 - +2026-01-12 19:53:28,447 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:53:28] "GET /api/market/types?_t=1768218808439 HTTP/1.1" 200 - +2026-01-12 19:53:28,672 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:53:28] "GET /api/portfolio/positions?_t=1768218808439 HTTP/1.1" 200 - +2026-01-12 19:53:28,720 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:53:28] "GET /api/portfolio/summary?_t=1768218808439 HTTP/1.1" 200 - +2026-01-12 19:53:28,721 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:53:28] "GET /api/portfolio/monitors?_t=1768218808439 HTTP/1.1" 200 - +2026-01-12 19:53:28,722 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:53:28] "GET /api/portfolio/groups?_t=1768218808439 HTTP/1.1" 200 - +2026-01-12 19:53:28,764 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:53:28] "GET /api/portfolio/alerts?_t=1768218808439 HTTP/1.1" 200 - +2026-01-12 19:53:43,676 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:53:48,467 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:53:48] "GET /api/strategies/notifications?limit=50&_t=1768218828152 HTTP/1.1" 200 - +2026-01-12 19:53:48,607 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:53:48] "GET /api/strategies/notifications?limit=50&_t=1768218828291 HTTP/1.1" 200 - +2026-01-12 19:53:58,468 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:53:58] "GET /api/portfolio/positions?_t=1768218838458 HTTP/1.1" 200 - +2026-01-12 19:53:58,772 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:53:58] "GET /api/portfolio/summary?_t=1768218838458 HTTP/1.1" 200 - +2026-01-12 19:54:02,720 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:54:02] "GET /api/market/types?_t=1768218842713 HTTP/1.1" 200 - +2026-01-12 19:54:02,943 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:54:02] "GET /api/portfolio/positions?_t=1768218842713 HTTP/1.1" 200 - +2026-01-12 19:54:02,991 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:54:02] "GET /api/portfolio/summary?_t=1768218842713 HTTP/1.1" 200 - +2026-01-12 19:54:02,992 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:54:02] "GET /api/portfolio/monitors?_t=1768218842714 HTTP/1.1" 200 - +2026-01-12 19:54:02,992 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:54:02] "GET /api/portfolio/groups?_t=1768218842714 HTTP/1.1" 200 - +2026-01-12 19:54:03,038 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:54:03] "GET /api/portfolio/alerts?_t=1768218842714 HTTP/1.1" 200 - +2026-01-12 19:54:13,702 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:54:18,464 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:54:18] "GET /api/strategies/notifications?limit=50&_t=1768218858148 HTTP/1.1" 200 - +2026-01-12 19:54:29,038 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:54:29] "GET /api/market/types?_t=1768218869032 HTTP/1.1" 200 - +2026-01-12 19:54:29,322 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:54:29] "GET /api/portfolio/positions?_t=1768218869032 HTTP/1.1" 200 - +2026-01-12 19:54:29,322 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:54:29] "GET /api/portfolio/summary?_t=1768218869032 HTTP/1.1" 200 - +2026-01-12 19:54:29,356 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:54:29] "GET /api/portfolio/monitors?_t=1768218869032 HTTP/1.1" 200 - +2026-01-12 19:54:29,356 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:54:29] "GET /api/portfolio/alerts?_t=1768218869032 HTTP/1.1" 200 - +2026-01-12 19:54:29,357 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:54:29] "GET /api/portfolio/groups?_t=1768218869032 HTTP/1.1" 200 - +2026-01-12 19:54:43,677 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:54:43] "GET /api/market/types?_t=1768218883669 HTTP/1.1" 200 - +2026-01-12 19:54:43,800 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:54:43,908 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:54:43] "GET /api/portfolio/positions?_t=1768218883669 HTTP/1.1" 200 - +2026-01-12 19:54:43,961 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:54:43] "GET /api/portfolio/summary?_t=1768218883669 HTTP/1.1" 200 - +2026-01-12 19:54:43,961 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:54:43] "GET /api/portfolio/monitors?_t=1768218883669 HTTP/1.1" 200 - +2026-01-12 19:54:43,962 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:54:43] "GET /api/portfolio/groups?_t=1768218883669 HTTP/1.1" 200 - +2026-01-12 19:54:43,991 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:54:43] "GET /api/portfolio/alerts?_t=1768218883669 HTTP/1.1" 200 - +2026-01-12 19:54:48,463 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:54:48] "GET /api/strategies/notifications?limit=50&_t=1768218888146 HTTP/1.1" 200 - +2026-01-12 19:54:48,604 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:54:48] "GET /api/strategies/notifications?limit=50&_t=1768218888286 HTTP/1.1" 200 - +2026-01-12 19:55:11,573 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:55:11] "GET /api/market/types?_t=1768218911566 HTTP/1.1" 200 - +2026-01-12 19:55:11,859 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:55:11] "GET /api/portfolio/summary?_t=1768218911566 HTTP/1.1" 200 - +2026-01-12 19:55:11,859 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:55:11] "GET /api/portfolio/positions?_t=1768218911566 HTTP/1.1" 200 - +2026-01-12 19:55:11,860 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:55:11] "GET /api/portfolio/monitors?_t=1768218911566 HTTP/1.1" 200 - +2026-01-12 19:55:11,889 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:55:11] "GET /api/portfolio/groups?_t=1768218911566 HTTP/1.1" 200 - +2026-01-12 19:55:11,889 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:55:11] "GET /api/portfolio/alerts?_t=1768218911566 HTTP/1.1" 200 - +2026-01-12 19:55:13,833 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:55:18,464 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:55:18] "GET /api/strategies/notifications?limit=50&_t=1768218918150 HTTP/1.1" 200 - +2026-01-12 19:55:32,643 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:55:32] "GET /api/market/types?_t=1768218932636 HTTP/1.1" 200 - +2026-01-12 19:55:32,925 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (284133s) +2026-01-12 19:55:32,930 - app.data_sources.base - WARNING - Warning: AMD data is delayed (284133s) +2026-01-12 19:55:32,936 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (284133s) +2026-01-12 19:55:32,959 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (284133s) +2026-01-12 19:55:32,959 - app.data_sources.base - WARNING - Warning: INTC data is delayed (284133s) +2026-01-12 19:55:32,964 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (284133s) +2026-01-12 19:55:32,964 - app.data_sources.base - WARNING - Warning: GD data is delayed (284133s) +2026-01-12 19:55:32,965 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (284133s) +2026-01-12 19:55:32,974 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (284133s) +2026-01-12 19:55:32,977 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:55:32] "GET /api/portfolio/monitors?_t=1768218932636 HTTP/1.1" 200 - +2026-01-12 19:55:32,985 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (284133s) +2026-01-12 19:55:32,986 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:55:32] "GET /api/portfolio/positions?_t=1768218932636 HTTP/1.1" 200 - +2026-01-12 19:55:32,986 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:55:32] "GET /api/portfolio/alerts?_t=1768218932636 HTTP/1.1" 200 - +2026-01-12 19:55:32,987 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:55:32] "GET /api/portfolio/groups?_t=1768218932636 HTTP/1.1" 200 - +2026-01-12 19:55:33,900 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:55:33] "GET /api/portfolio/summary?_t=1768218932636 HTTP/1.1" 200 - +2026-01-12 19:55:43,861 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:55:48,476 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:55:48] "GET /api/strategies/notifications?limit=50&_t=1768218948158 HTTP/1.1" 200 - +2026-01-12 19:55:48,613 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:55:48] "GET /api/strategies/notifications?limit=50&_t=1768218948282 HTTP/1.1" 200 - +2026-01-12 19:56:02,658 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:56:02] "GET /api/portfolio/positions?_t=1768218962649 HTTP/1.1" 200 - +2026-01-12 19:56:02,964 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:56:02] "GET /api/portfolio/summary?_t=1768218962649 HTTP/1.1" 200 - +2026-01-12 19:56:13,887 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:56:18,458 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:56:18] "GET /api/strategies/notifications?limit=50&_t=1768218978145 HTTP/1.1" 200 - +2026-01-12 19:56:32,668 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:56:32] "GET /api/portfolio/positions?_t=1768218992659 HTTP/1.1" 200 - +2026-01-12 19:56:32,974 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:56:32] "GET /api/portfolio/summary?_t=1768218992659 HTTP/1.1" 200 - +2026-01-12 19:56:43,902 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:56:48,468 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:56:48] "GET /api/strategies/notifications?limit=50&_t=1768219008156 HTTP/1.1" 200 - +2026-01-12 19:56:48,607 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:56:48] "GET /api/strategies/notifications?limit=50&_t=1768219008280 HTTP/1.1" 200 - +2026-01-12 19:57:02,668 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:57:02] "GET /api/portfolio/positions?_t=1768219022659 HTTP/1.1" 200 - +2026-01-12 19:57:02,975 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:57:02] "GET /api/portfolio/summary?_t=1768219022659 HTTP/1.1" 200 - +2026-01-12 19:57:13,921 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:57:18,462 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:57:18] "GET /api/strategies/notifications?limit=50&_t=1768219038147 HTTP/1.1" 200 - +2026-01-12 19:57:32,674 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:57:32] "GET /api/portfolio/positions?_t=1768219052651 HTTP/1.1" 200 - +2026-01-12 19:57:32,968 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:57:32] "GET /api/portfolio/summary?_t=1768219052651 HTTP/1.1" 200 - +2026-01-12 19:57:43,949 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:57:48,467 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:57:48] "GET /api/strategies/notifications?limit=50&_t=1768219068153 HTTP/1.1" 200 - +2026-01-12 19:57:48,621 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:57:48] "GET /api/strategies/notifications?limit=50&_t=1768219068297 HTTP/1.1" 200 - +2026-01-12 19:58:02,659 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:58:02] "GET /api/portfolio/positions?_t=1768219082651 HTTP/1.1" 200 - +2026-01-12 19:58:02,965 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:58:02] "GET /api/portfolio/summary?_t=1768219082651 HTTP/1.1" 200 - +2026-01-12 19:58:13,969 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:58:18,461 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:58:18] "GET /api/strategies/notifications?limit=50&_t=1768219098147 HTTP/1.1" 200 - +2026-01-12 19:58:32,654 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:58:32] "GET /api/portfolio/positions?_t=1768219112647 HTTP/1.1" 200 - +2026-01-12 19:58:32,961 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:58:32] "GET /api/portfolio/summary?_t=1768219112647 HTTP/1.1" 200 - +2026-01-12 19:58:43,999 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:58:48,477 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:58:48] "GET /api/strategies/notifications?limit=50&_t=1768219128158 HTTP/1.1" 200 - +2026-01-12 19:58:48,599 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:58:48] "GET /api/strategies/notifications?limit=50&_t=1768219128284 HTTP/1.1" 200 - +2026-01-12 19:59:02,661 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:59:02] "GET /api/portfolio/positions?_t=1768219142653 HTTP/1.1" 200 - +2026-01-12 19:59:02,969 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:59:02] "GET /api/portfolio/summary?_t=1768219142653 HTTP/1.1" 200 - +2026-01-12 19:59:14,025 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:59:18,471 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:59:18] "GET /api/strategies/notifications?limit=50&_t=1768219158156 HTTP/1.1" 200 - +2026-01-12 19:59:32,658 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:59:32] "GET /api/portfolio/positions?_t=1768219172648 HTTP/1.1" 200 - +2026-01-12 19:59:32,965 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:59:32] "GET /api/portfolio/summary?_t=1768219172648 HTTP/1.1" 200 - +2026-01-12 19:59:44,193 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 19:59:48,463 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:59:48] "GET /api/strategies/notifications?limit=50&_t=1768219188149 HTTP/1.1" 200 - +2026-01-12 19:59:48,602 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 19:59:48] "GET /api/strategies/notifications?limit=50&_t=1768219188289 HTTP/1.1" 200 - +2026-01-12 20:00:02,652 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:00:02] "GET /api/portfolio/positions?_t=1768219202645 HTTP/1.1" 200 - +2026-01-12 20:00:02,967 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:00:02] "GET /api/portfolio/summary?_t=1768219202645 HTTP/1.1" 200 - +2026-01-12 20:00:14,223 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 20:00:18,474 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:00:18] "GET /api/strategies/notifications?limit=50&_t=1768219218153 HTTP/1.1" 200 - +2026-01-12 20:00:32,661 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:00:32] "GET /api/portfolio/positions?_t=1768219232652 HTTP/1.1" 200 - +2026-01-12 20:00:32,971 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:00:32] "GET /api/portfolio/summary?_t=1768219232652 HTTP/1.1" 200 - +2026-01-12 20:00:44,245 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 20:00:48,470 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:00:48] "GET /api/strategies/notifications?limit=50&_t=1768219248156 HTTP/1.1" 200 - +2026-01-12 20:00:48,597 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:00:48] "GET /api/strategies/notifications?limit=50&_t=1768219248279 HTTP/1.1" 200 - +2026-01-12 20:01:02,655 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:01:02] "GET /api/portfolio/positions?_t=1768219262646 HTTP/1.1" 200 - +2026-01-12 20:01:02,961 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:01:02] "GET /api/portfolio/summary?_t=1768219262646 HTTP/1.1" 200 - +2026-01-12 20:01:14,264 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 20:01:18,469 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:01:18] "GET /api/strategies/notifications?limit=50&_t=1768219278150 HTTP/1.1" 200 - +2026-01-12 20:01:32,674 - app.data_sources.base - WARNING - Warning: AMD data is delayed (284493s) +2026-01-12 20:01:32,675 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (284493s) +2026-01-12 20:01:32,684 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (284493s) +2026-01-12 20:01:32,685 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:01:32] "GET /api/portfolio/positions?_t=1768219292652 HTTP/1.1" 200 - +2026-01-12 20:01:32,981 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (284493s) +2026-01-12 20:01:32,986 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (284493s) +2026-01-12 20:01:32,987 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (284493s) +2026-01-12 20:01:32,992 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (284493s) +2026-01-12 20:01:32,997 - app.data_sources.base - WARNING - Warning: INTC data is delayed (284493s) +2026-01-12 20:01:33,003 - app.data_sources.base - WARNING - Warning: GD data is delayed (284493s) +2026-01-12 20:01:33,053 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:01:33] "GET /api/portfolio/summary?_t=1768219292652 HTTP/1.1" 200 - +2026-01-12 20:01:44,290 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 20:01:48,470 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:01:48] "GET /api/strategies/notifications?limit=50&_t=1768219308153 HTTP/1.1" 200 - +2026-01-12 20:01:48,607 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:01:48] "GET /api/strategies/notifications?limit=50&_t=1768219308296 HTTP/1.1" 200 - +2026-01-12 20:02:02,668 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:02:02] "GET /api/portfolio/positions?_t=1768219322657 HTTP/1.1" 200 - +2026-01-12 20:02:02,976 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:02:02] "GET /api/portfolio/summary?_t=1768219322658 HTTP/1.1" 200 - +2026-01-12 20:02:14,308 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 20:02:18,465 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:02:18] "GET /api/strategies/notifications?limit=50&_t=1768219338151 HTTP/1.1" 200 - +2026-01-12 20:02:32,665 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:02:32] "GET /api/portfolio/positions?_t=1768219352656 HTTP/1.1" 200 - +2026-01-12 20:02:32,971 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:02:32] "GET /api/portfolio/summary?_t=1768219352656 HTTP/1.1" 200 - +2026-01-12 20:02:44,328 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 20:02:48,461 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:02:48] "GET /api/strategies/notifications?limit=50&_t=1768219368145 HTTP/1.1" 200 - +2026-01-12 20:02:48,600 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:02:48] "GET /api/strategies/notifications?limit=50&_t=1768219368284 HTTP/1.1" 200 - +2026-01-12 20:03:02,661 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:03:02] "GET /api/portfolio/positions?_t=1768219382652 HTTP/1.1" 200 - +2026-01-12 20:03:02,969 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:03:02] "GET /api/portfolio/summary?_t=1768219382652 HTTP/1.1" 200 - +2026-01-12 20:03:14,345 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 20:03:18,470 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:03:18] "GET /api/strategies/notifications?limit=50&_t=1768219398154 HTTP/1.1" 200 - +2026-01-12 20:03:32,668 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:03:32] "GET /api/portfolio/positions?_t=1768219412658 HTTP/1.1" 200 - +2026-01-12 20:03:32,983 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:03:32] "GET /api/portfolio/summary?_t=1768219412658 HTTP/1.1" 200 - +2026-01-12 20:03:44,366 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 20:03:48,473 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:03:48] "GET /api/strategies/notifications?limit=50&_t=1768219428156 HTTP/1.1" 200 - +2026-01-12 20:03:48,596 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:03:48] "GET /api/strategies/notifications?limit=50&_t=1768219428282 HTTP/1.1" 200 - +2026-01-12 20:04:02,660 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:04:02] "GET /api/portfolio/positions?_t=1768219442651 HTTP/1.1" 200 - +2026-01-12 20:04:02,966 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:04:02] "GET /api/portfolio/summary?_t=1768219442651 HTTP/1.1" 200 - +2026-01-12 20:04:14,383 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 20:04:18,459 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:04:18] "GET /api/strategies/notifications?limit=50&_t=1768219458144 HTTP/1.1" 200 - +2026-01-12 20:04:32,658 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:04:32] "GET /api/portfolio/positions?_t=1768219472649 HTTP/1.1" 200 - +2026-01-12 20:04:32,962 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:04:32] "GET /api/portfolio/summary?_t=1768219472649 HTTP/1.1" 200 - +2026-01-12 20:04:44,471 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:04:48,464 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:04:48] "GET /api/strategies/notifications?limit=50&_t=1768219488147 HTTP/1.1" 200 - +2026-01-12 20:04:48,605 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:04:48] "GET /api/strategies/notifications?limit=50&_t=1768219488287 HTTP/1.1" 200 - +2026-01-12 20:05:02,660 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:05:02] "GET /api/portfolio/positions?_t=1768219502651 HTTP/1.1" 200 - +2026-01-12 20:05:02,966 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:05:02] "GET /api/portfolio/summary?_t=1768219502651 HTTP/1.1" 200 - +2026-01-12 20:05:14,493 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:05:18,468 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:05:18] "GET /api/strategies/notifications?limit=50&_t=1768219518154 HTTP/1.1" 200 - +2026-01-12 20:05:32,658 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:05:32] "GET /api/portfolio/positions?_t=1768219532649 HTTP/1.1" 200 - +2026-01-12 20:05:32,965 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:05:32] "GET /api/portfolio/summary?_t=1768219532649 HTTP/1.1" 200 - +2026-01-12 20:05:44,508 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:05:48,467 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:05:48] "GET /api/strategies/notifications?limit=50&_t=1768219548152 HTTP/1.1" 200 - +2026-01-12 20:05:48,606 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:05:48] "GET /api/strategies/notifications?limit=50&_t=1768219548291 HTTP/1.1" 200 - +2026-01-12 20:06:02,666 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:06:02] "GET /api/portfolio/positions?_t=1768219562657 HTTP/1.1" 200 - +2026-01-12 20:06:02,975 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:06:02] "GET /api/portfolio/summary?_t=1768219562657 HTTP/1.1" 200 - +2026-01-12 20:06:14,539 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:06:18,462 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:06:18] "GET /api/strategies/notifications?limit=50&_t=1768219578145 HTTP/1.1" 200 - +2026-01-12 20:06:32,663 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:06:32] "GET /api/portfolio/positions?_t=1768219592654 HTTP/1.1" 200 - +2026-01-12 20:06:32,970 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:06:32] "GET /api/portfolio/summary?_t=1768219592654 HTTP/1.1" 200 - +2026-01-12 20:06:44,566 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:06:48,470 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:06:48] "GET /api/strategies/notifications?limit=50&_t=1768219608153 HTTP/1.1" 200 - +2026-01-12 20:06:48,623 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:06:48] "GET /api/strategies/notifications?limit=50&_t=1768219608295 HTTP/1.1" 200 - +2026-01-12 20:07:02,660 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:07:02] "GET /api/portfolio/positions?_t=1768219622649 HTTP/1.1" 200 - +2026-01-12 20:07:02,973 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (284823s) +2026-01-12 20:07:02,977 - app.data_sources.base - WARNING - Warning: AMD data is delayed (284823s) +2026-01-12 20:07:02,982 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (284823s) +2026-01-12 20:07:02,983 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:07:02] "GET /api/portfolio/summary?_t=1768219622649 HTTP/1.1" 200 - +2026-01-12 20:07:14,584 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:07:18,471 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:07:18] "GET /api/strategies/notifications?limit=50&_t=1768219638153 HTTP/1.1" 200 - +2026-01-12 20:07:32,679 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (284853s) +2026-01-12 20:07:32,680 - app.data_sources.base - WARNING - Warning: INTC data is delayed (284853s) +2026-01-12 20:07:32,691 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (284853s) +2026-01-12 20:07:32,692 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (284853s) +2026-01-12 20:07:32,701 - app.data_sources.base - WARNING - Warning: GD data is delayed (284853s) +2026-01-12 20:07:32,702 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (284853s) +2026-01-12 20:07:33,342 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:07:33] "GET /api/portfolio/positions?_t=1768219652656 HTTP/1.1" 200 - +2026-01-12 20:07:34,740 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:07:34] "GET /api/portfolio/summary?_t=1768219652656 HTTP/1.1" 200 - +2026-01-12 20:07:44,614 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:07:48,457 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:07:48] "GET /api/strategies/notifications?limit=50&_t=1768219668143 HTTP/1.1" 200 - +2026-01-12 20:07:48,597 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:07:48] "GET /api/strategies/notifications?limit=50&_t=1768219668283 HTTP/1.1" 200 - +2026-01-12 20:08:02,658 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:08:02] "GET /api/portfolio/positions?_t=1768219682651 HTTP/1.1" 200 - +2026-01-12 20:08:02,964 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:08:02] "GET /api/portfolio/summary?_t=1768219682651 HTTP/1.1" 200 - +2026-01-12 20:08:14,641 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:08:18,468 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:08:18] "GET /api/strategies/notifications?limit=50&_t=1768219698150 HTTP/1.1" 200 - +2026-01-12 20:08:32,656 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:08:32] "GET /api/portfolio/positions?_t=1768219712648 HTTP/1.1" 200 - +2026-01-12 20:08:32,967 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:08:32] "GET /api/portfolio/summary?_t=1768219712648 HTTP/1.1" 200 - +2026-01-12 20:08:44,664 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:08:48,459 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:08:48] "GET /api/strategies/notifications?limit=50&_t=1768219728146 HTTP/1.1" 200 - +2026-01-12 20:08:48,597 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:08:48] "GET /api/strategies/notifications?limit=50&_t=1768219728285 HTTP/1.1" 200 - +2026-01-12 20:09:02,659 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:09:02] "GET /api/portfolio/positions?_t=1768219742651 HTTP/1.1" 200 - +2026-01-12 20:09:02,968 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:09:02] "GET /api/portfolio/summary?_t=1768219742651 HTTP/1.1" 200 - +2026-01-12 20:09:14,690 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:09:18,465 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:09:18] "GET /api/strategies/notifications?limit=50&_t=1768219758149 HTTP/1.1" 200 - +2026-01-12 20:09:32,653 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:09:32] "GET /api/portfolio/positions?_t=1768219772645 HTTP/1.1" 200 - +2026-01-12 20:09:32,959 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:09:32] "GET /api/portfolio/summary?_t=1768219772645 HTTP/1.1" 200 - +2026-01-12 20:09:44,779 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 20:09:48,467 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:09:48] "GET /api/strategies/notifications?limit=50&_t=1768219788150 HTTP/1.1" 200 - +2026-01-12 20:09:48,621 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:09:48] "GET /api/strategies/notifications?limit=50&_t=1768219788299 HTTP/1.1" 200 - +2026-01-12 20:10:02,657 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:10:02] "GET /api/portfolio/positions?_t=1768219802650 HTTP/1.1" 200 - +2026-01-12 20:10:02,968 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:10:02] "GET /api/portfolio/summary?_t=1768219802650 HTTP/1.1" 200 - +2026-01-12 20:10:14,806 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 20:10:18,472 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:10:18] "GET /api/strategies/notifications?limit=50&_t=1768219818156 HTTP/1.1" 200 - +2026-01-12 20:10:32,668 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:10:32] "GET /api/portfolio/positions?_t=1768219832659 HTTP/1.1" 200 - +2026-01-12 20:10:32,974 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:10:32] "GET /api/portfolio/summary?_t=1768219832659 HTTP/1.1" 200 - +2026-01-12 20:10:44,835 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 20:10:48,461 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:10:48] "GET /api/strategies/notifications?limit=50&_t=1768219848145 HTTP/1.1" 200 - +2026-01-12 20:10:48,600 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:10:48] "GET /api/strategies/notifications?limit=50&_t=1768219848285 HTTP/1.1" 200 - +2026-01-12 20:11:02,655 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:11:02] "GET /api/portfolio/positions?_t=1768219862645 HTTP/1.1" 200 - +2026-01-12 20:11:02,964 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:11:02] "GET /api/portfolio/summary?_t=1768219862645 HTTP/1.1" 200 - +2026-01-12 20:11:14,854 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 20:11:18,468 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:11:18] "GET /api/strategies/notifications?limit=50&_t=1768219878152 HTTP/1.1" 200 - +2026-01-12 20:11:32,666 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:11:32] "GET /api/portfolio/positions?_t=1768219892657 HTTP/1.1" 200 - +2026-01-12 20:11:32,973 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:11:32] "GET /api/portfolio/summary?_t=1768219892657 HTTP/1.1" 200 - +2026-01-12 20:11:44,875 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 20:11:48,469 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:11:48] "GET /api/strategies/notifications?limit=50&_t=1768219908151 HTTP/1.1" 200 - +2026-01-12 20:11:48,607 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:11:48] "GET /api/strategies/notifications?limit=50&_t=1768219908292 HTTP/1.1" 200 - +2026-01-12 20:12:02,665 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:12:02] "GET /api/portfolio/positions?_t=1768219922655 HTTP/1.1" 200 - +2026-01-12 20:12:02,970 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:12:02] "GET /api/portfolio/summary?_t=1768219922655 HTTP/1.1" 200 - +2026-01-12 20:12:14,893 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 20:12:18,472 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:12:18] "GET /api/strategies/notifications?limit=50&_t=1768219938153 HTTP/1.1" 200 - +2026-01-12 20:12:32,665 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:12:32] "GET /api/portfolio/positions?_t=1768219952657 HTTP/1.1" 200 - +2026-01-12 20:12:32,975 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:12:32] "GET /api/portfolio/summary?_t=1768219952657 HTTP/1.1" 200 - +2026-01-12 20:12:44,921 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 20:12:48,467 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:12:48] "GET /api/strategies/notifications?limit=50&_t=1768219968151 HTTP/1.1" 200 - +2026-01-12 20:12:48,606 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:12:48] "GET /api/strategies/notifications?limit=50&_t=1768219968290 HTTP/1.1" 200 - +2026-01-12 20:13:02,664 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:13:02] "GET /api/portfolio/positions?_t=1768219982655 HTTP/1.1" 200 - +2026-01-12 20:13:02,985 - app.data_sources.base - WARNING - Warning: GD data is delayed (285183s) +2026-01-12 20:13:03,000 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (285183s) +2026-01-12 20:13:03,009 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (285183s) +2026-01-12 20:13:03,011 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (285183s) +2026-01-12 20:13:03,012 - app.data_sources.base - WARNING - Warning: AMD data is delayed (285183s) +2026-01-12 20:13:03,025 - app.data_sources.base - WARNING - Warning: INTC data is delayed (285183s) +2026-01-12 20:13:03,026 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (285183s) +2026-01-12 20:13:03,026 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (285183s) +2026-01-12 20:13:03,027 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (285183s) +2026-01-12 20:13:03,028 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:13:03] "GET /api/portfolio/summary?_t=1768219982655 HTTP/1.1" 200 - +2026-01-12 20:13:14,943 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 20:13:18,467 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:13:18] "GET /api/strategies/notifications?limit=50&_t=1768219998151 HTTP/1.1" 200 - +2026-01-12 20:13:32,659 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:13:32] "GET /api/portfolio/positions?_t=1768220012651 HTTP/1.1" 200 - +2026-01-12 20:13:32,967 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:13:32] "GET /api/portfolio/summary?_t=1768220012651 HTTP/1.1" 200 - +2026-01-12 20:13:44,960 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 20:13:48,469 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:13:48] "GET /api/strategies/notifications?limit=50&_t=1768220028151 HTTP/1.1" 200 - +2026-01-12 20:13:48,609 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:13:48] "GET /api/strategies/notifications?limit=50&_t=1768220028293 HTTP/1.1" 200 - +2026-01-12 20:14:02,728 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:14:02] "GET /api/portfolio/positions?_t=1768220042649 HTTP/1.1" 200 - +2026-01-12 20:14:02,967 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:14:02] "GET /api/portfolio/summary?_t=1768220042649 HTTP/1.1" 200 - +2026-01-12 20:14:14,978 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 20:14:18,463 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:14:18] "GET /api/strategies/notifications?limit=50&_t=1768220058144 HTTP/1.1" 200 - +2026-01-12 20:14:32,657 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:14:32] "GET /api/portfolio/positions?_t=1768220072649 HTTP/1.1" 200 - +2026-01-12 20:14:32,968 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:14:32] "GET /api/portfolio/summary?_t=1768220072649 HTTP/1.1" 200 - +2026-01-12 20:14:45,069 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:14:48,468 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:14:48] "GET /api/strategies/notifications?limit=50&_t=1768220088152 HTTP/1.1" 200 - +2026-01-12 20:14:48,605 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:14:48] "GET /api/strategies/notifications?limit=50&_t=1768220088292 HTTP/1.1" 200 - +2026-01-12 20:15:02,660 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:15:02] "GET /api/portfolio/positions?_t=1768220102649 HTTP/1.1" 200 - +2026-01-12 20:15:02,967 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:15:02] "GET /api/portfolio/summary?_t=1768220102649 HTTP/1.1" 200 - +2026-01-12 20:15:15,086 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:15:18,466 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:15:18] "GET /api/strategies/notifications?limit=50&_t=1768220118149 HTTP/1.1" 200 - +2026-01-12 20:15:32,666 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:15:32] "GET /api/portfolio/positions?_t=1768220132656 HTTP/1.1" 200 - +2026-01-12 20:15:32,978 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:15:32] "GET /api/portfolio/summary?_t=1768220132656 HTTP/1.1" 200 - +2026-01-12 20:15:45,113 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:15:48,469 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:15:48] "GET /api/strategies/notifications?limit=50&_t=1768220148151 HTTP/1.1" 200 - +2026-01-12 20:15:48,609 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:15:48] "GET /api/strategies/notifications?limit=50&_t=1768220148291 HTTP/1.1" 200 - +2026-01-12 20:16:02,658 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:16:02] "GET /api/portfolio/positions?_t=1768220162650 HTTP/1.1" 200 - +2026-01-12 20:16:02,965 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:16:02] "GET /api/portfolio/summary?_t=1768220162650 HTTP/1.1" 200 - +2026-01-12 20:16:15,140 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:16:18,463 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:16:18] "GET /api/strategies/notifications?limit=50&_t=1768220178145 HTTP/1.1" 200 - +2026-01-12 20:16:32,662 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:16:32] "GET /api/portfolio/positions?_t=1768220192653 HTTP/1.1" 200 - +2026-01-12 20:16:32,969 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:16:32] "GET /api/portfolio/summary?_t=1768220192653 HTTP/1.1" 200 - +2026-01-12 20:16:45,160 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:16:48,473 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:16:48] "GET /api/strategies/notifications?limit=50&_t=1768220208153 HTTP/1.1" 200 - +2026-01-12 20:16:48,613 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:16:48] "GET /api/strategies/notifications?limit=50&_t=1768220208294 HTTP/1.1" 200 - +2026-01-12 20:17:02,664 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:17:02] "GET /api/portfolio/positions?_t=1768220222653 HTTP/1.1" 200 - +2026-01-12 20:17:02,970 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:17:02] "GET /api/portfolio/summary?_t=1768220222653 HTTP/1.1" 200 - +2026-01-12 20:17:15,179 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:17:18,470 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:17:18] "GET /api/strategies/notifications?limit=50&_t=1768220238155 HTTP/1.1" 200 - +2026-01-12 20:17:32,661 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:17:32] "GET /api/portfolio/positions?_t=1768220252651 HTTP/1.1" 200 - +2026-01-12 20:17:32,972 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:17:32] "GET /api/portfolio/summary?_t=1768220252651 HTTP/1.1" 200 - +2026-01-12 20:17:45,197 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:17:48,458 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:17:48] "GET /api/strategies/notifications?limit=50&_t=1768220268146 HTTP/1.1" 200 - +2026-01-12 20:17:48,596 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:17:48] "GET /api/strategies/notifications?limit=50&_t=1768220268285 HTTP/1.1" 200 - +2026-01-12 20:18:02,658 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:18:02] "GET /api/portfolio/positions?_t=1768220282648 HTTP/1.1" 200 - +2026-01-12 20:18:02,963 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:18:02] "GET /api/portfolio/summary?_t=1768220282648 HTTP/1.1" 200 - +2026-01-12 20:18:15,224 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:18:18,465 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:18:18] "GET /api/strategies/notifications?limit=50&_t=1768220298147 HTTP/1.1" 200 - +2026-01-12 20:18:32,655 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:18:32] "GET /api/portfolio/positions?_t=1768220312646 HTTP/1.1" 200 - +2026-01-12 20:18:32,965 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:18:32] "GET /api/portfolio/summary?_t=1768220312646 HTTP/1.1" 200 - +2026-01-12 20:18:45,250 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:18:48,459 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:18:48] "GET /api/strategies/notifications?limit=50&_t=1768220328146 HTTP/1.1" 200 - +2026-01-12 20:18:48,600 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:18:48] "GET /api/strategies/notifications?limit=50&_t=1768220328285 HTTP/1.1" 200 - +2026-01-12 20:19:02,677 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (285543s) +2026-01-12 20:19:02,686 - app.data_sources.base - WARNING - Warning: INTC data is delayed (285543s) +2026-01-12 20:19:02,699 - app.data_sources.base - WARNING - Warning: GD data is delayed (285543s) +2026-01-12 20:19:02,699 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (285543s) +2026-01-12 20:19:02,715 - app.data_sources.base - WARNING - Warning: AMD data is delayed (285543s) +2026-01-12 20:19:02,718 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (285543s) +2026-01-12 20:19:02,724 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (285543s) +2026-01-12 20:19:02,725 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (285543s) +2026-01-12 20:19:02,730 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (285543s) +2026-01-12 20:19:02,731 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:19:02] "GET /api/portfolio/positions?_t=1768220342653 HTTP/1.1" 200 - +2026-01-12 20:19:02,969 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:19:02] "GET /api/portfolio/summary?_t=1768220342653 HTTP/1.1" 200 - +2026-01-12 20:19:15,271 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:19:18,468 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:19:18] "GET /api/strategies/notifications?limit=50&_t=1768220358148 HTTP/1.1" 200 - +2026-01-12 20:19:32,658 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:19:32] "GET /api/portfolio/positions?_t=1768220372650 HTTP/1.1" 200 - +2026-01-12 20:19:32,965 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:19:32] "GET /api/portfolio/summary?_t=1768220372650 HTTP/1.1" 200 - +2026-01-12 20:19:45,446 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:19:48,463 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:19:48] "GET /api/strategies/notifications?limit=50&_t=1768220388150 HTTP/1.1" 200 - +2026-01-12 20:19:48,603 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:19:48] "GET /api/strategies/notifications?limit=50&_t=1768220388289 HTTP/1.1" 200 - +2026-01-12 20:20:02,663 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:20:02] "GET /api/portfolio/positions?_t=1768220402654 HTTP/1.1" 200 - +2026-01-12 20:20:03,100 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:20:03] "GET /api/portfolio/summary?_t=1768220402654 HTTP/1.1" 200 - +2026-01-12 20:20:15,464 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:20:18,464 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:20:18] "GET /api/strategies/notifications?limit=50&_t=1768220418147 HTTP/1.1" 200 - +2026-01-12 20:20:32,662 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:20:32] "GET /api/portfolio/positions?_t=1768220432653 HTTP/1.1" 200 - +2026-01-12 20:20:32,972 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:20:32] "GET /api/portfolio/summary?_t=1768220432653 HTTP/1.1" 200 - +2026-01-12 20:20:45,489 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:20:48,467 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:20:48] "GET /api/strategies/notifications?limit=50&_t=1768220448147 HTTP/1.1" 200 - +2026-01-12 20:20:48,608 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:20:48] "GET /api/strategies/notifications?limit=50&_t=1768220448289 HTTP/1.1" 200 - +2026-01-12 20:21:02,664 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:21:02] "GET /api/portfolio/positions?_t=1768220462655 HTTP/1.1" 200 - +2026-01-12 20:21:02,973 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:21:02] "GET /api/portfolio/summary?_t=1768220462655 HTTP/1.1" 200 - +2026-01-12 20:21:15,517 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:21:18,478 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:21:18] "GET /api/strategies/notifications?limit=50&_t=1768220478146 HTTP/1.1" 200 - +2026-01-12 20:21:32,661 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:21:32] "GET /api/portfolio/positions?_t=1768220492651 HTTP/1.1" 200 - +2026-01-12 20:21:32,972 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:21:32] "GET /api/portfolio/summary?_t=1768220492651 HTTP/1.1" 200 - +2026-01-12 20:21:45,547 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:21:48,460 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:21:48] "GET /api/strategies/notifications?limit=50&_t=1768220508145 HTTP/1.1" 200 - +2026-01-12 20:21:48,599 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:21:48] "GET /api/strategies/notifications?limit=50&_t=1768220508289 HTTP/1.1" 200 - +2026-01-12 20:22:02,660 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:22:02] "GET /api/portfolio/positions?_t=1768220522650 HTTP/1.1" 200 - +2026-01-12 20:22:02,971 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:22:02] "GET /api/portfolio/summary?_t=1768220522650 HTTP/1.1" 200 - +2026-01-12 20:22:15,574 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:22:18,461 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:22:18] "GET /api/strategies/notifications?limit=50&_t=1768220538144 HTTP/1.1" 200 - +2026-01-12 20:22:32,652 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:22:32] "GET /api/portfolio/positions?_t=1768220552644 HTTP/1.1" 200 - +2026-01-12 20:22:32,966 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:22:32] "GET /api/portfolio/summary?_t=1768220552644 HTTP/1.1" 200 - +2026-01-12 20:22:45,593 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:22:48,466 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:22:48] "GET /api/strategies/notifications?limit=50&_t=1768220568147 HTTP/1.1" 200 - +2026-01-12 20:22:48,603 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:22:48] "GET /api/strategies/notifications?limit=50&_t=1768220568288 HTTP/1.1" 200 - +2026-01-12 20:23:02,659 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:23:02] "GET /api/portfolio/positions?_t=1768220582652 HTTP/1.1" 200 - +2026-01-12 20:23:02,970 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:23:02] "GET /api/portfolio/summary?_t=1768220582652 HTTP/1.1" 200 - +2026-01-12 20:23:15,611 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:23:18,458 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:23:18] "GET /api/strategies/notifications?limit=50&_t=1768220598146 HTTP/1.1" 200 - +2026-01-12 20:23:32,663 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:23:32] "GET /api/portfolio/positions?_t=1768220612643 HTTP/1.1" 200 - +2026-01-12 20:23:32,966 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:23:32] "GET /api/portfolio/summary?_t=1768220612643 HTTP/1.1" 200 - +2026-01-12 20:23:45,630 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:23:48,467 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:23:48] "GET /api/strategies/notifications?limit=50&_t=1768220628154 HTTP/1.1" 200 - +2026-01-12 20:23:48,605 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:23:48] "GET /api/strategies/notifications?limit=50&_t=1768220628291 HTTP/1.1" 200 - +2026-01-12 20:23:57,502 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:23:57] "GET /api/market/types?_t=1768220637495 HTTP/1.1" 200 - +2026-01-12 20:23:57,771 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:23:57] "GET /api/portfolio/positions?_t=1768220637495 HTTP/1.1" 200 - +2026-01-12 20:23:57,772 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:23:57] "GET /api/portfolio/summary?_t=1768220637495 HTTP/1.1" 200 - +2026-01-12 20:23:57,779 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:23:57] "GET /api/portfolio/monitors?_t=1768220637495 HTTP/1.1" 200 - +2026-01-12 20:23:57,817 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:23:57] "GET /api/portfolio/groups?_t=1768220637495 HTTP/1.1" 200 - +2026-01-12 20:23:57,818 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:23:57] "GET /api/portfolio/alerts?_t=1768220637495 HTTP/1.1" 200 - +2026-01-12 20:24:05,123 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:24:05] "POST /api/portfolio/alerts HTTP/1.1" 200 - +2026-01-12 20:24:05,365 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:24:05] "GET /api/portfolio/alerts?_t=1768220645147 HTTP/1.1" 200 - +2026-01-12 20:24:10,081 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:24:10] "GET /api/market/types?_t=1768220650070 HTTP/1.1" 200 - +2026-01-12 20:24:10,085 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:24:10] "GET /api/portfolio/positions?_t=1768220650070 HTTP/1.1" 200 - +2026-01-12 20:24:10,404 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:24:10] "GET /api/portfolio/groups?_t=1768220650070 HTTP/1.1" 200 - +2026-01-12 20:24:10,408 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:24:10] "GET /api/portfolio/monitors?_t=1768220650070 HTTP/1.1" 200 - +2026-01-12 20:24:10,408 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:24:10] "GET /api/portfolio/summary?_t=1768220650070 HTTP/1.1" 200 - +2026-01-12 20:24:10,410 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:24:10] "GET /api/portfolio/alerts?_t=1768220650070 HTTP/1.1" 200 - +2026-01-12 20:24:10,411 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:24:10] "GET /api/strategies/notifications?limit=50&_t=1768220650070 HTTP/1.1" 200 - +2026-01-12 20:24:14,529 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:24:14] "POST /api/portfolio/alerts HTTP/1.1" 200 - +2026-01-12 20:24:14,895 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:24:14] "GET /api/portfolio/alerts?_t=1768220654559 HTTP/1.1" 200 - +2026-01-12 20:24:15,660 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:24:15,680 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (285856s) +2026-01-12 20:24:15,681 - app.services.portfolio_monitor - INFO - Alert #8 triggered: ๐Ÿ”” Price Alert: SPCE current price $3.1800 has exceeded $3.1800 +2026-01-12 20:24:16,935 - app.services.portfolio_monitor - INFO - Alert #9 triggered: ๐Ÿ”” Price Alert: SPCE current price $3.1800 has exceeded $3.1800 +2026-01-12 20:24:27,183 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:24:27] "GET /api/market/types?_t=1768220667172 HTTP/1.1" 200 - +2026-01-12 20:24:27,187 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:24:27] "GET /api/portfolio/positions?_t=1768220667172 HTTP/1.1" 200 - +2026-01-12 20:24:27,528 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:24:27] "GET /api/portfolio/monitors?_t=1768220667172 HTTP/1.1" 200 - +2026-01-12 20:24:27,530 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:24:27] "GET /api/portfolio/alerts?_t=1768220667172 HTTP/1.1" 200 - +2026-01-12 20:24:27,531 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:24:27] "GET /api/strategies/notifications?limit=50&_t=1768220667172 HTTP/1.1" 200 - +2026-01-12 20:24:27,532 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:24:27] "GET /api/portfolio/groups?_t=1768220667172 HTTP/1.1" 200 - +2026-01-12 20:24:27,533 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:24:27] "GET /api/portfolio/summary?_t=1768220667172 HTTP/1.1" 200 - +2026-01-12 20:24:48,235 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.1% has reached 1.0% target +2026-01-12 20:24:48,607 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:24:48] "GET /api/strategies/notifications?limit=50&_t=1768220688282 HTTP/1.1" 200 - +2026-01-12 20:24:57,150 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:24:57] "GET /api/strategies/notifications?limit=50&_t=1768220697139 HTTP/1.1" 200 - +2026-01-12 20:24:57,513 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (285898s) +2026-01-12 20:24:57,515 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (285898s) +2026-01-12 20:24:57,522 - app.data_sources.base - WARNING - Warning: AMD data is delayed (285898s) +2026-01-12 20:24:57,536 - app.data_sources.base - WARNING - Warning: AMD data is delayed (285898s) +2026-01-12 20:24:57,537 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:24:57] "GET /api/portfolio/summary?_t=1768220697179 HTTP/1.1" 200 - +2026-01-12 20:24:57,537 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (285898s) +2026-01-12 20:24:57,544 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (285898s) +2026-01-12 20:24:57,545 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:24:57] "GET /api/portfolio/positions?_t=1768220697179 HTTP/1.1" 200 - +2026-01-12 20:25:18,265 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.1% has reached 1.0% target +2026-01-12 20:25:27,145 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:25:27] "GET /api/strategies/notifications?limit=50&_t=1768220727137 HTTP/1.1" 200 - +2026-01-12 20:25:27,506 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (285928s) +2026-01-12 20:25:27,511 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (285928s) +2026-01-12 20:25:27,516 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (285928s) +2026-01-12 20:25:27,518 - app.data_sources.base - WARNING - Warning: GD data is delayed (285928s) +2026-01-12 20:25:27,521 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (285928s) +2026-01-12 20:25:27,529 - app.data_sources.base - WARNING - Warning: INTC data is delayed (285928s) +2026-01-12 20:25:27,546 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:25:27] "GET /api/portfolio/positions?_t=1768220727162 HTTP/1.1" 200 - +2026-01-12 20:25:27,546 - app.data_sources.base - WARNING - Warning: GD data is delayed (285928s) +2026-01-12 20:25:27,553 - app.data_sources.base - WARNING - Warning: INTC data is delayed (285928s) +2026-01-12 20:25:27,554 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (285928s) +2026-01-12 20:25:27,555 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:25:27] "GET /api/portfolio/summary?_t=1768220727162 HTTP/1.1" 200 - +2026-01-12 20:25:48,284 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.1% has reached 1.0% target +2026-01-12 20:25:48,294 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:25:48] "GET /api/strategies/notifications?limit=50&_t=1768220748284 HTTP/1.1" 200 - +2026-01-12 20:25:57,451 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:25:57] "GET /api/strategies/notifications?limit=50&_t=1768220757130 HTTP/1.1" 200 - +2026-01-12 20:25:57,469 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:25:57] "GET /api/portfolio/positions?_t=1768220757157 HTTP/1.1" 200 - +2026-01-12 20:25:57,472 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:25:57] "GET /api/portfolio/summary?_t=1768220757157 HTTP/1.1" 200 - +2026-01-12 20:26:06,121 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:26:06] "POST /api/portfolio/alerts HTTP/1.1" 200 - +2026-01-12 20:26:06,362 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:26:06] "GET /api/portfolio/alerts?_t=1768220766150 HTTP/1.1" 200 - +2026-01-12 20:26:11,169 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:26:11] "GET /api/market/types?_t=1768220771157 HTTP/1.1" 200 - +2026-01-12 20:26:11,238 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:26:11] "GET /api/portfolio/positions?_t=1768220771157 HTTP/1.1" 200 - +2026-01-12 20:26:11,521 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:26:11] "GET /api/portfolio/monitors?_t=1768220771157 HTTP/1.1" 200 - +2026-01-12 20:26:11,523 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:26:11] "GET /api/portfolio/summary?_t=1768220771157 HTTP/1.1" 200 - +2026-01-12 20:26:11,524 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:26:11] "GET /api/portfolio/groups?_t=1768220771157 HTTP/1.1" 200 - +2026-01-12 20:26:11,524 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:26:11] "GET /api/portfolio/alerts?_t=1768220771157 HTTP/1.1" 200 - +2026-01-12 20:26:11,524 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:26:11] "GET /api/strategies/notifications?limit=50&_t=1768220771157 HTTP/1.1" 200 - +2026-01-12 20:26:18,303 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.1% has reached 1.0% target +2026-01-12 20:26:37,413 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:26:37] "POST /api/portfolio/alerts HTTP/1.1" 200 - +2026-01-12 20:26:37,653 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:26:37] "GET /api/portfolio/alerts?_t=1768220797440 HTTP/1.1" 200 - +2026-01-12 20:26:41,129 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:26:41] "GET /api/strategies/notifications?limit=50&_t=1768220801118 HTTP/1.1" 200 - +2026-01-12 20:26:41,468 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:26:41] "GET /api/portfolio/positions?_t=1768220801141 HTTP/1.1" 200 - +2026-01-12 20:26:41,469 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:26:41] "GET /api/portfolio/summary?_t=1768220801141 HTTP/1.1" 200 - +2026-01-12 20:26:48,299 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:26:48] "GET /api/strategies/notifications?limit=50&_t=1768220808291 HTTP/1.1" 200 - +2026-01-12 20:26:48,322 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.1% has reached 1.0% target +2026-01-12 20:26:48,335 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 4.1% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:27:11,435 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:27:11] "GET /api/strategies/notifications?limit=50&_t=1768220831117 HTTP/1.1" 200 - +2026-01-12 20:27:11,466 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:27:11] "GET /api/portfolio/positions?_t=1768220831140 HTTP/1.1" 200 - +2026-01-12 20:27:11,466 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:27:11] "GET /api/portfolio/summary?_t=1768220831140 HTTP/1.1" 200 - +2026-01-12 20:27:29,489 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.1% has reached 1.0% target +2026-01-12 20:27:29,502 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 4.1% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:27:41,122 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:27:41] "GET /api/strategies/notifications?limit=50&_t=1768220861113 HTTP/1.1" 200 - +2026-01-12 20:27:41,471 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:27:41] "GET /api/portfolio/positions?_t=1768220861145 HTTP/1.1" 200 - +2026-01-12 20:27:41,472 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:27:41] "GET /api/portfolio/summary?_t=1768220861145 HTTP/1.1" 200 - +2026-01-12 20:27:48,305 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:27:48] "GET /api/strategies/notifications?limit=50&_t=1768220868292 HTTP/1.1" 200 - +2026-01-12 20:28:05,898 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.1% has reached 1.0% target +2026-01-12 20:28:05,911 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 4.1% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:28:11,442 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:28:11] "GET /api/strategies/notifications?limit=50&_t=1768220891122 HTTP/1.1" 200 - +2026-01-12 20:28:11,473 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:28:11] "GET /api/portfolio/positions?_t=1768220891150 HTTP/1.1" 200 - +2026-01-12 20:28:11,474 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:28:11] "GET /api/portfolio/summary?_t=1768220891150 HTTP/1.1" 200 - +2026-01-12 20:28:11,615 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:28:11] "GET /api/strategies/notifications?limit=50&_t=1768220891294 HTTP/1.1" 200 - +2026-01-12 20:28:12,536 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:28:12] "POST /api/strategies/notifications/read-all HTTP/1.1" 200 - +2026-01-12 20:28:36,875 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.1% has reached 1.0% target +2026-01-12 20:28:36,897 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 4.1% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:28:40,817 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:28:40] "GET /api/strategies/notifications?limit=50&_t=1768220920484 HTTP/1.1" 200 - +2026-01-12 20:28:41,305 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:28:41] "GET /api/strategies/notifications?limit=50&_t=1768220921290 HTTP/1.1" 200 - +2026-01-12 20:28:41,702 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:28:41] "GET /api/portfolio/positions?_t=1768220921365 HTTP/1.1" 200 - +2026-01-12 20:28:41,703 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:28:41] "GET /api/portfolio/summary?_t=1768220921365 HTTP/1.1" 200 - +2026-01-12 20:28:42,133 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:28:42] "GET /api/strategies?_t=1768220922123 HTTP/1.1" 200 - +2026-01-12 20:28:42,443 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:28:42] "GET /api/strategies/notifications?limit=50&_t=1768220922126 HTTP/1.1" 200 - +2026-01-12 20:28:43,629 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:28:43] "GET /api/strategies?_t=1768220923304 HTTP/1.1" 200 - +2026-01-12 20:29:08,102 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.1% has reached 1.0% target +2026-01-12 20:29:08,115 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 4.1% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:29:11,288 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:29:11] "GET /api/strategies/notifications?limit=50&_t=1768220951280 HTTP/1.1" 200 - +2026-01-12 20:29:11,645 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:29:11] "GET /api/portfolio/summary?_t=1768220951313 HTTP/1.1" 200 - +2026-01-12 20:29:11,645 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:29:11] "GET /api/portfolio/positions?_t=1768220951313 HTTP/1.1" 200 - +2026-01-12 20:29:12,126 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:29:12] "GET /api/strategies/notifications?limit=50&_t=1768220952119 HTTP/1.1" 200 - +2026-01-12 20:29:39,098 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.1% has reached 1.0% target +2026-01-12 20:29:39,111 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 4.1% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:29:42,436 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:29:42] "GET /api/strategies/notifications?limit=50&_t=1768220982123 HTTP/1.1" 200 - +2026-01-12 20:29:48,293 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:29:48] "GET /api/strategies/notifications?limit=50&_t=1768220988285 HTTP/1.1" 200 - +2026-01-12 20:29:48,677 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:29:48] "GET /api/portfolio/positions?_t=1768220988343 HTTP/1.1" 200 - +2026-01-12 20:29:48,678 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:29:48] "GET /api/portfolio/summary?_t=1768220988343 HTTP/1.1" 200 - +2026-01-12 20:30:10,187 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:30:10,204 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 4.0% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:30:11,135 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:30:11] "GET /api/strategies/notifications?limit=50&_t=1768221011125 HTTP/1.1" 200 - +2026-01-12 20:30:11,474 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:30:11] "GET /api/portfolio/positions?_t=1768221011156 HTTP/1.1" 200 - +2026-01-12 20:30:11,475 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:30:11] "GET /api/portfolio/summary?_t=1768221011156 HTTP/1.1" 200 - +2026-01-12 20:30:12,045 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:30:12] "GET /api/settings/schema?_t=1768221012033 HTTP/1.1" 200 - +2026-01-12 20:30:12,351 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:30:12] "GET /api/settings/values?_t=1768221012033 HTTP/1.1" 200 - +2026-01-12 20:30:12,597 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:30:12] "GET /api/strategies/notifications?limit=50&_t=1768221012283 HTTP/1.1" 200 - +2026-01-12 20:30:41,167 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:30:41,182 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 4.0% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:30:41,615 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:30:41] "GET /api/strategies/notifications?limit=50&_t=1768221041290 HTTP/1.1" 200 - +2026-01-12 20:30:42,291 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:30:42] "GET /api/strategies/notifications?limit=50&_t=1768221042283 HTTP/1.1" 200 - +2026-01-12 20:31:11,607 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:31:11] "GET /api/strategies/notifications?limit=50&_t=1768221071291 HTTP/1.1" 200 - +2026-01-12 20:31:12,292 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:31:12] "GET /api/strategies/notifications?limit=50&_t=1768221072285 HTTP/1.1" 200 - +2026-01-12 20:31:12,317 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:31:12,331 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 4.0% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:31:42,607 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:31:42] "GET /api/strategies/notifications?limit=50&_t=1768221102292 HTTP/1.1" 200 - +2026-01-12 20:31:43,393 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:31:43,406 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 4.0% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:31:48,292 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:31:48] "GET /api/strategies/notifications?limit=50&_t=1768221108284 HTTP/1.1" 200 - +2026-01-12 20:32:12,609 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:32:12] "GET /api/strategies/notifications?limit=50&_t=1768221132294 HTTP/1.1" 200 - +2026-01-12 20:32:14,431 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:32:14,444 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 4.0% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:32:42,310 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:32:42] "GET /api/strategies/notifications?limit=50&_t=1768221162302 HTTP/1.1" 200 - +2026-01-12 20:32:45,595 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:32:45,608 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 4.0% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:32:48,596 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:32:48] "GET /api/strategies/notifications?limit=50&_t=1768221168283 HTTP/1.1" 200 - +2026-01-12 20:33:12,291 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:33:12] "GET /api/strategies/notifications?limit=50&_t=1768221192283 HTTP/1.1" 200 - +2026-01-12 20:33:16,796 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:33:16,810 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 4.0% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:33:42,606 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:33:42] "GET /api/strategies/notifications?limit=50&_t=1768221222293 HTTP/1.1" 200 - +2026-01-12 20:33:48,097 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:33:48,110 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 4.0% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:33:48,294 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:33:48] "GET /api/strategies/notifications?limit=50&_t=1768221228282 HTTP/1.1" 200 - +2026-01-12 20:34:12,595 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:34:12] "GET /api/strategies/notifications?limit=50&_t=1768221252280 HTTP/1.1" 200 - +2026-01-12 20:34:19,079 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:34:19,091 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 4.0% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:34:42,294 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:34:42] "GET /api/strategies/notifications?limit=50&_t=1768221282286 HTTP/1.1" 200 - +2026-01-12 20:34:48,598 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:34:48] "GET /api/strategies/notifications?limit=50&_t=1768221288282 HTTP/1.1" 200 - +2026-01-12 20:34:50,124 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:34:50,137 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 4.0% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:35:21,459 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:35:21,473 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 4.0% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:35:48,300 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:35:48] "GET /api/strategies/notifications?limit=50&_t=1768221348292 HTTP/1.1" 200 - +2026-01-12 20:35:48,611 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:35:48] "GET /api/strategies/notifications?limit=50&_t=1768221348293 HTTP/1.1" 200 - +2026-01-12 20:35:52,523 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:35:52,537 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 4.0% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:36:23,588 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:36:23,601 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 4.0% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:36:48,598 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:36:48] "GET /api/strategies/notifications?limit=50&_t=1768221408281 HTTP/1.1" 200 - +2026-01-12 20:36:48,599 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:36:48] "GET /api/strategies/notifications?limit=50&_t=1768221408282 HTTP/1.1" 200 - +2026-01-12 20:36:54,829 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:36:54,845 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 4.0% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:37:25,823 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:37:25,837 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 4.0% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:37:48,303 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:37:48] "GET /api/strategies/notifications?limit=50&_t=1768221468290 HTTP/1.1" 200 - +2026-01-12 20:37:48,601 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:37:48] "GET /api/strategies/notifications?limit=50&_t=1768221468290 HTTP/1.1" 200 - +2026-01-12 20:37:56,921 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:37:56,936 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 4.0% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:38:28,058 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:38:28,071 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 4.0% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:38:29,834 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:38:29] "GET /api/strategies/notifications?limit=50&_t=1768221509493 HTTP/1.1" 200 - +2026-01-12 20:38:32,173 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:38:32] "GET /api/market/types?_t=1768221512154 HTTP/1.1" 200 - +2026-01-12 20:38:32,481 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:38:32] "GET /api/portfolio/groups?_t=1768221512154 HTTP/1.1" 200 - +2026-01-12 20:38:32,508 - app.data_sources.base - WARNING - Warning: GD data is delayed (286713s) +2026-01-12 20:38:32,510 - app.data_sources.base - WARNING - Warning: INTC data is delayed (286713s) +2026-01-12 20:38:32,518 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:38:32] "GET /api/portfolio/monitors?_t=1768221512154 HTTP/1.1" 200 - +2026-01-12 20:38:32,527 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (286713s) +2026-01-12 20:38:32,535 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (286713s) +2026-01-12 20:38:32,537 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (286713s) +2026-01-12 20:38:32,537 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (286713s) +2026-01-12 20:38:32,542 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (286713s) +2026-01-12 20:38:32,550 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (286713s) +2026-01-12 20:38:32,550 - app.data_sources.base - WARNING - Warning: AMD data is delayed (286713s) +2026-01-12 20:38:32,551 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:38:32] "GET /api/portfolio/alerts?_t=1768221512154 HTTP/1.1" 200 - +2026-01-12 20:38:32,559 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (286713s) +2026-01-12 20:38:32,572 - app.data_sources.base - WARNING - Warning: AMD data is delayed (286713s) +2026-01-12 20:38:32,573 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (286713s) +2026-01-12 20:38:32,573 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:38:32] "GET /api/portfolio/positions?_t=1768221512154 HTTP/1.1" 200 - +2026-01-12 20:38:33,456 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:38:33] "GET /api/portfolio/summary?_t=1768221512154 HTTP/1.1" 200 - +2026-01-12 20:38:41,436 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:38:41] "GET /api/strategies/notifications?limit=50&_t=1768221521120 HTTP/1.1" 200 - +2026-01-12 20:38:48,299 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:38:48] "GET /api/strategies/notifications?limit=50&_t=1768221528288 HTTP/1.1" 200 - +2026-01-12 20:38:59,237 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:38:59,251 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 4.0% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:39:02,493 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:39:02] "GET /api/portfolio/summary?_t=1768221542169 HTTP/1.1" 200 - +2026-01-12 20:39:02,503 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:39:02] "GET /api/portfolio/positions?_t=1768221542169 HTTP/1.1" 200 - +2026-01-12 20:39:11,127 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:39:11] "GET /api/strategies/notifications?limit=50&_t=1768221551120 HTTP/1.1" 200 - +2026-01-12 20:39:30,322 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:39:30,336 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 4.0% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:39:32,489 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:39:32] "GET /api/portfolio/positions?_t=1768221572159 HTTP/1.1" 200 - +2026-01-12 20:39:32,489 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:39:32] "GET /api/portfolio/summary?_t=1768221572159 HTTP/1.1" 200 - +2026-01-12 20:39:41,124 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:39:41] "GET /api/strategies/notifications?limit=50&_t=1768221581115 HTTP/1.1" 200 - +2026-01-12 20:39:48,602 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:39:48] "GET /api/strategies/notifications?limit=50&_t=1768221588285 HTTP/1.1" 200 - +2026-01-12 20:40:02,172 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:40:02] "GET /api/portfolio/positions?_t=1768221602160 HTTP/1.1" 200 - +2026-01-12 20:40:02,483 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:40:02] "GET /api/portfolio/summary?_t=1768221602160 HTTP/1.1" 200 - +2026-01-12 20:40:08,722 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:40:08,735 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 4.0% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:40:11,430 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:40:11] "GET /api/strategies/notifications?limit=50&_t=1768221611116 HTTP/1.1" 200 - +2026-01-12 20:40:19,293 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:40:19] "GET /api/strategies/notifications?limit=50&_t=1768221619261 HTTP/1.1" 200 - +2026-01-12 20:40:32,666 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:40:32] "GET /api/portfolio/summary?_t=1768221632346 HTTP/1.1" 200 - +2026-01-12 20:40:32,667 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:40:32] "GET /api/portfolio/positions?_t=1768221632346 HTTP/1.1" 200 - +2026-01-12 20:40:40,754 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.8% has reached 1.0% target +2026-01-12 20:40:40,767 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.8% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:40:41,295 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:40:41] "GET /api/strategies/notifications?limit=50&_t=1768221641287 HTTP/1.1" 200 - +2026-01-12 20:40:42,597 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:40:42] "GET /api/strategies/notifications?limit=50&_t=1768221642284 HTTP/1.1" 200 - +2026-01-12 20:41:02,350 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:41:02] "GET /api/portfolio/positions?_t=1768221662338 HTTP/1.1" 200 - +2026-01-12 20:41:02,647 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:41:02] "GET /api/portfolio/summary?_t=1768221662338 HTTP/1.1" 200 - +2026-01-12 20:41:11,606 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:41:11] "GET /api/strategies/notifications?limit=50&_t=1768221671293 HTTP/1.1" 200 - +2026-01-12 20:41:12,157 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.8% has reached 1.0% target +2026-01-12 20:41:12,171 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.8% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:41:12,290 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:41:12] "GET /api/strategies/notifications?limit=50&_t=1768221672280 HTTP/1.1" 200 - +2026-01-12 20:41:32,722 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:41:32] "GET /api/portfolio/positions?_t=1768221692323 HTTP/1.1" 200 - +2026-01-12 20:41:32,723 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:41:32] "GET /api/portfolio/summary?_t=1768221692323 HTTP/1.1" 200 - +2026-01-12 20:41:42,303 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:41:42] "GET /api/strategies/notifications?limit=50&_t=1768221702286 HTTP/1.1" 200 - +2026-01-12 20:41:43,192 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.8% has reached 1.0% target +2026-01-12 20:41:43,206 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.8% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:41:48,602 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:41:48] "GET /api/strategies/notifications?limit=50&_t=1768221708287 HTTP/1.1" 200 - +2026-01-12 20:42:12,300 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:42:12] "GET /api/strategies/notifications?limit=50&_t=1768221732288 HTTP/1.1" 200 - +2026-01-12 20:42:14,231 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.8% has reached 1.0% target +2026-01-12 20:42:14,245 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.8% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:42:42,596 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:42:42] "GET /api/strategies/notifications?limit=50&_t=1768221762281 HTTP/1.1" 200 - +2026-01-12 20:42:45,254 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.8% has reached 1.0% target +2026-01-12 20:42:45,269 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.8% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:42:47,960 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:42:47] "GET /api/dashboard/summary?_t=1768221767942 HTTP/1.1" 200 - +2026-01-12 20:42:48,040 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:42:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768221767942 HTTP/1.1" 200 - +2026-01-12 20:42:48,268 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:42:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768221767942 HTTP/1.1" 200 - +2026-01-12 20:42:48,348 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:42:48] "GET /api/portfolio/positions?_t=1768221768339 HTTP/1.1" 200 - +2026-01-12 20:42:48,665 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:42:48] "GET /api/portfolio/summary?_t=1768221768339 HTTP/1.1" 200 - +2026-01-12 20:42:48,666 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:42:48] "GET /api/strategies/notifications?limit=50&_t=1768221768342 HTTP/1.1" 200 - +2026-01-12 20:42:52,081 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:42:52] "GET /api/user/info?_t=1768221772055 HTTP/1.1" 200 - +2026-01-12 20:42:52,213 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:42:52] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 20:42:52,448 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:42:52] "GET /api/market/config?_t=1768221772055 HTTP/1.1" 200 - +2026-01-12 20:42:52,450 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:42:52] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 20:42:52,535 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 20:42:52,536 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 20:42:52,536 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 20:42:52,547 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:42:52] "GET /api/market/types?_t=1768221772454 HTTP/1.1" 200 - +2026-01-12 20:42:52,820 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (286973s) +2026-01-12 20:42:54,784 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:42:54] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-12 20:42:54,940 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:42:54] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-12 20:42:55,414 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:42:55] "GET /api/strategies/notifications?limit=50&_t=1768221775383 HTTP/1.1" 200 - +2026-01-12 20:42:56,976 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:42:56] "POST /api/strategies/notifications/read-all HTTP/1.1" 200 - +2026-01-12 20:43:12,125 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:43:12] "GET /api/strategies/notifications?limit=50&_t=1768221792117 HTTP/1.1" 200 - +2026-01-12 20:43:16,287 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.8% has reached 1.0% target +2026-01-12 20:43:16,309 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.8% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:43:22,325 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:43:22] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-12 20:43:42,129 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:43:42] "GET /api/strategies/notifications?limit=50&_t=1768221822119 HTTP/1.1" 200 - +2026-01-12 20:43:47,580 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.8% has reached 1.0% target +2026-01-12 20:43:47,594 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.8% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:43:48,679 - app.data_sources.base - WARNING - Warning: GD data is delayed (287029s) +2026-01-12 20:43:48,680 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (287029s) +2026-01-12 20:43:48,690 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (287029s) +2026-01-12 20:43:48,692 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (287029s) +2026-01-12 20:43:48,700 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (287029s) +2026-01-12 20:43:48,705 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (287029s) +2026-01-12 20:43:48,711 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (287029s) +2026-01-12 20:43:48,714 - app.data_sources.base - WARNING - Warning: AMD data is delayed (287029s) +2026-01-12 20:43:48,718 - app.data_sources.base - WARNING - Warning: INTC data is delayed (287029s) +2026-01-12 20:43:48,728 - app.data_sources.base - WARNING - Warning: AMD data is delayed (287029s) +2026-01-12 20:43:48,735 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (287029s) +2026-01-12 20:43:48,742 - app.data_sources.base - WARNING - Warning: INTC data is delayed (287029s) +2026-01-12 20:43:48,743 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:43:48] "GET /api/strategies/notifications?limit=50&_t=1768221828340 HTTP/1.1" 200 - +2026-01-12 20:43:48,761 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:43:48] "GET /api/portfolio/positions?_t=1768221828338 HTTP/1.1" 200 - +2026-01-12 20:43:48,795 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:43:48] "GET /api/portfolio/summary?_t=1768221828338 HTTP/1.1" 200 - +2026-01-12 20:43:52,014 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:43:52] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-12 20:44:12,434 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:44:12] "GET /api/strategies/notifications?limit=50&_t=1768221852118 HTTP/1.1" 200 - +2026-01-12 20:44:15,197 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:44:15] "GET /api/market/types?_t=1768221855178 HTTP/1.1" 200 - +2026-01-12 20:44:15,503 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:44:15] "GET /api/portfolio/positions?_t=1768221855178 HTTP/1.1" 200 - +2026-01-12 20:44:15,507 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:44:15] "GET /api/portfolio/summary?_t=1768221855178 HTTP/1.1" 200 - +2026-01-12 20:44:15,509 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:44:15] "GET /api/portfolio/monitors?_t=1768221855178 HTTP/1.1" 200 - +2026-01-12 20:44:15,511 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:44:15] "GET /api/portfolio/alerts?_t=1768221855178 HTTP/1.1" 200 - +2026-01-12 20:44:15,511 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:44:15] "GET /api/portfolio/groups?_t=1768221855178 HTTP/1.1" 200 - +2026-01-12 20:44:18,614 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.8% has reached 1.0% target +2026-01-12 20:44:18,627 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.8% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:44:32,552 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:44:32] "GET /api/strategies/notifications?limit=50&_t=1768221872231 HTTP/1.1" 200 - +2026-01-12 20:44:34,153 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:44:34] "POST /api/strategies/notifications/read-all HTTP/1.1" 200 - +2026-01-12 20:44:39,903 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:44:39] "GET /api/strategies?_t=1768221879589 HTTP/1.1" 200 - +2026-01-12 20:44:40,867 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:44:40] "GET /api/strategies/equityCurve?id=14&_t=1768221880847 HTTP/1.1" 200 - +2026-01-12 20:44:41,173 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:44:41] "GET /api/strategies/positions?id=14&_t=1768221880850 HTTP/1.1" 200 - +2026-01-12 20:44:41,174 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:44:41] "GET /api/strategies/equityCurve?id=14&_t=1768221880847 HTTP/1.1" 200 - +2026-01-12 20:44:42,308 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:44:42] "GET /api/strategies/trades?id=14&_t=1768221881993 HTTP/1.1" 200 - +2026-01-12 20:44:42,431 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:44:42] "GET /api/strategies/notifications?limit=50&_t=1768221882110 HTTP/1.1" 200 - +2026-01-12 20:44:42,769 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:44:42] "GET /api/strategies/equityCurve?id=13&_t=1768221882755 HTTP/1.1" 200 - +2026-01-12 20:44:43,082 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:44:43] "GET /api/strategies/trades?id=13&_t=1768221882756 HTTP/1.1" 200 - +2026-01-12 20:44:43,082 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:44:43] "GET /api/strategies/positions?id=13&_t=1768221882756 HTTP/1.1" 200 - +2026-01-12 20:44:43,083 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:44:43] "GET /api/strategies/equityCurve?id=13&_t=1768221882755 HTTP/1.1" 200 - +2026-01-12 20:44:43,684 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:44:43] "GET /api/strategies/trades?id=12&_t=1768221883358 HTTP/1.1" 200 - +2026-01-12 20:44:43,685 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:44:43] "GET /api/strategies/equityCurve?id=12&_t=1768221883357 HTTP/1.1" 200 - +2026-01-12 20:44:43,685 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:44:43] "GET /api/strategies/positions?id=12&_t=1768221883357 HTTP/1.1" 200 - +2026-01-12 20:44:43,686 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:44:43] "GET /api/strategies/equityCurve?id=12&_t=1768221883357 HTTP/1.1" 200 - +2026-01-12 20:44:43,941 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:44:43] "GET /api/strategies/equityCurve?id=11&_t=1768221883856 HTTP/1.1" 200 - +2026-01-12 20:44:44,174 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:44:44] "GET /api/strategies/trades?id=11&_t=1768221883857 HTTP/1.1" 200 - +2026-01-12 20:44:44,176 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:44:44] "GET /api/strategies/positions?id=11&_t=1768221883857 HTTP/1.1" 200 - +2026-01-12 20:44:44,177 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:44:44] "GET /api/strategies/equityCurve?id=11&_t=1768221883856 HTTP/1.1" 200 - +2026-01-12 20:44:44,363 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:44:44] "GET /api/strategies/equityCurve?id=10&_t=1768221884352 HTTP/1.1" 200 - +2026-01-12 20:44:44,670 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:44:44] "GET /api/strategies/trades?id=10&_t=1768221884353 HTTP/1.1" 200 - +2026-01-12 20:44:44,671 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:44:44] "GET /api/strategies/positions?id=10&_t=1768221884353 HTTP/1.1" 200 - +2026-01-12 20:44:44,671 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:44:44] "GET /api/strategies/equityCurve?id=10&_t=1768221884352 HTTP/1.1" 200 - +2026-01-12 20:44:45,932 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:44:45] "GET /api/market/types?_t=1768221885601 HTTP/1.1" 200 - +2026-01-12 20:44:45,942 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:44:45] "GET /api/portfolio/positions?_t=1768221885601 HTTP/1.1" 200 - +2026-01-12 20:44:45,942 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:44:45] "GET /api/portfolio/groups?_t=1768221885601 HTTP/1.1" 200 - +2026-01-12 20:44:45,944 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:44:45] "GET /api/portfolio/monitors?_t=1768221885601 HTTP/1.1" 200 - +2026-01-12 20:44:45,945 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:44:45] "GET /api/portfolio/alerts?_t=1768221885601 HTTP/1.1" 200 - +2026-01-12 20:44:45,947 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:44:45] "GET /api/portfolio/summary?_t=1768221885601 HTTP/1.1" 200 - +2026-01-12 20:44:48,654 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:44:48] "GET /api/portfolio/summary?_t=1768221888336 HTTP/1.1" 200 - +2026-01-12 20:44:48,655 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:44:48] "GET /api/portfolio/positions?_t=1768221888336 HTTP/1.1" 200 - +2026-01-12 20:44:48,655 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:44:48] "GET /api/strategies/notifications?limit=50&_t=1768221888337 HTTP/1.1" 200 - +2026-01-12 20:44:49,770 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.8% has reached 1.0% target +2026-01-12 20:44:49,784 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.8% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:45:12,120 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:45:12] "GET /api/strategies/notifications?limit=50&_t=1768221912114 HTTP/1.1" 200 - +2026-01-12 20:45:15,919 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:45:15] "GET /api/portfolio/positions?_t=1768221915602 HTTP/1.1" 200 - +2026-01-12 20:45:15,919 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:45:15] "GET /api/portfolio/summary?_t=1768221915602 HTTP/1.1" 200 - +2026-01-12 20:45:20,956 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.8% has reached 1.0% target +2026-01-12 20:45:20,970 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.8% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:45:22,796 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:45:22] "GET /api/strategies/notifications?limit=50&_t=1768221922774 HTTP/1.1" 200 - +2026-01-12 20:45:42,434 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:45:42] "GET /api/strategies/notifications?limit=50&_t=1768221942118 HTTP/1.1" 200 - +2026-01-12 20:45:45,616 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:45:45] "GET /api/portfolio/positions?_t=1768221945603 HTTP/1.1" 200 - +2026-01-12 20:45:45,919 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:45:45] "GET /api/portfolio/summary?_t=1768221945603 HTTP/1.1" 200 - +2026-01-12 20:45:48,648 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:45:48] "GET /api/portfolio/summary?_t=1768221948324 HTTP/1.1" 200 - +2026-01-12 20:45:48,649 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:45:48] "GET /api/strategies/notifications?limit=50&_t=1768221948325 HTTP/1.1" 200 - +2026-01-12 20:45:48,657 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:45:48] "GET /api/portfolio/positions?_t=1768221948324 HTTP/1.1" 200 - +2026-01-12 20:45:52,639 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 20:45:52,659 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.9% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:45:54,381 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:45:54] "GET /api/market/types?_t=1768221954374 HTTP/1.1" 200 - +2026-01-12 20:45:54,658 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:45:54] "GET /api/portfolio/positions?_t=1768221954374 HTTP/1.1" 200 - +2026-01-12 20:45:54,659 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:45:54] "GET /api/portfolio/monitors?_t=1768221954374 HTTP/1.1" 200 - +2026-01-12 20:45:54,659 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:45:54] "GET /api/portfolio/summary?_t=1768221954374 HTTP/1.1" 200 - +2026-01-12 20:45:54,660 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:45:54] "GET /api/portfolio/groups?_t=1768221954374 HTTP/1.1" 200 - +2026-01-12 20:45:54,685 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:45:54] "GET /api/portfolio/alerts?_t=1768221954374 HTTP/1.1" 200 - +2026-01-12 20:45:54,730 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:45:54] "GET /api/market/types?_t=1768221954414 HTTP/1.1" 200 - +2026-01-12 20:45:54,986 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:45:54] "GET /api/portfolio/positions?_t=1768221954414 HTTP/1.1" 200 - +2026-01-12 20:45:54,987 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:45:54] "GET /api/portfolio/monitors?_t=1768221954414 HTTP/1.1" 200 - +2026-01-12 20:45:54,991 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:45:54] "GET /api/portfolio/summary?_t=1768221954414 HTTP/1.1" 200 - +2026-01-12 20:45:54,991 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:45:54] "GET /api/portfolio/groups?_t=1768221954414 HTTP/1.1" 200 - +2026-01-12 20:45:54,995 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:45:54] "GET /api/portfolio/alerts?_t=1768221954414 HTTP/1.1" 200 - +2026-01-12 20:46:12,437 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:46:12] "GET /api/strategies/notifications?limit=50&_t=1768221972122 HTTP/1.1" 200 - +2026-01-12 20:46:23,897 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 20:46:23,911 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.9% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:46:24,410 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:46:24] "GET /api/portfolio/positions?_t=1768221984390 HTTP/1.1" 200 - +2026-01-12 20:46:24,710 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:46:24] "GET /api/portfolio/summary?_t=1768221984390 HTTP/1.1" 200 - +2026-01-12 20:46:25,656 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:46:25] "GET /api/portfolio/positions?_t=1768221985336 HTTP/1.1" 200 - +2026-01-12 20:46:25,657 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:46:25] "GET /api/portfolio/summary?_t=1768221985336 HTTP/1.1" 200 - +2026-01-12 20:46:42,126 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:46:42] "GET /api/strategies/notifications?limit=50&_t=1768222002119 HTTP/1.1" 200 - +2026-01-12 20:46:45,598 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:46:45] "GET /api/strategies/notifications?limit=50&_t=1768222005284 HTTP/1.1" 200 - +2026-01-12 20:46:54,398 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:46:54] "GET /api/portfolio/positions?_t=1768222014386 HTTP/1.1" 200 - +2026-01-12 20:46:54,703 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:46:54] "GET /api/portfolio/summary?_t=1768222014386 HTTP/1.1" 200 - +2026-01-12 20:46:54,887 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 20:46:54,900 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.9% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:46:55,672 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:46:55] "GET /api/portfolio/summary?_t=1768222015349 HTTP/1.1" 200 - +2026-01-12 20:46:55,673 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:46:55] "GET /api/portfolio/positions?_t=1768222015349 HTTP/1.1" 200 - +2026-01-12 20:47:11,293 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:47:11] "GET /api/strategies/notifications?limit=50&_t=1768222031286 HTTP/1.1" 200 - +2026-01-12 20:47:12,436 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:47:12] "GET /api/strategies/notifications?limit=50&_t=1768222032121 HTTP/1.1" 200 - +2026-01-12 20:47:24,407 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:47:24] "GET /api/portfolio/positions?_t=1768222044395 HTTP/1.1" 200 - +2026-01-12 20:47:24,710 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:47:24] "GET /api/portfolio/summary?_t=1768222044395 HTTP/1.1" 200 - +2026-01-12 20:47:25,629 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:47:25] "GET /api/portfolio/positions?_t=1768222045318 HTTP/1.1" 200 - +2026-01-12 20:47:25,630 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:47:25] "GET /api/portfolio/summary?_t=1768222045318 HTTP/1.1" 200 - +2026-01-12 20:47:26,026 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 20:47:26,040 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.9% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:47:42,126 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:47:42] "GET /api/strategies/notifications?limit=50&_t=1768222062117 HTTP/1.1" 200 - +2026-01-12 20:47:45,609 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:47:45] "GET /api/strategies/notifications?limit=50&_t=1768222065287 HTTP/1.1" 200 - +2026-01-12 20:47:54,407 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:47:54] "GET /api/portfolio/positions?_t=1768222074392 HTTP/1.1" 200 - +2026-01-12 20:47:54,712 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:47:54] "GET /api/portfolio/summary?_t=1768222074392 HTTP/1.1" 200 - +2026-01-12 20:47:55,627 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:47:55] "GET /api/portfolio/positions?_t=1768222075315 HTTP/1.1" 200 - +2026-01-12 20:47:55,657 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:47:55] "GET /api/portfolio/summary?_t=1768222075315 HTTP/1.1" 200 - +2026-01-12 20:47:57,077 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 20:47:57,090 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.9% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:48:12,118 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:48:12] "GET /api/strategies/notifications?limit=50&_t=1768222092110 HTTP/1.1" 200 - +2026-01-12 20:48:23,600 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:48:23] "GET /api/strategies/notifications?limit=50&_t=1768222103287 HTTP/1.1" 200 - +2026-01-12 20:48:24,397 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:48:24] "GET /api/portfolio/positions?_t=1768222104383 HTTP/1.1" 200 - +2026-01-12 20:48:24,699 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:48:24] "GET /api/portfolio/summary?_t=1768222104383 HTTP/1.1" 200 - +2026-01-12 20:48:25,628 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:48:25] "GET /api/portfolio/positions?_t=1768222105311 HTTP/1.1" 200 - +2026-01-12 20:48:25,628 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:48:25] "GET /api/portfolio/summary?_t=1768222105311 HTTP/1.1" 200 - +2026-01-12 20:48:28,411 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 20:48:28,424 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.9% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:48:42,131 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:48:42] "GET /api/strategies/notifications?limit=50&_t=1768222122123 HTTP/1.1" 200 - +2026-01-12 20:48:48,607 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:48:48] "GET /api/strategies/notifications?limit=50&_t=1768222128292 HTTP/1.1" 200 - +2026-01-12 20:48:54,395 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:48:54] "GET /api/portfolio/positions?_t=1768222134385 HTTP/1.1" 200 - +2026-01-12 20:48:54,706 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:48:54] "GET /api/portfolio/summary?_t=1768222134385 HTTP/1.1" 200 - +2026-01-12 20:48:55,637 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:48:55] "GET /api/portfolio/summary?_t=1768222135314 HTTP/1.1" 200 - +2026-01-12 20:48:55,637 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:48:55] "GET /api/portfolio/positions?_t=1768222135314 HTTP/1.1" 200 - +2026-01-12 20:48:59,433 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 20:48:59,447 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.9% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:49:12,125 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:49:12] "GET /api/strategies/notifications?limit=50&_t=1768222152117 HTTP/1.1" 200 - +2026-01-12 20:49:24,698 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:49:24] "GET /api/portfolio/positions?_t=1768222164382 HTTP/1.1" 200 - +2026-01-12 20:49:24,698 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:49:24] "GET /api/portfolio/summary?_t=1768222164382 HTTP/1.1" 200 - +2026-01-12 20:49:30,452 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 20:49:30,467 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.9% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:49:42,126 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:49:42] "GET /api/strategies/notifications?limit=50&_t=1768222182119 HTTP/1.1" 200 - +2026-01-12 20:49:48,602 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:49:48] "GET /api/strategies/notifications?limit=50&_t=1768222188288 HTTP/1.1" 200 - +2026-01-12 20:49:48,665 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (287389s) +2026-01-12 20:49:48,666 - app.data_sources.base - WARNING - Warning: INTC data is delayed (287389s) +2026-01-12 20:49:48,678 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (287389s) +2026-01-12 20:49:48,679 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (287389s) +2026-01-12 20:49:48,683 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (287389s) +2026-01-12 20:49:48,684 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (287389s) +2026-01-12 20:49:48,693 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (287389s) +2026-01-12 20:49:48,698 - app.data_sources.base - WARNING - Warning: AMD data is delayed (287389s) +2026-01-12 20:49:48,699 - app.data_sources.base - WARNING - Warning: GD data is delayed (287389s) +2026-01-12 20:49:48,706 - app.data_sources.base - WARNING - Warning: GD data is delayed (287389s) +2026-01-12 20:49:48,710 - app.data_sources.base - WARNING - Warning: AMD data is delayed (287389s) +2026-01-12 20:49:48,756 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:49:48] "GET /api/portfolio/positions?_t=1768222188335 HTTP/1.1" 200 - +2026-01-12 20:49:48,772 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:49:48] "GET /api/portfolio/summary?_t=1768222188335 HTTP/1.1" 200 - +2026-01-12 20:49:54,391 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:49:54] "GET /api/portfolio/positions?_t=1768222194382 HTTP/1.1" 200 - +2026-01-12 20:49:54,698 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:49:54] "GET /api/portfolio/summary?_t=1768222194382 HTTP/1.1" 200 - +2026-01-12 20:50:01,651 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 20:50:01,668 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.9% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:50:12,429 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:50:12] "GET /api/strategies/notifications?limit=50&_t=1768222212110 HTTP/1.1" 200 - +2026-01-12 20:50:25,328 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:50:25] "GET /api/portfolio/positions?_t=1768222225319 HTTP/1.1" 200 - +2026-01-12 20:50:25,640 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:50:25] "GET /api/portfolio/summary?_t=1768222225319 HTTP/1.1" 200 - +2026-01-12 20:50:33,055 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 20:50:33,067 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 3.9% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:50:42,626 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:50:42] "GET /api/strategies/notifications?limit=50&_t=1768222242282 HTTP/1.1" 200 - +2026-01-12 20:50:48,353 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:50:48] "GET /api/portfolio/positions?_t=1768222248319 HTTP/1.1" 200 - +2026-01-12 20:50:48,662 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:50:48] "GET /api/portfolio/summary?_t=1768222248319 HTTP/1.1" 200 - +2026-01-12 20:50:48,663 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:50:48] "GET /api/strategies/notifications?limit=50&_t=1768222248321 HTTP/1.1" 200 - +2026-01-12 20:50:55,664 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:50:55] "GET /api/portfolio/positions?_t=1768222255335 HTTP/1.1" 200 - +2026-01-12 20:50:55,664 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:50:55] "GET /api/portfolio/summary?_t=1768222255335 HTTP/1.1" 200 - +2026-01-12 20:51:12,304 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:51:12] "GET /api/strategies/notifications?limit=50&_t=1768222272295 HTTP/1.1" 200 - +2026-01-12 20:51:12,336 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:51:12,349 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 4.0% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:51:24,505 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:51:24] "GET /api/portfolio/summary?_t=1768222284179 HTTP/1.1" 200 - +2026-01-12 20:51:24,506 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:51:24] "GET /api/portfolio/positions?_t=1768222284179 HTTP/1.1" 200 - +2026-01-12 20:51:24,507 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:51:24] "GET /api/strategies/notifications?limit=50&_t=1768222284189 HTTP/1.1" 200 - +2026-01-12 20:51:28,389 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:51:28] "GET /api/strategies?_t=1768222288377 HTTP/1.1" 200 - +2026-01-12 20:51:31,402 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:51:31] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 20:51:31,402 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:51:31] "GET /api/credentials/list?user_id=1&_t=1768222291082 HTTP/1.1" 200 - +2026-01-12 20:51:31,403 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:51:31] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 20:51:41,138 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:51:41] "GET /api/strategies/notifications?limit=50&_t=1768222301127 HTTP/1.1" 200 - +2026-01-12 20:51:45,595 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:51:45,609 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 4.0% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:51:48,639 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:51:48] "GET /api/portfolio/positions?_t=1768222308324 HTTP/1.1" 200 - +2026-01-12 20:51:48,639 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:51:48] "GET /api/strategies/notifications?limit=50&_t=1768222308325 HTTP/1.1" 200 - +2026-01-12 20:51:48,640 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:51:48] "GET /api/portfolio/summary?_t=1768222308324 HTTP/1.1" 200 - +2026-01-12 20:52:01,346 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:01] "GET /api/portfolio/positions?_t=1768222321336 HTTP/1.1" 200 - +2026-01-12 20:52:01,659 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:01] "GET /api/portfolio/summary?_t=1768222321336 HTTP/1.1" 200 - +2026-01-12 20:52:08,110 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:08] "GET /api/market/types?_t=1768222327786 HTTP/1.1" 200 - +2026-01-12 20:52:08,119 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:08] "GET /api/portfolio/summary?_t=1768222327786 HTTP/1.1" 200 - +2026-01-12 20:52:08,120 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:08] "GET /api/portfolio/monitors?_t=1768222327786 HTTP/1.1" 200 - +2026-01-12 20:52:08,121 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:08] "GET /api/portfolio/groups?_t=1768222327786 HTTP/1.1" 200 - +2026-01-12 20:52:08,122 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:08] "GET /api/portfolio/alerts?_t=1768222327786 HTTP/1.1" 200 - +2026-01-12 20:52:08,123 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:08] "GET /api/portfolio/positions?_t=1768222327786 HTTP/1.1" 200 - +2026-01-12 20:52:12,217 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:12] "GET /api/strategies/notifications?limit=50&_t=1768222331123 HTTP/1.1" 200 - +2026-01-12 20:52:12,259 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:12] "GET /api/market/types?_t=1768222332252 HTTP/1.1" 200 - +2026-01-12 20:52:12,527 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:12] "GET /api/portfolio/monitors?_t=1768222332252 HTTP/1.1" 200 - +2026-01-12 20:52:12,528 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:12] "GET /api/portfolio/summary?_t=1768222332252 HTTP/1.1" 200 - +2026-01-12 20:52:12,534 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:12] "GET /api/portfolio/positions?_t=1768222332252 HTTP/1.1" 200 - +2026-01-12 20:52:12,535 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:12] "GET /api/portfolio/groups?_t=1768222332252 HTTP/1.1" 200 - +2026-01-12 20:52:12,569 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:12] "GET /api/portfolio/alerts?_t=1768222332252 HTTP/1.1" 200 - +2026-01-12 20:52:12,570 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:12] "GET /api/market/types?_t=1768222332310 HTTP/1.1" 200 - +2026-01-12 20:52:12,855 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:12] "GET /api/portfolio/summary?_t=1768222332310 HTTP/1.1" 200 - +2026-01-12 20:52:12,856 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:12] "GET /api/portfolio/monitors?_t=1768222332310 HTTP/1.1" 200 - +2026-01-12 20:52:12,857 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:12] "GET /api/portfolio/positions?_t=1768222332310 HTTP/1.1" 200 - +2026-01-12 20:52:12,861 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:12] "GET /api/portfolio/groups?_t=1768222332310 HTTP/1.1" 200 - +2026-01-12 20:52:12,883 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:12] "GET /api/portfolio/alerts?_t=1768222332310 HTTP/1.1" 200 - +2026-01-12 20:52:12,922 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:12] "GET /api/market/types?_t=1768222332916 HTTP/1.1" 200 - +2026-01-12 20:52:13,164 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:13] "GET /api/portfolio/positions?_t=1768222332916 HTTP/1.1" 200 - +2026-01-12 20:52:13,171 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:13] "GET /api/portfolio/summary?_t=1768222332916 HTTP/1.1" 200 - +2026-01-12 20:52:13,198 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:13] "GET /api/portfolio/monitors?_t=1768222332916 HTTP/1.1" 200 - +2026-01-12 20:52:13,198 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:13] "GET /api/portfolio/groups?_t=1768222332916 HTTP/1.1" 200 - +2026-01-12 20:52:13,240 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:13] "GET /api/portfolio/alerts?_t=1768222332916 HTTP/1.1" 200 - +2026-01-12 20:52:13,241 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:13] "GET /api/market/types?_t=1768222332947 HTTP/1.1" 200 - +2026-01-12 20:52:13,488 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:13] "GET /api/portfolio/positions?_t=1768222332947 HTTP/1.1" 200 - +2026-01-12 20:52:13,488 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:13] "GET /api/portfolio/summary?_t=1768222332947 HTTP/1.1" 200 - +2026-01-12 20:52:13,520 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:13] "GET /api/portfolio/monitors?_t=1768222332947 HTTP/1.1" 200 - +2026-01-12 20:52:13,521 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:13] "GET /api/portfolio/groups?_t=1768222332947 HTTP/1.1" 200 - +2026-01-12 20:52:13,552 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:13] "GET /api/portfolio/alerts?_t=1768222332947 HTTP/1.1" 200 - +2026-01-12 20:52:14,364 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:14] "GET /api/market/types?_t=1768222334345 HTTP/1.1" 200 - +2026-01-12 20:52:14,369 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:14] "GET /api/portfolio/positions?_t=1768222334345 HTTP/1.1" 200 - +2026-01-12 20:52:14,369 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:14] "GET /api/portfolio/summary?_t=1768222334345 HTTP/1.1" 200 - +2026-01-12 20:52:14,674 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:14] "GET /api/portfolio/groups?_t=1768222334345 HTTP/1.1" 200 - +2026-01-12 20:52:14,674 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:14] "GET /api/portfolio/alerts?_t=1768222334345 HTTP/1.1" 200 - +2026-01-12 20:52:14,686 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:14] "GET /api/strategies/notifications?limit=50&_t=1768222334345 HTTP/1.1" 200 - +2026-01-12 20:52:14,692 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:14] "GET /api/portfolio/monitors?_t=1768222334345 HTTP/1.1" 200 - +2026-01-12 20:52:15,020 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:15] "GET /api/market/types?_t=1768222335008 HTTP/1.1" 200 - +2026-01-12 20:52:15,023 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:15] "GET /api/portfolio/positions?_t=1768222335008 HTTP/1.1" 200 - +2026-01-12 20:52:15,331 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:15] "GET /api/portfolio/summary?_t=1768222335009 HTTP/1.1" 200 - +2026-01-12 20:52:15,332 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:15] "GET /api/portfolio/alerts?_t=1768222335009 HTTP/1.1" 200 - +2026-01-12 20:52:15,333 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:15] "GET /api/portfolio/monitors?_t=1768222335009 HTTP/1.1" 200 - +2026-01-12 20:52:15,333 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:15] "GET /api/portfolio/groups?_t=1768222335009 HTTP/1.1" 200 - +2026-01-12 20:52:15,339 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:15] "GET /api/strategies/notifications?limit=50&_t=1768222335009 HTTP/1.1" 200 - +2026-01-12 20:52:16,714 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:52:16,727 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 4.0% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:52:44,635 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:44] "GET /api/strategies/notifications?limit=50&_t=1768222364318 HTTP/1.1" 200 - +2026-01-12 20:52:44,667 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:44] "GET /api/portfolio/positions?_t=1768222364342 HTTP/1.1" 200 - +2026-01-12 20:52:44,668 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:44] "GET /api/portfolio/summary?_t=1768222364342 HTTP/1.1" 200 - +2026-01-12 20:52:45,298 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:45] "GET /api/strategies/notifications?limit=50&_t=1768222365291 HTTP/1.1" 200 - +2026-01-12 20:52:45,667 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:45] "GET /api/portfolio/positions?_t=1768222365350 HTTP/1.1" 200 - +2026-01-12 20:52:45,667 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:52:45] "GET /api/portfolio/summary?_t=1768222365350 HTTP/1.1" 200 - +2026-01-12 20:52:47,731 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:52:47,744 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 4.0% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:53:14,322 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:53:14] "GET /api/strategies/notifications?limit=50&_t=1768222394314 HTTP/1.1" 200 - +2026-01-12 20:53:14,662 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:53:14] "GET /api/portfolio/positions?_t=1768222394338 HTTP/1.1" 200 - +2026-01-12 20:53:14,664 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:53:14] "GET /api/portfolio/summary?_t=1768222394339 HTTP/1.1" 200 - +2026-01-12 20:53:15,293 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:53:15] "GET /api/strategies/notifications?limit=50&_t=1768222395285 HTTP/1.1" 200 - +2026-01-12 20:53:15,633 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:53:15] "GET /api/portfolio/positions?_t=1768222395309 HTTP/1.1" 200 - +2026-01-12 20:53:15,633 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:53:15] "GET /api/portfolio/summary?_t=1768222395309 HTTP/1.1" 200 - +2026-01-12 20:53:18,765 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:53:18,778 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 4.0% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:53:44,325 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:53:44] "GET /api/strategies/notifications?limit=50&_t=1768222424317 HTTP/1.1" 200 - +2026-01-12 20:53:44,675 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:53:44] "GET /api/portfolio/positions?_t=1768222424343 HTTP/1.1" 200 - +2026-01-12 20:53:44,677 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:53:44] "GET /api/portfolio/summary?_t=1768222424343 HTTP/1.1" 200 - +2026-01-12 20:53:45,287 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:53:45] "GET /api/strategies/notifications?limit=50&_t=1768222425280 HTTP/1.1" 200 - +2026-01-12 20:53:45,653 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:53:45] "GET /api/portfolio/positions?_t=1768222425330 HTTP/1.1" 200 - +2026-01-12 20:53:45,653 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:53:45] "GET /api/portfolio/summary?_t=1768222425330 HTTP/1.1" 200 - +2026-01-12 20:53:49,836 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:53:49,851 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 4.0% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:54:14,327 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:54:14] "GET /api/strategies/notifications?limit=50&_t=1768222454320 HTTP/1.1" 200 - +2026-01-12 20:54:14,670 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:54:14] "GET /api/portfolio/positions?_t=1768222454343 HTTP/1.1" 200 - +2026-01-12 20:54:14,671 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:54:14] "GET /api/portfolio/summary?_t=1768222454343 HTTP/1.1" 200 - +2026-01-12 20:54:15,301 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:54:15] "GET /api/strategies/notifications?limit=50&_t=1768222455286 HTTP/1.1" 200 - +2026-01-12 20:54:15,649 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:54:15] "GET /api/portfolio/summary?_t=1768222455322 HTTP/1.1" 200 - +2026-01-12 20:54:15,650 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:54:15] "GET /api/portfolio/positions?_t=1768222455322 HTTP/1.1" 200 - +2026-01-12 20:54:20,827 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:54:20,840 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 4.0% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:54:44,320 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:54:44] "GET /api/strategies/notifications?limit=50&_t=1768222484312 HTTP/1.1" 200 - +2026-01-12 20:54:44,657 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:54:44] "GET /api/portfolio/positions?_t=1768222484338 HTTP/1.1" 200 - +2026-01-12 20:54:44,658 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:54:44] "GET /api/portfolio/summary?_t=1768222484338 HTTP/1.1" 200 - +2026-01-12 20:54:45,295 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:54:45] "GET /api/strategies/notifications?limit=50&_t=1768222485285 HTTP/1.1" 200 - +2026-01-12 20:54:45,646 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:54:45] "GET /api/portfolio/positions?_t=1768222485327 HTTP/1.1" 200 - +2026-01-12 20:54:45,647 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:54:45] "GET /api/portfolio/summary?_t=1768222485327 HTTP/1.1" 200 - +2026-01-12 20:54:51,813 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:54:51,825 - app.services.portfolio_monitor - INFO - Alert #11 triggered: ๐ŸŽ‰ ็›ˆๅˆฉ้ข„่ญฆ: ETH/USDT ๅฝ“ๅ‰็›ˆไบ 4.0% ๅทฒ่พพๅˆฐ 1.0% ็›ฎๆ ‡ +2026-01-12 20:54:53,239 - app.data_sources.base - WARNING - Warning: GD data is delayed (287693s) +2026-01-12 20:54:53,355 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (287693s) +2026-01-12 20:54:53,360 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (287693s) +2026-01-12 20:54:53,360 - app.services.portfolio_monitor - INFO - Running multi-agent analysis for USStock:GD +2026-01-12 20:54:53,377 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-12 20:54:53,377 - app.services.analysis - INFO - Starting analysis USStock:GD, language=en-US, mode=multi-agent +2026-01-12 20:54:53,377 - app.services.analysis - INFO - Run coordinator: USStock:GD +2026-01-12 20:54:53,377 - app.services.agents.coordinator - INFO - Multi-agent analysis start: USStock:GD, model=None, language=en-US +2026-01-12 20:54:57,864 - app.services.agents.tools - INFO - Running news search: "General Dynamics Corp" GD stock news +2026-01-12 20:54:58,609 - app.services.agents.tools - INFO - Deep reading: GD: General Dynamics Corp - Stock Price, Quote and News - CNBC +2026-01-12 20:54:59,459 - app.services.agents.tools - INFO - Deep reading: GD Stock Price | General Dynamics Corp. Stock Quote (U.S.: NYSE ... +2026-01-12 20:55:03,155 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-12 20:55:11,707 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-12 20:55:13,225 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:55:13] "GET /api/strategies/notifications?limit=50&_t=1768222512895 HTTP/1.1" 200 - +2026-01-12 20:55:14,325 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:55:14] "GET /api/strategies/notifications?limit=50&_t=1768222514316 HTTP/1.1" 200 - +2026-01-12 20:55:14,656 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:55:14] "GET /api/portfolio/positions?_t=1768222514344 HTTP/1.1" 200 - +2026-01-12 20:55:14,656 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:55:14] "GET /api/portfolio/summary?_t=1768222514344 HTTP/1.1" 200 - +2026-01-12 20:55:15,293 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:55:15] "GET /api/strategies/notifications?limit=50&_t=1768222515286 HTTP/1.1" 200 - +2026-01-12 20:55:15,638 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (287716s) +2026-01-12 20:55:15,645 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (287716s) +2026-01-12 20:55:15,674 - app.data_sources.base - WARNING - Warning: AMD data is delayed (287716s) +2026-01-12 20:55:15,675 - app.data_sources.base - WARNING - Warning: GD data is delayed (287716s) +2026-01-12 20:55:15,675 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (287716s) +2026-01-12 20:55:15,680 - app.data_sources.base - WARNING - Warning: INTC data is delayed (287716s) +2026-01-12 20:55:15,688 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (287716s) +2026-01-12 20:55:15,689 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (287716s) +2026-01-12 20:55:15,690 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (287716s) +2026-01-12 20:55:15,753 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:55:15] "GET /api/portfolio/summary?_t=1768222515317 HTTP/1.1" 200 - +2026-01-12 20:55:15,797 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:55:15] "GET /api/portfolio/positions?_t=1768222515317 HTTP/1.1" 200 - +2026-01-12 20:55:17,440 - app.services.llm - ERROR - OpenRouter API request error (openai/gpt-4o): Response ended prematurely +2026-01-12 20:55:17,441 - app.services.llm - ERROR - OpenRouter API request error (openai/gpt-4o): Response ended prematurely +2026-01-12 20:55:17,593 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:55:17] "PUT /api/portfolio/alerts/11 HTTP/1.1" 200 - +2026-01-12 20:55:17,940 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:55:17] "GET /api/portfolio/alerts?_t=1768222517621 HTTP/1.1" 200 - +2026-01-12 20:55:20,769 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:55:20] "GET /api/market/types?_t=1768222520758 HTTP/1.1" 200 - +2026-01-12 20:55:21,076 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:55:21] "GET /api/portfolio/monitors?_t=1768222520758 HTTP/1.1" 200 - +2026-01-12 20:55:21,077 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:55:21] "GET /api/portfolio/positions?_t=1768222520758 HTTP/1.1" 200 - +2026-01-12 20:55:21,078 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:55:21] "GET /api/portfolio/summary?_t=1768222520758 HTTP/1.1" 200 - +2026-01-12 20:55:21,078 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:55:21] "GET /api/portfolio/groups?_t=1768222520758 HTTP/1.1" 200 - +2026-01-12 20:55:21,079 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:55:21] "GET /api/portfolio/alerts?_t=1768222520759 HTTP/1.1" 200 - +2026-01-12 20:55:22,857 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:55:22,951 - app.services.llm - INFO - Fallback model succeeded: openai/gpt-4o-mini +2026-01-12 20:55:23,433 - app.services.llm - INFO - Fallback model succeeded: openai/gpt-4o-mini +2026-01-12 20:55:23,435 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-12 20:55:26,418 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:55:26] "PUT /api/portfolio/alerts/9 HTTP/1.1" 200 - +2026-01-12 20:55:26,673 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:55:26] "GET /api/portfolio/alerts?_t=1768222526439 HTTP/1.1" 200 - +2026-01-12 20:55:29,805 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-12 20:55:30,727 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:55:30] "GET /api/market/types?_t=1768222530716 HTTP/1.1" 200 - +2026-01-12 20:55:30,731 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:55:30] "GET /api/portfolio/positions?_t=1768222530716 HTTP/1.1" 200 - +2026-01-12 20:55:31,048 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:55:31] "GET /api/portfolio/summary?_t=1768222530716 HTTP/1.1" 200 - +2026-01-12 20:55:31,049 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:55:31] "GET /api/portfolio/monitors?_t=1768222530716 HTTP/1.1" 200 - +2026-01-12 20:55:31,049 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:55:31] "GET /api/portfolio/groups?_t=1768222530716 HTTP/1.1" 200 - +2026-01-12 20:55:31,051 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:55:31] "GET /api/portfolio/alerts?_t=1768222530716 HTTP/1.1" 200 - +2026-01-12 20:55:31,054 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:55:31] "GET /api/strategies/notifications?limit=50&_t=1768222530716 HTTP/1.1" 200 - +2026-01-12 20:55:33,822 - app.services.agents.reflection - INFO - Recorded analysis for reflection: USStock:GD, will verify after 7 day(s) +2026-01-12 20:55:33,823 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: USStock:GD +2026-01-12 20:55:33,823 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-12 20:55:33,824 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-12 20:55:33,824 - app.services.portfolio_monitor - INFO - Analysis completed for USStock:GD: BUY +2026-01-12 20:55:33,824 - app.services.portfolio_monitor - INFO - Running multi-agent analysis for USStock:OMDA +2026-01-12 20:55:33,833 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-12 20:55:33,834 - app.services.analysis - INFO - Starting analysis USStock:OMDA, language=en-US, mode=multi-agent +2026-01-12 20:55:33,834 - app.services.analysis - INFO - Run coordinator: USStock:OMDA +2026-01-12 20:55:33,834 - app.services.agents.coordinator - INFO - Multi-agent analysis start: USStock:OMDA, model=None, language=en-US +2026-01-12 20:55:37,673 - app.services.agents.tools - INFO - Running news search: "Omada Health Inc" OMDA stock news +2026-01-12 20:55:38,771 - app.services.agents.tools - INFO - Deep reading: Stock Quote & Chart | Omada Health, Inc. +2026-01-12 20:55:40,484 - app.services.agents.tools - INFO - Deep reading: OMADA HEALTH, INC. (OMDA) Stock, Price, News, Quotes ... +2026-01-12 20:55:48,596 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:55:48] "GET /api/strategies/notifications?limit=50&_t=1768222548280 HTTP/1.1" 200 - +2026-01-12 20:55:48,629 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:55:48] "GET /api/portfolio/positions?_t=1768222548313 HTTP/1.1" 200 - +2026-01-12 20:55:48,630 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:55:48] "GET /api/portfolio/summary?_t=1768222548313 HTTP/1.1" 200 - +2026-01-12 20:55:52,878 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:55:55,829 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-12 20:56:00,703 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:56:00] "GET /api/strategies/notifications?limit=50&_t=1768222560694 HTTP/1.1" 200 - +2026-01-12 20:56:01,030 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:56:01] "GET /api/portfolio/positions?_t=1768222560712 HTTP/1.1" 200 - +2026-01-12 20:56:01,030 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:56:01] "GET /api/portfolio/summary?_t=1768222560712 HTTP/1.1" 200 - +2026-01-12 20:56:02,825 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-12 20:56:11,528 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-12 20:56:18,368 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-12 20:56:23,044 - app.services.agents.reflection - INFO - Recorded analysis for reflection: USStock:OMDA, will verify after 7 day(s) +2026-01-12 20:56:23,044 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: USStock:OMDA +2026-01-12 20:56:23,045 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-12 20:56:23,045 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-12 20:56:23,046 - app.services.portfolio_monitor - INFO - Analysis completed for USStock:OMDA: HOLD +2026-01-12 20:56:23,046 - app.services.portfolio_monitor - INFO - Running multi-agent analysis for USStock:SPCE +2026-01-12 20:56:23,055 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-12 20:56:23,055 - app.services.analysis - INFO - Starting analysis USStock:SPCE, language=en-US, mode=multi-agent +2026-01-12 20:56:23,055 - app.services.analysis - INFO - Run coordinator: USStock:SPCE +2026-01-12 20:56:23,055 - app.services.agents.coordinator - INFO - Multi-agent analysis start: USStock:SPCE, model=None, language=en-US +2026-01-12 20:56:23,718 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:56:26,229 - app.services.agents.tools - INFO - Running news search: "Virgin Galactic Holdings Inc" SPCE stock news +2026-01-12 20:56:27,252 - app.services.agents.tools - INFO - Deep reading: Virgin Galactic Holdings, Inc. (SPCE) Stock Price, News, Quote ... +2026-01-12 20:56:28,173 - app.services.agents.tools - INFO - Deep reading: Virgin Galactic (SPCE) Stock Price, News & Analysis +2026-01-12 20:56:30,705 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:56:30] "GET /api/strategies/notifications?limit=50&_t=1768222590697 HTTP/1.1" 200 - +2026-01-12 20:56:31,032 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:56:31] "GET /api/portfolio/positions?_t=1768222590713 HTTP/1.1" 200 - +2026-01-12 20:56:31,033 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:56:31] "GET /api/portfolio/summary?_t=1768222590713 HTTP/1.1" 200 - +2026-01-12 20:56:32,560 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-12 20:56:40,933 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-12 20:56:48,302 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:56:48] "GET /api/strategies/notifications?limit=50&_t=1768222608292 HTTP/1.1" 200 - +2026-01-12 20:56:48,640 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:56:48] "GET /api/portfolio/positions?_t=1768222608329 HTTP/1.1" 200 - +2026-01-12 20:56:48,641 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:56:48] "GET /api/portfolio/summary?_t=1768222608329 HTTP/1.1" 200 - +2026-01-12 20:56:49,684 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-12 20:56:53,735 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:56:56,231 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-12 20:57:00,703 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:00] "GET /api/strategies/notifications?limit=50&_t=1768222620694 HTTP/1.1" 200 - +2026-01-12 20:57:01,049 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:01] "GET /api/portfolio/positions?_t=1768222620713 HTTP/1.1" 200 - +2026-01-12 20:57:01,063 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:01] "GET /api/portfolio/summary?_t=1768222620713 HTTP/1.1" 200 - +2026-01-12 20:57:01,430 - app.services.agents.reflection - INFO - Recorded analysis for reflection: USStock:SPCE, will verify after 7 day(s) +2026-01-12 20:57:01,430 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: USStock:SPCE +2026-01-12 20:57:01,430 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-12 20:57:01,431 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-12 20:57:01,431 - app.services.portfolio_monitor - INFO - Analysis completed for USStock:SPCE: HOLD +2026-01-12 20:57:07,379 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:07] "POST /api/portfolio/monitors/1/run HTTP/1.1" 200 - +2026-01-12 20:57:07,581 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:07] "GET /api/market/types?_t=1768222627574 HTTP/1.1" 200 - +2026-01-12 20:57:07,855 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:07] "GET /api/portfolio/positions?_t=1768222627574 HTTP/1.1" 200 - +2026-01-12 20:57:07,856 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:07] "GET /api/portfolio/summary?_t=1768222627574 HTTP/1.1" 200 - +2026-01-12 20:57:07,856 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:07] "GET /api/portfolio/monitors?_t=1768222627574 HTTP/1.1" 200 - +2026-01-12 20:57:07,861 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:07] "GET /api/portfolio/groups?_t=1768222627574 HTTP/1.1" 200 - +2026-01-12 20:57:07,898 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:07] "GET /api/portfolio/alerts?_t=1768222627574 HTTP/1.1" 200 - +2026-01-12 20:57:07,962 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:07] "GET /api/market/types?_t=1768222627638 HTTP/1.1" 200 - +2026-01-12 20:57:08,182 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:08] "GET /api/portfolio/positions?_t=1768222627638 HTTP/1.1" 200 - +2026-01-12 20:57:08,183 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:08] "GET /api/portfolio/monitors?_t=1768222627638 HTTP/1.1" 200 - +2026-01-12 20:57:08,184 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:08] "GET /api/portfolio/summary?_t=1768222627638 HTTP/1.1" 200 - +2026-01-12 20:57:08,184 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:08] "GET /api/portfolio/groups?_t=1768222627638 HTTP/1.1" 200 - +2026-01-12 20:57:08,211 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:08] "GET /api/portfolio/alerts?_t=1768222627638 HTTP/1.1" 200 - +2026-01-12 20:57:23,751 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:57:28,592 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:28] "GET /api/market/types?_t=1768222648585 HTTP/1.1" 200 - +2026-01-12 20:57:28,817 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:28] "GET /api/portfolio/positions?_t=1768222648585 HTTP/1.1" 200 - +2026-01-12 20:57:28,871 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:28] "GET /api/portfolio/monitors?_t=1768222648585 HTTP/1.1" 200 - +2026-01-12 20:57:28,872 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:28] "GET /api/portfolio/summary?_t=1768222648585 HTTP/1.1" 200 - +2026-01-12 20:57:28,872 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:28] "GET /api/portfolio/groups?_t=1768222648585 HTTP/1.1" 200 - +2026-01-12 20:57:28,873 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:28] "GET /api/portfolio/alerts?_t=1768222648585 HTTP/1.1" 200 - +2026-01-12 20:57:28,943 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:28] "GET /api/market/types?_t=1768222648631 HTTP/1.1" 200 - +2026-01-12 20:57:29,144 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:29] "GET /api/portfolio/positions?_t=1768222648631 HTTP/1.1" 200 - +2026-01-12 20:57:29,195 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:29] "GET /api/portfolio/summary?_t=1768222648631 HTTP/1.1" 200 - +2026-01-12 20:57:29,195 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:29] "GET /api/portfolio/monitors?_t=1768222648631 HTTP/1.1" 200 - +2026-01-12 20:57:29,196 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:29] "GET /api/portfolio/groups?_t=1768222648631 HTTP/1.1" 200 - +2026-01-12 20:57:29,196 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:29] "GET /api/portfolio/alerts?_t=1768222648631 HTTP/1.1" 200 - +2026-01-12 20:57:31,013 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:31] "GET /api/strategies/notifications?limit=50&_t=1768222650697 HTTP/1.1" 200 - +2026-01-12 20:57:48,295 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:48] "GET /api/strategies/notifications?limit=50&_t=1768222668284 HTTP/1.1" 200 - +2026-01-12 20:57:53,775 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:57:56,013 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:56] "GET /api/market/types?_t=1768222675998 HTTP/1.1" 200 - +2026-01-12 20:57:56,019 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:56] "GET /api/portfolio/summary?_t=1768222675998 HTTP/1.1" 200 - +2026-01-12 20:57:56,020 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:56] "GET /api/portfolio/positions?_t=1768222675998 HTTP/1.1" 200 - +2026-01-12 20:57:56,020 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:56] "GET /api/portfolio/alerts?_t=1768222675998 HTTP/1.1" 200 - +2026-01-12 20:57:56,021 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:56] "GET /api/portfolio/groups?_t=1768222675998 HTTP/1.1" 200 - +2026-01-12 20:57:56,032 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:56] "GET /api/portfolio/monitors?_t=1768222675998 HTTP/1.1" 200 - +2026-01-12 20:57:56,333 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:56] "GET /api/strategies/notifications?limit=50&_t=1768222675999 HTTP/1.1" 200 - +2026-01-12 20:57:56,699 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:56] "GET /api/market/types?_t=1768222676690 HTTP/1.1" 200 - +2026-01-12 20:57:56,702 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:56] "GET /api/portfolio/positions?_t=1768222676690 HTTP/1.1" 200 - +2026-01-12 20:57:57,012 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:57] "GET /api/portfolio/summary?_t=1768222676690 HTTP/1.1" 200 - +2026-01-12 20:57:57,016 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:57] "GET /api/portfolio/monitors?_t=1768222676690 HTTP/1.1" 200 - +2026-01-12 20:57:57,017 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:57] "GET /api/portfolio/groups?_t=1768222676690 HTTP/1.1" 200 - +2026-01-12 20:57:57,018 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:57] "GET /api/portfolio/alerts?_t=1768222676690 HTTP/1.1" 200 - +2026-01-12 20:57:57,020 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:57:57] "GET /api/strategies/notifications?limit=50&_t=1768222676690 HTTP/1.1" 200 - +2026-01-12 20:58:23,791 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:58:25,985 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:58:25] "GET /api/strategies/notifications?limit=50&_t=1768222705977 HTTP/1.1" 200 - +2026-01-12 20:58:26,006 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:58:26] "GET /api/portfolio/positions?_t=1768222705996 HTTP/1.1" 200 - +2026-01-12 20:58:26,311 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:58:26] "GET /api/portfolio/summary?_t=1768222705996 HTTP/1.1" 200 - +2026-01-12 20:58:27,601 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:58:27] "GET /api/strategies/notifications?limit=50&_t=1768222707285 HTTP/1.1" 200 - +2026-01-12 20:58:27,649 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:58:27] "GET /api/portfolio/positions?_t=1768222707334 HTTP/1.1" 200 - +2026-01-12 20:58:27,650 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:58:27] "GET /api/portfolio/summary?_t=1768222707334 HTTP/1.1" 200 - +2026-01-12 20:58:53,815 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:58:54,861 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:58:54] "GET /api/market/types?_t=1768222734853 HTTP/1.1" 200 - +2026-01-12 20:58:55,135 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:58:55] "GET /api/portfolio/summary?_t=1768222734853 HTTP/1.1" 200 - +2026-01-12 20:58:55,135 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:58:55] "GET /api/portfolio/monitors?_t=1768222734853 HTTP/1.1" 200 - +2026-01-12 20:58:55,135 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:58:55] "GET /api/portfolio/groups?_t=1768222734853 HTTP/1.1" 200 - +2026-01-12 20:58:55,136 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:58:55] "GET /api/portfolio/positions?_t=1768222734853 HTTP/1.1" 200 - +2026-01-12 20:58:55,179 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:58:55] "GET /api/portfolio/alerts?_t=1768222734853 HTTP/1.1" 200 - +2026-01-12 20:58:55,184 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:58:55] "GET /api/market/types?_t=1768222734868 HTTP/1.1" 200 - +2026-01-12 20:58:55,462 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:58:55] "GET /api/portfolio/monitors?_t=1768222734869 HTTP/1.1" 200 - +2026-01-12 20:58:55,462 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:58:55] "GET /api/portfolio/positions?_t=1768222734868 HTTP/1.1" 200 - +2026-01-12 20:58:55,463 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:58:55] "GET /api/portfolio/summary?_t=1768222734869 HTTP/1.1" 200 - +2026-01-12 20:58:55,463 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:58:55] "GET /api/portfolio/groups?_t=1768222734869 HTTP/1.1" 200 - +2026-01-12 20:58:55,488 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:58:55] "GET /api/portfolio/alerts?_t=1768222734869 HTTP/1.1" 200 - +2026-01-12 20:58:56,296 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:58:56] "GET /api/strategies/notifications?limit=50&_t=1768222735978 HTTP/1.1" 200 - +2026-01-12 20:58:57,294 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:58:57] "GET /api/strategies/notifications?limit=50&_t=1768222737285 HTTP/1.1" 200 - +2026-01-12 20:59:23,838 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:59:25,639 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:59:25] "GET /api/portfolio/positions?_t=1768222765326 HTTP/1.1" 200 - +2026-01-12 20:59:25,640 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:59:25] "GET /api/portfolio/summary?_t=1768222765326 HTTP/1.1" 200 - +2026-01-12 20:59:25,649 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:59:25] "GET /api/portfolio/positions?_t=1768222765332 HTTP/1.1" 200 - +2026-01-12 20:59:25,650 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:59:25] "GET /api/portfolio/summary?_t=1768222765332 HTTP/1.1" 200 - +2026-01-12 20:59:26,290 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:59:26] "GET /api/strategies/notifications?limit=50&_t=1768222766283 HTTP/1.1" 200 - +2026-01-12 20:59:27,611 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:59:27] "GET /api/strategies/notifications?limit=50&_t=1768222767289 HTTP/1.1" 200 - +2026-01-12 20:59:53,860 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 20:59:55,350 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:59:55] "GET /api/portfolio/positions?_t=1768222795326 HTTP/1.1" 200 - +2026-01-12 20:59:55,690 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:59:55] "GET /api/portfolio/positions?_t=1768222795330 HTTP/1.1" 200 - +2026-01-12 20:59:55,705 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:59:55] "GET /api/portfolio/summary?_t=1768222795330 HTTP/1.1" 200 - +2026-01-12 20:59:55,706 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:59:55] "GET /api/portfolio/summary?_t=1768222795326 HTTP/1.1" 200 - +2026-01-12 20:59:56,605 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:59:56] "GET /api/strategies/notifications?limit=50&_t=1768222796290 HTTP/1.1" 200 - +2026-01-12 20:59:57,301 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 20:59:57] "GET /api/strategies/notifications?limit=50&_t=1768222797285 HTTP/1.1" 200 - +2026-01-12 21:00:23,889 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 4.0% has reached 1.0% target +2026-01-12 21:00:25,660 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (288026s) +2026-01-12 21:00:25,666 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (288026s) +2026-01-12 21:00:25,671 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (288026s) +2026-01-12 21:00:25,685 - app.data_sources.base - WARNING - Warning: GD data is delayed (288026s) +2026-01-12 21:00:25,690 - app.data_sources.base - WARNING - Warning: AMD data is delayed (288026s) +2026-01-12 21:00:25,691 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (288026s) +2026-01-12 21:00:25,700 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (288026s) +2026-01-12 21:00:25,701 - app.data_sources.base - WARNING - Warning: INTC data is delayed (288026s) +2026-01-12 21:00:25,701 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (288026s) +2026-01-12 21:00:25,715 - app.data_sources.base - WARNING - Warning: GD data is delayed (288026s) +2026-01-12 21:00:25,718 - app.data_sources.base - WARNING - Warning: INTC data is delayed (288026s) +2026-01-12 21:00:25,719 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (288026s) +2026-01-12 21:00:25,725 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (288026s) +2026-01-12 21:00:25,732 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:00:25] "GET /api/portfolio/positions?_t=1768222825329 HTTP/1.1" 200 - +2026-01-12 21:00:25,733 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (288026s) +2026-01-12 21:00:25,738 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (288026s) +2026-01-12 21:00:25,909 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:00:25] "GET /api/portfolio/summary?_t=1768222825329 HTTP/1.1" 200 - +2026-01-12 21:00:26,294 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:00:26] "GET /api/portfolio/positions?_t=1768222825335 HTTP/1.1" 200 - +2026-01-12 21:00:26,296 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:00:26] "GET /api/strategies/notifications?limit=50&_t=1768222826282 HTTP/1.1" 200 - +2026-01-12 21:00:26,547 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:00:26] "GET /api/portfolio/summary?_t=1768222825335 HTTP/1.1" 200 - +2026-01-12 21:00:27,603 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:00:27] "GET /api/strategies/notifications?limit=50&_t=1768222827289 HTTP/1.1" 200 - +2026-01-12 21:00:34,064 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:00:34] "GET /api/market/types?_t=1768222834052 HTTP/1.1" 200 - +2026-01-12 21:00:34,067 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:00:34] "GET /api/portfolio/positions?_t=1768222834052 HTTP/1.1" 200 - +2026-01-12 21:00:34,393 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:00:34] "GET /api/portfolio/monitors?_t=1768222834052 HTTP/1.1" 200 - +2026-01-12 21:00:34,394 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:00:34] "GET /api/portfolio/groups?_t=1768222834052 HTTP/1.1" 200 - +2026-01-12 21:00:34,395 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:00:34] "GET /api/portfolio/summary?_t=1768222834052 HTTP/1.1" 200 - +2026-01-12 21:00:34,396 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:00:34] "GET /api/portfolio/alerts?_t=1768222834052 HTTP/1.1" 200 - +2026-01-12 21:00:34,397 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:00:34] "GET /api/strategies/notifications?limit=50&_t=1768222834052 HTTP/1.1" 200 - +2026-01-12 21:00:40,438 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-12 21:00:40,438 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-12 21:00:40,439 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-12 21:00:40,440 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-12 21:00:40,451 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 21:00:40,457 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 21:00:40,795 - app.services.strategy - INFO - Found 0 running strategies: [] +2026-01-12 21:00:40,795 - app - INFO - No running strategies to restore. +2026-01-12 21:00:40,819 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-12 21:00:40,820 - werkzeug - INFO - Press CTRL+C to quit +2026-01-12 21:00:42,530 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 21:00:43,642 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:00:43] "GET /api/market/types?_t=1768222843631 HTTP/1.1" 200 - +2026-01-12 21:00:43,768 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 21:00:43,768 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 21:00:43,769 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 21:00:43,769 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 21:00:43,769 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 21:00:43,769 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 21:00:43,769 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 21:00:43,770 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 21:00:43,770 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 21:00:43,964 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:00:43] "GET /api/portfolio/monitors?_t=1768222843631 HTTP/1.1" 200 - +2026-01-12 21:00:43,965 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:00:43] "GET /api/portfolio/groups?_t=1768222843632 HTTP/1.1" 200 - +2026-01-12 21:00:43,965 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:00:43] "GET /api/portfolio/alerts?_t=1768222843632 HTTP/1.1" 200 - +2026-01-12 21:00:43,966 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:00:43] "GET /api/strategies/notifications?limit=50&_t=1768222843632 HTTP/1.1" 200 - +2026-01-12 21:00:44,752 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (288045s) +2026-01-12 21:00:44,792 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (288045s) +2026-01-12 21:00:44,792 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (288045s) +2026-01-12 21:00:44,805 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (288045s) +2026-01-12 21:00:44,826 - app.data_sources.base - WARNING - Warning: INTC data is delayed (288045s) +2026-01-12 21:00:44,833 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (288045s) +2026-01-12 21:00:44,925 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (288045s) +2026-01-12 21:00:44,956 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (288045s) +2026-01-12 21:00:44,962 - app.data_sources.base - WARNING - Warning: INTC data is delayed (288045s) +2026-01-12 21:00:44,968 - app.data_sources.base - WARNING - Warning: GD data is delayed (288045s) +2026-01-12 21:00:44,982 - app.data_sources.base - WARNING - Warning: AMD data is delayed (288045s) +2026-01-12 21:00:44,987 - app.data_sources.base - WARNING - Warning: AMD data is delayed (288045s) +2026-01-12 21:00:45,004 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (288045s) +2026-01-12 21:00:45,114 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (288045s) +2026-01-12 21:00:45,114 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:00:45] "GET /api/portfolio/positions?_t=1768222843631 HTTP/1.1" 200 - +2026-01-12 21:00:45,194 - app.data_sources.base - WARNING - Warning: GD data is delayed (288045s) +2026-01-12 21:00:45,195 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (288045s) +2026-01-12 21:00:45,196 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:00:45] "GET /api/portfolio/summary?_t=1768222843631 HTTP/1.1" 200 - +2026-01-12 21:00:50,803 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:00:50] "DELETE /api/portfolio/alerts/9 HTTP/1.1" 200 - +2026-01-12 21:00:51,056 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:00:51] "GET /api/portfolio/alerts?_t=1768222850829 HTTP/1.1" 200 - +2026-01-12 21:00:53,738 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:00:53] "GET /api/market/types?_t=1768222853729 HTTP/1.1" 200 - +2026-01-12 21:00:54,050 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:00:54] "GET /api/portfolio/monitors?_t=1768222853729 HTTP/1.1" 200 - +2026-01-12 21:00:54,051 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:00:54] "GET /api/portfolio/summary?_t=1768222853729 HTTP/1.1" 200 - +2026-01-12 21:00:54,051 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:00:54] "GET /api/portfolio/positions?_t=1768222853729 HTTP/1.1" 200 - +2026-01-12 21:00:54,051 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:00:54] "GET /api/portfolio/groups?_t=1768222853729 HTTP/1.1" 200 - +2026-01-12 21:00:54,053 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:00:54] "GET /api/portfolio/alerts?_t=1768222853729 HTTP/1.1" 200 - +2026-01-12 21:00:55,659 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:00:55] "GET /api/portfolio/positions?_t=1768222855335 HTTP/1.1" 200 - +2026-01-12 21:00:55,659 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:00:55] "GET /api/portfolio/summary?_t=1768222855335 HTTP/1.1" 200 - +2026-01-12 21:00:57,305 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:00:57] "GET /api/strategies/notifications?limit=50&_t=1768222857289 HTTP/1.1" 200 - +2026-01-12 21:00:58,056 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:00:58] "DELETE /api/portfolio/alerts/8 HTTP/1.1" 200 - +2026-01-12 21:00:58,317 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:00:58] "GET /api/portfolio/alerts?_t=1768222858080 HTTP/1.1" 200 - +2026-01-12 21:01:03,824 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:01:03] "GET /api/market/types?_t=1768222863817 HTTP/1.1" 200 - +2026-01-12 21:01:04,150 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:01:04] "GET /api/portfolio/summary?_t=1768222863817 HTTP/1.1" 200 - +2026-01-12 21:01:04,150 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:01:04] "GET /api/portfolio/positions?_t=1768222863817 HTTP/1.1" 200 - +2026-01-12 21:01:04,150 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:01:04] "GET /api/portfolio/groups?_t=1768222863817 HTTP/1.1" 200 - +2026-01-12 21:01:04,151 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:01:04] "GET /api/portfolio/alerts?_t=1768222863817 HTTP/1.1" 200 - +2026-01-12 21:01:04,152 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:01:04] "GET /api/portfolio/monitors?_t=1768222863817 HTTP/1.1" 200 - +2026-01-12 21:01:10,171 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:01:10] "DELETE /api/portfolio/alerts/7 HTTP/1.1" 200 - +2026-01-12 21:01:10,431 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:01:10] "GET /api/portfolio/alerts?_t=1768222870196 HTTP/1.1" 200 - +2026-01-12 21:01:12,583 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 21:01:13,608 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:01:13] "GET /api/strategies/notifications?limit=50&_t=1768222873600 HTTP/1.1" 200 - +2026-01-12 21:01:25,484 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:01:25] "DELETE /api/portfolio/alerts/11 HTTP/1.1" 200 - +2026-01-12 21:01:25,670 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:01:25] "GET /api/portfolio/summary?_t=1768222885347 HTTP/1.1" 200 - +2026-01-12 21:01:25,677 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:01:25] "GET /api/portfolio/positions?_t=1768222885347 HTTP/1.1" 200 - +2026-01-12 21:01:25,729 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:01:25] "GET /api/portfolio/alerts?_t=1768222885510 HTTP/1.1" 200 - +2026-01-12 21:01:27,414 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:01:27] "GET /api/market/types?_t=1768222887406 HTTP/1.1" 200 - +2026-01-12 21:01:27,736 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:01:27] "GET /api/portfolio/positions?_t=1768222887406 HTTP/1.1" 200 - +2026-01-12 21:01:27,737 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:01:27] "GET /api/portfolio/monitors?_t=1768222887406 HTTP/1.1" 200 - +2026-01-12 21:01:27,738 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:01:27] "GET /api/portfolio/alerts?_t=1768222887406 HTTP/1.1" 200 - +2026-01-12 21:01:27,738 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:01:27] "GET /api/portfolio/summary?_t=1768222887406 HTTP/1.1" 200 - +2026-01-12 21:01:27,739 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:01:27] "GET /api/portfolio/groups?_t=1768222887406 HTTP/1.1" 200 - +2026-01-12 21:01:31,367 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:01:31] "DELETE /api/portfolio/alerts/10 HTTP/1.1" 200 - +2026-01-12 21:01:31,646 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:01:31] "GET /api/portfolio/alerts?_t=1768222891389 HTTP/1.1" 200 - +2026-01-12 21:01:33,304 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:01:33] "GET /api/market/types?_t=1768222893295 HTTP/1.1" 200 - +2026-01-12 21:01:33,622 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:01:33] "GET /api/portfolio/summary?_t=1768222893295 HTTP/1.1" 200 - +2026-01-12 21:01:33,623 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:01:33] "GET /api/portfolio/positions?_t=1768222893295 HTTP/1.1" 200 - +2026-01-12 21:01:33,624 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:01:33] "GET /api/portfolio/monitors?_t=1768222893295 HTTP/1.1" 200 - +2026-01-12 21:01:33,625 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:01:33] "GET /api/portfolio/groups?_t=1768222893295 HTTP/1.1" 200 - +2026-01-12 21:01:33,624 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:01:33] "GET /api/portfolio/alerts?_t=1768222893295 HTTP/1.1" 200 - +2026-01-12 21:01:42,601 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 21:01:43,925 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:01:43] "GET /api/strategies/notifications?limit=50&_t=1768222903608 HTTP/1.1" 200 - +2026-01-12 21:01:48,297 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:01:48] "GET /api/strategies/notifications?limit=50&_t=1768222908287 HTTP/1.1" 200 - +2026-01-12 21:01:55,659 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:01:55] "GET /api/portfolio/positions?_t=1768222915338 HTTP/1.1" 200 - +2026-01-12 21:01:55,660 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:01:55] "GET /api/portfolio/summary?_t=1768222915338 HTTP/1.1" 200 - +2026-01-12 21:02:03,317 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:02:03] "GET /api/portfolio/positions?_t=1768222923308 HTTP/1.1" 200 - +2026-01-12 21:02:03,623 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:02:03] "GET /api/portfolio/summary?_t=1768222923308 HTTP/1.1" 200 - +2026-01-12 21:02:12,629 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 21:02:13,920 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:02:13] "GET /api/strategies/notifications?limit=50&_t=1768222933605 HTTP/1.1" 200 - +2026-01-12 21:02:33,316 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:02:33] "GET /api/portfolio/positions?_t=1768222953306 HTTP/1.1" 200 - +2026-01-12 21:02:33,622 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:02:33] "GET /api/portfolio/summary?_t=1768222953306 HTTP/1.1" 200 - +2026-01-12 21:02:42,653 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 21:02:44,602 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:02:44] "GET /api/strategies/notifications?limit=50&_t=1768222964283 HTTP/1.1" 200 - +2026-01-12 21:02:48,295 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:02:48] "GET /api/strategies/notifications?limit=50&_t=1768222968283 HTTP/1.1" 200 - +2026-01-12 21:02:48,660 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:02:48] "GET /api/portfolio/positions?_t=1768222968333 HTTP/1.1" 200 - +2026-01-12 21:02:48,661 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:02:48] "GET /api/portfolio/summary?_t=1768222968333 HTTP/1.1" 200 - +2026-01-12 21:03:04,319 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:03:04] "GET /api/portfolio/positions?_t=1768222984309 HTTP/1.1" 200 - +2026-01-12 21:03:04,631 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:03:04] "GET /api/portfolio/summary?_t=1768222984309 HTTP/1.1" 200 - +2026-01-12 21:03:12,683 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 21:03:14,596 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:03:14] "GET /api/strategies/notifications?limit=50&_t=1768222994284 HTTP/1.1" 200 - +2026-01-12 21:03:34,306 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:03:34] "GET /api/portfolio/positions?_t=1768223014298 HTTP/1.1" 200 - +2026-01-12 21:03:34,635 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:03:34] "GET /api/portfolio/summary?_t=1768223014298 HTTP/1.1" 200 - +2026-01-12 21:03:42,699 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 21:03:44,598 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:03:44] "GET /api/strategies/notifications?limit=50&_t=1768223024280 HTTP/1.1" 200 - +2026-01-12 21:03:44,646 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:03:44] "GET /api/portfolio/positions?_t=1768223024323 HTTP/1.1" 200 - +2026-01-12 21:03:44,646 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:03:44] "GET /api/portfolio/summary?_t=1768223024323 HTTP/1.1" 200 - +2026-01-12 21:03:44,647 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:03:44] "GET /api/strategies/notifications?limit=50&_t=1768223024325 HTTP/1.1" 200 - +2026-01-12 21:04:05,503 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:04:05] "GET /api/portfolio/positions?_t=1768223044329 HTTP/1.1" 200 - +2026-01-12 21:04:05,504 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:04:05] "GET /api/portfolio/summary?_t=1768223044329 HTTP/1.1" 200 - +2026-01-12 21:04:06,656 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:04:06] "GET /api/portfolio/positions?_t=1768223046335 HTTP/1.1" 200 - +2026-01-12 21:04:06,656 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:04:06] "GET /api/portfolio/summary?_t=1768223046335 HTTP/1.1" 200 - +2026-01-12 21:04:06,657 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:04:06] "GET /api/strategies/notifications?limit=50&_t=1768223046337 HTTP/1.1" 200 - +2026-01-12 21:04:12,727 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 21:04:20,291 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:04:20] "GET /api/strategies/notifications?limit=50&_t=1768223060282 HTTP/1.1" 200 - +2026-01-12 21:04:34,642 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:04:34] "GET /api/portfolio/positions?_t=1768223074326 HTTP/1.1" 200 - +2026-01-12 21:04:34,642 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:04:34] "GET /api/portfolio/summary?_t=1768223074326 HTTP/1.1" 200 - +2026-01-12 21:04:42,748 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 21:04:48,303 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:04:48] "GET /api/strategies/notifications?limit=50&_t=1768223088293 HTTP/1.1" 200 - +2026-01-12 21:04:48,652 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:04:48] "GET /api/portfolio/positions?_t=1768223088332 HTTP/1.1" 200 - +2026-01-12 21:04:48,652 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:04:48] "GET /api/portfolio/summary?_t=1768223088332 HTTP/1.1" 200 - +2026-01-12 21:04:48,654 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:04:48] "GET /api/strategies/notifications?limit=50&_t=1768223088333 HTTP/1.1" 200 - +2026-01-12 21:05:12,771 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 21:05:42,859 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 21:05:48,334 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (288348s) +2026-01-12 21:05:48,346 - app.data_sources.base - WARNING - Warning: AMD data is delayed (288348s) +2026-01-12 21:05:48,348 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (288348s) +2026-01-12 21:05:48,352 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (288348s) +2026-01-12 21:05:48,353 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (288348s) +2026-01-12 21:05:48,353 - app.data_sources.base - WARNING - Warning: INTC data is delayed (288348s) +2026-01-12 21:05:48,364 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (288348s) +2026-01-12 21:05:48,369 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (288348s) +2026-01-12 21:05:48,369 - app.data_sources.base - WARNING - Warning: GD data is delayed (288348s) +2026-01-12 21:05:48,536 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:05:48] "GET /api/portfolio/positions?_t=1768223148310 HTTP/1.1" 200 - +2026-01-12 21:05:48,634 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:05:48] "GET /api/portfolio/summary?_t=1768223148310 HTTP/1.1" 200 - +2026-01-12 21:05:48,635 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:05:48] "GET /api/portfolio/positions?_t=1768223148311 HTTP/1.1" 200 - +2026-01-12 21:05:48,636 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:05:48] "GET /api/strategies/notifications?limit=50&_t=1768223148311 HTTP/1.1" 200 - +2026-01-12 21:05:48,638 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:05:48] "GET /api/portfolio/summary?_t=1768223148311 HTTP/1.1" 200 - +2026-01-12 21:05:48,639 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:05:48] "GET /api/strategies/notifications?limit=50&_t=1768223148313 HTTP/1.1" 200 - +2026-01-12 21:06:12,875 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 21:06:42,912 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 21:06:48,630 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:06:48] "GET /api/portfolio/positions?_t=1768223208309 HTTP/1.1" 200 - +2026-01-12 21:06:48,631 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:06:48] "GET /api/portfolio/summary?_t=1768223208309 HTTP/1.1" 200 - +2026-01-12 21:06:48,631 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:06:48] "GET /api/strategies/notifications?limit=50&_t=1768223208311 HTTP/1.1" 200 - +2026-01-12 21:06:48,640 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:06:48] "GET /api/portfolio/summary?_t=1768223208323 HTTP/1.1" 200 - +2026-01-12 21:06:48,642 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:06:48] "GET /api/portfolio/positions?_t=1768223208323 HTTP/1.1" 200 - +2026-01-12 21:06:48,648 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:06:48] "GET /api/strategies/notifications?limit=50&_t=1768223208324 HTTP/1.1" 200 - +2026-01-12 21:07:12,943 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 21:07:42,962 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 21:07:48,634 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:07:48] "GET /api/portfolio/summary?_t=1768223268316 HTTP/1.1" 200 - +2026-01-12 21:07:48,634 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:07:48] "GET /api/portfolio/positions?_t=1768223268314 HTTP/1.1" 200 - +2026-01-12 21:07:48,636 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:07:48] "GET /api/portfolio/summary?_t=1768223268314 HTTP/1.1" 200 - +2026-01-12 21:07:48,636 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:07:48] "GET /api/portfolio/positions?_t=1768223268315 HTTP/1.1" 200 - +2026-01-12 21:07:48,639 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:07:48] "GET /api/strategies/notifications?limit=50&_t=1768223268315 HTTP/1.1" 200 - +2026-01-12 21:07:48,640 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:07:48] "GET /api/strategies/notifications?limit=50&_t=1768223268317 HTTP/1.1" 200 - +2026-01-12 21:08:12,991 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 21:08:43,017 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 21:08:48,641 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:08:48] "GET /api/portfolio/positions?_t=1768223328324 HTTP/1.1" 200 - +2026-01-12 21:08:48,642 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:08:48] "GET /api/portfolio/summary?_t=1768223328324 HTTP/1.1" 200 - +2026-01-12 21:08:48,643 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:08:48] "GET /api/strategies/notifications?limit=50&_t=1768223328326 HTTP/1.1" 200 - +2026-01-12 21:08:48,659 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:08:48] "GET /api/portfolio/positions?_t=1768223328341 HTTP/1.1" 200 - +2026-01-12 21:08:48,660 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:08:48] "GET /api/portfolio/summary?_t=1768223328341 HTTP/1.1" 200 - +2026-01-12 21:08:48,665 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:08:48] "GET /api/strategies/notifications?limit=50&_t=1768223328343 HTTP/1.1" 200 - +2026-01-12 21:08:52,569 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:08:52] "GET /api/market/types?_t=1768223332251 HTTP/1.1" 200 - +2026-01-12 21:08:52,573 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:08:52] "GET /api/portfolio/positions?_t=1768223332251 HTTP/1.1" 200 - +2026-01-12 21:08:52,574 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:08:52] "GET /api/portfolio/summary?_t=1768223332251 HTTP/1.1" 200 - +2026-01-12 21:08:52,574 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:08:52] "GET /api/portfolio/monitors?_t=1768223332252 HTTP/1.1" 200 - +2026-01-12 21:08:52,574 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:08:52] "GET /api/portfolio/groups?_t=1768223332252 HTTP/1.1" 200 - +2026-01-12 21:08:52,575 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:08:52] "GET /api/portfolio/alerts?_t=1768223332252 HTTP/1.1" 200 - +2026-01-12 21:08:56,357 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:08:56] "DELETE /api/portfolio/alerts/6 HTTP/1.1" 200 - +2026-01-12 21:08:56,601 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:08:56] "GET /api/portfolio/alerts?_t=1768223336379 HTTP/1.1" 200 - +2026-01-12 21:09:13,042 - app.services.portfolio_monitor - INFO - Alert #1 triggered: ๐ŸŽ‰ Profit Alert: ETH/USDT P&L 3.9% has reached 1.0% target +2026-01-12 21:09:13,623 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:09:13] "GET /api/market/types?_t=1768223353615 HTTP/1.1" 200 - +2026-01-12 21:09:13,940 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:09:13] "GET /api/portfolio/groups?_t=1768223353615 HTTP/1.1" 200 - +2026-01-12 21:09:13,940 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:09:13] "GET /api/portfolio/positions?_t=1768223353615 HTTP/1.1" 200 - +2026-01-12 21:09:13,941 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:09:13] "GET /api/portfolio/monitors?_t=1768223353615 HTTP/1.1" 200 - +2026-01-12 21:09:13,942 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:09:13] "GET /api/portfolio/alerts?_t=1768223353615 HTTP/1.1" 200 - +2026-01-12 21:09:13,942 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:09:13] "GET /api/portfolio/summary?_t=1768223353615 HTTP/1.1" 200 - +2026-01-12 21:09:13,945 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:09:13] "GET /api/strategies/notifications?limit=50&_t=1768223353620 HTTP/1.1" 200 - +2026-01-12 21:09:19,020 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:09:19] "DELETE /api/portfolio/alerts/1 HTTP/1.1" 200 - +2026-01-12 21:09:19,277 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:09:19] "GET /api/portfolio/alerts?_t=1768223359044 HTTP/1.1" 200 - +2026-01-12 21:09:22,796 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:09:22] "DELETE /api/portfolio/alerts/5 HTTP/1.1" 200 - +2026-01-12 21:09:23,134 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:09:23] "GET /api/portfolio/alerts?_t=1768223362823 HTTP/1.1" 200 - +2026-01-12 21:09:26,224 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:09:26] "DELETE /api/portfolio/alerts/4 HTTP/1.1" 200 - +2026-01-12 21:09:26,575 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:09:26] "GET /api/portfolio/alerts?_t=1768223366250 HTTP/1.1" 200 - +2026-01-12 21:09:29,267 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:09:29] "DELETE /api/portfolio/alerts/3 HTTP/1.1" 200 - +2026-01-12 21:09:29,621 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:09:29] "GET /api/portfolio/alerts?_t=1768223369301 HTTP/1.1" 200 - +2026-01-12 21:09:32,098 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:09:32] "DELETE /api/portfolio/alerts/2 HTTP/1.1" 200 - +2026-01-12 21:09:32,442 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:09:32] "GET /api/portfolio/alerts?_t=1768223372126 HTTP/1.1" 200 - +2026-01-12 21:09:43,608 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:09:43] "GET /api/strategies/notifications?limit=50&_t=1768223383600 HTTP/1.1" 200 - +2026-01-12 21:09:43,949 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:09:43] "GET /api/portfolio/positions?_t=1768223383625 HTTP/1.1" 200 - +2026-01-12 21:09:43,950 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:09:43] "GET /api/portfolio/summary?_t=1768223383625 HTTP/1.1" 200 - +2026-01-12 21:09:48,322 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:09:48] "GET /api/portfolio/positions?_t=1768223388315 HTTP/1.1" 200 - +2026-01-12 21:09:48,630 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:09:48] "GET /api/portfolio/summary?_t=1768223388315 HTTP/1.1" 200 - +2026-01-12 21:09:48,630 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:09:48] "GET /api/strategies/notifications?limit=50&_t=1768223388316 HTTP/1.1" 200 - +2026-01-12 21:09:57,206 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:09:57] "GET /api/strategies/notifications?limit=50&_t=1768223396874 HTTP/1.1" 200 - +2026-01-12 21:09:57,750 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:09:57] "POST /api/strategies/notifications/read HTTP/1.1" 200 - +2026-01-12 21:10:00,453 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:10:00] "GET /api/strategies/notifications?limit=50&_t=1768223400119 HTTP/1.1" 200 - +2026-01-12 21:10:00,834 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:10:00] "POST /api/strategies/notifications/read-all HTTP/1.1" 200 - +2026-01-12 21:10:13,920 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:10:13] "GET /api/strategies/notifications?limit=50&_t=1768223413600 HTTP/1.1" 200 - +2026-01-12 21:10:13,951 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:10:13] "GET /api/portfolio/positions?_t=1768223413637 HTTP/1.1" 200 - +2026-01-12 21:10:13,953 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:10:13] "GET /api/portfolio/summary?_t=1768223413637 HTTP/1.1" 200 - +2026-01-12 21:10:43,622 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:10:43] "GET /api/strategies/notifications?limit=50&_t=1768223443611 HTTP/1.1" 200 - +2026-01-12 21:10:43,958 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:10:43] "GET /api/portfolio/positions?_t=1768223443638 HTTP/1.1" 200 - +2026-01-12 21:10:43,959 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:10:43] "GET /api/portfolio/summary?_t=1768223443638 HTTP/1.1" 200 - +2026-01-12 21:10:48,330 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:10:48] "GET /api/portfolio/positions?_t=1768223448321 HTTP/1.1" 200 - +2026-01-12 21:10:48,631 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:10:48] "GET /api/portfolio/summary?_t=1768223448321 HTTP/1.1" 200 - +2026-01-12 21:10:48,632 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:10:48] "GET /api/strategies/notifications?limit=50&_t=1768223448323 HTTP/1.1" 200 - +2026-01-12 21:11:13,928 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:11:13] "GET /api/strategies/notifications?limit=50&_t=1768223473613 HTTP/1.1" 200 - +2026-01-12 21:11:13,972 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (288674s) +2026-01-12 21:11:13,982 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (288674s) +2026-01-12 21:11:13,982 - app.data_sources.base - WARNING - Warning: AMD data is delayed (288674s) +2026-01-12 21:11:13,994 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (288674s) +2026-01-12 21:11:14,008 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (288674s) +2026-01-12 21:11:14,008 - app.data_sources.base - WARNING - Warning: INTC data is delayed (288674s) +2026-01-12 21:11:14,009 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (288674s) +2026-01-12 21:11:14,009 - app.data_sources.base - WARNING - Warning: GD data is delayed (288674s) +2026-01-12 21:11:14,015 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (288674s) +2026-01-12 21:11:14,024 - app.data_sources.base - WARNING - Warning: INTC data is delayed (288674s) +2026-01-12 21:11:14,039 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (288674s) +2026-01-12 21:11:14,041 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (288674s) +2026-01-12 21:11:14,041 - app.data_sources.base - WARNING - Warning: GD data is delayed (288674s) +2026-01-12 21:11:14,153 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:11:14] "GET /api/portfolio/positions?_t=1768223473636 HTTP/1.1" 200 - +2026-01-12 21:11:14,812 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:11:14] "GET /api/portfolio/summary?_t=1768223473636 HTTP/1.1" 200 - +2026-01-12 21:11:43,618 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:11:43] "GET /api/strategies/notifications?limit=50&_t=1768223503610 HTTP/1.1" 200 - +2026-01-12 21:11:43,958 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:11:43] "GET /api/portfolio/positions?_t=1768223503634 HTTP/1.1" 200 - +2026-01-12 21:11:43,958 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:11:43] "GET /api/portfolio/summary?_t=1768223503634 HTTP/1.1" 200 - +2026-01-12 21:11:48,329 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:11:48] "GET /api/portfolio/positions?_t=1768223508321 HTTP/1.1" 200 - +2026-01-12 21:11:48,637 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:11:48] "GET /api/portfolio/summary?_t=1768223508321 HTTP/1.1" 200 - +2026-01-12 21:11:48,638 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:11:48] "GET /api/strategies/notifications?limit=50&_t=1768223508322 HTTP/1.1" 200 - +2026-01-12 21:12:13,920 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:12:13] "GET /api/strategies/notifications?limit=50&_t=1768223533605 HTTP/1.1" 200 - +2026-01-12 21:12:13,954 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:12:13] "GET /api/portfolio/positions?_t=1768223533629 HTTP/1.1" 200 - +2026-01-12 21:12:13,956 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:12:13] "GET /api/portfolio/summary?_t=1768223533629 HTTP/1.1" 200 - +2026-01-12 21:12:43,616 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:12:43] "GET /api/strategies/notifications?limit=50&_t=1768223563607 HTTP/1.1" 200 - +2026-01-12 21:12:43,955 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:12:43] "GET /api/portfolio/positions?_t=1768223563633 HTTP/1.1" 200 - +2026-01-12 21:12:43,955 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:12:43] "GET /api/portfolio/summary?_t=1768223563634 HTTP/1.1" 200 - +2026-01-12 21:12:48,326 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:12:48] "GET /api/portfolio/positions?_t=1768223568317 HTTP/1.1" 200 - +2026-01-12 21:12:48,628 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:12:48] "GET /api/portfolio/summary?_t=1768223568318 HTTP/1.1" 200 - +2026-01-12 21:12:48,629 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:12:48] "GET /api/strategies/notifications?limit=50&_t=1768223568318 HTTP/1.1" 200 - +2026-01-12 21:13:13,926 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:13:13] "GET /api/strategies/notifications?limit=50&_t=1768223593607 HTTP/1.1" 200 - +2026-01-12 21:13:13,945 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:13:13] "GET /api/portfolio/positions?_t=1768223593630 HTTP/1.1" 200 - +2026-01-12 21:13:13,945 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:13:13] "GET /api/portfolio/summary?_t=1768223593630 HTTP/1.1" 200 - +2026-01-12 21:13:43,619 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:13:43] "GET /api/strategies/notifications?limit=50&_t=1768223623610 HTTP/1.1" 200 - +2026-01-12 21:13:43,946 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:13:43] "GET /api/portfolio/positions?_t=1768223623634 HTTP/1.1" 200 - +2026-01-12 21:13:43,947 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:13:43] "GET /api/portfolio/summary?_t=1768223623634 HTTP/1.1" 200 - +2026-01-12 21:13:48,326 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:13:48] "GET /api/portfolio/positions?_t=1768223628317 HTTP/1.1" 200 - +2026-01-12 21:13:48,638 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:13:48] "GET /api/portfolio/summary?_t=1768223628317 HTTP/1.1" 200 - +2026-01-12 21:13:48,639 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:13:48] "GET /api/strategies/notifications?limit=50&_t=1768223628319 HTTP/1.1" 200 - +2026-01-12 21:14:13,918 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:14:13] "GET /api/strategies/notifications?limit=50&_t=1768223653602 HTTP/1.1" 200 - +2026-01-12 21:14:13,952 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:14:13] "GET /api/portfolio/positions?_t=1768223653626 HTTP/1.1" 200 - +2026-01-12 21:14:13,952 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:14:13] "GET /api/portfolio/summary?_t=1768223653626 HTTP/1.1" 200 - +2026-01-12 21:14:43,619 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:14:43] "GET /api/strategies/notifications?limit=50&_t=1768223683611 HTTP/1.1" 200 - +2026-01-12 21:14:43,947 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:14:43] "GET /api/portfolio/positions?_t=1768223683633 HTTP/1.1" 200 - +2026-01-12 21:14:43,947 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:14:43] "GET /api/portfolio/summary?_t=1768223683633 HTTP/1.1" 200 - +2026-01-12 21:14:48,330 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:14:48] "GET /api/portfolio/positions?_t=1768223688321 HTTP/1.1" 200 - +2026-01-12 21:14:48,635 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:14:48] "GET /api/portfolio/summary?_t=1768223688321 HTTP/1.1" 200 - +2026-01-12 21:14:48,636 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:14:48] "GET /api/strategies/notifications?limit=50&_t=1768223688322 HTTP/1.1" 200 - +2026-01-12 21:15:13,917 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:15:13] "GET /api/strategies/notifications?limit=50&_t=1768223713602 HTTP/1.1" 200 - +2026-01-12 21:15:13,965 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:15:13] "GET /api/portfolio/positions?_t=1768223713640 HTTP/1.1" 200 - +2026-01-12 21:15:13,966 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:15:13] "GET /api/portfolio/summary?_t=1768223713640 HTTP/1.1" 200 - +2026-01-12 21:15:43,611 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:15:43] "GET /api/strategies/notifications?limit=50&_t=1768223743602 HTTP/1.1" 200 - +2026-01-12 21:15:43,952 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:15:43] "GET /api/portfolio/summary?_t=1768223743627 HTTP/1.1" 200 - +2026-01-12 21:15:43,952 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:15:43] "GET /api/portfolio/positions?_t=1768223743627 HTTP/1.1" 200 - +2026-01-12 21:15:48,638 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:15:48] "GET /api/portfolio/summary?_t=1768223748324 HTTP/1.1" 200 - +2026-01-12 21:15:48,638 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:15:48] "GET /api/portfolio/positions?_t=1768223748324 HTTP/1.1" 200 - +2026-01-12 21:15:48,640 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:15:48] "GET /api/strategies/notifications?limit=50&_t=1768223748325 HTTP/1.1" 200 - +2026-01-12 21:16:13,619 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:16:13] "GET /api/strategies/notifications?limit=50&_t=1768223773611 HTTP/1.1" 200 - +2026-01-12 21:16:13,956 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:16:13] "GET /api/portfolio/positions?_t=1768223773635 HTTP/1.1" 200 - +2026-01-12 21:16:13,957 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:16:13] "GET /api/portfolio/summary?_t=1768223773635 HTTP/1.1" 200 - +2026-01-12 21:16:43,623 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:16:43] "GET /api/strategies/notifications?limit=50&_t=1768223803615 HTTP/1.1" 200 - +2026-01-12 21:16:43,949 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:16:43] "GET /api/portfolio/positions?_t=1768223803638 HTTP/1.1" 200 - +2026-01-12 21:16:43,950 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:16:43] "GET /api/portfolio/summary?_t=1768223803638 HTTP/1.1" 200 - +2026-01-12 21:16:48,325 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:16:48] "GET /api/portfolio/positions?_t=1768223808317 HTTP/1.1" 200 - +2026-01-12 21:16:48,630 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:16:48] "GET /api/portfolio/summary?_t=1768223808317 HTTP/1.1" 200 - +2026-01-12 21:16:48,641 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:16:48] "GET /api/strategies/notifications?limit=50&_t=1768223808319 HTTP/1.1" 200 - +2026-01-12 21:17:13,939 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:17:13] "GET /api/strategies/notifications?limit=50&_t=1768223833606 HTTP/1.1" 200 - +2026-01-12 21:17:13,976 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (289034s) +2026-01-12 21:17:13,981 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (289034s) +2026-01-12 21:17:13,983 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (289034s) +2026-01-12 21:17:13,984 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (289034s) +2026-01-12 21:17:13,994 - app.data_sources.base - WARNING - Warning: AMD data is delayed (289034s) +2026-01-12 21:17:13,995 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (289034s) +2026-01-12 21:17:14,006 - app.data_sources.base - WARNING - Warning: GD data is delayed (289034s) +2026-01-12 21:17:14,009 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (289034s) +2026-01-12 21:17:14,010 - app.data_sources.base - WARNING - Warning: INTC data is delayed (289034s) +2026-01-12 21:17:14,023 - app.data_sources.base - WARNING - Warning: INTC data is delayed (289034s) +2026-01-12 21:17:14,023 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (289034s) +2026-01-12 21:17:14,033 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:17:14] "GET /api/portfolio/positions?_t=1768223833633 HTTP/1.1" 200 - +2026-01-12 21:17:14,090 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:17:14] "GET /api/portfolio/summary?_t=1768223833633 HTTP/1.1" 200 - +2026-01-12 21:17:43,614 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:17:43] "GET /api/strategies/notifications?limit=50&_t=1768223863604 HTTP/1.1" 200 - +2026-01-12 21:17:43,939 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:17:43] "GET /api/portfolio/positions?_t=1768223863628 HTTP/1.1" 200 - +2026-01-12 21:17:43,940 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:17:43] "GET /api/portfolio/summary?_t=1768223863628 HTTP/1.1" 200 - +2026-01-12 21:17:48,642 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:17:48] "GET /api/portfolio/summary?_t=1768223868321 HTTP/1.1" 200 - +2026-01-12 21:17:48,643 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:17:48] "GET /api/portfolio/positions?_t=1768223868321 HTTP/1.1" 200 - +2026-01-12 21:17:48,644 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:17:48] "GET /api/strategies/notifications?limit=50&_t=1768223868322 HTTP/1.1" 200 - +2026-01-12 21:18:13,622 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:18:13] "GET /api/strategies/notifications?limit=50&_t=1768223893615 HTTP/1.1" 200 - +2026-01-12 21:18:13,948 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:18:13] "GET /api/portfolio/positions?_t=1768223893637 HTTP/1.1" 200 - +2026-01-12 21:18:13,949 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:18:13] "GET /api/portfolio/summary?_t=1768223893637 HTTP/1.1" 200 - +2026-01-12 21:18:43,620 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:18:43] "GET /api/strategies/notifications?limit=50&_t=1768223923611 HTTP/1.1" 200 - +2026-01-12 21:18:43,946 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:18:43] "GET /api/portfolio/positions?_t=1768223923634 HTTP/1.1" 200 - +2026-01-12 21:18:43,947 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:18:43] "GET /api/portfolio/summary?_t=1768223923634 HTTP/1.1" 200 - +2026-01-12 21:18:48,326 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:18:48] "GET /api/portfolio/positions?_t=1768223928317 HTTP/1.1" 200 - +2026-01-12 21:18:48,641 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:18:48] "GET /api/portfolio/summary?_t=1768223928317 HTTP/1.1" 200 - +2026-01-12 21:18:48,641 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:18:48] "GET /api/strategies/notifications?limit=50&_t=1768223928318 HTTP/1.1" 200 - +2026-01-12 21:19:13,951 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:19:13] "GET /api/strategies/notifications?limit=50&_t=1768223953613 HTTP/1.1" 200 - +2026-01-12 21:19:13,954 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:19:13] "GET /api/portfolio/positions?_t=1768223953635 HTTP/1.1" 200 - +2026-01-12 21:19:13,955 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:19:13] "GET /api/portfolio/summary?_t=1768223953635 HTTP/1.1" 200 - +2026-01-12 21:19:43,620 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:19:43] "GET /api/strategies/notifications?limit=50&_t=1768223983610 HTTP/1.1" 200 - +2026-01-12 21:19:43,958 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:19:43] "GET /api/portfolio/positions?_t=1768223983633 HTTP/1.1" 200 - +2026-01-12 21:19:43,959 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:19:43] "GET /api/portfolio/summary?_t=1768223983633 HTTP/1.1" 200 - +2026-01-12 21:19:48,339 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:19:48] "GET /api/portfolio/positions?_t=1768223988330 HTTP/1.1" 200 - +2026-01-12 21:19:48,648 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:19:48] "GET /api/portfolio/summary?_t=1768223988330 HTTP/1.1" 200 - +2026-01-12 21:19:48,648 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:19:48] "GET /api/strategies/notifications?limit=50&_t=1768223988332 HTTP/1.1" 200 - +2026-01-12 21:20:13,921 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:20:13] "GET /api/strategies/notifications?limit=50&_t=1768224013603 HTTP/1.1" 200 - +2026-01-12 21:20:13,936 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:20:13] "GET /api/portfolio/positions?_t=1768224013626 HTTP/1.1" 200 - +2026-01-12 21:20:13,937 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:20:13] "GET /api/portfolio/summary?_t=1768224013626 HTTP/1.1" 200 - +2026-01-12 21:20:43,614 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:20:43] "GET /api/strategies/notifications?limit=50&_t=1768224043605 HTTP/1.1" 200 - +2026-01-12 21:20:43,952 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:20:43] "GET /api/portfolio/positions?_t=1768224043632 HTTP/1.1" 200 - +2026-01-12 21:20:43,953 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:20:43] "GET /api/portfolio/summary?_t=1768224043632 HTTP/1.1" 200 - +2026-01-12 21:20:48,336 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:20:48] "GET /api/portfolio/positions?_t=1768224048327 HTTP/1.1" 200 - +2026-01-12 21:20:48,640 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:20:48] "GET /api/portfolio/summary?_t=1768224048327 HTTP/1.1" 200 - +2026-01-12 21:20:48,641 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:20:48] "GET /api/strategies/notifications?limit=50&_t=1768224048328 HTTP/1.1" 200 - +2026-01-12 21:21:13,917 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:21:13] "GET /api/strategies/notifications?limit=50&_t=1768224073600 HTTP/1.1" 200 - +2026-01-12 21:21:13,939 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:21:13] "GET /api/portfolio/positions?_t=1768224073626 HTTP/1.1" 200 - +2026-01-12 21:21:13,940 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:21:13] "GET /api/portfolio/summary?_t=1768224073626 HTTP/1.1" 200 - +2026-01-12 21:21:44,301 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:21:44] "GET /api/strategies/notifications?limit=50&_t=1768224104290 HTTP/1.1" 200 - +2026-01-12 21:21:44,657 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:21:44] "GET /api/portfolio/positions?_t=1768224104338 HTTP/1.1" 200 - +2026-01-12 21:21:44,658 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:21:44] "GET /api/portfolio/summary?_t=1768224104338 HTTP/1.1" 200 - +2026-01-12 21:21:48,331 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:21:48] "GET /api/portfolio/positions?_t=1768224108320 HTTP/1.1" 200 - +2026-01-12 21:21:48,638 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:21:48] "GET /api/portfolio/summary?_t=1768224108320 HTTP/1.1" 200 - +2026-01-12 21:21:48,639 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:21:48] "GET /api/strategies/notifications?limit=50&_t=1768224108321 HTTP/1.1" 200 - +2026-01-12 21:22:14,620 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:22:14] "GET /api/strategies/notifications?limit=50&_t=1768224134290 HTTP/1.1" 200 - +2026-01-12 21:22:14,661 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:22:14] "GET /api/portfolio/summary?_t=1768224134344 HTTP/1.1" 200 - +2026-01-12 21:22:14,661 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:22:14] "GET /api/portfolio/positions?_t=1768224134344 HTTP/1.1" 200 - +2026-01-12 21:22:41,681 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:22:41] "GET /api/strategies?_t=1768224161662 HTTP/1.1" 200 - +2026-01-12 21:22:43,121 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:22:43] "GET /api/strategies/equityCurve?id=14&_t=1768224162803 HTTP/1.1" 200 - +2026-01-12 21:22:43,127 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:22:43] "GET /api/strategies/equityCurve?id=14&_t=1768224162803 HTTP/1.1" 200 - +2026-01-12 21:22:43,143 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:22:43] "GET /api/strategies/positions?id=14&_t=1768224162806 HTTP/1.1" 200 - +2026-01-12 21:22:43,413 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:22:43] "GET /api/strategies/equityCurve?id=14&_t=1768224163403 HTTP/1.1" 200 - +2026-01-12 21:22:43,716 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:22:43] "GET /api/strategies/equityCurve?id=14&_t=1768224163403 HTTP/1.1" 200 - +2026-01-12 21:22:43,916 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:22:43] "GET /api/strategies/notifications?limit=50&_t=1768224163600 HTTP/1.1" 200 - +2026-01-12 21:22:45,356 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:22:45] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 21:22:45,357 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:22:45] "GET /api/credentials/list?user_id=1&_t=1768224165033 HTTP/1.1" 200 - +2026-01-12 21:22:45,357 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:22:45] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 21:22:47,817 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:22:47] "GET /api/strategies/positions?id=14&_t=1768224167808 HTTP/1.1" 200 - +2026-01-12 21:22:48,669 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (289369s) +2026-01-12 21:22:48,669 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (289369s) +2026-01-12 21:22:48,683 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (289369s) +2026-01-12 21:22:48,683 - app.data_sources.base - WARNING - Warning: AMD data is delayed (289369s) +2026-01-12 21:22:48,689 - app.data_sources.base - WARNING - Warning: INTC data is delayed (289369s) +2026-01-12 21:22:48,696 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (289369s) +2026-01-12 21:22:48,697 - app.data_sources.base - WARNING - Warning: GD data is delayed (289369s) +2026-01-12 21:22:48,699 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (289369s) +2026-01-12 21:22:48,699 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (289369s) +2026-01-12 21:22:48,707 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (289369s) +2026-01-12 21:22:48,717 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (289369s) +2026-01-12 21:22:48,718 - app.data_sources.base - WARNING - Warning: GD data is delayed (289369s) +2026-01-12 21:22:48,719 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:22:48] "GET /api/portfolio/positions?_t=1768224168317 HTTP/1.1" 200 - +2026-01-12 21:22:48,720 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:22:48] "GET /api/strategies/notifications?limit=50&_t=1768224168318 HTTP/1.1" 200 - +2026-01-12 21:22:48,774 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:22:48] "GET /api/portfolio/summary?_t=1768224168317 HTTP/1.1" 200 - +2026-01-12 21:22:52,819 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:22:52] "GET /api/strategies/positions?id=14&_t=1768224172810 HTTP/1.1" 200 - +2026-01-12 21:22:58,114 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:22:58] "GET /api/strategies/positions?id=14&_t=1768224177799 HTTP/1.1" 200 - +2026-01-12 21:23:02,818 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:23:02] "GET /api/strategies/positions?id=14&_t=1768224182810 HTTP/1.1" 200 - +2026-01-12 21:23:06,372 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:23:06] "GET /api/strategies/positions?id=13&_t=1768224186049 HTTP/1.1" 200 - +2026-01-12 21:23:06,373 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:23:06] "GET /api/strategies/equityCurve?id=13&_t=1768224186047 HTTP/1.1" 200 - +2026-01-12 21:23:06,373 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:23:06] "GET /api/strategies/equityCurve?id=13&_t=1768224186047 HTTP/1.1" 200 - +2026-01-12 21:23:07,005 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:23:07] "GET /api/strategies/equityCurve?id=13&_t=1768224186993 HTTP/1.1" 200 - +2026-01-12 21:23:07,313 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:23:07] "GET /api/strategies/equityCurve?id=13&_t=1768224186993 HTTP/1.1" 200 - +2026-01-12 21:23:08,079 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:23:08] "GET /api/strategies/positions?id=12&_t=1768224187755 HTTP/1.1" 200 - +2026-01-12 21:23:08,079 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:23:08] "GET /api/strategies/equityCurve?id=12&_t=1768224187753 HTTP/1.1" 200 - +2026-01-12 21:23:08,088 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:23:08] "GET /api/strategies/equityCurve?id=12&_t=1768224187753 HTTP/1.1" 200 - +2026-01-12 21:23:08,767 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:23:08] "GET /api/market/types?_t=1768224188743 HTTP/1.1" 200 - +2026-01-12 21:23:09,089 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:23:09] "GET /api/portfolio/alerts?_t=1768224188743 HTTP/1.1" 200 - +2026-01-12 21:23:09,090 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:23:09] "GET /api/portfolio/positions?_t=1768224188743 HTTP/1.1" 200 - +2026-01-12 21:23:09,091 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:23:09] "GET /api/portfolio/monitors?_t=1768224188743 HTTP/1.1" 200 - +2026-01-12 21:23:09,092 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:23:09] "GET /api/portfolio/summary?_t=1768224188743 HTTP/1.1" 200 - +2026-01-12 21:23:09,093 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:23:09] "GET /api/portfolio/groups?_t=1768224188743 HTTP/1.1" 200 - +2026-01-12 21:23:13,929 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:23:13] "GET /api/strategies/notifications?limit=50&_t=1768224193610 HTTP/1.1" 200 - +2026-01-12 21:23:33,553 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:23:33] "GET /api/portfolio/positions?_t=1768224213543 HTTP/1.1" 200 - +2026-01-12 21:23:33,863 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:23:33] "GET /api/portfolio/summary?_t=1768224213543 HTTP/1.1" 200 - +2026-01-12 21:23:33,884 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:23:33] "GET /api/strategies/notifications?limit=50&_t=1768224213567 HTTP/1.1" 200 - +2026-01-12 21:23:35,589 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:23:35] "GET /api/strategies?_t=1768224215574 HTTP/1.1" 200 - +2026-01-12 21:23:37,034 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:23:37] "GET /api/strategies/equityCurve?id=13&_t=1768224217020 HTTP/1.1" 200 - +2026-01-12 21:23:37,338 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:23:37] "GET /api/strategies/positions?id=13&_t=1768224217023 HTTP/1.1" 200 - +2026-01-12 21:23:37,338 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:23:37] "GET /api/strategies/equityCurve?id=13&_t=1768224217020 HTTP/1.1" 200 - +2026-01-12 21:23:39,687 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:23:39] "GET /api/portfolio/positions?_t=1768224219361 HTTP/1.1" 200 - +2026-01-12 21:23:39,688 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:23:39] "GET /api/portfolio/summary?_t=1768224219361 HTTP/1.1" 200 - +2026-01-12 21:23:39,945 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:23:39] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 21:23:40,071 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:23:40] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 21:23:40,071 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:23:40] "GET /api/credentials/list?user_id=1&_t=1768224219751 HTTP/1.1" 200 - +2026-01-12 21:23:42,032 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:23:42] "GET /api/strategies/positions?id=13&_t=1768224222023 HTTP/1.1" 200 - +2026-01-12 21:23:44,603 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:23:44] "GET /api/strategies/notifications?limit=50&_t=1768224224291 HTTP/1.1" 200 - +2026-01-12 21:23:47,037 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:23:47] "GET /api/strategies/positions?id=13&_t=1768224227027 HTTP/1.1" 200 - +2026-01-12 21:23:49,997 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:23:49] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 21:23:49,997 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:23:49] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 21:23:49,998 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:23:49] "GET /api/credentials/list?user_id=1&_t=1768224229665 HTTP/1.1" 200 - +2026-01-12 21:23:52,025 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:23:52] "GET /api/strategies/positions?id=13&_t=1768224232018 HTTP/1.1" 200 - +2026-01-12 21:23:57,611 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:23:57] "GET /api/strategies/notifications?limit=50&_t=1768224237293 HTTP/1.1" 200 - +2026-01-12 21:23:57,611 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:23:57] "GET /api/strategies/positions?id=13&_t=1768224237293 HTTP/1.1" 200 - +2026-01-12 21:24:02,289 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:24:02] "GET /api/strategies/positions?id=13&_t=1768224242281 HTTP/1.1" 200 - +2026-01-12 21:24:07,607 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:24:07] "GET /api/strategies/positions?id=13&_t=1768224247290 HTTP/1.1" 200 - +2026-01-12 21:24:07,607 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:24:07] "GET /api/strategies/equityCurve?id=13&_t=1768224247289 HTTP/1.1" 200 - +2026-01-12 21:24:08,756 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:24:08] "GET /api/portfolio/positions?_t=1768224248746 HTTP/1.1" 200 - +2026-01-12 21:24:09,068 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:24:09] "GET /api/portfolio/summary?_t=1768224248746 HTTP/1.1" 200 - +2026-01-12 21:24:09,882 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:24:09] "POST /api/portfolio/alerts HTTP/1.1" 200 - +2026-01-12 21:24:10,140 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:24:10] "GET /api/portfolio/alerts?_t=1768224249907 HTTP/1.1" 200 - +2026-01-12 21:24:12,293 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:24:12] "GET /api/strategies/positions?id=13&_t=1768224252285 HTTP/1.1" 200 - +2026-01-12 21:24:13,783 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (289454s) +2026-01-12 21:24:13,784 - app.services.portfolio_monitor - INFO - Alert #12 triggered: ๐Ÿ”” Price Alert: SPCE current price $3.1800 has dropped below $5.0000 +2026-01-12 21:24:13,915 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:24:13] "GET /api/strategies/notifications?limit=50&_t=1768224253601 HTTP/1.1" 200 - +2026-01-12 21:24:17,302 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:24:17] "GET /api/strategies/positions?id=13&_t=1768224257293 HTTP/1.1" 200 - +2026-01-12 21:24:22,603 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:24:22] "GET /api/strategies/positions?id=13&_t=1768224262291 HTTP/1.1" 200 - +2026-01-12 21:24:27,292 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:24:27] "GET /api/strategies/notifications?limit=50&_t=1768224267285 HTTP/1.1" 200 - +2026-01-12 21:24:27,597 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:24:27] "GET /api/strategies/positions?id=13&_t=1768224267285 HTTP/1.1" 200 - +2026-01-12 21:24:32,594 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:24:32] "GET /api/strategies/positions?id=13&_t=1768224272280 HTTP/1.1" 200 - +2026-01-12 21:24:37,293 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:24:37] "GET /api/strategies/equityCurve?id=13&_t=1768224277282 HTTP/1.1" 200 - +2026-01-12 21:24:37,595 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:24:37] "GET /api/strategies/positions?id=13&_t=1768224277284 HTTP/1.1" 200 - +2026-01-12 21:24:39,072 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:24:39] "GET /api/portfolio/positions?_t=1768224278750 HTTP/1.1" 200 - +2026-01-12 21:24:39,073 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:24:39] "GET /api/portfolio/summary?_t=1768224278750 HTTP/1.1" 200 - +2026-01-12 21:24:42,302 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:24:42] "GET /api/strategies/positions?id=13&_t=1768224282288 HTTP/1.1" 200 - +2026-01-12 21:24:43,924 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:24:43] "GET /api/strategies/notifications?limit=50&_t=1768224283610 HTTP/1.1" 200 - +2026-01-12 21:24:47,296 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:24:47] "GET /api/strategies/positions?id=13&_t=1768224287289 HTTP/1.1" 200 - +2026-01-12 21:24:52,611 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:24:52] "GET /api/strategies/positions?id=13&_t=1768224292293 HTTP/1.1" 200 - +2026-01-12 21:24:57,294 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:24:57] "GET /api/strategies/notifications?limit=50&_t=1768224297285 HTTP/1.1" 200 - +2026-01-12 21:24:57,604 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:24:57] "GET /api/strategies/positions?id=13&_t=1768224297286 HTTP/1.1" 200 - +2026-01-12 21:25:02,607 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:25:02] "GET /api/strategies/positions?id=13&_t=1768224302289 HTTP/1.1" 200 - +2026-01-12 21:25:07,311 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:25:07] "GET /api/strategies/equityCurve?id=13&_t=1768224307288 HTTP/1.1" 200 - +2026-01-12 21:25:07,620 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:25:07] "GET /api/strategies/positions?id=13&_t=1768224307288 HTTP/1.1" 200 - +2026-01-12 21:25:09,079 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:25:09] "GET /api/portfolio/positions?_t=1768224308753 HTTP/1.1" 200 - +2026-01-12 21:25:09,079 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:25:09] "GET /api/portfolio/summary?_t=1768224308753 HTTP/1.1" 200 - +2026-01-12 21:25:12,290 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:25:12] "GET /api/strategies/positions?id=13&_t=1768224312283 HTTP/1.1" 200 - +2026-01-12 21:25:13,927 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:25:13] "GET /api/strategies/notifications?limit=50&_t=1768224313613 HTTP/1.1" 200 - +2026-01-12 21:25:17,300 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:25:17] "GET /api/strategies/positions?id=13&_t=1768224317290 HTTP/1.1" 200 - +2026-01-12 21:25:22,607 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:25:22] "GET /api/strategies/positions?id=13&_t=1768224322289 HTTP/1.1" 200 - +2026-01-12 21:25:27,292 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:25:27] "GET /api/strategies/notifications?limit=50&_t=1768224327282 HTTP/1.1" 200 - +2026-01-12 21:25:27,598 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:25:27] "GET /api/strategies/positions?id=13&_t=1768224327282 HTTP/1.1" 200 - +2026-01-12 21:25:32,605 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:25:32] "GET /api/strategies/positions?id=13&_t=1768224332292 HTTP/1.1" 200 - +2026-01-12 21:25:37,301 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:25:37] "GET /api/strategies/equityCurve?id=13&_t=1768224337293 HTTP/1.1" 200 - +2026-01-12 21:25:37,608 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:25:37] "GET /api/strategies/positions?id=13&_t=1768224337293 HTTP/1.1" 200 - +2026-01-12 21:25:39,068 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:25:39] "GET /api/portfolio/positions?_t=1768224338749 HTTP/1.1" 200 - +2026-01-12 21:25:39,068 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:25:39] "GET /api/portfolio/summary?_t=1768224338749 HTTP/1.1" 200 - +2026-01-12 21:25:42,293 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:25:42] "GET /api/strategies/positions?id=13&_t=1768224342281 HTTP/1.1" 200 - +2026-01-12 21:25:43,916 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:25:43] "GET /api/strategies/notifications?limit=50&_t=1768224343599 HTTP/1.1" 200 - +2026-01-12 21:25:47,289 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:25:47] "GET /api/strategies/positions?id=13&_t=1768224347282 HTTP/1.1" 200 - +2026-01-12 21:25:52,598 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:25:52] "GET /api/strategies/positions?id=13&_t=1768224352283 HTTP/1.1" 200 - +2026-01-12 21:25:57,302 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:25:57] "GET /api/strategies/notifications?limit=50&_t=1768224357293 HTTP/1.1" 200 - +2026-01-12 21:25:57,608 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:25:57] "GET /api/strategies/positions?id=13&_t=1768224357294 HTTP/1.1" 200 - +2026-01-12 21:26:02,598 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:26:02] "GET /api/strategies/positions?id=13&_t=1768224362284 HTTP/1.1" 200 - +2026-01-12 21:26:07,290 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:26:07] "GET /api/strategies/equityCurve?id=13&_t=1768224367282 HTTP/1.1" 200 - +2026-01-12 21:26:07,604 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:26:07] "GET /api/strategies/positions?id=13&_t=1768224367283 HTTP/1.1" 200 - +2026-01-12 21:26:09,093 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:26:09] "GET /api/portfolio/positions?_t=1768224368760 HTTP/1.1" 200 - +2026-01-12 21:26:09,093 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:26:09] "GET /api/portfolio/summary?_t=1768224368760 HTTP/1.1" 200 - +2026-01-12 21:26:12,308 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:26:12] "GET /api/strategies/positions?id=13&_t=1768224372286 HTTP/1.1" 200 - +2026-01-12 21:26:13,924 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:26:13] "GET /api/strategies/notifications?limit=50&_t=1768224373607 HTTP/1.1" 200 - +2026-01-12 21:26:17,287 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:26:17] "GET /api/strategies/positions?id=13&_t=1768224377279 HTTP/1.1" 200 - +2026-01-12 21:26:22,608 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:26:22] "GET /api/strategies/positions?id=13&_t=1768224382292 HTTP/1.1" 200 - +2026-01-12 21:26:27,292 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:26:27] "GET /api/strategies/notifications?limit=50&_t=1768224387280 HTTP/1.1" 200 - +2026-01-12 21:26:27,594 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:26:27] "GET /api/strategies/positions?id=13&_t=1768224387280 HTTP/1.1" 200 - +2026-01-12 21:26:32,605 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:26:32] "GET /api/strategies/positions?id=13&_t=1768224392288 HTTP/1.1" 200 - +2026-01-12 21:26:37,307 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:26:37] "GET /api/strategies/equityCurve?id=13&_t=1768224397290 HTTP/1.1" 200 - +2026-01-12 21:26:37,607 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:26:37] "GET /api/strategies/positions?id=13&_t=1768224397294 HTTP/1.1" 200 - +2026-01-12 21:26:39,084 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:26:39] "GET /api/portfolio/positions?_t=1768224398757 HTTP/1.1" 200 - +2026-01-12 21:26:39,084 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:26:39] "GET /api/portfolio/summary?_t=1768224398757 HTTP/1.1" 200 - +2026-01-12 21:26:42,321 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:26:42] "GET /api/strategies/positions?id=13&_t=1768224402313 HTTP/1.1" 200 - +2026-01-12 21:26:43,975 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:26:43] "GET /api/strategies/notifications?limit=50&_t=1768224403603 HTTP/1.1" 200 - +2026-01-12 21:26:47,296 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:26:47] "GET /api/strategies/positions?id=13&_t=1768224407287 HTTP/1.1" 200 - +2026-01-12 21:26:52,607 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:26:52] "GET /api/strategies/positions?id=13&_t=1768224412290 HTTP/1.1" 200 - +2026-01-12 21:26:57,297 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:26:57] "GET /api/strategies/notifications?limit=50&_t=1768224417288 HTTP/1.1" 200 - +2026-01-12 21:26:57,600 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:26:57] "GET /api/strategies/positions?id=13&_t=1768224417289 HTTP/1.1" 200 - +2026-01-12 21:27:02,601 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:27:02] "GET /api/strategies/positions?id=13&_t=1768224422286 HTTP/1.1" 200 - +2026-01-12 21:27:07,293 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:27:07] "GET /api/strategies/equityCurve?id=13&_t=1768224427285 HTTP/1.1" 200 - +2026-01-12 21:27:07,599 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:27:07] "GET /api/strategies/positions?id=13&_t=1768224427285 HTTP/1.1" 200 - +2026-01-12 21:27:09,074 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:27:09] "GET /api/portfolio/summary?_t=1768224428750 HTTP/1.1" 200 - +2026-01-12 21:27:09,084 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:27:09] "GET /api/portfolio/positions?_t=1768224428750 HTTP/1.1" 200 - +2026-01-12 21:27:12,299 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:27:12] "GET /api/strategies/positions?id=13&_t=1768224432291 HTTP/1.1" 200 - +2026-01-12 21:27:13,934 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:27:13] "GET /api/strategies/notifications?limit=50&_t=1768224433615 HTTP/1.1" 200 - +2026-01-12 21:27:17,299 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:27:17] "GET /api/strategies/positions?id=13&_t=1768224437292 HTTP/1.1" 200 - +2026-01-12 21:27:22,600 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:27:22] "GET /api/strategies/positions?id=13&_t=1768224442286 HTTP/1.1" 200 - +2026-01-12 21:27:27,289 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:27:27] "GET /api/strategies/notifications?limit=50&_t=1768224447279 HTTP/1.1" 200 - +2026-01-12 21:27:27,593 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:27:27] "GET /api/strategies/positions?id=13&_t=1768224447280 HTTP/1.1" 200 - +2026-01-12 21:27:32,601 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:27:32] "GET /api/strategies/positions?id=13&_t=1768224452287 HTTP/1.1" 200 - +2026-01-12 21:27:37,296 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:27:37] "GET /api/strategies/equityCurve?id=13&_t=1768224457287 HTTP/1.1" 200 - +2026-01-12 21:27:37,602 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:27:37] "GET /api/strategies/positions?id=13&_t=1768224457288 HTTP/1.1" 200 - +2026-01-12 21:27:39,076 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:27:39] "GET /api/portfolio/positions?_t=1768224458748 HTTP/1.1" 200 - +2026-01-12 21:27:39,077 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:27:39] "GET /api/portfolio/summary?_t=1768224458748 HTTP/1.1" 200 - +2026-01-12 21:27:42,288 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:27:42] "GET /api/strategies/positions?id=13&_t=1768224462280 HTTP/1.1" 200 - +2026-01-12 21:27:43,932 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:27:43] "GET /api/strategies/notifications?limit=50&_t=1768224463615 HTTP/1.1" 200 - +2026-01-12 21:27:47,291 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:27:47] "GET /api/strategies/positions?id=13&_t=1768224467282 HTTP/1.1" 200 - +2026-01-12 21:27:52,603 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:27:52] "GET /api/strategies/positions?id=13&_t=1768224472288 HTTP/1.1" 200 - +2026-01-12 21:27:57,298 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:27:57] "GET /api/strategies/notifications?limit=50&_t=1768224477290 HTTP/1.1" 200 - +2026-01-12 21:27:57,606 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:27:57] "GET /api/strategies/positions?id=13&_t=1768224477290 HTTP/1.1" 200 - +2026-01-12 21:28:02,603 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:28:02] "GET /api/strategies/positions?id=13&_t=1768224482289 HTTP/1.1" 200 - +2026-01-12 21:28:07,297 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:28:07] "GET /api/strategies/equityCurve?id=13&_t=1768224487288 HTTP/1.1" 200 - +2026-01-12 21:28:07,600 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:28:07] "GET /api/strategies/positions?id=13&_t=1768224487289 HTTP/1.1" 200 - +2026-01-12 21:28:09,078 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:28:09] "GET /api/portfolio/positions?_t=1768224488749 HTTP/1.1" 200 - +2026-01-12 21:28:09,079 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:28:09] "GET /api/portfolio/summary?_t=1768224488749 HTTP/1.1" 200 - +2026-01-12 21:28:12,295 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:28:12] "GET /api/strategies/positions?id=13&_t=1768224492288 HTTP/1.1" 200 - +2026-01-12 21:28:13,922 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:28:13] "GET /api/strategies/notifications?limit=50&_t=1768224493602 HTTP/1.1" 200 - +2026-01-12 21:28:17,287 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:28:17] "GET /api/strategies/positions?id=13&_t=1768224497280 HTTP/1.1" 200 - +2026-01-12 21:28:22,608 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:28:22] "GET /api/strategies/positions?id=13&_t=1768224502291 HTTP/1.1" 200 - +2026-01-12 21:28:27,294 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:28:27] "GET /api/strategies/notifications?limit=50&_t=1768224507284 HTTP/1.1" 200 - +2026-01-12 21:28:27,600 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:28:27] "GET /api/strategies/positions?id=13&_t=1768224507284 HTTP/1.1" 200 - +2026-01-12 21:28:32,606 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:28:32] "GET /api/strategies/positions?id=13&_t=1768224512292 HTTP/1.1" 200 - +2026-01-12 21:28:37,291 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:28:37] "GET /api/strategies/equityCurve?id=13&_t=1768224517283 HTTP/1.1" 200 - +2026-01-12 21:28:37,598 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:28:37] "GET /api/strategies/positions?id=13&_t=1768224517283 HTTP/1.1" 200 - +2026-01-12 21:28:39,070 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:28:39] "GET /api/portfolio/positions?_t=1768224518749 HTTP/1.1" 200 - +2026-01-12 21:28:39,071 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:28:39] "GET /api/portfolio/summary?_t=1768224518749 HTTP/1.1" 200 - +2026-01-12 21:28:42,301 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:28:42] "GET /api/strategies/positions?id=13&_t=1768224522293 HTTP/1.1" 200 - +2026-01-12 21:28:43,924 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:28:43] "GET /api/strategies/notifications?limit=50&_t=1768224523609 HTTP/1.1" 200 - +2026-01-12 21:28:47,295 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:28:47] "GET /api/strategies/positions?id=13&_t=1768224527285 HTTP/1.1" 200 - +2026-01-12 21:28:52,606 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:28:52] "GET /api/strategies/positions?id=13&_t=1768224532291 HTTP/1.1" 200 - +2026-01-12 21:29:08,791 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (289749s) +2026-01-12 21:29:08,798 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (289749s) +2026-01-12 21:29:08,803 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (289749s) +2026-01-12 21:29:08,803 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (289749s) +2026-01-12 21:29:08,822 - app.data_sources.base - WARNING - Warning: AMD data is delayed (289749s) +2026-01-12 21:29:08,823 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (289749s) +2026-01-12 21:29:08,827 - app.data_sources.base - WARNING - Warning: INTC data is delayed (289749s) +2026-01-12 21:29:08,833 - app.data_sources.base - WARNING - Warning: GD data is delayed (289749s) +2026-01-12 21:29:08,834 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (289749s) +2026-01-12 21:29:08,857 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:29:08] "GET /api/portfolio/positions?_t=1768224548759 HTTP/1.1" 200 - +2026-01-12 21:29:09,086 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:29:09] "GET /api/portfolio/summary?_t=1768224548759 HTTP/1.1" 200 - +2026-01-12 21:29:13,924 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:29:13] "GET /api/strategies/notifications?limit=50&_t=1768224553608 HTTP/1.1" 200 - +2026-01-12 21:29:38,763 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:29:38] "GET /api/portfolio/positions?_t=1768224578751 HTTP/1.1" 200 - +2026-01-12 21:29:39,076 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:29:39] "GET /api/portfolio/summary?_t=1768224578751 HTTP/1.1" 200 - +2026-01-12 21:29:43,917 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:29:43] "GET /api/strategies/notifications?limit=50&_t=1768224583603 HTTP/1.1" 200 - +2026-01-12 21:29:48,295 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:29:48] "GET /api/strategies/notifications?limit=50&_t=1768224588279 HTTP/1.1" 200 - +2026-01-12 21:29:48,610 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:29:48] "GET /api/strategies/positions?id=13&_t=1768224588279 HTTP/1.1" 200 - +2026-01-12 21:29:48,610 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:29:48] "GET /api/strategies/equityCurve?id=13&_t=1768224588279 HTTP/1.1" 200 - +2026-01-12 21:30:09,072 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:30:09] "GET /api/portfolio/positions?_t=1768224608747 HTTP/1.1" 200 - +2026-01-12 21:30:09,073 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:30:09] "GET /api/portfolio/summary?_t=1768224608747 HTTP/1.1" 200 - +2026-01-12 21:30:13,615 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:30:13] "GET /api/strategies/notifications?limit=50&_t=1768224613607 HTTP/1.1" 200 - +2026-01-12 21:30:39,083 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:30:39] "GET /api/portfolio/summary?_t=1768224638758 HTTP/1.1" 200 - +2026-01-12 21:30:39,084 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:30:39] "GET /api/portfolio/positions?_t=1768224638758 HTTP/1.1" 200 - +2026-01-12 21:30:43,617 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:30:43] "GET /api/strategies/notifications?limit=50&_t=1768224643609 HTTP/1.1" 200 - +2026-01-12 21:30:48,614 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:30:48] "GET /api/strategies/positions?id=13&_t=1768224648286 HTTP/1.1" 200 - +2026-01-12 21:30:48,614 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:30:48] "GET /api/strategies/notifications?limit=50&_t=1768224648287 HTTP/1.1" 200 - +2026-01-12 21:30:48,615 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:30:48] "GET /api/strategies/equityCurve?id=13&_t=1768224648288 HTTP/1.1" 200 - +2026-01-12 21:31:08,761 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:31:08] "GET /api/portfolio/positions?_t=1768224668748 HTTP/1.1" 200 - +2026-01-12 21:31:09,064 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:31:09] "GET /api/portfolio/summary?_t=1768224668748 HTTP/1.1" 200 - +2026-01-12 21:31:13,928 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:31:13] "GET /api/strategies/notifications?limit=50&_t=1768224673610 HTTP/1.1" 200 - +2026-01-12 21:31:38,771 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:31:38] "GET /api/portfolio/positions?_t=1768224698760 HTTP/1.1" 200 - +2026-01-12 21:31:39,085 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:31:39] "GET /api/portfolio/summary?_t=1768224698760 HTTP/1.1" 200 - +2026-01-12 21:31:43,928 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:31:43] "GET /api/strategies/notifications?limit=50&_t=1768224703613 HTTP/1.1" 200 - +2026-01-12 21:31:48,298 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:31:48] "GET /api/strategies/positions?id=13&_t=1768224708289 HTTP/1.1" 200 - +2026-01-12 21:31:48,602 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:31:48] "GET /api/strategies/notifications?limit=50&_t=1768224708289 HTTP/1.1" 200 - +2026-01-12 21:31:48,603 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:31:48] "GET /api/strategies/equityCurve?id=13&_t=1768224708289 HTTP/1.1" 200 - +2026-01-12 21:32:09,088 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:32:09] "GET /api/portfolio/positions?_t=1768224728762 HTTP/1.1" 200 - +2026-01-12 21:32:09,089 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:32:09] "GET /api/portfolio/summary?_t=1768224728762 HTTP/1.1" 200 - +2026-01-12 21:32:13,613 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:32:13] "GET /api/strategies/notifications?limit=50&_t=1768224733605 HTTP/1.1" 200 - +2026-01-12 21:32:39,067 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:32:39] "GET /api/portfolio/positions?_t=1768224758750 HTTP/1.1" 200 - +2026-01-12 21:32:39,068 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:32:39] "GET /api/portfolio/summary?_t=1768224758750 HTTP/1.1" 200 - +2026-01-12 21:32:43,619 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:32:43] "GET /api/strategies/notifications?limit=50&_t=1768224763608 HTTP/1.1" 200 - +2026-01-12 21:32:48,603 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:32:48] "GET /api/strategies/notifications?limit=50&_t=1768224768287 HTTP/1.1" 200 - +2026-01-12 21:32:48,603 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:32:48] "GET /api/strategies/positions?id=13&_t=1768224768286 HTTP/1.1" 200 - +2026-01-12 21:32:48,604 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:32:48] "GET /api/strategies/equityCurve?id=13&_t=1768224768287 HTTP/1.1" 200 - +2026-01-12 21:33:08,761 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:33:08] "GET /api/portfolio/positions?_t=1768224788750 HTTP/1.1" 200 - +2026-01-12 21:33:09,066 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:33:09] "GET /api/portfolio/summary?_t=1768224788750 HTTP/1.1" 200 - +2026-01-12 21:33:13,928 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:33:13] "GET /api/strategies/notifications?limit=50&_t=1768224793614 HTTP/1.1" 200 - +2026-01-12 21:33:38,761 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:33:38] "GET /api/portfolio/positions?_t=1768224818751 HTTP/1.1" 200 - +2026-01-12 21:33:39,065 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:33:39] "GET /api/portfolio/summary?_t=1768224818751 HTTP/1.1" 200 - +2026-01-12 21:33:43,927 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:33:43] "GET /api/strategies/notifications?limit=50&_t=1768224823610 HTTP/1.1" 200 - +2026-01-12 21:33:48,295 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:33:48] "GET /api/strategies/positions?id=13&_t=1768224828286 HTTP/1.1" 200 - +2026-01-12 21:33:48,600 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:33:48] "GET /api/strategies/notifications?limit=50&_t=1768224828287 HTTP/1.1" 200 - +2026-01-12 21:33:48,601 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:33:48] "GET /api/strategies/equityCurve?id=13&_t=1768224828287 HTTP/1.1" 200 - +2026-01-12 21:34:09,097 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (290049s) +2026-01-12 21:34:09,118 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (290049s) +2026-01-12 21:34:09,124 - app.data_sources.base - WARNING - Warning: INTC data is delayed (290049s) +2026-01-12 21:34:09,131 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (290049s) +2026-01-12 21:34:09,135 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (290049s) +2026-01-12 21:34:09,137 - app.data_sources.base - WARNING - Warning: AMD data is delayed (290049s) +2026-01-12 21:34:09,142 - app.data_sources.base - WARNING - Warning: GD data is delayed (290049s) +2026-01-12 21:34:09,143 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (290049s) +2026-01-12 21:34:09,144 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (290049s) +2026-01-12 21:34:09,257 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:34:09] "GET /api/portfolio/positions?_t=1768224848763 HTTP/1.1" 200 - +2026-01-12 21:34:10,009 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:34:10] "GET /api/portfolio/summary?_t=1768224848763 HTTP/1.1" 200 - +2026-01-12 21:34:13,622 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:34:13] "GET /api/strategies/notifications?limit=50&_t=1768224853614 HTTP/1.1" 200 - +2026-01-12 21:34:39,078 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:34:39] "GET /api/portfolio/positions?_t=1768224878751 HTTP/1.1" 200 - +2026-01-12 21:34:39,079 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:34:39] "GET /api/portfolio/summary?_t=1768224878751 HTTP/1.1" 200 - +2026-01-12 21:34:43,619 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:34:43] "GET /api/strategies/notifications?limit=50&_t=1768224883609 HTTP/1.1" 200 - +2026-01-12 21:34:48,596 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:34:48] "GET /api/strategies/positions?id=13&_t=1768224888283 HTTP/1.1" 200 - +2026-01-12 21:34:48,597 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:34:48] "GET /api/strategies/notifications?limit=50&_t=1768224888283 HTTP/1.1" 200 - +2026-01-12 21:34:48,598 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:34:48] "GET /api/strategies/equityCurve?id=13&_t=1768224888284 HTTP/1.1" 200 - +2026-01-12 21:35:08,764 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:35:08] "GET /api/portfolio/positions?_t=1768224908752 HTTP/1.1" 200 - +2026-01-12 21:35:09,070 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:35:09] "GET /api/portfolio/summary?_t=1768224908752 HTTP/1.1" 200 - +2026-01-12 21:35:13,927 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:35:13] "GET /api/strategies/notifications?limit=50&_t=1768224913610 HTTP/1.1" 200 - +2026-01-12 21:35:38,760 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:35:38] "GET /api/portfolio/positions?_t=1768224938748 HTTP/1.1" 200 - +2026-01-12 21:35:39,073 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:35:39] "GET /api/portfolio/summary?_t=1768224938748 HTTP/1.1" 200 - +2026-01-12 21:35:43,918 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:35:43] "GET /api/strategies/notifications?limit=50&_t=1768224943604 HTTP/1.1" 200 - +2026-01-12 21:35:48,296 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:35:48] "GET /api/strategies/positions?id=13&_t=1768224948287 HTTP/1.1" 200 - +2026-01-12 21:35:48,605 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:35:48] "GET /api/strategies/notifications?limit=50&_t=1768224948287 HTTP/1.1" 200 - +2026-01-12 21:35:48,606 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:35:48] "GET /api/strategies/equityCurve?id=13&_t=1768224948287 HTTP/1.1" 200 - +2026-01-12 21:36:09,071 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:36:09] "GET /api/portfolio/positions?_t=1768224968748 HTTP/1.1" 200 - +2026-01-12 21:36:09,072 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:36:09] "GET /api/portfolio/summary?_t=1768224968748 HTTP/1.1" 200 - +2026-01-12 21:36:13,609 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:36:13] "GET /api/strategies/notifications?limit=50&_t=1768224973601 HTTP/1.1" 200 - +2026-01-12 21:36:39,077 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:36:39] "GET /api/portfolio/summary?_t=1768224998753 HTTP/1.1" 200 - +2026-01-12 21:36:39,078 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:36:39] "GET /api/portfolio/positions?_t=1768224998753 HTTP/1.1" 200 - +2026-01-12 21:36:43,736 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:36:43] "GET /api/strategies/notifications?limit=50&_t=1768225003613 HTTP/1.1" 200 - +2026-01-12 21:36:44,080 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:36:44] "GET /api/market/types?_t=1768225004073 HTTP/1.1" 200 - +2026-01-12 21:36:44,355 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:36:44] "GET /api/portfolio/positions?_t=1768225004073 HTTP/1.1" 200 - +2026-01-12 21:36:44,355 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:36:44] "GET /api/portfolio/summary?_t=1768225004073 HTTP/1.1" 200 - +2026-01-12 21:36:44,356 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:36:44] "GET /api/portfolio/groups?_t=1768225004073 HTTP/1.1" 200 - +2026-01-12 21:36:44,361 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:36:44] "GET /api/portfolio/monitors?_t=1768225004073 HTTP/1.1" 200 - +2026-01-12 21:36:44,368 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:36:44] "GET /api/portfolio/alerts?_t=1768225004073 HTTP/1.1" 200 - +2026-01-12 21:36:44,748 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:36:44] "GET /api/market/types?_t=1768225004731 HTTP/1.1" 200 - +2026-01-12 21:36:44,752 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:36:44] "GET /api/portfolio/positions?_t=1768225004731 HTTP/1.1" 200 - +2026-01-12 21:36:44,814 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:36:44] "GET /api/portfolio/groups?_t=1768225004731 HTTP/1.1" 200 - +2026-01-12 21:36:44,829 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:36:44] "GET /api/portfolio/monitors?_t=1768225004731 HTTP/1.1" 200 - +2026-01-12 21:36:44,830 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:36:44] "GET /api/portfolio/summary?_t=1768225004731 HTTP/1.1" 200 - +2026-01-12 21:36:44,869 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:36:44] "GET /api/portfolio/alerts?_t=1768225004731 HTTP/1.1" 200 - +2026-01-12 21:36:45,124 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:36:45] "GET /api/market/types?_t=1768225005110 HTTP/1.1" 200 - +2026-01-12 21:36:45,129 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:36:45] "GET /api/portfolio/positions?_t=1768225005110 HTTP/1.1" 200 - +2026-01-12 21:36:45,381 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:36:45] "GET /api/portfolio/summary?_t=1768225005110 HTTP/1.1" 200 - +2026-01-12 21:36:45,445 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:36:45] "GET /api/portfolio/alerts?_t=1768225005110 HTTP/1.1" 200 - +2026-01-12 21:36:45,446 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:36:45] "GET /api/portfolio/monitors?_t=1768225005110 HTTP/1.1" 200 - +2026-01-12 21:36:45,449 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:36:45] "GET /api/portfolio/groups?_t=1768225005110 HTTP/1.1" 200 - +2026-01-12 21:36:45,803 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:36:45] "GET /api/strategies?_t=1768225005788 HTTP/1.1" 200 - +2026-01-12 21:36:45,804 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:36:45] "GET /api/strategies/notifications?limit=50&_t=1768225005788 HTTP/1.1" 200 - +2026-01-12 21:36:46,296 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:36:46] "GET /api/market/types?_t=1768225006288 HTTP/1.1" 200 - +2026-01-12 21:36:46,299 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:36:46] "GET /api/portfolio/positions?_t=1768225006288 HTTP/1.1" 200 - +2026-01-12 21:36:46,608 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:36:46] "GET /api/portfolio/groups?_t=1768225006288 HTTP/1.1" 200 - +2026-01-12 21:36:46,608 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:36:46] "GET /api/portfolio/summary?_t=1768225006288 HTTP/1.1" 200 - +2026-01-12 21:36:46,609 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:36:46] "GET /api/portfolio/alerts?_t=1768225006288 HTTP/1.1" 200 - +2026-01-12 21:36:46,609 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:36:46] "GET /api/portfolio/monitors?_t=1768225006288 HTTP/1.1" 200 - +2026-01-12 21:36:46,613 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:36:46] "GET /api/strategies/notifications?limit=50&_t=1768225006288 HTTP/1.1" 200 - +2026-01-12 21:37:16,582 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:37:16] "GET /api/strategies/notifications?limit=50&_t=1768225036263 HTTP/1.1" 200 - +2026-01-12 21:37:16,616 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:37:16] "GET /api/portfolio/positions?_t=1768225036288 HTTP/1.1" 200 - +2026-01-12 21:37:16,617 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:37:16] "GET /api/strategies/notifications?limit=50&_t=1768225036294 HTTP/1.1" 200 - +2026-01-12 21:37:16,618 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:37:16] "GET /api/portfolio/summary?_t=1768225036288 HTTP/1.1" 200 - +2026-01-12 21:37:46,272 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:37:46] "GET /api/strategies/notifications?limit=50&_t=1768225066261 HTTP/1.1" 200 - +2026-01-12 21:37:46,600 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:37:46] "GET /api/portfolio/positions?_t=1768225066285 HTTP/1.1" 200 - +2026-01-12 21:37:46,601 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:37:46] "GET /api/portfolio/summary?_t=1768225066285 HTTP/1.1" 200 - +2026-01-12 21:37:46,609 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:37:46] "GET /api/strategies/notifications?limit=50&_t=1768225066294 HTTP/1.1" 200 - +2026-01-12 21:38:16,276 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:38:16] "GET /api/strategies/notifications?limit=50&_t=1768225096267 HTTP/1.1" 200 - +2026-01-12 21:38:16,606 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:38:16] "GET /api/strategies/notifications?limit=50&_t=1768225096284 HTTP/1.1" 200 - +2026-01-12 21:38:16,606 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:38:16] "GET /api/portfolio/positions?_t=1768225096292 HTTP/1.1" 200 - +2026-01-12 21:38:16,607 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:38:16] "GET /api/portfolio/summary?_t=1768225096292 HTTP/1.1" 200 - +2026-01-12 21:38:46,270 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:38:46] "GET /api/strategies/notifications?limit=50&_t=1768225126262 HTTP/1.1" 200 - +2026-01-12 21:38:46,615 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:38:46] "GET /api/portfolio/positions?_t=1768225126286 HTTP/1.1" 200 - +2026-01-12 21:38:46,616 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:38:46] "GET /api/portfolio/summary?_t=1768225126286 HTTP/1.1" 200 - +2026-01-12 21:38:46,617 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:38:46] "GET /api/strategies/notifications?limit=50&_t=1768225126293 HTTP/1.1" 200 - +2026-01-12 21:39:16,264 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:39:16] "GET /api/strategies/notifications?limit=50&_t=1768225156255 HTTP/1.1" 200 - +2026-01-12 21:39:16,588 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:39:16] "GET /api/portfolio/positions?_t=1768225156277 HTTP/1.1" 200 - +2026-01-12 21:39:16,589 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:39:16] "GET /api/portfolio/summary?_t=1768225156277 HTTP/1.1" 200 - +2026-01-12 21:39:16,595 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:39:16] "GET /api/strategies/notifications?limit=50&_t=1768225156286 HTTP/1.1" 200 - +2026-01-12 21:39:46,276 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:39:46] "GET /api/strategies/notifications?limit=50&_t=1768225186268 HTTP/1.1" 200 - +2026-01-12 21:39:46,602 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:39:46] "GET /api/strategies/notifications?limit=50&_t=1768225186285 HTTP/1.1" 200 - +2026-01-12 21:39:46,603 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:39:46] "GET /api/portfolio/positions?_t=1768225186290 HTTP/1.1" 200 - +2026-01-12 21:39:46,603 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:39:46] "GET /api/portfolio/summary?_t=1768225186290 HTTP/1.1" 200 - +2026-01-12 21:40:16,277 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:40:16] "GET /api/strategies/notifications?limit=50&_t=1768225216267 HTTP/1.1" 200 - +2026-01-12 21:40:16,616 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (290417s) +2026-01-12 21:40:16,617 - app.data_sources.base - WARNING - Warning: AMD data is delayed (290417s) +2026-01-12 21:40:16,617 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (290417s) +2026-01-12 21:40:16,625 - app.data_sources.base - WARNING - Warning: GD data is delayed (290417s) +2026-01-12 21:40:16,640 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (290417s) +2026-01-12 21:40:16,645 - app.data_sources.base - WARNING - Warning: INTC data is delayed (290417s) +2026-01-12 21:40:16,654 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (290417s) +2026-01-12 21:40:16,654 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (290417s) +2026-01-12 21:40:16,655 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (290417s) +2026-01-12 21:40:17,100 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:40:17] "GET /api/portfolio/positions?_t=1768225216289 HTTP/1.1" 200 - +2026-01-12 21:40:17,282 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:40:17] "GET /api/portfolio/summary?_t=1768225216289 HTTP/1.1" 200 - +2026-01-12 21:40:46,273 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:40:46] "GET /api/strategies/notifications?limit=50&_t=1768225246263 HTTP/1.1" 200 - +2026-01-12 21:40:46,596 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:40:46] "GET /api/portfolio/positions?_t=1768225246284 HTTP/1.1" 200 - +2026-01-12 21:40:46,597 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:40:46] "GET /api/portfolio/summary?_t=1768225246284 HTTP/1.1" 200 - +2026-01-12 21:40:48,597 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:40:48] "GET /api/strategies/notifications?limit=50&_t=1768225248282 HTTP/1.1" 200 - +2026-01-12 21:41:16,268 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:41:16] "GET /api/strategies/notifications?limit=50&_t=1768225276260 HTTP/1.1" 200 - +2026-01-12 21:41:16,608 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:41:16] "GET /api/portfolio/positions?_t=1768225276282 HTTP/1.1" 200 - +2026-01-12 21:41:16,609 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:41:16] "GET /api/portfolio/summary?_t=1768225276282 HTTP/1.1" 200 - +2026-01-12 21:41:46,269 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:41:46] "GET /api/strategies/notifications?limit=50&_t=1768225306261 HTTP/1.1" 200 - +2026-01-12 21:41:46,610 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:41:46] "GET /api/portfolio/positions?_t=1768225306284 HTTP/1.1" 200 - +2026-01-12 21:41:46,611 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:41:46] "GET /api/portfolio/summary?_t=1768225306284 HTTP/1.1" 200 - +2026-01-12 21:41:48,302 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:41:48] "GET /api/strategies/notifications?limit=50&_t=1768225308294 HTTP/1.1" 200 - +2026-01-12 21:42:16,588 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:42:16] "GET /api/strategies/notifications?limit=50&_t=1768225336265 HTTP/1.1" 200 - +2026-01-12 21:42:16,597 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:42:16] "GET /api/portfolio/positions?_t=1768225336286 HTTP/1.1" 200 - +2026-01-12 21:42:16,597 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:42:16] "GET /api/portfolio/summary?_t=1768225336286 HTTP/1.1" 200 - +2026-01-12 21:42:46,366 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:42:46] "GET /api/strategies/notifications?limit=50&_t=1768225366267 HTTP/1.1" 200 - +2026-01-12 21:42:46,674 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:42:46] "GET /api/portfolio/positions?_t=1768225366289 HTTP/1.1" 200 - +2026-01-12 21:42:46,675 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:42:46] "GET /api/portfolio/summary?_t=1768225366289 HTTP/1.1" 200 - +2026-01-12 21:42:48,745 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:42:48] "GET /api/strategies/notifications?limit=50&_t=1768225368287 HTTP/1.1" 200 - +2026-01-12 21:43:16,265 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:43:16] "GET /api/strategies/notifications?limit=50&_t=1768225396256 HTTP/1.1" 200 - +2026-01-12 21:43:16,592 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:43:16] "GET /api/portfolio/positions?_t=1768225396279 HTTP/1.1" 200 - +2026-01-12 21:43:16,592 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:43:16] "GET /api/portfolio/summary?_t=1768225396279 HTTP/1.1" 200 - +2026-01-12 21:43:46,283 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:43:46] "GET /api/strategies/notifications?limit=50&_t=1768225426264 HTTP/1.1" 200 - +2026-01-12 21:43:46,609 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:43:46] "GET /api/portfolio/positions?_t=1768225426288 HTTP/1.1" 200 - +2026-01-12 21:43:46,610 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:43:46] "GET /api/portfolio/summary?_t=1768225426288 HTTP/1.1" 200 - +2026-01-12 21:43:48,302 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:43:48] "GET /api/strategies/notifications?limit=50&_t=1768225428292 HTTP/1.1" 200 - +2026-01-12 21:44:16,585 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:44:16] "GET /api/strategies/notifications?limit=50&_t=1768225456269 HTTP/1.1" 200 - +2026-01-12 21:44:16,602 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:44:16] "GET /api/portfolio/positions?_t=1768225456290 HTTP/1.1" 200 - +2026-01-12 21:44:16,603 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:44:16] "GET /api/portfolio/summary?_t=1768225456290 HTTP/1.1" 200 - +2026-01-12 21:44:46,264 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:44:46] "GET /api/strategies/notifications?limit=50&_t=1768225486256 HTTP/1.1" 200 - +2026-01-12 21:44:46,604 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:44:46] "GET /api/portfolio/positions?_t=1768225486278 HTTP/1.1" 200 - +2026-01-12 21:44:46,604 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:44:46] "GET /api/portfolio/summary?_t=1768225486278 HTTP/1.1" 200 - +2026-01-12 21:44:48,299 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:44:48] "GET /api/strategies/notifications?limit=50&_t=1768225488291 HTTP/1.1" 200 - +2026-01-12 21:45:16,568 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:45:16] "GET /api/strategies/notifications?limit=50&_t=1768225516255 HTTP/1.1" 200 - +2026-01-12 21:45:16,602 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:45:16] "GET /api/portfolio/positions?_t=1768225516283 HTTP/1.1" 200 - +2026-01-12 21:45:16,602 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:45:16] "GET /api/portfolio/summary?_t=1768225516283 HTTP/1.1" 200 - +2026-01-12 21:45:46,288 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:45:46] "GET /api/strategies/notifications?limit=50&_t=1768225546256 HTTP/1.1" 200 - +2026-01-12 21:45:46,619 - app.data_sources.base - WARNING - Warning: INTC data is delayed (290747s) +2026-01-12 21:45:46,619 - app.data_sources.base - WARNING - Warning: GD data is delayed (290747s) +2026-01-12 21:45:46,640 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (290747s) +2026-01-12 21:45:46,647 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (290747s) +2026-01-12 21:45:46,647 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (290747s) +2026-01-12 21:45:46,648 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (290747s) +2026-01-12 21:45:46,648 - app.data_sources.base - WARNING - Warning: AMD data is delayed (290747s) +2026-01-12 21:45:46,649 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (290747s) +2026-01-12 21:45:46,654 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (290747s) +2026-01-12 21:45:46,660 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (290747s) +2026-01-12 21:45:46,720 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:45:46] "GET /api/portfolio/positions?_t=1768225546278 HTTP/1.1" 200 - +2026-01-12 21:45:46,731 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:45:46] "GET /api/portfolio/summary?_t=1768225546279 HTTP/1.1" 200 - +2026-01-12 21:45:48,604 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:45:48] "GET /api/strategies/notifications?limit=50&_t=1768225548289 HTTP/1.1" 200 - +2026-01-12 21:46:16,281 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:46:16] "GET /api/strategies/notifications?limit=50&_t=1768225576269 HTTP/1.1" 200 - +2026-01-12 21:46:16,604 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:46:16] "GET /api/portfolio/positions?_t=1768225576292 HTTP/1.1" 200 - +2026-01-12 21:46:16,604 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:46:16] "GET /api/portfolio/summary?_t=1768225576292 HTTP/1.1" 200 - +2026-01-12 21:46:46,274 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:46:46] "GET /api/strategies/notifications?limit=50&_t=1768225606265 HTTP/1.1" 200 - +2026-01-12 21:46:46,598 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:46:46] "GET /api/portfolio/summary?_t=1768225606287 HTTP/1.1" 200 - +2026-01-12 21:46:46,598 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:46:46] "GET /api/portfolio/positions?_t=1768225606287 HTTP/1.1" 200 - +2026-01-12 21:46:48,289 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:46:48] "GET /api/strategies/notifications?limit=50&_t=1768225608280 HTTP/1.1" 200 - +2026-01-12 21:47:16,578 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:47:16] "GET /api/strategies/notifications?limit=50&_t=1768225636263 HTTP/1.1" 200 - +2026-01-12 21:47:16,609 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:47:16] "GET /api/portfolio/positions?_t=1768225636284 HTTP/1.1" 200 - +2026-01-12 21:47:16,610 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:47:16] "GET /api/portfolio/summary?_t=1768225636284 HTTP/1.1" 200 - +2026-01-12 21:47:46,279 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:47:46] "GET /api/strategies/notifications?limit=50&_t=1768225666260 HTTP/1.1" 200 - +2026-01-12 21:47:46,607 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:47:46] "GET /api/portfolio/positions?_t=1768225666282 HTTP/1.1" 200 - +2026-01-12 21:47:46,608 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:47:46] "GET /api/portfolio/summary?_t=1768225666282 HTTP/1.1" 200 - +2026-01-12 21:47:48,294 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:47:48] "GET /api/strategies/notifications?limit=50&_t=1768225668284 HTTP/1.1" 200 - +2026-01-12 21:48:16,583 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:48:16] "GET /api/strategies/notifications?limit=50&_t=1768225696267 HTTP/1.1" 200 - +2026-01-12 21:48:16,616 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:48:16] "GET /api/portfolio/positions?_t=1768225696291 HTTP/1.1" 200 - +2026-01-12 21:48:16,617 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:48:16] "GET /api/portfolio/summary?_t=1768225696291 HTTP/1.1" 200 - +2026-01-12 21:48:46,266 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:48:46] "GET /api/strategies/notifications?limit=50&_t=1768225726257 HTTP/1.1" 200 - +2026-01-12 21:48:46,601 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:48:46] "GET /api/portfolio/summary?_t=1768225726281 HTTP/1.1" 200 - +2026-01-12 21:48:46,602 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:48:46] "GET /api/portfolio/positions?_t=1768225726281 HTTP/1.1" 200 - +2026-01-12 21:48:48,291 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:48:48] "GET /api/strategies/notifications?limit=50&_t=1768225728283 HTTP/1.1" 200 - +2026-01-12 21:49:16,588 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:49:16] "GET /api/strategies/notifications?limit=50&_t=1768225756268 HTTP/1.1" 200 - +2026-01-12 21:49:16,604 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:49:16] "GET /api/portfolio/summary?_t=1768225756292 HTTP/1.1" 200 - +2026-01-12 21:49:16,614 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:49:16] "GET /api/portfolio/positions?_t=1768225756292 HTTP/1.1" 200 - +2026-01-12 21:49:46,265 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:49:46] "GET /api/strategies/notifications?limit=50&_t=1768225786257 HTTP/1.1" 200 - +2026-01-12 21:49:46,605 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:49:46] "GET /api/portfolio/positions?_t=1768225786279 HTTP/1.1" 200 - +2026-01-12 21:49:46,606 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:49:46] "GET /api/portfolio/summary?_t=1768225786279 HTTP/1.1" 200 - +2026-01-12 21:49:48,609 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:49:48] "GET /api/strategies/notifications?limit=50&_t=1768225788291 HTTP/1.1" 200 - +2026-01-12 21:50:16,283 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:50:16] "GET /api/strategies/notifications?limit=50&_t=1768225816266 HTTP/1.1" 200 - +2026-01-12 21:50:16,597 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:50:16] "GET /api/portfolio/positions?_t=1768225816288 HTTP/1.1" 200 - +2026-01-12 21:50:16,598 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:50:16] "GET /api/portfolio/summary?_t=1768225816288 HTTP/1.1" 200 - +2026-01-12 21:50:46,583 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:50:46] "GET /api/strategies/notifications?limit=50&_t=1768225846267 HTTP/1.1" 200 - +2026-01-12 21:50:46,600 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:50:46] "GET /api/portfolio/positions?_t=1768225846286 HTTP/1.1" 200 - +2026-01-12 21:50:46,601 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:50:46] "GET /api/portfolio/summary?_t=1768225846286 HTTP/1.1" 200 - +2026-01-12 21:50:48,289 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:50:48] "GET /api/strategies/notifications?limit=50&_t=1768225848281 HTTP/1.1" 200 - +2026-01-12 21:51:16,598 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:51:16] "GET /api/strategies/notifications?limit=50&_t=1768225876270 HTTP/1.1" 200 - +2026-01-12 21:51:16,650 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (291077s) +2026-01-12 21:51:16,669 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (291077s) +2026-01-12 21:51:16,701 - app.data_sources.base - WARNING - Warning: GD data is delayed (291077s) +2026-01-12 21:51:16,713 - app.data_sources.base - WARNING - Warning: AMD data is delayed (291077s) +2026-01-12 21:51:16,727 - app.data_sources.base - WARNING - Warning: INTC data is delayed (291077s) +2026-01-12 21:51:16,728 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (291077s) +2026-01-12 21:51:16,731 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (291077s) +2026-01-12 21:51:16,736 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (291077s) +2026-01-12 21:51:16,737 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (291077s) +2026-01-12 21:51:16,760 - app.data_sources.base - WARNING - Warning: AMD data is delayed (291077s) +2026-01-12 21:51:16,764 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (291077s) +2026-01-12 21:51:16,776 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (291077s) +2026-01-12 21:51:16,797 - app.data_sources.base - WARNING - Warning: INTC data is delayed (291077s) +2026-01-12 21:51:16,798 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:51:16] "GET /api/portfolio/positions?_t=1768225876293 HTTP/1.1" 200 - +2026-01-12 21:51:16,799 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (291077s) +2026-01-12 21:51:16,813 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (291077s) +2026-01-12 21:51:16,814 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:51:16] "GET /api/portfolio/summary?_t=1768225876293 HTTP/1.1" 200 - +2026-01-12 21:51:46,275 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:51:46] "GET /api/strategies/notifications?limit=50&_t=1768225906267 HTTP/1.1" 200 - +2026-01-12 21:51:46,601 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:51:46] "GET /api/portfolio/positions?_t=1768225906290 HTTP/1.1" 200 - +2026-01-12 21:51:46,601 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:51:46] "GET /api/portfolio/summary?_t=1768225906290 HTTP/1.1" 200 - +2026-01-12 21:51:48,596 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:51:48] "GET /api/strategies/notifications?limit=50&_t=1768225908278 HTTP/1.1" 200 - +2026-01-12 21:52:16,270 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:52:16] "GET /api/strategies/notifications?limit=50&_t=1768225936261 HTTP/1.1" 200 - +2026-01-12 21:52:16,598 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:52:16] "GET /api/portfolio/positions?_t=1768225936283 HTTP/1.1" 200 - +2026-01-12 21:52:16,599 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:52:16] "GET /api/portfolio/summary?_t=1768225936284 HTTP/1.1" 200 - +2026-01-12 21:52:46,265 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:52:46] "GET /api/strategies/notifications?limit=50&_t=1768225966258 HTTP/1.1" 200 - +2026-01-12 21:52:46,592 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:52:46] "GET /api/portfolio/positions?_t=1768225966279 HTTP/1.1" 200 - +2026-01-12 21:52:46,593 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:52:46] "GET /api/portfolio/summary?_t=1768225966279 HTTP/1.1" 200 - +2026-01-12 21:52:48,604 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:52:48] "GET /api/strategies/notifications?limit=50&_t=1768225968286 HTTP/1.1" 200 - +2026-01-12 21:53:16,262 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:53:16] "GET /api/strategies/notifications?limit=50&_t=1768225996255 HTTP/1.1" 200 - +2026-01-12 21:53:16,589 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:53:16] "GET /api/portfolio/positions?_t=1768225996276 HTTP/1.1" 200 - +2026-01-12 21:53:16,590 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:53:16] "GET /api/portfolio/summary?_t=1768225996276 HTTP/1.1" 200 - +2026-01-12 21:53:46,265 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:53:46] "GET /api/strategies/notifications?limit=50&_t=1768226026257 HTTP/1.1" 200 - +2026-01-12 21:53:46,603 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:53:46] "GET /api/portfolio/positions?_t=1768226026279 HTTP/1.1" 200 - +2026-01-12 21:53:46,614 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:53:46] "GET /api/portfolio/summary?_t=1768226026279 HTTP/1.1" 200 - +2026-01-12 21:53:48,300 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:53:48] "GET /api/strategies/notifications?limit=50&_t=1768226028287 HTTP/1.1" 200 - +2026-01-12 21:54:16,590 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:54:16] "GET /api/strategies/notifications?limit=50&_t=1768226056255 HTTP/1.1" 200 - +2026-01-12 21:54:16,591 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:54:16] "GET /api/portfolio/summary?_t=1768226056279 HTTP/1.1" 200 - +2026-01-12 21:54:16,591 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:54:16] "GET /api/portfolio/positions?_t=1768226056279 HTTP/1.1" 200 - +2026-01-12 21:54:46,270 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:54:46] "GET /api/strategies/notifications?limit=50&_t=1768226086262 HTTP/1.1" 200 - +2026-01-12 21:54:46,610 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:54:46] "GET /api/portfolio/positions?_t=1768226086283 HTTP/1.1" 200 - +2026-01-12 21:54:46,610 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:54:46] "GET /api/portfolio/summary?_t=1768226086283 HTTP/1.1" 200 - +2026-01-12 21:54:48,295 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:54:48] "GET /api/strategies/notifications?limit=50&_t=1768226088286 HTTP/1.1" 200 - +2026-01-12 21:55:16,578 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:55:16] "GET /api/strategies/notifications?limit=50&_t=1768226116261 HTTP/1.1" 200 - +2026-01-12 21:55:16,594 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:55:16] "GET /api/portfolio/positions?_t=1768226116282 HTTP/1.1" 200 - +2026-01-12 21:55:16,605 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:55:16] "GET /api/portfolio/summary?_t=1768226116282 HTTP/1.1" 200 - +2026-01-12 21:55:33,608 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:55:33] "GET /api/strategies/notifications?limit=50&_t=1768226133588 HTTP/1.1" 200 - +2026-01-12 21:55:34,624 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:55:34] "POST /api/strategies/notifications/read HTTP/1.1" 200 - +2026-01-12 21:55:46,275 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:55:46] "GET /api/strategies/notifications?limit=50&_t=1768226146267 HTTP/1.1" 200 - +2026-01-12 21:55:46,603 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:55:46] "GET /api/portfolio/positions?_t=1768226146289 HTTP/1.1" 200 - +2026-01-12 21:55:46,604 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:55:46] "GET /api/portfolio/summary?_t=1768226146289 HTTP/1.1" 200 - +2026-01-12 21:55:48,601 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:55:48] "GET /api/strategies/notifications?limit=50&_t=1768226148283 HTTP/1.1" 200 - +2026-01-12 21:56:16,271 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:56:16] "GET /api/strategies/notifications?limit=50&_t=1768226176262 HTTP/1.1" 200 - +2026-01-12 21:56:16,597 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:56:16] "GET /api/portfolio/positions?_t=1768226176285 HTTP/1.1" 200 - +2026-01-12 21:56:16,597 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:56:16] "GET /api/portfolio/summary?_t=1768226176285 HTTP/1.1" 200 - +2026-01-12 21:56:46,270 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:56:46] "GET /api/strategies/notifications?limit=50&_t=1768226206262 HTTP/1.1" 200 - +2026-01-12 21:56:46,607 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:56:46] "GET /api/portfolio/positions?_t=1768226206284 HTTP/1.1" 200 - +2026-01-12 21:56:46,607 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:56:46] "GET /api/portfolio/summary?_t=1768226206284 HTTP/1.1" 200 - +2026-01-12 21:56:48,294 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:56:48] "GET /api/strategies/notifications?limit=50&_t=1768226208287 HTTP/1.1" 200 - +2026-01-12 21:57:16,581 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:57:16] "GET /api/strategies/notifications?limit=50&_t=1768226236265 HTTP/1.1" 200 - +2026-01-12 21:57:16,617 - app.data_sources.base - WARNING - Warning: AMD data is delayed (291437s) +2026-01-12 21:57:16,617 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (291437s) +2026-01-12 21:57:16,623 - app.data_sources.base - WARNING - Warning: GD data is delayed (291437s) +2026-01-12 21:57:16,638 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (291437s) +2026-01-12 21:57:16,638 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (291437s) +2026-01-12 21:57:16,639 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (291437s) +2026-01-12 21:57:16,646 - app.data_sources.base - WARNING - Warning: INTC data is delayed (291437s) +2026-01-12 21:57:16,647 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (291437s) +2026-01-12 21:57:16,651 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (291437s) +2026-01-12 21:57:16,660 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (291437s) +2026-01-12 21:57:16,664 - app.data_sources.base - WARNING - Warning: INTC data is delayed (291437s) +2026-01-12 21:57:16,671 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (291437s) +2026-01-12 21:57:16,680 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:57:16] "GET /api/portfolio/positions?_t=1768226236285 HTTP/1.1" 200 - +2026-01-12 21:57:17,698 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:57:17] "GET /api/portfolio/summary?_t=1768226236285 HTTP/1.1" 200 - +2026-01-12 21:57:46,264 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:57:46] "GET /api/strategies/notifications?limit=50&_t=1768226266256 HTTP/1.1" 200 - +2026-01-12 21:57:46,602 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:57:46] "GET /api/portfolio/summary?_t=1768226266278 HTTP/1.1" 200 - +2026-01-12 21:57:46,602 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:57:46] "GET /api/portfolio/positions?_t=1768226266278 HTTP/1.1" 200 - +2026-01-12 21:57:48,296 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:57:48] "GET /api/strategies/notifications?limit=50&_t=1768226268285 HTTP/1.1" 200 - +2026-01-12 21:58:16,577 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:58:16] "GET /api/strategies/notifications?limit=50&_t=1768226296257 HTTP/1.1" 200 - +2026-01-12 21:58:16,594 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:58:16] "GET /api/portfolio/summary?_t=1768226296277 HTTP/1.1" 200 - +2026-01-12 21:58:16,600 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:58:16] "GET /api/portfolio/positions?_t=1768226296277 HTTP/1.1" 200 - +2026-01-12 21:58:46,278 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:58:46] "GET /api/strategies/notifications?limit=50&_t=1768226326269 HTTP/1.1" 200 - +2026-01-12 21:58:46,604 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:58:46] "GET /api/portfolio/positions?_t=1768226326291 HTTP/1.1" 200 - +2026-01-12 21:58:46,605 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:58:46] "GET /api/portfolio/summary?_t=1768226326291 HTTP/1.1" 200 - +2026-01-12 21:58:48,288 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:58:48] "GET /api/strategies/notifications?limit=50&_t=1768226328280 HTTP/1.1" 200 - +2026-01-12 21:59:16,582 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:59:16] "GET /api/strategies/notifications?limit=50&_t=1768226356266 HTTP/1.1" 200 - +2026-01-12 21:59:16,598 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:59:16] "GET /api/portfolio/positions?_t=1768226356287 HTTP/1.1" 200 - +2026-01-12 21:59:16,599 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:59:16] "GET /api/portfolio/summary?_t=1768226356287 HTTP/1.1" 200 - +2026-01-12 21:59:46,278 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:59:46] "GET /api/strategies/notifications?limit=50&_t=1768226386269 HTTP/1.1" 200 - +2026-01-12 21:59:46,603 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:59:46] "GET /api/portfolio/positions?_t=1768226386292 HTTP/1.1" 200 - +2026-01-12 21:59:46,604 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:59:46] "GET /api/portfolio/summary?_t=1768226386292 HTTP/1.1" 200 - +2026-01-12 21:59:48,288 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 21:59:48] "GET /api/strategies/notifications?limit=50&_t=1768226388280 HTTP/1.1" 200 - +2026-01-12 22:00:16,575 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:00:16] "GET /api/strategies/notifications?limit=50&_t=1768226416258 HTTP/1.1" 200 - +2026-01-12 22:00:16,592 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:00:16] "GET /api/portfolio/positions?_t=1768226416279 HTTP/1.1" 200 - +2026-01-12 22:00:16,593 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:00:16] "GET /api/portfolio/summary?_t=1768226416279 HTTP/1.1" 200 - +2026-01-12 22:00:36,649 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:00:36] "GET /api/strategies/notifications?limit=50&_t=1768226436618 HTTP/1.1" 200 - +2026-01-12 22:00:46,611 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:00:46] "GET /api/strategies/notifications?limit=50&_t=1768226446292 HTTP/1.1" 200 - +2026-01-12 22:00:46,612 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:00:46] "GET /api/strategies/notifications?limit=50&_t=1768226446292 HTTP/1.1" 200 - +2026-01-12 22:00:46,670 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:00:46] "GET /api/portfolio/positions?_t=1768226446349 HTTP/1.1" 200 - +2026-01-12 22:00:46,671 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:00:46] "GET /api/portfolio/summary?_t=1768226446349 HTTP/1.1" 200 - +2026-01-12 22:01:16,302 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:01:16] "GET /api/strategies/notifications?limit=50&_t=1768226476286 HTTP/1.1" 200 - +2026-01-12 22:01:16,617 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:01:16] "GET /api/strategies/notifications?limit=50&_t=1768226476286 HTTP/1.1" 200 - +2026-01-12 22:01:16,662 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:01:16] "GET /api/portfolio/positions?_t=1768226476348 HTTP/1.1" 200 - +2026-01-12 22:01:16,673 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:01:16] "GET /api/portfolio/summary?_t=1768226476348 HTTP/1.1" 200 - +2026-01-12 22:01:46,597 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:01:46] "GET /api/strategies/notifications?limit=50&_t=1768226506279 HTTP/1.1" 200 - +2026-01-12 22:01:48,303 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:01:48] "GET /api/strategies/notifications?limit=50&_t=1768226508294 HTTP/1.1" 200 - +2026-01-12 22:01:48,674 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:01:48] "GET /api/portfolio/positions?_t=1768226508351 HTTP/1.1" 200 - +2026-01-12 22:01:48,675 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:01:48] "GET /api/portfolio/summary?_t=1768226508351 HTTP/1.1" 200 - +2026-01-12 22:02:16,297 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:02:16] "GET /api/strategies/notifications?limit=50&_t=1768226536289 HTTP/1.1" 200 - +2026-01-12 22:02:46,602 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:02:46] "GET /api/strategies/notifications?limit=50&_t=1768226566284 HTTP/1.1" 200 - +2026-01-12 22:02:48,301 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:02:48] "GET /api/strategies/notifications?limit=50&_t=1768226568290 HTTP/1.1" 200 - +2026-01-12 22:02:48,695 - app.data_sources.base - WARNING - Warning: AMD data is delayed (291769s) +2026-01-12 22:02:48,707 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (291769s) +2026-01-12 22:02:48,708 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (291769s) +2026-01-12 22:02:48,708 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (291769s) +2026-01-12 22:02:48,720 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (291769s) +2026-01-12 22:02:48,722 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (291769s) +2026-01-12 22:02:48,722 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (291769s) +2026-01-12 22:02:48,726 - app.data_sources.base - WARNING - Warning: GD data is delayed (291769s) +2026-01-12 22:02:48,731 - app.data_sources.base - WARNING - Warning: INTC data is delayed (291769s) +2026-01-12 22:02:48,742 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (291769s) +2026-01-12 22:02:48,743 - app.data_sources.base - WARNING - Warning: INTC data is delayed (291769s) +2026-01-12 22:02:48,748 - app.data_sources.base - WARNING - Warning: GD data is delayed (291769s) +2026-01-12 22:02:48,780 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:02:48] "GET /api/portfolio/positions?_t=1768226568355 HTTP/1.1" 200 - +2026-01-12 22:02:48,898 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:02:48] "GET /api/portfolio/summary?_t=1768226568355 HTTP/1.1" 200 - +2026-01-12 22:03:16,302 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:03:16] "GET /api/strategies/notifications?limit=50&_t=1768226596294 HTTP/1.1" 200 - +2026-01-12 22:03:18,866 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:03:18] "GET /api/strategies/notifications?limit=50&_t=1768226598527 HTTP/1.1" 200 - +2026-01-12 22:03:18,886 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:03:18] "GET /api/portfolio/positions?_t=1768226598566 HTTP/1.1" 200 - +2026-01-12 22:03:18,887 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:03:18] "GET /api/portfolio/summary?_t=1768226598566 HTTP/1.1" 200 - +2026-01-12 22:03:20,142 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:03:20] "GET /api/strategies?_t=1768226600124 HTTP/1.1" 200 - +2026-01-12 22:03:21,553 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:03:21] "GET /api/market/types?_t=1768226601196 HTTP/1.1" 200 - +2026-01-12 22:03:21,561 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:03:21] "GET /api/portfolio/positions?_t=1768226601196 HTTP/1.1" 200 - +2026-01-12 22:03:21,569 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:03:21] "GET /api/portfolio/summary?_t=1768226601196 HTTP/1.1" 200 - +2026-01-12 22:03:21,570 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:03:21] "GET /api/portfolio/monitors?_t=1768226601196 HTTP/1.1" 200 - +2026-01-12 22:03:21,570 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:03:21] "GET /api/portfolio/alerts?_t=1768226601196 HTTP/1.1" 200 - +2026-01-12 22:03:21,571 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:03:21] "GET /api/portfolio/groups?_t=1768226601196 HTTP/1.1" 200 - +2026-01-12 22:03:46,577 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:03:46] "GET /api/strategies/notifications?limit=50&_t=1768226626259 HTTP/1.1" 200 - +2026-01-12 22:03:46,606 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:03:46] "GET /api/strategies/notifications?limit=50&_t=1768226626290 HTTP/1.1" 200 - +2026-01-12 22:03:51,223 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:03:51] "GET /api/portfolio/positions?_t=1768226631211 HTTP/1.1" 200 - +2026-01-12 22:03:51,529 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:03:51] "GET /api/portfolio/summary?_t=1768226631211 HTTP/1.1" 200 - +2026-01-12 22:04:16,573 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:04:16] "GET /api/strategies/notifications?limit=50&_t=1768226656256 HTTP/1.1" 200 - +2026-01-12 22:04:16,602 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:04:16] "GET /api/strategies/notifications?limit=50&_t=1768226656288 HTTP/1.1" 200 - +2026-01-12 22:04:21,210 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:04:21] "GET /api/portfolio/positions?_t=1768226661202 HTTP/1.1" 200 - +2026-01-12 22:04:21,523 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:04:21] "GET /api/portfolio/summary?_t=1768226661202 HTTP/1.1" 200 - +2026-01-12 22:04:46,575 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:04:46] "GET /api/strategies/notifications?limit=50&_t=1768226686256 HTTP/1.1" 200 - +2026-01-12 22:04:46,606 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:04:46] "GET /api/strategies/notifications?limit=50&_t=1768226686287 HTTP/1.1" 200 - +2026-01-12 22:04:51,208 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:04:51] "GET /api/portfolio/positions?_t=1768226691200 HTTP/1.1" 200 - +2026-01-12 22:04:51,522 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:04:51] "GET /api/portfolio/summary?_t=1768226691200 HTTP/1.1" 200 - +2026-01-12 22:05:16,578 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:05:16] "GET /api/strategies/notifications?limit=50&_t=1768226716262 HTTP/1.1" 200 - +2026-01-12 22:05:16,609 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:05:16] "GET /api/strategies/notifications?limit=50&_t=1768226716294 HTTP/1.1" 200 - +2026-01-12 22:05:21,228 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:05:21] "GET /api/portfolio/positions?_t=1768226721210 HTTP/1.1" 200 - +2026-01-12 22:05:21,529 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:05:21] "GET /api/portfolio/summary?_t=1768226721210 HTTP/1.1" 200 - +2026-01-12 22:05:46,581 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:05:46] "GET /api/strategies/notifications?limit=50&_t=1768226746266 HTTP/1.1" 200 - +2026-01-12 22:05:48,303 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:05:48] "GET /api/strategies/notifications?limit=50&_t=1768226748292 HTTP/1.1" 200 - +2026-01-12 22:05:51,531 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:05:51] "GET /api/portfolio/summary?_t=1768226751208 HTTP/1.1" 200 - +2026-01-12 22:05:51,532 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:05:51] "GET /api/portfolio/positions?_t=1768226751208 HTTP/1.1" 200 - +2026-01-12 22:06:16,264 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:06:16] "GET /api/strategies/notifications?limit=50&_t=1768226776256 HTTP/1.1" 200 - +2026-01-12 22:06:21,515 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:06:21] "GET /api/portfolio/positions?_t=1768226781201 HTTP/1.1" 200 - +2026-01-12 22:06:21,516 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:06:21] "GET /api/portfolio/summary?_t=1768226781201 HTTP/1.1" 200 - +2026-01-12 22:06:46,265 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:06:46] "GET /api/strategies/notifications?limit=50&_t=1768226806257 HTTP/1.1" 200 - +2026-01-12 22:06:48,603 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:06:48] "GET /api/strategies/notifications?limit=50&_t=1768226808286 HTTP/1.1" 200 - +2026-01-12 22:06:51,233 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:06:51] "GET /api/portfolio/positions?_t=1768226811212 HTTP/1.1" 200 - +2026-01-12 22:06:51,529 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:06:51] "GET /api/portfolio/summary?_t=1768226811212 HTTP/1.1" 200 - +2026-01-12 22:07:16,581 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:07:16] "GET /api/strategies/notifications?limit=50&_t=1768226836268 HTTP/1.1" 200 - +2026-01-12 22:07:21,211 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:07:21] "GET /api/portfolio/positions?_t=1768226841203 HTTP/1.1" 200 - +2026-01-12 22:07:21,522 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:07:21] "GET /api/portfolio/summary?_t=1768226841203 HTTP/1.1" 200 - +2026-01-12 22:07:46,581 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:07:46] "GET /api/strategies/notifications?limit=50&_t=1768226866264 HTTP/1.1" 200 - +2026-01-12 22:07:48,300 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:07:48] "GET /api/strategies/notifications?limit=50&_t=1768226868291 HTTP/1.1" 200 - +2026-01-12 22:07:51,520 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:07:51] "GET /api/portfolio/positions?_t=1768226871202 HTTP/1.1" 200 - +2026-01-12 22:07:51,521 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:07:51] "GET /api/portfolio/summary?_t=1768226871202 HTTP/1.1" 200 - +2026-01-12 22:08:16,276 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:08:16] "GET /api/strategies/notifications?limit=50&_t=1768226896268 HTTP/1.1" 200 - +2026-01-12 22:08:21,543 - app.data_sources.base - WARNING - Warning: INTC data is delayed (292102s) +2026-01-12 22:08:21,553 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (292102s) +2026-01-12 22:08:21,562 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (292102s) +2026-01-12 22:08:21,568 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (292102s) +2026-01-12 22:08:21,569 - app.data_sources.base - WARNING - Warning: GD data is delayed (292102s) +2026-01-12 22:08:21,572 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (292102s) +2026-01-12 22:08:21,583 - app.data_sources.base - WARNING - Warning: AMD data is delayed (292102s) +2026-01-12 22:08:21,583 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (292102s) +2026-01-12 22:08:21,584 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (292102s) +2026-01-12 22:08:21,592 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (292102s) +2026-01-12 22:08:21,600 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (292102s) +2026-01-12 22:08:21,603 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:08:21] "GET /api/portfolio/positions?_t=1768226901206 HTTP/1.1" 200 - +2026-01-12 22:08:21,657 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:08:21] "GET /api/portfolio/summary?_t=1768226901206 HTTP/1.1" 200 - +2026-01-12 22:08:46,273 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:08:46] "GET /api/strategies/notifications?limit=50&_t=1768226926265 HTTP/1.1" 200 - +2026-01-12 22:08:48,597 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:08:48] "GET /api/strategies/notifications?limit=50&_t=1768226928282 HTTP/1.1" 200 - +2026-01-12 22:08:51,215 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:08:51] "GET /api/portfolio/positions?_t=1768226931206 HTTP/1.1" 200 - +2026-01-12 22:08:51,522 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:08:51] "GET /api/portfolio/summary?_t=1768226931206 HTTP/1.1" 200 - +2026-01-12 22:09:16,583 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:09:16] "GET /api/strategies/notifications?limit=50&_t=1768226956266 HTTP/1.1" 200 - +2026-01-12 22:09:21,221 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:09:21] "GET /api/portfolio/positions?_t=1768226961209 HTTP/1.1" 200 - +2026-01-12 22:09:21,526 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:09:21] "GET /api/portfolio/summary?_t=1768226961209 HTTP/1.1" 200 - +2026-01-12 22:09:46,575 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:09:46] "GET /api/strategies/notifications?limit=50&_t=1768226986260 HTTP/1.1" 200 - +2026-01-12 22:09:48,296 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:09:48] "GET /api/strategies/notifications?limit=50&_t=1768226988287 HTTP/1.1" 200 - +2026-01-12 22:09:51,530 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:09:51] "GET /api/portfolio/positions?_t=1768226991209 HTTP/1.1" 200 - +2026-01-12 22:09:51,531 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:09:51] "GET /api/portfolio/summary?_t=1768226991209 HTTP/1.1" 200 - +2026-01-12 22:10:16,265 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:10:16] "GET /api/strategies/notifications?limit=50&_t=1768227016255 HTTP/1.1" 200 - +2026-01-12 22:10:21,517 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:10:21] "GET /api/portfolio/positions?_t=1768227021203 HTTP/1.1" 200 - +2026-01-12 22:10:21,517 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:10:21] "GET /api/portfolio/summary?_t=1768227021203 HTTP/1.1" 200 - +2026-01-12 22:10:46,271 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:10:46] "GET /api/strategies/notifications?limit=50&_t=1768227046262 HTTP/1.1" 200 - +2026-01-12 22:10:48,604 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:10:48] "GET /api/strategies/notifications?limit=50&_t=1768227048286 HTTP/1.1" 200 - +2026-01-12 22:10:51,208 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:10:51] "GET /api/portfolio/positions?_t=1768227051199 HTTP/1.1" 200 - +2026-01-12 22:10:51,516 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:10:51] "GET /api/portfolio/summary?_t=1768227051199 HTTP/1.1" 200 - +2026-01-12 22:11:16,587 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:11:16] "GET /api/strategies/notifications?limit=50&_t=1768227076269 HTTP/1.1" 200 - +2026-01-12 22:11:21,221 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:11:21] "GET /api/portfolio/positions?_t=1768227081213 HTTP/1.1" 200 - +2026-01-12 22:11:21,537 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:11:21] "GET /api/portfolio/summary?_t=1768227081213 HTTP/1.1" 200 - +2026-01-12 22:11:46,574 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:11:46] "GET /api/strategies/notifications?limit=50&_t=1768227106258 HTTP/1.1" 200 - +2026-01-12 22:11:48,303 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:11:48] "GET /api/strategies/notifications?limit=50&_t=1768227108294 HTTP/1.1" 200 - +2026-01-12 22:11:51,531 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:11:51] "GET /api/portfolio/summary?_t=1768227111212 HTTP/1.1" 200 - +2026-01-12 22:11:51,540 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:11:51] "GET /api/portfolio/positions?_t=1768227111212 HTTP/1.1" 200 - +2026-01-12 22:12:16,276 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:12:16] "GET /api/strategies/notifications?limit=50&_t=1768227136266 HTTP/1.1" 200 - +2026-01-12 22:12:21,520 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:12:21] "GET /api/portfolio/positions?_t=1768227141204 HTTP/1.1" 200 - +2026-01-12 22:12:21,521 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:12:21] "GET /api/portfolio/summary?_t=1768227141204 HTTP/1.1" 200 - +2026-01-12 22:12:46,274 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:12:46] "GET /api/strategies/notifications?limit=50&_t=1768227166265 HTTP/1.1" 200 - +2026-01-12 22:12:48,607 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:12:48] "GET /api/strategies/notifications?limit=50&_t=1768227168289 HTTP/1.1" 200 - +2026-01-12 22:12:51,217 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:12:51] "GET /api/portfolio/positions?_t=1768227171208 HTTP/1.1" 200 - +2026-01-12 22:12:51,524 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:12:51] "GET /api/portfolio/summary?_t=1768227171208 HTTP/1.1" 200 - +2026-01-12 22:13:16,578 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:13:16] "GET /api/strategies/notifications?limit=50&_t=1768227196256 HTTP/1.1" 200 - +2026-01-12 22:13:21,212 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:13:21] "GET /api/portfolio/positions?_t=1768227201201 HTTP/1.1" 200 - +2026-01-12 22:13:21,516 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:13:21] "GET /api/portfolio/summary?_t=1768227201201 HTTP/1.1" 200 - +2026-01-12 22:13:46,574 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:13:46] "GET /api/strategies/notifications?limit=50&_t=1768227226256 HTTP/1.1" 200 - +2026-01-12 22:13:48,299 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:13:48] "GET /api/strategies/notifications?limit=50&_t=1768227228291 HTTP/1.1" 200 - +2026-01-12 22:13:51,546 - app.data_sources.base - WARNING - Warning: AMD data is delayed (292432s) +2026-01-12 22:13:51,547 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (292432s) +2026-01-12 22:13:51,548 - app.data_sources.base - WARNING - Warning: INTC data is delayed (292432s) +2026-01-12 22:13:51,553 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (292432s) +2026-01-12 22:13:51,560 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (292432s) +2026-01-12 22:13:51,569 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (292432s) +2026-01-12 22:13:51,570 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (292432s) +2026-01-12 22:13:51,571 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (292432s) +2026-01-12 22:13:51,582 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (292432s) +2026-01-12 22:13:51,583 - app.data_sources.base - WARNING - Warning: GD data is delayed (292432s) +2026-01-12 22:13:51,588 - app.data_sources.base - WARNING - Warning: GD data is delayed (292432s) +2026-01-12 22:13:51,595 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (292432s) +2026-01-12 22:13:51,601 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (292432s) +2026-01-12 22:13:51,606 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (292432s) +2026-01-12 22:13:51,607 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:13:51] "GET /api/portfolio/positions?_t=1768227231203 HTTP/1.1" 200 - +2026-01-12 22:13:51,797 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:13:51] "GET /api/portfolio/summary?_t=1768227231203 HTTP/1.1" 200 - +2026-01-12 22:14:16,262 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:14:16] "GET /api/strategies/notifications?limit=50&_t=1768227256255 HTTP/1.1" 200 - +2026-01-12 22:14:21,514 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:14:21] "GET /api/portfolio/positions?_t=1768227261202 HTTP/1.1" 200 - +2026-01-12 22:14:21,515 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:14:21] "GET /api/portfolio/summary?_t=1768227261202 HTTP/1.1" 200 - +2026-01-12 22:14:46,270 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:14:46] "GET /api/strategies/notifications?limit=50&_t=1768227286262 HTTP/1.1" 200 - +2026-01-12 22:14:48,598 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:14:48] "GET /api/strategies/notifications?limit=50&_t=1768227288282 HTTP/1.1" 200 - +2026-01-12 22:14:51,220 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:14:51] "GET /api/portfolio/positions?_t=1768227291209 HTTP/1.1" 200 - +2026-01-12 22:14:51,521 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:14:51] "GET /api/portfolio/summary?_t=1768227291209 HTTP/1.1" 200 - +2026-01-12 22:15:16,576 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:15:16] "GET /api/strategies/notifications?limit=50&_t=1768227316259 HTTP/1.1" 200 - +2026-01-12 22:15:21,223 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:15:21] "GET /api/portfolio/positions?_t=1768227321212 HTTP/1.1" 200 - +2026-01-12 22:15:21,530 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:15:21] "GET /api/portfolio/summary?_t=1768227321212 HTTP/1.1" 200 - +2026-01-12 22:15:46,577 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:15:46] "GET /api/strategies/notifications?limit=50&_t=1768227346259 HTTP/1.1" 200 - +2026-01-12 22:15:48,300 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:15:48] "GET /api/strategies/notifications?limit=50&_t=1768227348281 HTTP/1.1" 200 - +2026-01-12 22:15:51,523 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:15:51] "GET /api/portfolio/positions?_t=1768227351206 HTTP/1.1" 200 - +2026-01-12 22:15:51,524 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:15:51] "GET /api/portfolio/summary?_t=1768227351206 HTTP/1.1" 200 - +2026-01-12 22:16:16,265 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:16:16] "GET /api/strategies/notifications?limit=50&_t=1768227376257 HTTP/1.1" 200 - +2026-01-12 22:16:21,523 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:16:21] "GET /api/portfolio/positions?_t=1768227381208 HTTP/1.1" 200 - +2026-01-12 22:16:21,524 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:16:21] "GET /api/portfolio/summary?_t=1768227381208 HTTP/1.1" 200 - +2026-01-12 22:16:46,276 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:16:46] "GET /api/strategies/notifications?limit=50&_t=1768227406267 HTTP/1.1" 200 - +2026-01-12 22:16:48,602 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:16:48] "GET /api/strategies/notifications?limit=50&_t=1768227408288 HTTP/1.1" 200 - +2026-01-12 22:16:51,209 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:16:51] "GET /api/portfolio/positions?_t=1768227411200 HTTP/1.1" 200 - +2026-01-12 22:16:51,515 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:16:51] "GET /api/portfolio/summary?_t=1768227411200 HTTP/1.1" 200 - +2026-01-12 22:17:16,572 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:17:16] "GET /api/strategies/notifications?limit=50&_t=1768227436255 HTTP/1.1" 200 - +2026-01-12 22:17:21,219 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:17:21] "GET /api/portfolio/positions?_t=1768227441209 HTTP/1.1" 200 - +2026-01-12 22:17:21,529 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:17:21] "GET /api/portfolio/summary?_t=1768227441209 HTTP/1.1" 200 - +2026-01-12 22:17:46,573 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:17:46] "GET /api/strategies/notifications?limit=50&_t=1768227466260 HTTP/1.1" 200 - +2026-01-12 22:17:48,292 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:17:48] "GET /api/strategies/notifications?limit=50&_t=1768227468282 HTTP/1.1" 200 - +2026-01-12 22:17:51,534 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:17:51] "GET /api/portfolio/positions?_t=1768227471211 HTTP/1.1" 200 - +2026-01-12 22:17:51,535 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:17:51] "GET /api/portfolio/summary?_t=1768227471211 HTTP/1.1" 200 - +2026-01-12 22:18:16,278 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:18:16] "GET /api/strategies/notifications?limit=50&_t=1768227496268 HTTP/1.1" 200 - +2026-01-12 22:18:21,527 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:18:21] "GET /api/portfolio/positions?_t=1768227501209 HTTP/1.1" 200 - +2026-01-12 22:18:21,528 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:18:21] "GET /api/portfolio/summary?_t=1768227501209 HTTP/1.1" 200 - +2026-01-12 22:18:46,264 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:18:46] "GET /api/strategies/notifications?limit=50&_t=1768227526257 HTTP/1.1" 200 - +2026-01-12 22:18:48,607 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:18:48] "GET /api/strategies/notifications?limit=50&_t=1768227528293 HTTP/1.1" 200 - +2026-01-12 22:18:51,213 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:18:51] "GET /api/portfolio/positions?_t=1768227531205 HTTP/1.1" 200 - +2026-01-12 22:18:51,522 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:18:51] "GET /api/portfolio/summary?_t=1768227531205 HTTP/1.1" 200 - +2026-01-12 22:19:16,583 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:19:16] "GET /api/strategies/notifications?limit=50&_t=1768227556270 HTTP/1.1" 200 - +2026-01-12 22:19:21,206 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:19:21] "GET /api/portfolio/positions?_t=1768227561199 HTTP/1.1" 200 - +2026-01-12 22:19:21,511 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:19:21] "GET /api/portfolio/summary?_t=1768227561199 HTTP/1.1" 200 - +2026-01-12 22:19:46,584 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:19:46] "GET /api/strategies/notifications?limit=50&_t=1768227586268 HTTP/1.1" 200 - +2026-01-12 22:19:48,300 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:19:48] "GET /api/strategies/notifications?limit=50&_t=1768227588292 HTTP/1.1" 200 - +2026-01-12 22:19:51,558 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (292792s) +2026-01-12 22:19:51,570 - app.data_sources.base - WARNING - Warning: INTC data is delayed (292792s) +2026-01-12 22:19:51,581 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (292792s) +2026-01-12 22:19:51,584 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (292792s) +2026-01-12 22:19:51,585 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (292792s) +2026-01-12 22:19:51,597 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (292792s) +2026-01-12 22:19:51,598 - app.data_sources.base - WARNING - Warning: AMD data is delayed (292792s) +2026-01-12 22:19:51,599 - app.data_sources.base - WARNING - Warning: GD data is delayed (292792s) +2026-01-12 22:19:51,600 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (292792s) +2026-01-12 22:19:51,607 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (292792s) +2026-01-12 22:19:51,622 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (292792s) +2026-01-12 22:19:51,628 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (292792s) +2026-01-12 22:19:51,629 - app.data_sources.base - WARNING - Warning: GD data is delayed (292792s) +2026-01-12 22:19:51,635 - app.data_sources.base - WARNING - Warning: AMD data is delayed (292792s) +2026-01-12 22:19:51,635 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:19:51] "GET /api/portfolio/summary?_t=1768227591208 HTTP/1.1" 200 - +2026-01-12 22:19:51,637 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:19:51] "GET /api/portfolio/positions?_t=1768227591208 HTTP/1.1" 200 - +2026-01-12 22:20:16,274 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:20:16] "GET /api/strategies/notifications?limit=50&_t=1768227616267 HTTP/1.1" 200 - +2026-01-12 22:20:21,531 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:20:21] "GET /api/portfolio/positions?_t=1768227621213 HTTP/1.1" 200 - +2026-01-12 22:20:21,531 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:20:21] "GET /api/portfolio/summary?_t=1768227621213 HTTP/1.1" 200 - +2026-01-12 22:20:46,276 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:20:46] "GET /api/strategies/notifications?limit=50&_t=1768227646267 HTTP/1.1" 200 - +2026-01-12 22:20:48,597 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:20:48] "GET /api/strategies/notifications?limit=50&_t=1768227648281 HTTP/1.1" 200 - +2026-01-12 22:20:51,222 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:20:51] "GET /api/portfolio/positions?_t=1768227651213 HTTP/1.1" 200 - +2026-01-12 22:20:51,528 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:20:51] "GET /api/portfolio/summary?_t=1768227651213 HTTP/1.1" 200 - +2026-01-12 22:21:16,585 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:21:16] "GET /api/strategies/notifications?limit=50&_t=1768227676266 HTTP/1.1" 200 - +2026-01-12 22:21:21,218 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:21:21] "GET /api/portfolio/positions?_t=1768227681209 HTTP/1.1" 200 - +2026-01-12 22:21:21,526 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:21:21] "GET /api/portfolio/summary?_t=1768227681209 HTTP/1.1" 200 - +2026-01-12 22:21:46,581 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:21:46] "GET /api/strategies/notifications?limit=50&_t=1768227706261 HTTP/1.1" 200 - +2026-01-12 22:21:48,293 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:21:48] "GET /api/strategies/notifications?limit=50&_t=1768227708283 HTTP/1.1" 200 - +2026-01-12 22:21:51,534 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:21:51] "GET /api/portfolio/positions?_t=1768227711214 HTTP/1.1" 200 - +2026-01-12 22:21:51,534 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:21:51] "GET /api/portfolio/summary?_t=1768227711214 HTTP/1.1" 200 - +2026-01-12 22:22:16,273 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:22:16] "GET /api/strategies/notifications?limit=50&_t=1768227736265 HTTP/1.1" 200 - +2026-01-12 22:22:21,513 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:22:21] "GET /api/portfolio/positions?_t=1768227741200 HTTP/1.1" 200 - +2026-01-12 22:22:21,514 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:22:21] "GET /api/portfolio/summary?_t=1768227741200 HTTP/1.1" 200 - +2026-01-12 22:22:46,268 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:22:46] "GET /api/strategies/notifications?limit=50&_t=1768227766261 HTTP/1.1" 200 - +2026-01-12 22:22:48,603 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:22:48] "GET /api/strategies/notifications?limit=50&_t=1768227768291 HTTP/1.1" 200 - +2026-01-12 22:22:51,213 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:22:51] "GET /api/portfolio/positions?_t=1768227771201 HTTP/1.1" 200 - +2026-01-12 22:22:51,517 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:22:51] "GET /api/portfolio/summary?_t=1768227771201 HTTP/1.1" 200 - +2026-01-12 22:23:16,573 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:23:16] "GET /api/strategies/notifications?limit=50&_t=1768227796260 HTTP/1.1" 200 - +2026-01-12 22:23:21,221 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:23:21] "GET /api/portfolio/positions?_t=1768227801212 HTTP/1.1" 200 - +2026-01-12 22:23:21,531 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:23:21] "GET /api/portfolio/summary?_t=1768227801212 HTTP/1.1" 200 - +2026-01-12 22:23:46,577 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:23:46] "GET /api/strategies/notifications?limit=50&_t=1768227826259 HTTP/1.1" 200 - +2026-01-12 22:23:48,292 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:23:48] "GET /api/strategies/notifications?limit=50&_t=1768227828284 HTTP/1.1" 200 - +2026-01-12 22:23:51,520 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:23:51] "GET /api/portfolio/positions?_t=1768227831202 HTTP/1.1" 200 - +2026-01-12 22:23:51,520 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:23:51] "GET /api/portfolio/summary?_t=1768227831202 HTTP/1.1" 200 - +2026-01-12 22:24:16,266 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:24:16] "GET /api/strategies/notifications?limit=50&_t=1768227856257 HTTP/1.1" 200 - +2026-01-12 22:24:21,524 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:24:21] "GET /api/portfolio/positions?_t=1768227861200 HTTP/1.1" 200 - +2026-01-12 22:24:21,524 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:24:21] "GET /api/portfolio/summary?_t=1768227861200 HTTP/1.1" 200 - +2026-01-12 22:24:46,272 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:24:46] "GET /api/strategies/notifications?limit=50&_t=1768227886264 HTTP/1.1" 200 - +2026-01-12 22:24:48,609 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:24:48] "GET /api/strategies/notifications?limit=50&_t=1768227888294 HTTP/1.1" 200 - +2026-01-12 22:24:51,206 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:24:51] "GET /api/portfolio/positions?_t=1768227891198 HTTP/1.1" 200 - +2026-01-12 22:24:51,518 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:24:51] "GET /api/portfolio/summary?_t=1768227891198 HTTP/1.1" 200 - +2026-01-12 22:25:16,574 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:25:16] "GET /api/strategies/notifications?limit=50&_t=1768227916254 HTTP/1.1" 200 - +2026-01-12 22:25:21,212 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:25:21] "GET /api/portfolio/positions?_t=1768227921204 HTTP/1.1" 200 - +2026-01-12 22:25:21,521 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:25:21] "GET /api/portfolio/summary?_t=1768227921204 HTTP/1.1" 200 - +2026-01-12 22:25:46,591 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:25:46] "GET /api/strategies/notifications?limit=50&_t=1768227946259 HTTP/1.1" 200 - +2026-01-12 22:25:48,291 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:25:48] "GET /api/strategies/notifications?limit=50&_t=1768227948282 HTTP/1.1" 200 - +2026-01-12 22:25:51,541 - app.data_sources.base - WARNING - Warning: AMD data is delayed (293152s) +2026-01-12 22:25:51,558 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (293152s) +2026-01-12 22:25:51,578 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (293152s) +2026-01-12 22:25:51,579 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (293152s) +2026-01-12 22:25:51,579 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (293152s) +2026-01-12 22:25:51,579 - app.data_sources.base - WARNING - Warning: INTC data is delayed (293152s) +2026-01-12 22:25:51,580 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (293152s) +2026-01-12 22:25:51,586 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (293152s) +2026-01-12 22:25:51,587 - app.data_sources.base - WARNING - Warning: GD data is delayed (293152s) +2026-01-12 22:25:51,594 - app.data_sources.base - WARNING - Warning: GD data is delayed (293152s) +2026-01-12 22:25:51,608 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:25:51] "GET /api/portfolio/positions?_t=1768227951211 HTTP/1.1" 200 - +2026-01-12 22:25:52,097 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:25:52] "GET /api/portfolio/summary?_t=1768227951211 HTTP/1.1" 200 - +2026-01-12 22:26:16,272 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:26:16] "GET /api/strategies/notifications?limit=50&_t=1768227976264 HTTP/1.1" 200 - +2026-01-12 22:26:21,529 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:26:21] "GET /api/portfolio/positions?_t=1768227981209 HTTP/1.1" 200 - +2026-01-12 22:26:21,530 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:26:21] "GET /api/portfolio/summary?_t=1768227981209 HTTP/1.1" 200 - +2026-01-12 22:26:46,265 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:26:46] "GET /api/strategies/notifications?limit=50&_t=1768228006257 HTTP/1.1" 200 - +2026-01-12 22:26:48,597 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:26:48] "GET /api/strategies/notifications?limit=50&_t=1768228008284 HTTP/1.1" 200 - +2026-01-12 22:26:51,214 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:26:51] "GET /api/portfolio/positions?_t=1768228011205 HTTP/1.1" 200 - +2026-01-12 22:26:51,520 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:26:51] "GET /api/portfolio/summary?_t=1768228011205 HTTP/1.1" 200 - +2026-01-12 22:27:16,571 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:27:16] "GET /api/strategies/notifications?limit=50&_t=1768228036258 HTTP/1.1" 200 - +2026-01-12 22:27:21,211 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:27:21] "GET /api/portfolio/positions?_t=1768228041202 HTTP/1.1" 200 - +2026-01-12 22:27:21,513 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:27:21] "GET /api/portfolio/summary?_t=1768228041202 HTTP/1.1" 200 - +2026-01-12 22:27:46,571 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:27:46] "GET /api/strategies/notifications?limit=50&_t=1768228066256 HTTP/1.1" 200 - +2026-01-12 22:27:48,293 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:27:48] "GET /api/strategies/notifications?limit=50&_t=1768228068285 HTTP/1.1" 200 - +2026-01-12 22:27:51,518 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:27:51] "GET /api/portfolio/positions?_t=1768228071201 HTTP/1.1" 200 - +2026-01-12 22:27:51,518 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:27:51] "GET /api/portfolio/summary?_t=1768228071201 HTTP/1.1" 200 - +2026-01-12 22:27:59,895 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:27:59] "GET /api/market/types?_t=1768228079888 HTTP/1.1" 200 - +2026-01-12 22:28:00,218 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:28:00] "GET /api/portfolio/positions?_t=1768228079888 HTTP/1.1" 200 - +2026-01-12 22:28:00,219 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:28:00] "GET /api/portfolio/monitors?_t=1768228079888 HTTP/1.1" 200 - +2026-01-12 22:28:00,219 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:28:00] "GET /api/portfolio/groups?_t=1768228079888 HTTP/1.1" 200 - +2026-01-12 22:28:00,220 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:28:00] "GET /api/portfolio/summary?_t=1768228079888 HTTP/1.1" 200 - +2026-01-12 22:28:00,220 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:28:00] "GET /api/portfolio/alerts?_t=1768228079888 HTTP/1.1" 200 - +2026-01-12 22:28:16,573 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:28:16] "GET /api/strategies/notifications?limit=50&_t=1768228096259 HTTP/1.1" 200 - +2026-01-12 22:28:29,914 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:28:29] "GET /api/portfolio/positions?_t=1768228109905 HTTP/1.1" 200 - +2026-01-12 22:28:30,220 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:28:30] "GET /api/portfolio/summary?_t=1768228109905 HTTP/1.1" 200 - +2026-01-12 22:28:46,265 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:28:46] "GET /api/strategies/notifications?limit=50&_t=1768228126257 HTTP/1.1" 200 - +2026-01-12 22:28:48,299 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:28:48] "GET /api/strategies/notifications?limit=50&_t=1768228128291 HTTP/1.1" 200 - +2026-01-12 22:29:00,215 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:29:00] "GET /api/portfolio/positions?_t=1768228139897 HTTP/1.1" 200 - +2026-01-12 22:29:00,215 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:29:00] "GET /api/portfolio/summary?_t=1768228139897 HTTP/1.1" 200 - +2026-01-12 22:29:16,274 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:29:16] "GET /api/strategies/notifications?limit=50&_t=1768228156266 HTTP/1.1" 200 - +2026-01-12 22:29:30,220 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:29:30] "GET /api/portfolio/summary?_t=1768228169899 HTTP/1.1" 200 - +2026-01-12 22:29:30,231 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:29:30] "GET /api/portfolio/positions?_t=1768228169899 HTTP/1.1" 200 - +2026-01-12 22:29:46,264 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:29:46] "GET /api/strategies/notifications?limit=50&_t=1768228186256 HTTP/1.1" 200 - +2026-01-12 22:29:48,594 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:29:48] "GET /api/strategies/notifications?limit=50&_t=1768228188281 HTTP/1.1" 200 - +2026-01-12 22:29:59,900 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:29:59] "GET /api/portfolio/positions?_t=1768228199892 HTTP/1.1" 200 - +2026-01-12 22:30:00,207 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:30:00] "GET /api/portfolio/summary?_t=1768228199892 HTTP/1.1" 200 - +2026-01-12 22:30:16,584 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:30:16] "GET /api/strategies/notifications?limit=50&_t=1768228216267 HTTP/1.1" 200 - +2026-01-12 22:30:29,903 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:30:29] "GET /api/portfolio/positions?_t=1768228229893 HTTP/1.1" 200 - +2026-01-12 22:30:30,210 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:30:30] "GET /api/portfolio/summary?_t=1768228229893 HTTP/1.1" 200 - +2026-01-12 22:30:46,583 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:30:46] "GET /api/strategies/notifications?limit=50&_t=1768228246266 HTTP/1.1" 200 - +2026-01-12 22:30:48,291 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:30:48] "GET /api/strategies/notifications?limit=50&_t=1768228248280 HTTP/1.1" 200 - +2026-01-12 22:31:00,225 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (293460s) +2026-01-12 22:31:00,236 - app.data_sources.base - WARNING - Warning: GD data is delayed (293460s) +2026-01-12 22:31:00,242 - app.data_sources.base - WARNING - Warning: AMD data is delayed (293460s) +2026-01-12 22:31:00,244 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (293460s) +2026-01-12 22:31:00,249 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (293460s) +2026-01-12 22:31:00,251 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (293460s) +2026-01-12 22:31:00,259 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (293460s) +2026-01-12 22:31:00,259 - app.data_sources.base - WARNING - Warning: INTC data is delayed (293460s) +2026-01-12 22:31:00,267 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (293460s) +2026-01-12 22:31:00,277 - app.data_sources.base - WARNING - Warning: INTC data is delayed (293460s) +2026-01-12 22:31:00,280 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (293460s) +2026-01-12 22:31:00,333 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:31:00] "GET /api/portfolio/summary?_t=1768228259893 HTTP/1.1" 200 - +2026-01-12 22:31:00,380 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:31:00] "GET /api/portfolio/positions?_t=1768228259893 HTTP/1.1" 200 - +2026-01-12 22:31:16,263 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:31:16] "GET /api/strategies/notifications?limit=50&_t=1768228276256 HTTP/1.1" 200 - +2026-01-12 22:31:18,043 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:31:18] "GET /api/settings/schema?_t=1768228278031 HTTP/1.1" 200 - +2026-01-12 22:31:18,254 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:31:18] "GET /api/settings/values?_t=1768228278031 HTTP/1.1" 200 - +2026-01-12 22:31:19,209 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:31:19] "GET /api/market/types?_t=1768228279199 HTTP/1.1" 200 - +2026-01-12 22:31:19,526 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:31:19] "GET /api/portfolio/positions?_t=1768228279199 HTTP/1.1" 200 - +2026-01-12 22:31:19,527 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:31:19] "GET /api/portfolio/alerts?_t=1768228279199 HTTP/1.1" 200 - +2026-01-12 22:31:19,527 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:31:19] "GET /api/portfolio/monitors?_t=1768228279199 HTTP/1.1" 200 - +2026-01-12 22:31:19,528 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:31:19] "GET /api/portfolio/groups?_t=1768228279199 HTTP/1.1" 200 - +2026-01-12 22:31:19,541 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:31:19] "GET /api/portfolio/summary?_t=1768228279199 HTTP/1.1" 200 - +2026-01-12 22:31:46,580 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:31:46] "GET /api/strategies/notifications?limit=50&_t=1768228306264 HTTP/1.1" 200 - +2026-01-12 22:31:48,289 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:31:48] "GET /api/strategies/notifications?limit=50&_t=1768228308281 HTTP/1.1" 200 - +2026-01-12 22:31:49,516 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:31:49] "GET /api/portfolio/positions?_t=1768228309196 HTTP/1.1" 200 - +2026-01-12 22:31:49,516 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:31:49] "GET /api/portfolio/summary?_t=1768228309196 HTTP/1.1" 200 - +2026-01-12 22:32:16,271 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:32:16] "GET /api/strategies/notifications?limit=50&_t=1768228336262 HTTP/1.1" 200 - +2026-01-12 22:32:19,514 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:32:19] "GET /api/portfolio/positions?_t=1768228339198 HTTP/1.1" 200 - +2026-01-12 22:32:19,515 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:32:19] "GET /api/portfolio/summary?_t=1768228339198 HTTP/1.1" 200 - +2026-01-12 22:32:46,275 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:32:46] "GET /api/strategies/notifications?limit=50&_t=1768228366267 HTTP/1.1" 200 - +2026-01-12 22:32:48,598 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:32:48] "GET /api/strategies/notifications?limit=50&_t=1768228368285 HTTP/1.1" 200 - +2026-01-12 22:32:49,222 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:32:49] "GET /api/portfolio/positions?_t=1768228369210 HTTP/1.1" 200 - +2026-01-12 22:32:49,525 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:32:49] "GET /api/portfolio/summary?_t=1768228369210 HTTP/1.1" 200 - +2026-01-12 22:33:16,584 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:33:16] "GET /api/strategies/notifications?limit=50&_t=1768228396256 HTTP/1.1" 200 - +2026-01-12 22:33:19,216 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:33:19] "GET /api/portfolio/positions?_t=1768228399206 HTTP/1.1" 200 - +2026-01-12 22:33:19,523 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:33:19] "GET /api/portfolio/summary?_t=1768228399206 HTTP/1.1" 200 - +2026-01-12 22:33:46,570 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:33:46] "GET /api/strategies/notifications?limit=50&_t=1768228426257 HTTP/1.1" 200 - +2026-01-12 22:33:48,298 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:33:48] "GET /api/strategies/notifications?limit=50&_t=1768228428289 HTTP/1.1" 200 - +2026-01-12 22:33:49,519 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:33:49] "GET /api/portfolio/summary?_t=1768228429205 HTTP/1.1" 200 - +2026-01-12 22:33:49,520 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:33:49] "GET /api/portfolio/positions?_t=1768228429205 HTTP/1.1" 200 - +2026-01-12 22:34:16,277 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:34:16] "GET /api/strategies/notifications?limit=50&_t=1768228456269 HTTP/1.1" 200 - +2026-01-12 22:34:19,514 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:34:19] "GET /api/portfolio/positions?_t=1768228459197 HTTP/1.1" 200 - +2026-01-12 22:34:19,515 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:34:19] "GET /api/portfolio/summary?_t=1768228459197 HTTP/1.1" 200 - +2026-01-12 22:34:46,277 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:34:46] "GET /api/strategies/notifications?limit=50&_t=1768228486267 HTTP/1.1" 200 - +2026-01-12 22:34:48,601 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:34:48] "GET /api/strategies/notifications?limit=50&_t=1768228488287 HTTP/1.1" 200 - +2026-01-12 22:34:49,208 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:34:49] "GET /api/portfolio/positions?_t=1768228489199 HTTP/1.1" 200 - +2026-01-12 22:34:49,516 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:34:49] "GET /api/portfolio/summary?_t=1768228489199 HTTP/1.1" 200 - +2026-01-12 22:35:16,576 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:35:16] "GET /api/strategies/notifications?limit=50&_t=1768228516257 HTTP/1.1" 200 - +2026-01-12 22:35:19,215 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:35:19] "GET /api/portfolio/positions?_t=1768228519207 HTTP/1.1" 200 - +2026-01-12 22:35:19,522 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:35:19] "GET /api/portfolio/summary?_t=1768228519207 HTTP/1.1" 200 - +2026-01-12 22:35:46,581 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:35:46] "GET /api/strategies/notifications?limit=50&_t=1768228546266 HTTP/1.1" 200 - +2026-01-12 22:35:48,298 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:35:48] "GET /api/strategies/notifications?limit=50&_t=1768228548288 HTTP/1.1" 200 - +2026-01-12 22:35:49,527 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:35:49] "GET /api/portfolio/positions?_t=1768228549204 HTTP/1.1" 200 - +2026-01-12 22:35:49,528 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:35:49] "GET /api/portfolio/summary?_t=1768228549204 HTTP/1.1" 200 - +2026-01-12 22:36:16,267 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:36:16] "GET /api/strategies/notifications?limit=50&_t=1768228576256 HTTP/1.1" 200 - +2026-01-12 22:36:19,633 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:36:19] "GET /api/portfolio/positions?_t=1768228579311 HTTP/1.1" 200 - +2026-01-12 22:36:19,634 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:36:19] "GET /api/portfolio/summary?_t=1768228579311 HTTP/1.1" 200 - +2026-01-12 22:36:46,297 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:36:46] "GET /api/strategies/notifications?limit=50&_t=1768228606290 HTTP/1.1" 200 - +2026-01-12 22:36:48,596 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:36:48] "GET /api/strategies/notifications?limit=50&_t=1768228608281 HTTP/1.1" 200 - +2026-01-12 22:36:49,313 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:36:49] "GET /api/portfolio/positions?_t=1768228609305 HTTP/1.1" 200 - +2026-01-12 22:36:49,632 - app.data_sources.base - WARNING - Warning: AMD data is delayed (293810s) +2026-01-12 22:36:49,633 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (293810s) +2026-01-12 22:36:49,640 - app.data_sources.base - WARNING - Warning: INTC data is delayed (293810s) +2026-01-12 22:36:49,655 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (293810s) +2026-01-12 22:36:49,656 - app.data_sources.base - WARNING - Warning: GD data is delayed (293810s) +2026-01-12 22:36:49,660 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (293810s) +2026-01-12 22:36:49,660 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (293810s) +2026-01-12 22:36:49,664 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (293810s) +2026-01-12 22:36:49,666 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (293810s) +2026-01-12 22:36:49,895 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:36:49] "GET /api/portfolio/summary?_t=1768228609305 HTTP/1.1" 200 - +2026-01-12 22:37:16,617 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:37:16] "GET /api/strategies/notifications?limit=50&_t=1768228636293 HTTP/1.1" 200 - +2026-01-12 22:37:16,618 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:37:16] "GET /api/strategies/notifications?limit=50&_t=1768228636294 HTTP/1.1" 200 - +2026-01-12 22:37:46,302 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:37:46] "GET /api/strategies/notifications?limit=50&_t=1768228666285 HTTP/1.1" 200 - +2026-01-12 22:37:48,772 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:37:48] "GET /api/portfolio/positions?_t=1768228668323 HTTP/1.1" 200 - +2026-01-12 22:37:48,773 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:37:48] "GET /api/portfolio/summary?_t=1768228668323 HTTP/1.1" 200 - +2026-01-12 22:37:48,774 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:37:48] "GET /api/strategies/notifications?limit=50&_t=1768228668325 HTTP/1.1" 200 - +2026-01-12 22:38:12,804 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:38:12] "GET /api/market/types?_t=1768228692794 HTTP/1.1" 200 - +2026-01-12 22:38:12,867 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:38:12] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 22:38:13,116 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:38:13] "GET /api/user/info?_t=1768228692794 HTTP/1.1" 200 - +2026-01-12 22:38:13,118 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 22:38:13,120 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:38:13] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 22:38:13,147 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:38:13] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 22:38:13,193 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:38:13] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 22:38:13,325 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:38:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 22:38:16,955 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:38:16] "GET /api/strategies/notifications?limit=50&_t=1768228696947 HTTP/1.1" 200 - +2026-01-12 22:38:22,282 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:38:22] "GET /api/settings/schema?_t=1768228702270 HTTP/1.1" 200 - +2026-01-12 22:38:22,284 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:38:22] "GET /api/settings/values?_t=1768228702270 HTTP/1.1" 200 - +2026-01-12 22:38:25,287 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:38:25] "GET /api/dashboard/summary?_t=1768228705273 HTTP/1.1" 200 - +2026-01-12 22:38:25,471 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:38:25] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768228705273 HTTP/1.1" 200 - +2026-01-12 22:38:25,591 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:38:25] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768228705273 HTTP/1.1" 200 - +2026-01-12 22:38:26,123 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:38:26] "GET /api/market/types?_t=1768228706109 HTTP/1.1" 200 - +2026-01-12 22:38:26,443 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:38:26] "GET /api/portfolio/positions?_t=1768228706109 HTTP/1.1" 200 - +2026-01-12 22:38:26,446 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:38:26] "GET /api/portfolio/monitors?_t=1768228706109 HTTP/1.1" 200 - +2026-01-12 22:38:26,448 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:38:26] "GET /api/portfolio/summary?_t=1768228706109 HTTP/1.1" 200 - +2026-01-12 22:38:26,448 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:38:26] "GET /api/portfolio/groups?_t=1768228706109 HTTP/1.1" 200 - +2026-01-12 22:38:26,450 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:38:26] "GET /api/portfolio/alerts?_t=1768228706109 HTTP/1.1" 200 - +2026-01-12 22:38:46,019 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:38:46] "GET /api/strategies/notifications?limit=50&_t=1768228725706 HTTP/1.1" 200 - +2026-01-12 22:38:48,290 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:38:48] "GET /api/strategies/notifications?limit=50&_t=1768228728280 HTTP/1.1" 200 - +2026-01-12 22:38:48,660 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:38:48] "GET /api/portfolio/positions?_t=1768228728330 HTTP/1.1" 200 - +2026-01-12 22:38:48,660 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:38:48] "GET /api/portfolio/summary?_t=1768228728330 HTTP/1.1" 200 - +2026-01-12 22:38:56,133 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:38:56] "GET /api/portfolio/positions?_t=1768228736124 HTTP/1.1" 200 - +2026-01-12 22:38:56,440 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:38:56] "GET /api/portfolio/summary?_t=1768228736124 HTTP/1.1" 200 - +2026-01-12 22:39:16,011 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:39:16] "GET /api/strategies/notifications?limit=50&_t=1768228755693 HTTP/1.1" 200 - +2026-01-12 22:39:26,123 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:39:26] "GET /api/portfolio/positions?_t=1768228766114 HTTP/1.1" 200 - +2026-01-12 22:39:26,436 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:39:26] "GET /api/portfolio/summary?_t=1768228766114 HTTP/1.1" 200 - +2026-01-12 22:39:46,017 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:39:46] "GET /api/strategies/notifications?limit=50&_t=1768228785697 HTTP/1.1" 200 - +2026-01-12 22:39:48,304 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:39:48] "GET /api/strategies/notifications?limit=50&_t=1768228788294 HTTP/1.1" 200 - +2026-01-12 22:39:48,654 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:39:48] "GET /api/portfolio/positions?_t=1768228788332 HTTP/1.1" 200 - +2026-01-12 22:39:48,655 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:39:48] "GET /api/portfolio/summary?_t=1768228788332 HTTP/1.1" 200 - +2026-01-12 22:39:56,136 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:39:56] "GET /api/portfolio/positions?_t=1768228796126 HTTP/1.1" 200 - +2026-01-12 22:39:56,439 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:39:56] "GET /api/portfolio/summary?_t=1768228796126 HTTP/1.1" 200 - +2026-01-12 22:40:16,022 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:40:16] "GET /api/strategies/notifications?limit=50&_t=1768228815703 HTTP/1.1" 200 - +2026-01-12 22:40:26,135 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:40:26] "GET /api/portfolio/positions?_t=1768228826126 HTTP/1.1" 200 - +2026-01-12 22:40:26,444 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:40:26] "GET /api/portfolio/summary?_t=1768228826126 HTTP/1.1" 200 - +2026-01-12 22:40:46,025 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:40:46] "GET /api/strategies/notifications?limit=50&_t=1768228845704 HTTP/1.1" 200 - +2026-01-12 22:40:48,304 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:40:48] "GET /api/strategies/notifications?limit=50&_t=1768228848291 HTTP/1.1" 200 - +2026-01-12 22:40:48,655 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:40:48] "GET /api/portfolio/positions?_t=1768228848327 HTTP/1.1" 200 - +2026-01-12 22:40:48,657 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:40:48] "GET /api/portfolio/summary?_t=1768228848327 HTTP/1.1" 200 - +2026-01-12 22:40:56,124 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:40:56] "GET /api/portfolio/positions?_t=1768228856116 HTTP/1.1" 200 - +2026-01-12 22:40:56,437 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:40:56] "GET /api/portfolio/summary?_t=1768228856116 HTTP/1.1" 200 - +2026-01-12 22:41:16,595 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:41:16] "GET /api/strategies/notifications?limit=50&_t=1768228876280 HTTP/1.1" 200 - +2026-01-12 22:41:26,317 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:41:26] "GET /api/portfolio/positions?_t=1768228886304 HTTP/1.1" 200 - +2026-01-12 22:41:26,633 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:41:26] "GET /api/portfolio/summary?_t=1768228886304 HTTP/1.1" 200 - +2026-01-12 22:41:46,292 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:41:46] "GET /api/strategies/notifications?limit=50&_t=1768228906284 HTTP/1.1" 200 - +2026-01-12 22:41:48,603 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:41:48] "GET /api/strategies/notifications?limit=50&_t=1768228908290 HTTP/1.1" 200 - +2026-01-12 22:41:48,637 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:41:48] "GET /api/portfolio/positions?_t=1768228908320 HTTP/1.1" 200 - +2026-01-12 22:41:48,638 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:41:48] "GET /api/portfolio/summary?_t=1768228908320 HTTP/1.1" 200 - +2026-01-12 22:41:56,327 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (294116s) +2026-01-12 22:41:56,345 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (294116s) +2026-01-12 22:41:56,349 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (294116s) +2026-01-12 22:41:56,352 - app.data_sources.base - WARNING - Warning: GD data is delayed (294116s) +2026-01-12 22:41:56,353 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (294116s) +2026-01-12 22:41:56,359 - app.data_sources.base - WARNING - Warning: AMD data is delayed (294116s) +2026-01-12 22:41:56,360 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (294116s) +2026-01-12 22:41:56,363 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (294116s) +2026-01-12 22:41:56,368 - app.data_sources.base - WARNING - Warning: INTC data is delayed (294116s) +2026-01-12 22:41:56,419 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:41:56] "GET /api/portfolio/positions?_t=1768228916308 HTTP/1.1" 200 - +2026-01-12 22:41:56,621 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:41:56] "GET /api/portfolio/summary?_t=1768228916308 HTTP/1.1" 200 - +2026-01-12 22:42:48,618 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:42:48] "GET /api/strategies/notifications?limit=50&_t=1768228968286 HTTP/1.1" 200 - +2026-01-12 22:42:48,622 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:42:48] "GET /api/strategies/notifications?limit=50&_t=1768228968286 HTTP/1.1" 200 - +2026-01-12 22:42:48,706 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:42:48] "GET /api/portfolio/positions?_t=1768228968371 HTTP/1.1" 200 - +2026-01-12 22:42:48,706 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:42:48] "GET /api/portfolio/positions?_t=1768228968373 HTTP/1.1" 200 - +2026-01-12 22:42:48,708 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:42:48] "GET /api/portfolio/summary?_t=1768228968373 HTTP/1.1" 200 - +2026-01-12 22:42:48,718 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:42:48] "GET /api/portfolio/summary?_t=1768228968371 HTTP/1.1" 200 - +2026-01-12 22:43:48,613 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:43:48] "GET /api/strategies/notifications?limit=50&_t=1768229028281 HTTP/1.1" 200 - +2026-01-12 22:43:48,656 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:43:48] "GET /api/portfolio/summary?_t=1768229028311 HTTP/1.1" 200 - +2026-01-12 22:43:48,657 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:43:48] "GET /api/portfolio/positions?_t=1768229028317 HTTP/1.1" 200 - +2026-01-12 22:43:48,661 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:43:48] "GET /api/portfolio/summary?_t=1768229028317 HTTP/1.1" 200 - +2026-01-12 22:43:48,659 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:43:48] "GET /api/strategies/notifications?limit=50&_t=1768229028312 HTTP/1.1" 200 - +2026-01-12 22:43:48,667 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:43:48] "GET /api/portfolio/positions?_t=1768229028311 HTTP/1.1" 200 - +2026-01-12 22:44:16,577 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:44:16] "GET /api/strategies/notifications?limit=50&_t=1768229056258 HTTP/1.1" 200 - +2026-01-12 22:44:19,213 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:44:19] "GET /api/portfolio/positions?_t=1768229059203 HTTP/1.1" 200 - +2026-01-12 22:44:19,523 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:44:19] "GET /api/portfolio/summary?_t=1768229059203 HTTP/1.1" 200 - +2026-01-12 22:44:33,293 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:44:33] "GET /api/portfolio/positions?_t=1768229072958 HTTP/1.1" 200 - +2026-01-12 22:44:33,293 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:44:33] "GET /api/portfolio/summary?_t=1768229072958 HTTP/1.1" 200 - +2026-01-12 22:44:33,323 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:44:33] "GET /api/strategies/notifications?limit=50&_t=1768229072990 HTTP/1.1" 200 - +2026-01-12 22:44:46,300 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:44:46] "GET /api/strategies/notifications?limit=50&_t=1768229086292 HTTP/1.1" 200 - +2026-01-12 22:44:46,612 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:44:46] "GET /api/strategies/notifications?limit=50&_t=1768229086292 HTTP/1.1" 200 - +2026-01-12 22:44:49,636 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:44:49] "GET /api/portfolio/positions?_t=1768229089317 HTTP/1.1" 200 - +2026-01-12 22:44:49,637 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:44:49] "GET /api/portfolio/summary?_t=1768229089317 HTTP/1.1" 200 - +2026-01-12 22:44:56,322 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:44:56] "GET /api/portfolio/positions?_t=1768229096314 HTTP/1.1" 200 - +2026-01-12 22:44:56,633 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:44:56] "GET /api/portfolio/summary?_t=1768229096314 HTTP/1.1" 200 - +2026-01-12 22:45:16,672 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:45:16] "GET /api/strategies/notifications?limit=50&_t=1768229116287 HTTP/1.1" 200 - +2026-01-12 22:45:16,674 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:45:16] "GET /api/strategies/notifications?limit=50&_t=1768229116287 HTTP/1.1" 200 - +2026-01-12 22:45:19,372 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:45:19] "GET /api/portfolio/positions?_t=1768229119358 HTTP/1.1" 200 - +2026-01-12 22:45:19,686 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:45:19] "GET /api/portfolio/summary?_t=1768229119358 HTTP/1.1" 200 - +2026-01-12 22:45:26,633 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:45:26] "GET /api/portfolio/positions?_t=1768229126310 HTTP/1.1" 200 - +2026-01-12 22:45:26,634 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:45:26] "GET /api/portfolio/summary?_t=1768229126310 HTTP/1.1" 200 - +2026-01-12 22:45:48,292 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:45:48] "GET /api/strategies/notifications?limit=50&_t=1768229148281 HTTP/1.1" 200 - +2026-01-12 22:45:48,595 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:45:48] "GET /api/strategies/notifications?limit=50&_t=1768229148281 HTTP/1.1" 200 - +2026-01-12 22:46:48,670 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:46:48] "GET /api/strategies/notifications?limit=50&_t=1768229208325 HTTP/1.1" 200 - +2026-01-12 22:46:48,671 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:46:48] "GET /api/strategies/notifications?limit=50&_t=1768229208332 HTTP/1.1" 200 - +2026-01-12 22:46:48,672 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:46:48] "GET /api/portfolio/summary?_t=1768229208324 HTTP/1.1" 200 - +2026-01-12 22:46:48,672 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:46:48] "GET /api/portfolio/summary?_t=1768229208331 HTTP/1.1" 200 - +2026-01-12 22:46:48,672 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:46:48] "GET /api/portfolio/positions?_t=1768229208331 HTTP/1.1" 200 - +2026-01-12 22:46:48,674 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:46:48] "GET /api/portfolio/positions?_t=1768229208324 HTTP/1.1" 200 - +2026-01-12 22:47:48,628 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:47:48] "GET /api/strategies/notifications?limit=50&_t=1768229268294 HTTP/1.1" 200 - +2026-01-12 22:47:48,764 - app.data_sources.base - WARNING - Warning: AMD data is delayed (294469s) +2026-01-12 22:47:48,765 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (294469s) +2026-01-12 22:47:48,768 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (294469s) +2026-01-12 22:47:48,774 - app.data_sources.base - WARNING - Warning: INTC data is delayed (294469s) +2026-01-12 22:47:48,777 - app.data_sources.base - WARNING - Warning: GD data is delayed (294469s) +2026-01-12 22:47:48,777 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (294469s) +2026-01-12 22:47:48,778 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (294469s) +2026-01-12 22:47:48,779 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (294469s) +2026-01-12 22:47:48,784 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (294469s) +2026-01-12 22:47:48,803 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:47:48] "GET /api/strategies/notifications?limit=50&_t=1768229268339 HTTP/1.1" 200 - +2026-01-12 22:47:48,828 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (294469s) +2026-01-12 22:47:48,845 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (294469s) +2026-01-12 22:47:48,846 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (294469s) +2026-01-12 22:47:48,846 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (294469s) +2026-01-12 22:47:48,870 - app.data_sources.base - WARNING - Warning: GD data is delayed (294469s) +2026-01-12 22:47:48,886 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:47:48] "GET /api/portfolio/positions?_t=1768229268336 HTTP/1.1" 200 - +2026-01-12 22:47:48,887 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (294469s) +2026-01-12 22:47:48,900 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (294469s) +2026-01-12 22:47:48,901 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (294469s) +2026-01-12 22:47:48,903 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:47:48] "GET /api/portfolio/positions?_t=1768229268337 HTTP/1.1" 200 - +2026-01-12 22:47:48,904 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:47:48] "GET /api/portfolio/summary?_t=1768229268336 HTTP/1.1" 200 - +2026-01-12 22:47:48,904 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:47:48] "GET /api/portfolio/summary?_t=1768229268337 HTTP/1.1" 200 - +2026-01-12 22:48:44,741 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:48:44] "GET /api/strategies/notifications?limit=50&_t=1768229324395 HTTP/1.1" 200 - +2026-01-12 22:48:44,741 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:48:44] "GET /api/portfolio/summary?_t=1768229324427 HTTP/1.1" 200 - +2026-01-12 22:48:44,742 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:48:44] "GET /api/portfolio/positions?_t=1768229324427 HTTP/1.1" 200 - +2026-01-12 22:48:46,262 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:48:46] "GET /api/strategies/notifications?limit=50&_t=1768229326255 HTTP/1.1" 200 - +2026-01-12 22:48:48,630 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:48:48] "GET /api/portfolio/positions?_t=1768229328311 HTTP/1.1" 200 - +2026-01-12 22:48:48,631 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:48:48] "GET /api/strategies/notifications?limit=50&_t=1768229328313 HTTP/1.1" 200 - +2026-01-12 22:48:48,633 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:48:48] "GET /api/portfolio/summary?_t=1768229328311 HTTP/1.1" 200 - +2026-01-12 22:48:49,219 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:48:49] "GET /api/portfolio/positions?_t=1768229329209 HTTP/1.1" 200 - +2026-01-12 22:48:49,524 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:48:49] "GET /api/portfolio/summary?_t=1768229329209 HTTP/1.1" 200 - +2026-01-12 22:49:16,585 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:49:16] "GET /api/strategies/notifications?limit=50&_t=1768229356269 HTTP/1.1" 200 - +2026-01-12 22:49:19,218 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:49:19] "GET /api/portfolio/positions?_t=1768229359208 HTTP/1.1" 200 - +2026-01-12 22:49:19,524 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:49:19] "GET /api/portfolio/summary?_t=1768229359208 HTTP/1.1" 200 - +2026-01-12 22:49:46,576 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:49:46] "GET /api/strategies/notifications?limit=50&_t=1768229386260 HTTP/1.1" 200 - +2026-01-12 22:49:48,318 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:49:48] "GET /api/portfolio/positions?_t=1768229388310 HTTP/1.1" 200 - +2026-01-12 22:49:48,625 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:49:48] "GET /api/portfolio/summary?_t=1768229388310 HTTP/1.1" 200 - +2026-01-12 22:49:48,626 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:49:48] "GET /api/strategies/notifications?limit=50&_t=1768229388311 HTTP/1.1" 200 - +2026-01-12 22:49:49,531 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:49:49] "GET /api/portfolio/positions?_t=1768229389209 HTTP/1.1" 200 - +2026-01-12 22:49:49,531 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:49:49] "GET /api/portfolio/summary?_t=1768229389209 HTTP/1.1" 200 - +2026-01-12 22:50:16,266 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:50:16] "GET /api/strategies/notifications?limit=50&_t=1768229416258 HTTP/1.1" 200 - +2026-01-12 22:50:19,531 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:50:19] "GET /api/portfolio/positions?_t=1768229419212 HTTP/1.1" 200 - +2026-01-12 22:50:19,531 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:50:19] "GET /api/portfolio/summary?_t=1768229419212 HTTP/1.1" 200 - +2026-01-12 22:50:46,265 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:50:46] "GET /api/strategies/notifications?limit=50&_t=1768229446257 HTTP/1.1" 200 - +2026-01-12 22:50:48,906 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:50:48] "GET /api/portfolio/summary?_t=1768229448326 HTTP/1.1" 200 - +2026-01-12 22:50:48,907 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:50:48] "GET /api/portfolio/positions?_t=1768229448326 HTTP/1.1" 200 - +2026-01-12 22:50:48,913 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:50:48] "GET /api/strategies/notifications?limit=50&_t=1768229448327 HTTP/1.1" 200 - +2026-01-12 22:50:49,213 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:50:49] "GET /api/portfolio/positions?_t=1768229449201 HTTP/1.1" 200 - +2026-01-12 22:50:49,517 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:50:49] "GET /api/portfolio/summary?_t=1768229449201 HTTP/1.1" 200 - +2026-01-12 22:51:16,585 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:51:16] "GET /api/strategies/notifications?limit=50&_t=1768229476265 HTTP/1.1" 200 - +2026-01-12 22:51:19,224 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:51:19] "GET /api/portfolio/positions?_t=1768229479199 HTTP/1.1" 200 - +2026-01-12 22:51:19,520 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:51:19] "GET /api/portfolio/summary?_t=1768229479199 HTTP/1.1" 200 - +2026-01-12 22:51:46,581 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:51:46] "GET /api/strategies/notifications?limit=50&_t=1768229506264 HTTP/1.1" 200 - +2026-01-12 22:51:48,337 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:51:48] "GET /api/portfolio/positions?_t=1768229508324 HTTP/1.1" 200 - +2026-01-12 22:51:48,649 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:51:48] "GET /api/portfolio/summary?_t=1768229508324 HTTP/1.1" 200 - +2026-01-12 22:51:48,650 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:51:48] "GET /api/strategies/notifications?limit=50&_t=1768229508326 HTTP/1.1" 200 - +2026-01-12 22:51:49,517 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:51:49] "GET /api/portfolio/positions?_t=1768229509193 HTTP/1.1" 200 - +2026-01-12 22:51:49,517 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:51:49] "GET /api/portfolio/summary?_t=1768229509193 HTTP/1.1" 200 - +2026-01-12 22:52:16,277 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:52:16] "GET /api/strategies/notifications?limit=50&_t=1768229536268 HTTP/1.1" 200 - +2026-01-12 22:52:19,532 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:52:19] "GET /api/portfolio/positions?_t=1768229539206 HTTP/1.1" 200 - +2026-01-12 22:52:19,533 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:52:19] "GET /api/portfolio/summary?_t=1768229539206 HTTP/1.1" 200 - +2026-01-12 22:52:46,266 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:52:46] "GET /api/strategies/notifications?limit=50&_t=1768229566257 HTTP/1.1" 200 - +2026-01-12 22:52:48,652 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:52:48] "GET /api/portfolio/positions?_t=1768229568323 HTTP/1.1" 200 - +2026-01-12 22:52:48,653 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:52:48] "GET /api/portfolio/summary?_t=1768229568324 HTTP/1.1" 200 - +2026-01-12 22:52:48,653 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:52:48] "GET /api/strategies/notifications?limit=50&_t=1768229568324 HTTP/1.1" 200 - +2026-01-12 22:52:49,209 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:52:49] "GET /api/portfolio/positions?_t=1768229569200 HTTP/1.1" 200 - +2026-01-12 22:52:49,518 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:52:49] "GET /api/portfolio/summary?_t=1768229569200 HTTP/1.1" 200 - +2026-01-12 22:53:16,570 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:53:16] "GET /api/strategies/notifications?limit=50&_t=1768229596258 HTTP/1.1" 200 - +2026-01-12 22:53:19,209 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:53:19] "GET /api/portfolio/positions?_t=1768229599200 HTTP/1.1" 200 - +2026-01-12 22:53:19,519 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:53:19] "GET /api/portfolio/summary?_t=1768229599200 HTTP/1.1" 200 - +2026-01-12 22:53:46,579 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:53:46] "GET /api/strategies/notifications?limit=50&_t=1768229626261 HTTP/1.1" 200 - +2026-01-12 22:53:48,371 - app.data_sources.base - WARNING - Warning: GD data is delayed (294828s) +2026-01-12 22:53:48,380 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (294828s) +2026-01-12 22:53:48,380 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (294828s) +2026-01-12 22:53:48,384 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (294828s) +2026-01-12 22:53:48,385 - app.data_sources.base - WARNING - Warning: INTC data is delayed (294828s) +2026-01-12 22:53:48,390 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (294828s) +2026-01-12 22:53:48,390 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (294828s) +2026-01-12 22:53:48,391 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (294828s) +2026-01-12 22:53:48,391 - app.data_sources.base - WARNING - Warning: AMD data is delayed (294828s) +2026-01-12 22:53:48,412 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:53:48] "GET /api/portfolio/positions?_t=1768229628333 HTTP/1.1" 200 - +2026-01-12 22:53:48,650 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:53:48] "GET /api/portfolio/summary?_t=1768229628333 HTTP/1.1" 200 - +2026-01-12 22:53:48,651 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:53:48] "GET /api/strategies/notifications?limit=50&_t=1768229628334 HTTP/1.1" 200 - +2026-01-12 22:53:49,520 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:53:49] "GET /api/portfolio/positions?_t=1768229629198 HTTP/1.1" 200 - +2026-01-12 22:53:49,520 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:53:49] "GET /api/portfolio/summary?_t=1768229629198 HTTP/1.1" 200 - +2026-01-12 22:54:16,266 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:54:16] "GET /api/strategies/notifications?limit=50&_t=1768229656258 HTTP/1.1" 200 - +2026-01-12 22:54:19,515 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:54:19] "GET /api/portfolio/positions?_t=1768229659192 HTTP/1.1" 200 - +2026-01-12 22:54:19,516 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:54:19] "GET /api/portfolio/summary?_t=1768229659192 HTTP/1.1" 200 - +2026-01-12 22:54:46,271 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:54:46] "GET /api/strategies/notifications?limit=50&_t=1768229686261 HTTP/1.1" 200 - +2026-01-12 22:54:48,633 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:54:48] "GET /api/portfolio/positions?_t=1768229688319 HTTP/1.1" 200 - +2026-01-12 22:54:48,633 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:54:48] "GET /api/portfolio/summary?_t=1768229688319 HTTP/1.1" 200 - +2026-01-12 22:54:48,634 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:54:48] "GET /api/strategies/notifications?limit=50&_t=1768229688320 HTTP/1.1" 200 - +2026-01-12 22:54:49,201 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:54:49] "GET /api/portfolio/positions?_t=1768229689192 HTTP/1.1" 200 - +2026-01-12 22:54:49,514 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:54:49] "GET /api/portfolio/summary?_t=1768229689192 HTTP/1.1" 200 - +2026-01-12 22:55:16,583 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:55:16] "GET /api/strategies/notifications?limit=50&_t=1768229716267 HTTP/1.1" 200 - +2026-01-12 22:55:19,210 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:55:19] "GET /api/portfolio/positions?_t=1768229719198 HTTP/1.1" 200 - +2026-01-12 22:55:19,516 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:55:19] "GET /api/portfolio/summary?_t=1768229719199 HTTP/1.1" 200 - +2026-01-12 22:55:46,579 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:55:46] "GET /api/strategies/notifications?limit=50&_t=1768229746265 HTTP/1.1" 200 - +2026-01-12 22:55:48,334 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:55:48] "GET /api/portfolio/positions?_t=1768229748326 HTTP/1.1" 200 - +2026-01-12 22:55:48,646 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:55:48] "GET /api/portfolio/summary?_t=1768229748326 HTTP/1.1" 200 - +2026-01-12 22:55:48,647 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:55:48] "GET /api/strategies/notifications?limit=50&_t=1768229748327 HTTP/1.1" 200 - +2026-01-12 22:55:49,527 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:55:49] "GET /api/portfolio/positions?_t=1768229749206 HTTP/1.1" 200 - +2026-01-12 22:55:49,528 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:55:49] "GET /api/portfolio/summary?_t=1768229749206 HTTP/1.1" 200 - +2026-01-12 22:56:16,268 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:56:16] "GET /api/strategies/notifications?limit=50&_t=1768229776259 HTTP/1.1" 200 - +2026-01-12 22:56:19,514 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:56:19] "GET /api/portfolio/positions?_t=1768229779192 HTTP/1.1" 200 - +2026-01-12 22:56:19,515 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:56:19] "GET /api/portfolio/summary?_t=1768229779192 HTTP/1.1" 200 - +2026-01-12 22:56:46,274 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:56:46] "GET /api/strategies/notifications?limit=50&_t=1768229806266 HTTP/1.1" 200 - +2026-01-12 22:56:48,647 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:56:48] "GET /api/portfolio/summary?_t=1768229808329 HTTP/1.1" 200 - +2026-01-12 22:56:48,648 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:56:48] "GET /api/portfolio/positions?_t=1768229808329 HTTP/1.1" 200 - +2026-01-12 22:56:48,649 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:56:48] "GET /api/strategies/notifications?limit=50&_t=1768229808331 HTTP/1.1" 200 - +2026-01-12 22:56:49,213 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:56:49] "GET /api/portfolio/positions?_t=1768229809205 HTTP/1.1" 200 - +2026-01-12 22:56:49,525 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:56:49] "GET /api/portfolio/summary?_t=1768229809205 HTTP/1.1" 200 - +2026-01-12 22:57:16,572 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:57:16] "GET /api/strategies/notifications?limit=50&_t=1768229836259 HTTP/1.1" 200 - +2026-01-12 22:57:19,205 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:57:19] "GET /api/portfolio/positions?_t=1768229839194 HTTP/1.1" 200 - +2026-01-12 22:57:19,515 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:57:19] "GET /api/portfolio/summary?_t=1768229839194 HTTP/1.1" 200 - +2026-01-12 22:57:38,807 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:57:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768229858792 HTTP/1.1" 200 - +2026-01-12 22:57:38,826 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:57:38] "GET /api/dashboard/summary?_t=1768229858792 HTTP/1.1" 200 - +2026-01-12 22:57:39,109 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:57:39] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768229858792 HTTP/1.1" 200 - +2026-01-12 22:57:44,091 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:57:44] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768229863773 HTTP/1.1" 200 - +2026-01-12 22:57:46,276 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:57:46] "GET /api/strategies/notifications?limit=50&_t=1768229866268 HTTP/1.1" 200 - +2026-01-12 22:57:48,643 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:57:48] "GET /api/portfolio/positions?_t=1768229868323 HTTP/1.1" 200 - +2026-01-12 22:57:48,644 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:57:48] "GET /api/portfolio/summary?_t=1768229868324 HTTP/1.1" 200 - +2026-01-12 22:57:48,646 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:57:48] "GET /api/strategies/notifications?limit=50&_t=1768229868325 HTTP/1.1" 200 - +2026-01-12 22:57:48,906 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:57:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768229868776 HTTP/1.1" 200 - +2026-01-12 22:57:53,792 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:57:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768229873779 HTTP/1.1" 200 - +2026-01-12 22:57:59,087 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:57:59] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768229878774 HTTP/1.1" 200 - +2026-01-12 22:58:03,789 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:58:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768229883780 HTTP/1.1" 200 - +2026-01-12 22:58:09,084 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:58:09] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768229888771 HTTP/1.1" 200 - +2026-01-12 22:58:13,785 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:58:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768229893775 HTTP/1.1" 200 - +2026-01-12 22:58:16,571 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:58:16] "GET /api/strategies/notifications?limit=50&_t=1768229896261 HTTP/1.1" 200 - +2026-01-12 22:58:18,782 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:58:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768229898774 HTTP/1.1" 200 - +2026-01-12 22:58:24,092 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:58:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768229903772 HTTP/1.1" 200 - +2026-01-12 22:58:25,642 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:58:25] "GET /api/portfolio/positions?_t=1768229905632 HTTP/1.1" 200 - +2026-01-12 22:58:25,954 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:58:25] "GET /api/portfolio/summary?_t=1768229905632 HTTP/1.1" 200 - +2026-01-12 22:58:25,968 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:58:25] "GET /api/strategies/notifications?limit=50&_t=1768229905641 HTTP/1.1" 200 - +2026-01-12 22:58:29,608 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:58:29] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768229909290 HTTP/1.1" 200 - +2026-01-12 22:58:34,302 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:58:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768229914287 HTTP/1.1" 200 - +2026-01-12 22:58:39,609 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:58:39] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768229919292 HTTP/1.1" 200 - +2026-01-12 22:58:44,296 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:58:44] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768229924283 HTTP/1.1" 200 - +2026-01-12 22:58:46,607 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:58:46] "GET /api/strategies/notifications?limit=50&_t=1768229926293 HTTP/1.1" 200 - +2026-01-12 22:58:46,608 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:58:46] "GET /api/strategies/notifications?limit=50&_t=1768229926293 HTTP/1.1" 200 - +2026-01-12 22:58:49,295 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:58:49] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768229929285 HTTP/1.1" 200 - +2026-01-12 22:58:54,608 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:58:54] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768229934292 HTTP/1.1" 200 - +2026-01-12 22:58:56,313 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:58:56] "GET /api/portfolio/positions?_t=1768229936304 HTTP/1.1" 200 - +2026-01-12 22:58:56,622 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:58:56] "GET /api/portfolio/summary?_t=1768229936304 HTTP/1.1" 200 - +2026-01-12 22:58:59,601 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:58:59] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768229939282 HTTP/1.1" 200 - +2026-01-12 22:59:04,293 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:59:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768229944284 HTTP/1.1" 200 - +2026-01-12 22:59:09,595 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:59:09] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768229949279 HTTP/1.1" 200 - +2026-01-12 22:59:14,291 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:59:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768229954280 HTTP/1.1" 200 - +2026-01-12 22:59:16,607 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:59:16] "GET /api/strategies/notifications?limit=50&_t=1768229956295 HTTP/1.1" 200 - +2026-01-12 22:59:16,608 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:59:16] "GET /api/strategies/notifications?limit=50&_t=1768229956294 HTTP/1.1" 200 - +2026-01-12 22:59:19,301 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:59:19] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768229959293 HTTP/1.1" 200 - +2026-01-12 22:59:24,606 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:59:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768229964290 HTTP/1.1" 200 - +2026-01-12 22:59:26,339 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (295166s) +2026-01-12 22:59:26,349 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (295166s) +2026-01-12 22:59:26,349 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (295166s) +2026-01-12 22:59:26,353 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (295166s) +2026-01-12 22:59:26,356 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (295166s) +2026-01-12 22:59:26,364 - app.data_sources.base - WARNING - Warning: INTC data is delayed (295166s) +2026-01-12 22:59:26,368 - app.data_sources.base - WARNING - Warning: AMD data is delayed (295166s) +2026-01-12 22:59:26,371 - app.data_sources.base - WARNING - Warning: GD data is delayed (295166s) +2026-01-12 22:59:26,371 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (295166s) +2026-01-12 22:59:26,392 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:59:26] "GET /api/portfolio/positions?_t=1768229966314 HTTP/1.1" 200 - +2026-01-12 22:59:26,629 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:59:26] "GET /api/portfolio/summary?_t=1768229966314 HTTP/1.1" 200 - +2026-01-12 22:59:29,098 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:59:29] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768229968781 HTTP/1.1" 200 - +2026-01-12 22:59:33,787 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:59:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768229973779 HTTP/1.1" 200 - +2026-01-12 22:59:39,100 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:59:39] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768229978782 HTTP/1.1" 200 - +2026-01-12 22:59:43,778 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:59:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768229983769 HTTP/1.1" 200 - +2026-01-12 22:59:46,586 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:59:46] "GET /api/strategies/notifications?limit=50&_t=1768229986268 HTTP/1.1" 200 - +2026-01-12 22:59:48,303 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:59:48] "GET /api/strategies/notifications?limit=50&_t=1768229988293 HTTP/1.1" 200 - +2026-01-12 22:59:49,088 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:59:49] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768229988770 HTTP/1.1" 200 - +2026-01-12 22:59:53,789 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:59:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768229993780 HTTP/1.1" 200 - +2026-01-12 22:59:59,095 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 22:59:59] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768229998782 HTTP/1.1" 200 - +2026-01-12 23:00:03,792 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:00:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768230003783 HTTP/1.1" 200 - +2026-01-12 23:00:07,243 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-12 23:00:07,243 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-12 23:00:07,256 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-12 23:00:07,256 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-12 23:00:07,257 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 23:00:07,293 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 23:00:07,597 - app.services.strategy - INFO - Found 0 running strategies: [] +2026-01-12 23:00:07,597 - app - INFO - No running strategies to restore. +2026-01-12 23:00:07,613 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-12 23:00:07,614 - werkzeug - INFO - Press CTRL+C to quit +2026-01-12 23:00:09,091 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:00:09] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768230008772 HTTP/1.1" 200 - +2026-01-12 23:00:11,853 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:00:11] "GET /api/strategies/notifications?limit=50&_t=1768230011839 HTTP/1.1" 200 - +2026-01-12 23:00:11,856 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:00:11] "GET /api/dashboard/summary?_t=1768230011839 HTTP/1.1" 200 - +2026-01-12 23:00:11,936 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:00:11] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768230011839 HTTP/1.1" 200 - +2026-01-12 23:00:12,169 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:00:12] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768230011839 HTTP/1.1" 200 - +2026-01-12 23:00:13,498 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:00:13] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 23:00:13,499 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:00:13] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 23:00:13,807 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:00:13] "GET /api/market/types?_t=1768230013481 HTTP/1.1" 200 - +2026-01-12 23:00:13,807 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:00:13] "GET /api/user/info?_t=1768230013481 HTTP/1.1" 200 - +2026-01-12 23:00:13,808 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 23:00:13,834 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:00:13] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 23:00:14,148 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:00:14] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 23:00:15,643 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:00:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:00:16,727 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:00:16] "GET /api/market/types?_t=1768230016714 HTTP/1.1" 200 - +2026-01-12 23:00:16,735 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:00:16] "GET /api/portfolio/monitors?_t=1768230016714 HTTP/1.1" 200 - +2026-01-12 23:00:16,737 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:00:16] "GET /api/portfolio/groups?_t=1768230016714 HTTP/1.1" 200 - +2026-01-12 23:00:16,869 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 23:00:16,869 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 23:00:16,869 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 23:00:16,869 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 23:00:16,870 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 23:00:16,870 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 23:00:16,870 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 23:00:16,871 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 23:00:17,039 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:00:17] "GET /api/portfolio/alerts?_t=1768230016714 HTTP/1.1" 200 - +2026-01-12 23:00:17,753 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (295218s) +2026-01-12 23:00:17,753 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (295218s) +2026-01-12 23:00:17,763 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (295218s) +2026-01-12 23:00:17,770 - app.data_sources.base - WARNING - Warning: INTC data is delayed (295218s) +2026-01-12 23:00:17,782 - app.data_sources.base - WARNING - Warning: INTC data is delayed (295218s) +2026-01-12 23:00:17,794 - app.data_sources.base - WARNING - Warning: AMD data is delayed (295218s) +2026-01-12 23:00:17,807 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (295218s) +2026-01-12 23:00:17,824 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (295218s) +2026-01-12 23:00:17,825 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (295218s) +2026-01-12 23:00:17,836 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (295218s) +2026-01-12 23:00:17,864 - app.data_sources.base - WARNING - Warning: GD data is delayed (295218s) +2026-01-12 23:00:17,903 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (295218s) +2026-01-12 23:00:17,908 - app.data_sources.base - WARNING - Warning: GD data is delayed (295218s) +2026-01-12 23:00:17,909 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:00:17] "GET /api/portfolio/summary?_t=1768230016714 HTTP/1.1" 200 - +2026-01-12 23:00:17,980 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (295218s) +2026-01-12 23:00:18,005 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (295218s) +2026-01-12 23:00:18,006 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:00:18] "GET /api/portfolio/positions?_t=1768230016714 HTTP/1.1" 200 - +2026-01-12 23:00:42,139 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:00:42] "GET /api/strategies/notifications?limit=50&_t=1768230041823 HTTP/1.1" 200 - +2026-01-12 23:00:46,735 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:00:46] "GET /api/portfolio/positions?_t=1768230046726 HTTP/1.1" 200 - +2026-01-12 23:00:47,041 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:00:47] "GET /api/portfolio/summary?_t=1768230046726 HTTP/1.1" 200 - +2026-01-12 23:00:48,659 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:00:48] "GET /api/portfolio/positions?_t=1768230048330 HTTP/1.1" 200 - +2026-01-12 23:00:48,660 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:00:48] "GET /api/portfolio/summary?_t=1768230048330 HTTP/1.1" 200 - +2026-01-12 23:00:48,662 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:00:48] "GET /api/strategies/notifications?limit=50&_t=1768230048331 HTTP/1.1" 200 - +2026-01-12 23:01:11,822 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:01:11] "GET /api/strategies/notifications?limit=50&_t=1768230071814 HTTP/1.1" 200 - +2026-01-12 23:01:17,038 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:01:17] "GET /api/portfolio/positions?_t=1768230076721 HTTP/1.1" 200 - +2026-01-12 23:01:17,038 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:01:17] "GET /api/portfolio/summary?_t=1768230076721 HTTP/1.1" 200 - +2026-01-12 23:01:41,820 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:01:41] "GET /api/strategies/notifications?limit=50&_t=1768230101811 HTTP/1.1" 200 - +2026-01-12 23:01:47,047 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:01:47] "GET /api/portfolio/summary?_t=1768230106732 HTTP/1.1" 200 - +2026-01-12 23:01:47,047 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:01:47] "GET /api/portfolio/positions?_t=1768230106732 HTTP/1.1" 200 - +2026-01-12 23:01:48,333 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:01:48] "GET /api/portfolio/positions?_t=1768230108324 HTTP/1.1" 200 - +2026-01-12 23:01:48,648 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:01:48] "GET /api/portfolio/summary?_t=1768230108324 HTTP/1.1" 200 - +2026-01-12 23:01:48,649 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:01:48] "GET /api/strategies/notifications?limit=50&_t=1768230108325 HTTP/1.1" 200 - +2026-01-12 23:02:12,128 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:02:12] "GET /api/strategies/notifications?limit=50&_t=1768230131814 HTTP/1.1" 200 - +2026-01-12 23:02:16,739 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:02:16] "GET /api/portfolio/positions?_t=1768230136728 HTTP/1.1" 200 - +2026-01-12 23:02:17,044 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:02:17] "GET /api/portfolio/summary?_t=1768230136728 HTTP/1.1" 200 - +2026-01-12 23:02:42,135 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:02:42] "GET /api/strategies/notifications?limit=50&_t=1768230161819 HTTP/1.1" 200 - +2026-01-12 23:02:46,738 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:02:46] "GET /api/portfolio/positions?_t=1768230166727 HTTP/1.1" 200 - +2026-01-12 23:02:47,044 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:02:47] "GET /api/portfolio/summary?_t=1768230166727 HTTP/1.1" 200 - +2026-01-12 23:02:48,653 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:02:48] "GET /api/portfolio/summary?_t=1768230168329 HTTP/1.1" 200 - +2026-01-12 23:02:48,654 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:02:48] "GET /api/strategies/notifications?limit=50&_t=1768230168331 HTTP/1.1" 200 - +2026-01-12 23:02:48,663 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:02:48] "GET /api/portfolio/positions?_t=1768230168329 HTTP/1.1" 200 - +2026-01-12 23:03:11,825 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:03:11] "GET /api/strategies/notifications?limit=50&_t=1768230191818 HTTP/1.1" 200 - +2026-01-12 23:03:17,034 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:03:17] "GET /api/portfolio/positions?_t=1768230196721 HTTP/1.1" 200 - +2026-01-12 23:03:17,035 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:03:17] "GET /api/portfolio/summary?_t=1768230196721 HTTP/1.1" 200 - +2026-01-12 23:03:41,839 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:03:41] "GET /api/strategies/notifications?limit=50&_t=1768230221820 HTTP/1.1" 200 - +2026-01-12 23:03:47,043 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:03:47] "GET /api/portfolio/positions?_t=1768230226728 HTTP/1.1" 200 - +2026-01-12 23:03:47,044 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:03:47] "GET /api/portfolio/summary?_t=1768230226728 HTTP/1.1" 200 - +2026-01-12 23:03:48,328 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:03:48] "GET /api/portfolio/positions?_t=1768230228320 HTTP/1.1" 200 - +2026-01-12 23:03:48,638 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:03:48] "GET /api/portfolio/summary?_t=1768230228320 HTTP/1.1" 200 - +2026-01-12 23:03:48,638 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:03:48] "GET /api/strategies/notifications?limit=50&_t=1768230228321 HTTP/1.1" 200 - +2026-01-12 23:04:12,139 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:04:12] "GET /api/strategies/notifications?limit=50&_t=1768230251820 HTTP/1.1" 200 - +2026-01-12 23:04:16,731 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:04:16] "GET /api/portfolio/positions?_t=1768230256722 HTTP/1.1" 200 - +2026-01-12 23:04:17,040 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:04:17] "GET /api/portfolio/summary?_t=1768230256722 HTTP/1.1" 200 - +2026-01-12 23:04:42,136 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:04:42] "GET /api/strategies/notifications?limit=50&_t=1768230281822 HTTP/1.1" 200 - +2026-01-12 23:04:46,731 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:04:46] "GET /api/portfolio/positions?_t=1768230286721 HTTP/1.1" 200 - +2026-01-12 23:04:47,042 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:04:47] "GET /api/portfolio/summary?_t=1768230286721 HTTP/1.1" 200 - +2026-01-12 23:04:48,653 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:04:48] "GET /api/portfolio/summary?_t=1768230288327 HTTP/1.1" 200 - +2026-01-12 23:04:48,654 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:04:48] "GET /api/strategies/notifications?limit=50&_t=1768230288328 HTTP/1.1" 200 - +2026-01-12 23:04:48,655 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:04:48] "GET /api/portfolio/positions?_t=1768230288327 HTTP/1.1" 200 - +2026-01-12 23:05:11,827 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:05:11] "GET /api/strategies/notifications?limit=50&_t=1768230311819 HTTP/1.1" 200 - +2026-01-12 23:05:17,036 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:05:17] "GET /api/portfolio/positions?_t=1768230316722 HTTP/1.1" 200 - +2026-01-12 23:05:17,037 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:05:17] "GET /api/portfolio/summary?_t=1768230316722 HTTP/1.1" 200 - +2026-01-12 23:05:41,818 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:05:41] "GET /api/strategies/notifications?limit=50&_t=1768230341810 HTTP/1.1" 200 - +2026-01-12 23:05:47,048 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:05:47] "GET /api/portfolio/positions?_t=1768230346725 HTTP/1.1" 200 - +2026-01-12 23:05:47,054 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:05:47] "GET /api/portfolio/summary?_t=1768230346725 HTTP/1.1" 200 - +2026-01-12 23:05:48,336 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:05:48] "GET /api/portfolio/positions?_t=1768230348328 HTTP/1.1" 200 - +2026-01-12 23:05:48,639 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:05:48] "GET /api/portfolio/summary?_t=1768230348328 HTTP/1.1" 200 - +2026-01-12 23:05:48,640 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:05:48] "GET /api/strategies/notifications?limit=50&_t=1768230348329 HTTP/1.1" 200 - +2026-01-12 23:06:12,137 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:06:12] "GET /api/strategies/notifications?limit=50&_t=1768230371823 HTTP/1.1" 200 - +2026-01-12 23:06:16,734 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:06:16] "GET /api/portfolio/positions?_t=1768230376725 HTTP/1.1" 200 - +2026-01-12 23:06:17,047 - app.data_sources.base - WARNING - Warning: AMD data is delayed (295577s) +2026-01-12 23:06:17,052 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (295577s) +2026-01-12 23:06:17,066 - app.data_sources.base - WARNING - Warning: INTC data is delayed (295577s) +2026-01-12 23:06:17,075 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (295577s) +2026-01-12 23:06:17,075 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (295577s) +2026-01-12 23:06:17,080 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (295577s) +2026-01-12 23:06:17,080 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (295577s) +2026-01-12 23:06:17,087 - app.data_sources.base - WARNING - Warning: GD data is delayed (295577s) +2026-01-12 23:06:17,094 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (295577s) +2026-01-12 23:06:17,200 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:06:17] "GET /api/portfolio/summary?_t=1768230376725 HTTP/1.1" 200 - +2026-01-12 23:06:42,126 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:06:42] "GET /api/strategies/notifications?limit=50&_t=1768230401809 HTTP/1.1" 200 - +2026-01-12 23:06:46,726 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:06:46] "GET /api/portfolio/positions?_t=1768230406717 HTTP/1.1" 200 - +2026-01-12 23:06:47,031 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:06:47] "GET /api/portfolio/summary?_t=1768230406717 HTTP/1.1" 200 - +2026-01-12 23:06:48,641 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:06:48] "GET /api/portfolio/positions?_t=1768230408329 HTTP/1.1" 200 - +2026-01-12 23:06:48,642 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:06:48] "GET /api/portfolio/summary?_t=1768230408329 HTTP/1.1" 200 - +2026-01-12 23:06:48,643 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:06:48] "GET /api/strategies/notifications?limit=50&_t=1768230408330 HTTP/1.1" 200 - +2026-01-12 23:07:11,820 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:07:11] "GET /api/strategies/notifications?limit=50&_t=1768230431812 HTTP/1.1" 200 - +2026-01-12 23:07:17,038 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:07:17] "GET /api/portfolio/positions?_t=1768230436719 HTTP/1.1" 200 - +2026-01-12 23:07:17,038 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:07:17] "GET /api/portfolio/summary?_t=1768230436719 HTTP/1.1" 200 - +2026-01-12 23:07:41,818 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:07:41] "GET /api/strategies/notifications?limit=50&_t=1768230461812 HTTP/1.1" 200 - +2026-01-12 23:07:47,038 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:07:47] "GET /api/portfolio/positions?_t=1768230466720 HTTP/1.1" 200 - +2026-01-12 23:07:47,039 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:07:47] "GET /api/portfolio/summary?_t=1768230466720 HTTP/1.1" 200 - +2026-01-12 23:07:48,334 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:07:48] "GET /api/portfolio/positions?_t=1768230468319 HTTP/1.1" 200 - +2026-01-12 23:07:48,656 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:07:48] "GET /api/portfolio/summary?_t=1768230468319 HTTP/1.1" 200 - +2026-01-12 23:07:48,657 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:07:48] "GET /api/strategies/notifications?limit=50&_t=1768230468326 HTTP/1.1" 200 - +2026-01-12 23:08:12,133 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:08:12] "GET /api/strategies/notifications?limit=50&_t=1768230491817 HTTP/1.1" 200 - +2026-01-12 23:08:16,740 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:08:16] "GET /api/portfolio/positions?_t=1768230496732 HTTP/1.1" 200 - +2026-01-12 23:08:17,049 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:08:17] "GET /api/portfolio/summary?_t=1768230496732 HTTP/1.1" 200 - +2026-01-12 23:08:42,137 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:08:42] "GET /api/strategies/notifications?limit=50&_t=1768230521820 HTTP/1.1" 200 - +2026-01-12 23:08:46,726 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:08:46] "GET /api/portfolio/positions?_t=1768230526717 HTTP/1.1" 200 - +2026-01-12 23:08:47,035 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:08:47] "GET /api/portfolio/summary?_t=1768230526717 HTTP/1.1" 200 - +2026-01-12 23:08:48,642 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:08:48] "GET /api/portfolio/positions?_t=1768230528329 HTTP/1.1" 200 - +2026-01-12 23:08:48,642 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:08:48] "GET /api/portfolio/summary?_t=1768230528329 HTTP/1.1" 200 - +2026-01-12 23:08:48,645 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:08:48] "GET /api/strategies/notifications?limit=50&_t=1768230528331 HTTP/1.1" 200 - +2026-01-12 23:09:11,818 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:09:11] "GET /api/strategies/notifications?limit=50&_t=1768230551810 HTTP/1.1" 200 - +2026-01-12 23:09:17,048 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:09:17] "GET /api/portfolio/positions?_t=1768230556727 HTTP/1.1" 200 - +2026-01-12 23:09:17,049 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:09:17] "GET /api/portfolio/summary?_t=1768230556727 HTTP/1.1" 200 - +2026-01-12 23:09:41,829 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:09:41] "GET /api/strategies/notifications?limit=50&_t=1768230581822 HTTP/1.1" 200 - +2026-01-12 23:09:47,050 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:09:47] "GET /api/portfolio/positions?_t=1768230586731 HTTP/1.1" 200 - +2026-01-12 23:09:47,051 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:09:47] "GET /api/portfolio/summary?_t=1768230586731 HTTP/1.1" 200 - +2026-01-12 23:09:48,324 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:09:48] "GET /api/portfolio/positions?_t=1768230588315 HTTP/1.1" 200 - +2026-01-12 23:09:48,631 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:09:48] "GET /api/portfolio/summary?_t=1768230588315 HTTP/1.1" 200 - +2026-01-12 23:09:48,632 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:09:48] "GET /api/strategies/notifications?limit=50&_t=1768230588316 HTTP/1.1" 200 - +2026-01-12 23:10:12,130 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:10:12] "GET /api/strategies/notifications?limit=50&_t=1768230611811 HTTP/1.1" 200 - +2026-01-12 23:10:16,753 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:10:16] "GET /api/portfolio/positions?_t=1768230616743 HTTP/1.1" 200 - +2026-01-12 23:10:17,066 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:10:17] "GET /api/portfolio/summary?_t=1768230616743 HTTP/1.1" 200 - +2026-01-12 23:10:42,130 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:10:42] "GET /api/strategies/notifications?limit=50&_t=1768230641816 HTTP/1.1" 200 - +2026-01-12 23:10:46,733 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:10:46] "GET /api/portfolio/positions?_t=1768230646726 HTTP/1.1" 200 - +2026-01-12 23:10:47,042 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:10:47] "GET /api/portfolio/summary?_t=1768230646726 HTTP/1.1" 200 - +2026-01-12 23:10:48,642 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:10:48] "GET /api/portfolio/positions?_t=1768230648318 HTTP/1.1" 200 - +2026-01-12 23:10:48,643 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:10:48] "GET /api/portfolio/summary?_t=1768230648318 HTTP/1.1" 200 - +2026-01-12 23:10:48,644 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:10:48] "GET /api/strategies/notifications?limit=50&_t=1768230648319 HTTP/1.1" 200 - +2026-01-12 23:10:56,294 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:10:56] "GET /api/market/types?_t=1768230656284 HTTP/1.1" 200 - +2026-01-12 23:10:56,298 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:10:56] "GET /api/portfolio/summary?_t=1768230656284 HTTP/1.1" 200 - +2026-01-12 23:10:56,298 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:10:56] "GET /api/portfolio/positions?_t=1768230656284 HTTP/1.1" 200 - +2026-01-12 23:10:56,615 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:10:56] "GET /api/portfolio/monitors?_t=1768230656284 HTTP/1.1" 200 - +2026-01-12 23:10:56,616 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:10:56] "GET /api/portfolio/alerts?_t=1768230656284 HTTP/1.1" 200 - +2026-01-12 23:10:56,616 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:10:56] "GET /api/strategies/notifications?limit=50&_t=1768230656284 HTTP/1.1" 200 - +2026-01-12 23:10:56,617 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:10:56] "GET /api/portfolio/groups?_t=1768230656284 HTTP/1.1" 200 - +2026-01-12 23:11:26,611 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:11:26] "GET /api/strategies/notifications?limit=50&_t=1768230686293 HTTP/1.1" 200 - +2026-01-12 23:11:26,671 - app.data_sources.base - WARNING - Warning: INTC data is delayed (295887s) +2026-01-12 23:11:26,681 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (295887s) +2026-01-12 23:11:26,682 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (295887s) +2026-01-12 23:11:26,693 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (295887s) +2026-01-12 23:11:26,697 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (295887s) +2026-01-12 23:11:26,698 - app.data_sources.base - WARNING - Warning: GD data is delayed (295887s) +2026-01-12 23:11:26,703 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (295887s) +2026-01-12 23:11:26,704 - app.data_sources.base - WARNING - Warning: AMD data is delayed (295887s) +2026-01-12 23:11:26,708 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (295887s) +2026-01-12 23:11:26,736 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:11:26] "GET /api/portfolio/positions?_t=1768230686340 HTTP/1.1" 200 - +2026-01-12 23:11:26,765 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:11:26] "GET /api/portfolio/summary?_t=1768230686340 HTTP/1.1" 200 - +2026-01-12 23:11:48,334 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:11:48] "GET /api/portfolio/positions?_t=1768230708326 HTTP/1.1" 200 - +2026-01-12 23:11:48,649 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:11:48] "GET /api/portfolio/summary?_t=1768230708326 HTTP/1.1" 200 - +2026-01-12 23:11:48,650 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:11:48] "GET /api/strategies/notifications?limit=50&_t=1768230708327 HTTP/1.1" 200 - +2026-01-12 23:11:56,598 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:11:56] "GET /api/strategies/notifications?limit=50&_t=1768230716285 HTTP/1.1" 200 - +2026-01-12 23:11:56,647 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:11:56] "GET /api/portfolio/summary?_t=1768230716323 HTTP/1.1" 200 - +2026-01-12 23:11:56,647 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:11:56] "GET /api/portfolio/positions?_t=1768230716323 HTTP/1.1" 200 - +2026-01-12 23:12:26,303 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:12:26] "GET /api/strategies/notifications?limit=50&_t=1768230746293 HTTP/1.1" 200 - +2026-01-12 23:12:26,640 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:12:26] "GET /api/portfolio/summary?_t=1768230746323 HTTP/1.1" 200 - +2026-01-12 23:12:26,641 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:12:26] "GET /api/portfolio/positions?_t=1768230746323 HTTP/1.1" 200 - +2026-01-12 23:12:48,331 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:12:48] "GET /api/portfolio/positions?_t=1768230768322 HTTP/1.1" 200 - +2026-01-12 23:12:48,646 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:12:48] "GET /api/portfolio/summary?_t=1768230768322 HTTP/1.1" 200 - +2026-01-12 23:12:48,647 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:12:48] "GET /api/strategies/notifications?limit=50&_t=1768230768323 HTTP/1.1" 200 - +2026-01-12 23:12:56,622 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:12:56] "GET /api/strategies/notifications?limit=50&_t=1768230776305 HTTP/1.1" 200 - +2026-01-12 23:12:56,686 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:12:56] "GET /api/portfolio/positions?_t=1768230776366 HTTP/1.1" 200 - +2026-01-12 23:12:56,686 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:12:56] "GET /api/portfolio/summary?_t=1768230776366 HTTP/1.1" 200 - +2026-01-12 23:13:26,298 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:13:26] "GET /api/strategies/notifications?limit=50&_t=1768230806286 HTTP/1.1" 200 - +2026-01-12 23:13:26,650 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:13:26] "GET /api/portfolio/positions?_t=1768230806324 HTTP/1.1" 200 - +2026-01-12 23:13:26,650 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:13:26] "GET /api/portfolio/summary?_t=1768230806324 HTTP/1.1" 200 - +2026-01-12 23:13:48,341 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:13:48] "GET /api/portfolio/positions?_t=1768230828332 HTTP/1.1" 200 - +2026-01-12 23:13:48,656 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:13:48] "GET /api/portfolio/summary?_t=1768230828332 HTTP/1.1" 200 - +2026-01-12 23:13:48,666 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:13:48] "GET /api/strategies/notifications?limit=50&_t=1768230828334 HTTP/1.1" 200 - +2026-01-12 23:13:56,604 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:13:56] "GET /api/strategies/notifications?limit=50&_t=1768230836287 HTTP/1.1" 200 - +2026-01-12 23:13:56,612 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:13:56] "GET /api/portfolio/positions?_t=1768230836302 HTTP/1.1" 200 - +2026-01-12 23:13:56,613 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:13:56] "GET /api/portfolio/summary?_t=1768230836302 HTTP/1.1" 200 - +2026-01-12 23:14:48,306 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:14:48] "GET /api/strategies/notifications?limit=50&_t=1768230888294 HTTP/1.1" 200 - +2026-01-12 23:14:48,662 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:14:48] "GET /api/portfolio/summary?_t=1768230888331 HTTP/1.1" 200 - +2026-01-12 23:14:48,663 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:14:48] "GET /api/portfolio/summary?_t=1768230888332 HTTP/1.1" 200 - +2026-01-12 23:14:48,663 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:14:48] "GET /api/portfolio/positions?_t=1768230888331 HTTP/1.1" 200 - +2026-01-12 23:14:48,665 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:14:48] "GET /api/strategies/notifications?limit=50&_t=1768230888332 HTTP/1.1" 200 - +2026-01-12 23:14:48,666 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:14:48] "GET /api/portfolio/positions?_t=1768230888332 HTTP/1.1" 200 - +2026-01-12 23:15:10,460 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:15:10] "GET /api/portfolio/positions?_t=1768230910451 HTTP/1.1" 200 - +2026-01-12 23:15:10,774 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:15:10] "GET /api/portfolio/summary?_t=1768230910451 HTTP/1.1" 200 - +2026-01-12 23:15:13,534 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:15:13] "GET /api/market/types?_t=1768230913214 HTTP/1.1" 200 - +2026-01-12 23:15:13,542 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:15:13] "GET /api/portfolio/positions?_t=1768230913214 HTTP/1.1" 200 - +2026-01-12 23:15:13,543 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:15:13] "GET /api/portfolio/monitors?_t=1768230913214 HTTP/1.1" 200 - +2026-01-12 23:15:13,543 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:15:13] "GET /api/portfolio/alerts?_t=1768230913214 HTTP/1.1" 200 - +2026-01-12 23:15:13,544 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:15:13] "GET /api/portfolio/summary?_t=1768230913214 HTTP/1.1" 200 - +2026-01-12 23:15:13,544 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:15:13] "GET /api/portfolio/groups?_t=1768230913214 HTTP/1.1" 200 - +2026-01-12 23:15:16,011 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:15:16] "GET /api/strategies/notifications?limit=50&_t=1768230915696 HTTP/1.1" 200 - +2026-01-12 23:15:20,286 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:15:20] "DELETE /api/portfolio/positions/10 HTTP/1.1" 200 - +2026-01-12 23:15:20,625 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:15:20] "GET /api/portfolio/positions?_t=1768230920305 HTTP/1.1" 200 - +2026-01-12 23:15:20,626 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:15:20] "GET /api/portfolio/alerts?_t=1768230920305 HTTP/1.1" 200 - +2026-01-12 23:15:20,626 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:15:20] "GET /api/portfolio/monitors?_t=1768230920305 HTTP/1.1" 200 - +2026-01-12 23:15:20,627 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:15:20] "GET /api/portfolio/groups?_t=1768230920305 HTTP/1.1" 200 - +2026-01-12 23:15:20,630 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:15:20] "GET /api/portfolio/summary?_t=1768230920305 HTTP/1.1" 200 - +2026-01-12 23:15:43,236 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:15:43] "GET /api/portfolio/positions?_t=1768230943226 HTTP/1.1" 200 - +2026-01-12 23:15:43,540 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:15:43] "GET /api/portfolio/summary?_t=1768230943226 HTTP/1.1" 200 - +2026-01-12 23:15:46,012 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:15:46] "GET /api/strategies/notifications?limit=50&_t=1768230945695 HTTP/1.1" 200 - +2026-01-12 23:15:48,299 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:15:48] "GET /api/strategies/notifications?limit=50&_t=1768230948290 HTTP/1.1" 200 - +2026-01-12 23:15:48,654 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:15:48] "GET /api/portfolio/positions?_t=1768230948328 HTTP/1.1" 200 - +2026-01-12 23:15:48,654 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:15:48] "GET /api/portfolio/summary?_t=1768230948328 HTTP/1.1" 200 - +2026-01-12 23:16:13,241 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:16:13] "GET /api/portfolio/positions?_t=1768230973232 HTTP/1.1" 200 - +2026-01-12 23:16:13,555 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:16:13] "GET /api/portfolio/summary?_t=1768230973232 HTTP/1.1" 200 - +2026-01-12 23:16:16,013 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:16:16] "GET /api/strategies/notifications?limit=50&_t=1768230975699 HTTP/1.1" 200 - +2026-01-12 23:16:26,185 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:16:26] "GET /api/market/types?_t=1768230986175 HTTP/1.1" 200 - +2026-01-12 23:16:26,493 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:16:26] "GET /api/portfolio/monitors?_t=1768230986175 HTTP/1.1" 200 - +2026-01-12 23:16:26,494 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:16:26] "GET /api/portfolio/positions?_t=1768230986175 HTTP/1.1" 200 - +2026-01-12 23:16:26,494 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:16:26] "GET /api/portfolio/groups?_t=1768230986175 HTTP/1.1" 200 - +2026-01-12 23:16:26,494 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:16:26] "GET /api/portfolio/alerts?_t=1768230986175 HTTP/1.1" 200 - +2026-01-12 23:16:26,495 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:16:26] "GET /api/portfolio/summary?_t=1768230986175 HTTP/1.1" 200 - +2026-01-12 23:16:35,470 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:16:35] "GET /api/portfolio/positions?_t=1768230995146 HTTP/1.1" 200 - +2026-01-12 23:16:35,471 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:16:35] "GET /api/portfolio/summary?_t=1768230995146 HTTP/1.1" 200 - +2026-01-12 23:16:45,072 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:16:45] "GET /api/portfolio/positions?_t=1768231005064 HTTP/1.1" 200 - +2026-01-12 23:16:45,386 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:16:45] "GET /api/portfolio/summary?_t=1768231005064 HTTP/1.1" 200 - +2026-01-12 23:16:46,020 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:16:46] "GET /api/strategies/notifications?limit=50&_t=1768231005706 HTTP/1.1" 200 - +2026-01-12 23:16:46,440 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:16:46] "GET /api/portfolio/positions?_t=1768231006432 HTTP/1.1" 200 - +2026-01-12 23:16:46,753 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:16:46] "GET /api/portfolio/summary?_t=1768231006432 HTTP/1.1" 200 - +2026-01-12 23:16:48,601 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:16:48] "GET /api/strategies/notifications?limit=50&_t=1768231008286 HTTP/1.1" 200 - +2026-01-12 23:16:48,647 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:16:48] "GET /api/portfolio/positions?_t=1768231008334 HTTP/1.1" 200 - +2026-01-12 23:16:48,648 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:16:48] "GET /api/portfolio/summary?_t=1768231008334 HTTP/1.1" 200 - +2026-01-12 23:16:48,864 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:16:48] "GET /api/portfolio/positions?_t=1768231008666 HTTP/1.1" 200 - +2026-01-12 23:16:48,989 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:16:48] "GET /api/portfolio/summary?_t=1768231008666 HTTP/1.1" 200 - +2026-01-12 23:16:50,908 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:16:50] "GET /api/portfolio/positions?_t=1768231010899 HTTP/1.1" 200 - +2026-01-12 23:16:51,223 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:16:51] "GET /api/portfolio/summary?_t=1768231010899 HTTP/1.1" 200 - +2026-01-12 23:16:52,352 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:16:52] "GET /api/portfolio/positions?_t=1768231012029 HTTP/1.1" 200 - +2026-01-12 23:16:52,352 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:16:52] "GET /api/portfolio/summary?_t=1768231012029 HTTP/1.1" 200 - +2026-01-12 23:16:56,190 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:16:56] "GET /api/portfolio/positions?_t=1768231016182 HTTP/1.1" 200 - +2026-01-12 23:16:56,501 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:16:56] "GET /api/portfolio/summary?_t=1768231016182 HTTP/1.1" 200 - +2026-01-12 23:17:16,023 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:17:16] "GET /api/strategies/notifications?limit=50&_t=1768231035703 HTTP/1.1" 200 - +2026-01-12 23:17:26,216 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (296246s) +2026-01-12 23:17:26,232 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (296246s) +2026-01-12 23:17:26,232 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (296246s) +2026-01-12 23:17:26,236 - app.data_sources.base - WARNING - Warning: AMD data is delayed (296246s) +2026-01-12 23:17:26,250 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (296246s) +2026-01-12 23:17:26,251 - app.data_sources.base - WARNING - Warning: GD data is delayed (296246s) +2026-01-12 23:17:26,252 - app.data_sources.base - WARNING - Warning: INTC data is delayed (296246s) +2026-01-12 23:17:26,254 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (296246s) +2026-01-12 23:17:26,261 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (296246s) +2026-01-12 23:17:26,262 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:17:26] "GET /api/portfolio/positions?_t=1768231046187 HTTP/1.1" 200 - +2026-01-12 23:17:26,506 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:17:26] "GET /api/portfolio/summary?_t=1768231046187 HTTP/1.1" 200 - +2026-01-12 23:17:46,004 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:17:46] "GET /api/strategies/notifications?limit=50&_t=1768231065693 HTTP/1.1" 200 - +2026-01-12 23:17:48,302 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:17:48] "GET /api/strategies/notifications?limit=50&_t=1768231068294 HTTP/1.1" 200 - +2026-01-12 23:17:48,638 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:17:48] "GET /api/portfolio/positions?_t=1768231068325 HTTP/1.1" 200 - +2026-01-12 23:17:48,639 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:17:48] "GET /api/portfolio/summary?_t=1768231068325 HTTP/1.1" 200 - +2026-01-12 23:17:56,189 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:17:56] "GET /api/portfolio/positions?_t=1768231076180 HTTP/1.1" 200 - +2026-01-12 23:17:56,504 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:17:56] "GET /api/portfolio/summary?_t=1768231076180 HTTP/1.1" 200 - +2026-01-12 23:17:57,778 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:17:57] "GET /api/market/types?_t=1768231077459 HTTP/1.1" 200 - +2026-01-12 23:17:57,779 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:17:57] "GET /api/user/info?_t=1768231077459 HTTP/1.1" 200 - +2026-01-12 23:17:57,783 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:17:57] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 23:17:57,783 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:17:57] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 23:17:58,032 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:17:58] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 23:17:58,109 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 23:17:58,110 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:17:58] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 23:17:58,448 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:17:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:18:15,704 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:18:15] "GET /api/strategies/notifications?limit=50&_t=1768231095692 HTTP/1.1" 200 - +2026-01-12 23:18:25,460 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-12 23:18:25,618 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:18:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:18:26,156 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-12 23:18:26,157 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:18:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:18:27,458 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-12 23:18:27,459 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:18:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:18:28,157 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-12 23:18:28,157 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:18:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:18:29,473 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-12 23:18:29,473 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:18:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:18:30,156 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-12 23:18:30,157 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:18:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:18:31,471 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-12 23:18:31,471 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:18:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:18:32,156 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-12 23:18:32,157 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:18:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:18:33,466 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-12 23:18:33,467 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:18:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:18:34,157 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-12 23:18:34,157 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:18:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:18:35,469 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-12 23:18:35,470 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:18:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:18:36,156 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-12 23:18:36,157 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:18:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:18:37,472 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-12 23:18:37,473 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:18:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:18:38,157 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-12 23:18:38,157 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:18:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:18:39,461 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-12 23:18:39,461 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:18:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:18:40,157 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-12 23:18:40,157 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:18:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:18:41,469 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-12 23:18:41,470 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:18:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:18:42,156 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-12 23:18:42,157 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:18:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:18:43,477 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-12 23:18:43,477 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:18:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:18:44,160 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-12 23:18:44,161 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:18:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:18:45,149 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=500 +2026-01-12 23:18:45,276 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:18:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:18:45,709 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:18:45] "GET /api/strategies/notifications?limit=50&_t=1768231125701 HTTP/1.1" 200 - +2026-01-12 23:18:46,614 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:18:46,678 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:18:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:18:47,310 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:18:47,311 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:18:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:18:48,608 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:18:48] "GET /api/strategies/notifications?limit=50&_t=1768231128290 HTTP/1.1" 200 - +2026-01-12 23:18:48,613 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:18:48,613 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:18:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:18:48,642 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:18:48] "GET /api/portfolio/positions?_t=1768231128328 HTTP/1.1" 200 - +2026-01-12 23:18:48,643 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:18:48] "GET /api/portfolio/summary?_t=1768231128328 HTTP/1.1" 200 - +2026-01-12 23:18:49,307 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:18:49,307 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:18:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:18:50,612 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:18:50,613 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:18:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:18:51,307 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:18:51,308 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:18:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:18:52,607 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:18:52,607 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:18:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:18:53,307 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:18:53,308 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:18:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:18:54,626 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:18:54,627 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:18:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:18:55,304 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:18:55,304 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:18:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:18:56,611 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:18:56,611 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:18:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:18:57,311 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:18:57,311 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:18:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:18:58,618 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:18:58,619 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:18:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:18:59,308 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:18:59,308 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:18:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:00,616 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:00,616 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:01,305 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:01,306 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:02,614 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:02,615 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:03,306 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:03,306 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:04,617 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:04,617 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:05,307 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:05,308 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:06,616 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:06,617 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:07,349 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:07,349 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:08,616 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:08,617 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:09,308 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:09,308 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:10,623 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:10,623 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:11,307 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:11,307 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:12,624 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:12,624 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:13,306 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:13,306 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:14,619 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:14,619 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:15,309 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:15,310 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:16,014 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:16] "GET /api/strategies/notifications?limit=50&_t=1768231155699 HTTP/1.1" 200 - +2026-01-12 23:19:16,306 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:16,307 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:17,614 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:17,615 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:18,307 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:18,308 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:19,622 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:19,623 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:20,306 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:20,306 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:21,614 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:21,615 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:22,308 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:22,309 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:23,621 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:23,621 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:24,308 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:24,309 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:25,613 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:25,614 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:26,301 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:26,302 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:27,619 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:27,619 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:28,309 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:28,309 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:29,618 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:29,619 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:30,313 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:30,314 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:31,619 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:31,620 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:32,308 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:32,309 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:33,624 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:33,625 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:34,304 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:34,305 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:35,622 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:35,622 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:36,311 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:36,311 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:37,610 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:37,611 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:38,304 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:38,305 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:39,617 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:39,618 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:40,309 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:40,310 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:41,626 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:41,627 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:42,311 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:42,311 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:43,623 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=4H, limit=5 +2026-01-12 23:19:43,623 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:43,952 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=500 +2026-01-12 23:19:44,020 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:45,359 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:19:45,427 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:45,706 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:45] "GET /api/strategies/notifications?limit=50&_t=1768231185698 HTTP/1.1" 200 - +2026-01-12 23:19:46,371 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:19:46,372 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:47,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:19:47,055 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:48,372 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:19:48,372 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:48,606 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:48] "GET /api/strategies/notifications?limit=50&_t=1768231188289 HTTP/1.1" 200 - +2026-01-12 23:19:48,637 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:48] "GET /api/portfolio/summary?_t=1768231188321 HTTP/1.1" 200 - +2026-01-12 23:19:48,648 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:48] "GET /api/portfolio/positions?_t=1768231188321 HTTP/1.1" 200 - +2026-01-12 23:19:49,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:19:49,057 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:50,374 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:19:50,375 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:51,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:19:51,126 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:52,370 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:19:52,371 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:53,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:19:53,050 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:54,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:19:54,364 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:55,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:19:55,059 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:56,370 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:19:56,493 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:57,057 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:19:57,057 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:58,374 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:19:58,374 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:19:59,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:19:59,052 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:19:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:00,357 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:00,357 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:01,049 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:01,050 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:02,373 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:02,440 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:03,061 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:03,062 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:04,364 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:04,364 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:05,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:05,061 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:06,375 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:06,375 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:07,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:07,061 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:08,364 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:08,489 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:09,064 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:09,065 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:10,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:10,363 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:11,057 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:11,058 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:12,377 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:12,377 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:13,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:13,053 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:14,365 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:14,433 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:15,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:15,060 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:16,017 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:16] "GET /api/strategies/notifications?limit=50&_t=1768231215703 HTTP/1.1" 200 - +2026-01-12 23:20:16,277 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:16,278 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:17,061 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:17,062 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:18,368 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:18,369 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:19,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:19,053 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:20,364 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:20,432 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:21,061 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:21,062 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:22,366 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:22,366 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:23,063 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:23,064 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:24,366 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:24,366 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:25,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:25,060 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:26,355 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:26,423 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:27,059 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:27,059 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:28,374 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:28,375 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:29,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:29,058 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:30,374 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:30,374 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:31,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:31,059 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:32,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:32,435 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:33,062 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:33,062 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:34,368 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:34,369 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:35,061 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:35,061 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:36,375 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:36,375 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:37,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:37,059 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:38,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:38,431 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:39,062 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:39,062 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:40,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:40,364 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:41,059 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:41,060 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:42,375 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:42,376 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:43,061 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:43,061 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:44,359 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:44,430 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:45,061 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:45,061 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:46,019 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:46] "GET /api/strategies/notifications?limit=50&_t=1768231245703 HTTP/1.1" 200 - +2026-01-12 23:20:46,283 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:46,283 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:47,061 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:47,062 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:48,368 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:48,369 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:48,601 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:48] "GET /api/strategies/notifications?limit=50&_t=1768231248288 HTTP/1.1" 200 - +2026-01-12 23:20:48,633 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:48] "GET /api/portfolio/positions?_t=1768231248327 HTTP/1.1" 200 - +2026-01-12 23:20:48,639 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:48] "GET /api/portfolio/summary?_t=1768231248327 HTTP/1.1" 200 - +2026-01-12 23:20:49,061 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:49,062 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:50,367 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:50,436 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:51,063 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:51,063 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:52,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:52,363 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:53,062 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:53,063 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:54,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:54,361 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:55,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:55,061 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:56,379 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:56,452 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:57,063 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:57,063 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:58,367 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:58,367 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:20:59,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:20:59,053 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:20:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:00,369 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:00,369 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:01,057 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:01,058 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:02,364 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:02,435 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:03,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:03,054 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:04,370 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:04,371 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:05,051 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:05,051 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:06,370 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:06,371 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:07,057 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:07,058 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:08,368 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:08,437 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:09,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:09,051 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:10,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:10,362 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:11,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:11,052 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:12,375 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:12,376 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:13,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:13,057 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:14,355 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:14,427 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:15,065 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:15,066 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:16,006 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:16] "GET /api/strategies/notifications?limit=50&_t=1768231275692 HTTP/1.1" 200 - +2026-01-12 23:21:16,264 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:16,265 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:17,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:17,057 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:18,366 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:18,366 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:19,063 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:19,064 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:20,361 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:20,429 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:21,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:21,054 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:22,368 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:22,368 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:23,063 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:23,063 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:24,371 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:24,371 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:25,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:25,052 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:26,369 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:26,436 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:27,064 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:27,064 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:28,371 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:28,371 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:29,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:29,050 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:30,364 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:30,365 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:31,066 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:31,067 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:32,367 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:32,434 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:33,065 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:33,065 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:34,373 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:34,373 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:35,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:35,052 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:36,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:36,363 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:37,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:37,061 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:38,365 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:38,433 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:39,062 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:39,062 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:40,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:40,363 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:41,063 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:41,063 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:42,366 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:42,366 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:43,061 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:43,061 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:44,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:44,430 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:45,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:45,061 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:46,023 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:46] "GET /api/strategies/notifications?limit=50&_t=1768231305705 HTTP/1.1" 200 - +2026-01-12 23:21:46,286 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:46,286 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:47,049 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:47,050 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:48,359 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:48,359 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:48,608 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:48] "GET /api/strategies/notifications?limit=50&_t=1768231308294 HTTP/1.1" 200 - +2026-01-12 23:21:48,617 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:48] "GET /api/portfolio/positions?_t=1768231308341 HTTP/1.1" 200 - +2026-01-12 23:21:48,654 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:48] "GET /api/portfolio/summary?_t=1768231308341 HTTP/1.1" 200 - +2026-01-12 23:21:49,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:49,060 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:50,374 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:50,444 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:51,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:51,060 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:52,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:52,363 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:53,061 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:53,061 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:54,372 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:54,373 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:55,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:55,053 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:56,370 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:56,437 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:57,058 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:57,059 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:58,375 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:58,376 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:21:59,063 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:21:59,063 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:21:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:22:00,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:22:00,364 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:22:01,057 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:22:01,058 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:22:02,370 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:22:02,438 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:22:03,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:22:03,055 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:22:04,365 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:22:04,365 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:22:05,051 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:22:05,051 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:22:06,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:22:06,363 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:22:07,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:22:07,052 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:22:08,363 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:22:08,430 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:22:09,057 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:22:09,057 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:22:10,369 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:22:10,369 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:22:11,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:22:11,053 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:22:12,367 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:22:12,367 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:22:13,050 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:22:13,051 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:22:14,364 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:22:14,438 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:22:15,059 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:22:15,060 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:22:16,004 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:16] "GET /api/strategies/notifications?limit=50&_t=1768231335692 HTTP/1.1" 200 - +2026-01-12 23:22:16,267 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:22:16,267 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:22:17,060 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:22:17,061 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:22:18,359 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:22:18,360 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:22:19,057 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:22:19,058 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:22:20,369 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:22:20,438 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:22:21,052 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:22:21,053 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:22:22,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:22:22,363 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:22:23,056 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:22:23,056 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:22:24,372 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:22:24,373 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:22:25,053 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:22:25,053 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:22:26,365 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:22:26,437 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:22:27,063 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:22:27,063 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:22:28,362 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:22:28,363 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:22:29,064 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:22:29,065 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:22:30,365 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:22:30,365 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:22:31,066 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:22:31,066 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:22:32,636 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:22:32,705 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:22:33,190 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:22:33,190 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:22:34,054 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:22:34,055 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:22:45,794 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:45] "GET /api/strategies/notifications?limit=50&_t=1768231365693 HTTP/1.1" 200 - +2026-01-12 23:22:48,300 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:48] "GET /api/strategies/notifications?limit=50&_t=1768231368288 HTTP/1.1" 200 - +2026-01-12 23:22:48,335 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:48] "GET /api/portfolio/positions?_t=1768231368324 HTTP/1.1" 200 - +2026-01-12 23:22:48,336 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:48] "GET /api/portfolio/summary?_t=1768231368324 HTTP/1.1" 200 - +2026-01-12 23:22:59,197 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=5m, limit=500 +2026-01-12 23:22:59,311 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:22:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:00,667 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=5m, limit=5 +2026-01-12 23:23:00,738 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:00,926 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=500 +2026-01-12 23:23:01,051 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:01,656 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:01] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 23:23:01,960 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:01] "GET /api/market/types?_t=1768231381645 HTTP/1.1" 200 - +2026-01-12 23:23:01,962 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:01] "GET /api/user/info?_t=1768231381645 HTTP/1.1" 200 - +2026-01-12 23:23:01,963 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:01] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 23:23:01,994 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 23:23:02,120 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:02,284 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:02] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 23:23:02,295 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:02] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 23:23:03,458 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-12 23:23:03,458 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:04,151 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-12 23:23:04,151 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:05,468 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-12 23:23:05,469 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:07,704 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:07] "GET /api/user/info?_t=1768231387680 HTTP/1.1" 200 - +2026-01-12 23:23:07,705 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:07] "GET /api/market/config?_t=1768231387680 HTTP/1.1" 200 - +2026-01-12 23:23:07,708 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:07] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 23:23:07,748 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:07] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 23:23:08,074 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:08] "GET /api/market/types?_t=1768231387749 HTTP/1.1" 200 - +2026-01-12 23:23:08,081 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 23:23:08,082 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 23:23:08,082 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 23:23:08,431 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (296588s) +2026-01-12 23:23:08,432 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:08] "GET /api/market/types?_t=1768231388405 HTTP/1.1" 200 - +2026-01-12 23:23:08,761 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:08] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 23:23:08,764 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:08] "GET /api/user/info?_t=1768231388405 HTTP/1.1" 200 - +2026-01-12 23:23:08,786 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:08] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 23:23:09,108 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-12 23:23:09,110 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:09,113 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:09] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 23:23:09,115 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:09] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 23:23:10,226 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:10] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-12 23:23:10,459 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-12 23:23:10,460 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:11,174 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:11] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-12 23:23:11,464 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-12 23:23:11,464 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:12,468 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=5 +2026-01-12 23:23:12,468 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:12,715 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=500 +2026-01-12 23:23:12,841 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:13,884 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:13,953 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:15,177 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:15,177 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:15,703 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:15] "GET /api/strategies/notifications?limit=50&_t=1768231395694 HTTP/1.1" 200 - +2026-01-12 23:23:16,186 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:16,186 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:16,884 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:16,884 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:18,185 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:18,186 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:18,872 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:18,873 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:20,192 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:20,264 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:20,874 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:20,875 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:22,178 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:22,178 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:22,876 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:22,876 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:24,182 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:24,182 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:24,876 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:24,876 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:26,192 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:26,318 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:26,875 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:26,876 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:28,189 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:28,190 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:28,886 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:28,887 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:30,184 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:30,185 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:30,869 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:30,870 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:32,177 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:32,248 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:32,876 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:32,877 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:34,186 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:34,187 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:34,884 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:34,885 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:36,188 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:36,189 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:36,870 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:36,870 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:38,183 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:38,252 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:38,886 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:38,886 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:40,189 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:40,189 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:40,883 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:40,884 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:42,183 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:42,184 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:42,880 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:42,881 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:44,185 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:44,255 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:44,890 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:44,891 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:46,016 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:46] "GET /api/strategies/notifications?limit=50&_t=1768231425696 HTTP/1.1" 200 - +2026-01-12 23:23:46,185 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:46,185 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:46,883 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:46,884 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:48,185 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:48,186 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:48,451 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:48] "GET /api/strategies/notifications?limit=50&_t=1768231428288 HTTP/1.1" 200 - +2026-01-12 23:23:48,615 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (296629s) +2026-01-12 23:23:48,620 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (296629s) +2026-01-12 23:23:48,632 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (296629s) +2026-01-12 23:23:48,633 - app.data_sources.base - WARNING - Warning: GD data is delayed (296629s) +2026-01-12 23:23:48,639 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (296629s) +2026-01-12 23:23:48,645 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (296629s) +2026-01-12 23:23:48,655 - app.data_sources.base - WARNING - Warning: INTC data is delayed (296629s) +2026-01-12 23:23:48,655 - app.data_sources.base - WARNING - Warning: AMD data is delayed (296629s) +2026-01-12 23:23:48,658 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (296629s) +2026-01-12 23:23:48,658 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:48] "GET /api/portfolio/positions?_t=1768231428325 HTTP/1.1" 200 - +2026-01-12 23:23:48,659 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:48] "GET /api/portfolio/summary?_t=1768231428325 HTTP/1.1" 200 - +2026-01-12 23:23:48,882 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:48,882 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:50,179 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:50,251 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:50,879 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:50,880 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:52,184 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:52,184 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:52,870 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:52,871 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:54,186 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:54,186 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:54,881 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:54,881 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:56,194 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:56,262 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:56,876 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:56,876 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:58,182 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:58,183 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:23:58,876 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:23:58,877 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:23:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:00,181 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:00,181 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:00,873 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:00,874 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:02,178 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:02,248 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:02,875 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:02,876 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:04,184 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:04,184 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:04,872 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:04,873 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:06,184 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:06,184 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:06,871 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:06,871 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:08,179 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:08,248 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:08,874 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:08,874 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:10,185 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:10,186 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:10,882 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:10,882 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:12,189 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:12,189 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:12,878 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:12,879 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:14,179 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:14,249 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:14,873 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:14,873 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:16,014 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:16] "GET /api/strategies/notifications?limit=50&_t=1768231455697 HTTP/1.1" 200 - +2026-01-12 23:24:16,186 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:16,186 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:16,870 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:16,870 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:18,190 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:18,191 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:18,869 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:18,871 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:20,184 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:20,264 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:20,869 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:20,870 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:22,171 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:22,172 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:22,869 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:22,870 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:24,185 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:24,186 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:24,869 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:24,869 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:26,177 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:26,245 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:26,869 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:26,869 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:28,171 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:28,172 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:28,869 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:28,870 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:30,184 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:30,185 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:30,871 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:30,871 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:32,186 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:32,256 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:32,870 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:32,870 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:34,174 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:34,175 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:34,869 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:34,870 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:36,174 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:36,174 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:36,869 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:36,870 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:38,183 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:38,252 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:38,869 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:38,870 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:40,176 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:40,176 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:40,870 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:40,870 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:42,183 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:42,184 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:42,870 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:42,870 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:44,175 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:44,244 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:44,870 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:44,871 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:46,016 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:46] "GET /api/strategies/notifications?limit=50&_t=1768231485697 HTTP/1.1" 200 - +2026-01-12 23:24:46,183 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:46,184 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:46,871 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:46,871 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:48,182 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:48,183 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:48,446 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:48] "GET /api/strategies/notifications?limit=50&_t=1768231488287 HTTP/1.1" 200 - +2026-01-12 23:24:48,601 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:48] "GET /api/portfolio/positions?_t=1768231488323 HTTP/1.1" 200 - +2026-01-12 23:24:48,645 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:48] "GET /api/portfolio/summary?_t=1768231488323 HTTP/1.1" 200 - +2026-01-12 23:24:48,870 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:48,871 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:50,177 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:50,247 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:50,872 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:50,873 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:52,174 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:52,175 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:52,871 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:52,871 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:54,174 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:54,174 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:54,870 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:54,871 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:56,185 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:56,255 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:56,871 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:56,872 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:58,177 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:58,177 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:24:58,870 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:24:58,871 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:24:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:00,175 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:00,175 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:00,871 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:00,872 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:02,173 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:02,241 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:02,871 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:02,871 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:04,184 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:04,185 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:04,873 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:04,874 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:06,179 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:06,180 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:06,871 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:06,871 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:08,177 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:08,245 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:08,912 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:08,912 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:10,183 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:10,184 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:10,871 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:10,872 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:12,180 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:12,181 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:12,871 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:12,872 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:14,184 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:14,252 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:14,871 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:14,871 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:16,020 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:16] "GET /api/strategies/notifications?limit=50&_t=1768231515699 HTTP/1.1" 200 - +2026-01-12 23:25:16,186 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:16,187 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:16,872 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:16,872 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:18,184 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:18,185 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:18,872 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:18,872 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:20,184 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:20,256 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:20,871 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:20,872 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:22,177 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:22,177 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:22,872 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:22,873 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:24,190 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:24,190 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:24,872 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:24,872 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:26,178 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:26,315 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:26,872 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:26,873 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:28,175 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:28,175 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:28,872 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:28,872 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:30,184 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:30,185 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:30,872 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:30,872 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:32,175 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:32,271 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:32,870 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:32,871 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:34,174 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:34,175 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:34,874 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:34,874 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:36,186 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:36,187 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:36,870 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:36,871 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:38,189 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:38,257 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:38,873 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:38,874 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:40,180 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:40,181 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:40,872 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:40,873 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:42,177 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:42,177 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:42,872 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:42,873 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:44,180 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:44,259 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:44,872 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:44,872 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:46,018 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:46] "GET /api/strategies/notifications?limit=50&_t=1768231545700 HTTP/1.1" 200 - +2026-01-12 23:25:46,188 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:46,188 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:46,873 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:46,873 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:48,188 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:48,189 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:48,434 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:48] "GET /api/strategies/notifications?limit=50&_t=1768231548294 HTTP/1.1" 200 - +2026-01-12 23:25:48,605 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:48] "GET /api/portfolio/positions?_t=1768231548339 HTTP/1.1" 200 - +2026-01-12 23:25:48,649 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:48] "GET /api/portfolio/summary?_t=1768231548339 HTTP/1.1" 200 - +2026-01-12 23:25:48,872 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:48,873 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:50,178 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:50,260 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:50,873 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:50,873 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:52,175 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:52,176 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:52,873 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:52,874 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:54,186 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:54,186 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:54,872 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:54,873 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:56,178 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:56,250 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:56,872 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:56,873 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:58,181 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:58,181 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:25:58,873 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:25:58,874 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:25:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:00,178 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:00,178 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:00,874 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:00,874 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:02,188 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:02,267 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:02,871 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:02,872 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:04,182 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:04,182 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:04,873 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:04,874 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:06,179 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:06,179 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:06,873 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:06,874 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:08,178 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:08,249 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:08,881 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:08,881 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:10,189 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:10,190 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:10,873 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:10,873 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:12,182 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:12,183 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:12,873 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:12,874 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:14,188 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:14,259 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:14,871 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:14,872 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:16,012 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:16] "GET /api/strategies/notifications?limit=50&_t=1768231575697 HTTP/1.1" 200 - +2026-01-12 23:26:16,177 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:16,178 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:16,874 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:16,875 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:18,177 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:18,177 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:18,871 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:18,871 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:20,182 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:20,250 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:20,874 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:20,875 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:22,182 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:22,182 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:22,874 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:22,875 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:24,178 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:24,178 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:24,874 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:24,874 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:26,176 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:26,250 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:26,874 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:26,874 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:28,176 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:28,177 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:28,874 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:28,874 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:30,178 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:30,179 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:30,874 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:30,875 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:32,190 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:32,262 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:32,876 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:32,876 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:34,179 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:34,180 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:35,295 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:35,296 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:36,595 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:36,595 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:37,300 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:37,371 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:38,606 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:38,606 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:39,290 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:39,291 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:40,602 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:40,602 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:41,290 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:41,290 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:42,608 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:42,675 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:43,297 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:43,297 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:44,591 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:44,592 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:45,286 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:45,287 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:46,599 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:46,599 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:46,601 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:46] "GET /api/strategies/notifications?limit=50&_t=1768231606284 HTTP/1.1" 200 - +2026-01-12 23:26:47,303 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:47,304 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:48,605 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:48,607 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:48] "GET /api/strategies/notifications?limit=50&_t=1768231608289 HTTP/1.1" 200 - +2026-01-12 23:26:48,653 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:48] "GET /api/portfolio/positions?_t=1768231608327 HTTP/1.1" 200 - +2026-01-12 23:26:48,653 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:48] "GET /api/portfolio/summary?_t=1768231608327 HTTP/1.1" 200 - +2026-01-12 23:26:48,727 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:49,290 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:49,290 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:50,605 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:50,605 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:51,289 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:51,290 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:52,603 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:52,603 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:53,287 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:53,287 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:54,607 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:54,674 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:55,285 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:55,286 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:56,597 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:56,598 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:57,286 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:57,287 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:58,596 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:58,596 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:26:59,297 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:26:59,297 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:26:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:27:00,597 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:27:00,666 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:27:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:27:01,299 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:27:01,299 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:27:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:27:02,595 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:27:02,595 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:27:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:27:03,286 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:27:03,286 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:27:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:27:04,597 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:27:04,597 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:27:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:27:05,293 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:27:05,293 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:27:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:27:06,600 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:27:06,670 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:27:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:27:07,286 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:27:07,286 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:27:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:27:08,594 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:27:08,594 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:27:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:27:09,294 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:27:09,295 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:27:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:27:10,603 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:27:10,604 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:27:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:27:11,285 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:27:11,286 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:27:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:27:12,595 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:27:12,669 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:27:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:27:13,287 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:27:13,287 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:27:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:27:14,593 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:27:14,594 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:27:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:27:15,294 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:27:15,295 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:27:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:27:16,607 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:27:16,607 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:27:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:27:16,611 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:27:16] "GET /api/strategies/notifications?limit=50&_t=1768231636293 HTTP/1.1" 200 - +2026-01-12 23:27:17,292 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:27:17,292 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:27:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:27:18,597 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:27:18,665 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:27:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:27:19,296 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:27:19,296 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:27:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:27:20,592 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:27:20,593 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:27:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:27:21,296 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:27:21,296 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:27:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:27:22,602 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:27:22,603 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:27:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:27:23,299 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:27:23,300 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:27:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:27:24,594 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:27:24,722 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:27:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:27:25,292 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:27:25,292 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:27:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:27:26,592 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:27:26,592 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:27:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:27:27,296 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:27:27,296 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:27:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:27:28,603 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:27:28,603 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:27:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:27:29,288 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:27:29,288 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:27:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:27:30,648 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:27:30,714 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:27:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:27:31,290 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:27:31,290 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:27:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:27:32,603 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:27:32,604 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:27:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:27:33,290 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:27:33,291 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:27:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:27:48,606 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:27:48,608 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:27:48] "GET /api/strategies/notifications?limit=50&_t=1768231668289 HTTP/1.1" 200 - +2026-01-12 23:27:48,609 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:27:48] "GET /api/strategies/notifications?limit=50&_t=1768231668291 HTTP/1.1" 200 - +2026-01-12 23:27:48,636 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:27:48] "GET /api/portfolio/positions?_t=1768231668325 HTTP/1.1" 200 - +2026-01-12 23:27:48,637 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:27:48] "GET /api/portfolio/summary?_t=1768231668325 HTTP/1.1" 200 - +2026-01-12 23:27:48,675 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:27:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:28:46,048 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:28:46,116 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:28:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:28:46,362 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:28:46] "GET /api/strategies/notifications?limit=50&_t=1768231726041 HTTP/1.1" 200 - +2026-01-12 23:28:47,172 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:28:47,173 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:28:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:28:47,723 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:28:47] "GET /api/dashboard/summary?_t=1768231727705 HTTP/1.1" 200 - +2026-01-12 23:28:48,023 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:28:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768231727705 HTTP/1.1" 200 - +2026-01-12 23:28:48,025 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:28:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768231727705 HTTP/1.1" 200 - +2026-01-12 23:28:48,601 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:28:48] "GET /api/strategies/notifications?limit=50&_t=1768231728288 HTTP/1.1" 200 - +2026-01-12 23:28:48,643 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (296929s) +2026-01-12 23:28:48,648 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:28:48] "GET /api/portfolio/positions?_t=1768231728322 HTTP/1.1" 200 - +2026-01-12 23:28:48,650 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (296929s) +2026-01-12 23:28:48,651 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:28:48] "GET /api/portfolio/summary?_t=1768231728322 HTTP/1.1" 200 - +2026-01-12 23:28:52,698 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:28:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768231732690 HTTP/1.1" 200 - +2026-01-12 23:28:53,343 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:28:53] "GET /api/market/types?_t=1768231733013 HTTP/1.1" 200 - +2026-01-12 23:28:53,350 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:28:53] "GET /api/portfolio/monitors?_t=1768231733014 HTTP/1.1" 200 - +2026-01-12 23:28:53,350 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:28:53] "GET /api/portfolio/positions?_t=1768231733014 HTTP/1.1" 200 - +2026-01-12 23:28:53,351 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:28:53] "GET /api/portfolio/alerts?_t=1768231733014 HTTP/1.1" 200 - +2026-01-12 23:28:53,351 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:28:53] "GET /api/portfolio/groups?_t=1768231733014 HTTP/1.1" 200 - +2026-01-12 23:28:53,353 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:28:53] "GET /api/portfolio/summary?_t=1768231733014 HTTP/1.1" 200 - +2026-01-12 23:28:57,849 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:28:57] "GET /api/market/types?_t=1768231737527 HTTP/1.1" 200 - +2026-01-12 23:28:57,854 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:28:57] "GET /api/portfolio/summary?_t=1768231737527 HTTP/1.1" 200 - +2026-01-12 23:28:57,855 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:28:57] "GET /api/portfolio/positions?_t=1768231737527 HTTP/1.1" 200 - +2026-01-12 23:28:57,856 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:28:57] "GET /api/portfolio/monitors?_t=1768231737527 HTTP/1.1" 200 - +2026-01-12 23:28:57,856 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:28:57] "GET /api/portfolio/alerts?_t=1768231737527 HTTP/1.1" 200 - +2026-01-12 23:28:57,857 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:28:57] "GET /api/portfolio/groups?_t=1768231737527 HTTP/1.1" 200 - +2026-01-12 23:29:16,010 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:29:16] "GET /api/strategies/notifications?limit=50&_t=1768231755693 HTTP/1.1" 200 - +2026-01-12 23:29:27,539 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:29:27] "GET /api/portfolio/positions?_t=1768231767532 HTTP/1.1" 200 - +2026-01-12 23:29:27,850 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:29:27] "GET /api/portfolio/summary?_t=1768231767532 HTTP/1.1" 200 - +2026-01-12 23:29:32,764 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:29:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768231772436 HTTP/1.1" 200 - +2026-01-12 23:29:32,765 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:29:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768231772436 HTTP/1.1" 200 - +2026-01-12 23:29:32,767 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:29:32] "GET /api/dashboard/summary?_t=1768231772436 HTTP/1.1" 200 - +2026-01-12 23:29:34,255 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:29:34] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 23:29:34,569 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:29:34] "GET /api/user/info?_t=1768231774176 HTTP/1.1" 200 - +2026-01-12 23:29:34,570 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:29:34] "GET /api/market/config?_t=1768231774176 HTTP/1.1" 200 - +2026-01-12 23:29:34,613 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (296975s) +2026-01-12 23:29:34,897 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:29:34] "GET /api/market/types?_t=1768231774579 HTTP/1.1" 200 - +2026-01-12 23:29:34,900 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:29:34] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 23:29:37,163 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:29:37] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-12 23:29:38,088 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:29:38] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-12 23:29:46,006 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:29:46] "GET /api/strategies/notifications?limit=50&_t=1768231785693 HTTP/1.1" 200 - +2026-01-12 23:29:48,297 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:29:48] "GET /api/strategies/notifications?limit=50&_t=1768231788287 HTTP/1.1" 200 - +2026-01-12 23:29:48,653 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (296989s) +2026-01-12 23:29:48,662 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (296989s) +2026-01-12 23:29:48,663 - app.data_sources.base - WARNING - Warning: INTC data is delayed (296989s) +2026-01-12 23:29:48,670 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (296989s) +2026-01-12 23:29:48,672 - app.data_sources.base - WARNING - Warning: GD data is delayed (296989s) +2026-01-12 23:29:48,685 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (296989s) +2026-01-12 23:29:48,686 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (296989s) +2026-01-12 23:29:48,686 - app.data_sources.base - WARNING - Warning: AMD data is delayed (296989s) +2026-01-12 23:29:48,687 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:29:48] "GET /api/portfolio/positions?_t=1768231788322 HTTP/1.1" 200 - +2026-01-12 23:29:48,688 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:29:48] "GET /api/portfolio/summary?_t=1768231788322 HTTP/1.1" 200 - +2026-01-12 23:30:04,179 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:30:04] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-12 23:30:16,010 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:30:16] "GET /api/strategies/notifications?limit=50&_t=1768231815692 HTTP/1.1" 200 - +2026-01-12 23:30:34,176 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:30:34] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-12 23:30:46,021 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:30:46] "GET /api/strategies/notifications?limit=50&_t=1768231845695 HTTP/1.1" 200 - +2026-01-12 23:30:48,301 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:30:48] "GET /api/strategies/notifications?limit=50&_t=1768231848287 HTTP/1.1" 200 - +2026-01-12 23:30:48,647 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:30:48] "GET /api/portfolio/positions?_t=1768231848328 HTTP/1.1" 200 - +2026-01-12 23:30:48,648 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:30:48] "GET /api/portfolio/summary?_t=1768231848329 HTTP/1.1" 200 - +2026-01-12 23:30:57,831 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:30:57] "POST /api/market/symbols/hot HTTP/1.1" 200 - +2026-01-12 23:31:00,470 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:31:00] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 23:31:02,209 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:31:02] "POST /api/market/symbols/search HTTP/1.1" 200 - +2026-01-12 23:31:04,483 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:31:04] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-12 23:31:05,082 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:31:05] "POST /api/market/watchlist/add HTTP/1.1" 200 - +2026-01-12 23:31:05,107 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:31:05] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 23:31:05,434 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:31:05] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-12 23:31:14,203 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:31:14] "GET /api/market/types?_t=1768231874191 HTTP/1.1" 200 - +2026-01-12 23:31:14,532 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:31:14] "GET /api/portfolio/positions?_t=1768231874191 HTTP/1.1" 200 - +2026-01-12 23:31:14,533 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:31:14] "GET /api/portfolio/alerts?_t=1768231874191 HTTP/1.1" 200 - +2026-01-12 23:31:14,534 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:31:14] "GET /api/portfolio/summary?_t=1768231874191 HTTP/1.1" 200 - +2026-01-12 23:31:14,534 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:31:14] "GET /api/portfolio/groups?_t=1768231874191 HTTP/1.1" 200 - +2026-01-12 23:31:14,544 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:31:14] "GET /api/portfolio/monitors?_t=1768231874191 HTTP/1.1" 200 - +2026-01-12 23:31:16,022 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:31:16] "GET /api/strategies/notifications?limit=50&_t=1768231875696 HTTP/1.1" 200 - +2026-01-12 23:31:44,206 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:31:44] "GET /api/portfolio/positions?_t=1768231904195 HTTP/1.1" 200 - +2026-01-12 23:31:44,510 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:31:44] "GET /api/portfolio/summary?_t=1768231904195 HTTP/1.1" 200 - +2026-01-12 23:31:46,022 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:31:46] "GET /api/strategies/notifications?limit=50&_t=1768231905706 HTTP/1.1" 200 - +2026-01-12 23:31:48,301 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:31:48] "GET /api/strategies/notifications?limit=50&_t=1768231908290 HTTP/1.1" 200 - +2026-01-12 23:31:48,637 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:31:48] "GET /api/portfolio/positions?_t=1768231908321 HTTP/1.1" 200 - +2026-01-12 23:31:48,638 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:31:48] "GET /api/portfolio/summary?_t=1768231908321 HTTP/1.1" 200 - +2026-01-12 23:32:14,202 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:32:14] "GET /api/portfolio/positions?_t=1768231934192 HTTP/1.1" 200 - +2026-01-12 23:32:14,508 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:32:14] "GET /api/portfolio/summary?_t=1768231934192 HTTP/1.1" 200 - +2026-01-12 23:32:16,008 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:32:16] "GET /api/strategies/notifications?limit=50&_t=1768231935694 HTTP/1.1" 200 - +2026-01-12 23:32:44,201 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:32:44] "GET /api/portfolio/positions?_t=1768231964193 HTTP/1.1" 200 - +2026-01-12 23:32:44,511 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:32:44] "GET /api/portfolio/summary?_t=1768231964193 HTTP/1.1" 200 - +2026-01-12 23:32:46,010 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:32:46] "GET /api/strategies/notifications?limit=50&_t=1768231965695 HTTP/1.1" 200 - +2026-01-12 23:32:48,300 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:32:48] "GET /api/strategies/notifications?limit=50&_t=1768231968291 HTTP/1.1" 200 - +2026-01-12 23:32:48,635 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:32:48] "GET /api/portfolio/positions?_t=1768231968324 HTTP/1.1" 200 - +2026-01-12 23:32:48,635 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:32:48] "GET /api/portfolio/summary?_t=1768231968324 HTTP/1.1" 200 - +2026-01-12 23:33:14,205 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:33:14] "GET /api/portfolio/positions?_t=1768231994196 HTTP/1.1" 200 - +2026-01-12 23:33:14,509 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:33:14] "GET /api/portfolio/summary?_t=1768231994196 HTTP/1.1" 200 - +2026-01-12 23:33:16,019 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:33:16] "GET /api/strategies/notifications?limit=50&_t=1768231995699 HTTP/1.1" 200 - +2026-01-12 23:33:44,206 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:33:44] "GET /api/portfolio/positions?_t=1768232024197 HTTP/1.1" 200 - +2026-01-12 23:33:44,510 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:33:44] "GET /api/portfolio/summary?_t=1768232024197 HTTP/1.1" 200 - +2026-01-12 23:33:46,009 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:33:46] "GET /api/strategies/notifications?limit=50&_t=1768232025694 HTTP/1.1" 200 - +2026-01-12 23:33:48,293 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:33:48] "GET /api/strategies/notifications?limit=50&_t=1768232028284 HTTP/1.1" 200 - +2026-01-12 23:33:48,629 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:33:48] "GET /api/portfolio/positions?_t=1768232028315 HTTP/1.1" 200 - +2026-01-12 23:33:48,630 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:33:48] "GET /api/portfolio/summary?_t=1768232028316 HTTP/1.1" 200 - +2026-01-12 23:34:14,203 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:34:14] "GET /api/portfolio/positions?_t=1768232054185 HTTP/1.1" 200 - +2026-01-12 23:34:14,501 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:34:14] "GET /api/portfolio/summary?_t=1768232054185 HTTP/1.1" 200 - +2026-01-12 23:34:16,023 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:34:16] "GET /api/strategies/notifications?limit=50&_t=1768232055707 HTTP/1.1" 200 - +2026-01-12 23:34:44,195 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:34:44] "GET /api/portfolio/positions?_t=1768232084187 HTTP/1.1" 200 - +2026-01-12 23:34:44,513 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (297285s) +2026-01-12 23:34:44,514 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:34:44] "GET /api/portfolio/summary?_t=1768232084187 HTTP/1.1" 200 - +2026-01-12 23:34:46,006 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:34:46] "GET /api/strategies/notifications?limit=50&_t=1768232085693 HTTP/1.1" 200 - +2026-01-12 23:34:48,294 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:34:48] "GET /api/strategies/notifications?limit=50&_t=1768232088282 HTTP/1.1" 200 - +2026-01-12 23:34:48,640 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:34:48] "GET /api/portfolio/positions?_t=1768232088319 HTTP/1.1" 200 - +2026-01-12 23:34:48,640 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:34:48] "GET /api/portfolio/summary?_t=1768232088319 HTTP/1.1" 200 - +2026-01-12 23:35:14,203 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:35:14] "GET /api/portfolio/positions?_t=1768232114193 HTTP/1.1" 200 - +2026-01-12 23:35:14,513 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:35:14] "GET /api/portfolio/summary?_t=1768232114193 HTTP/1.1" 200 - +2026-01-12 23:35:16,015 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:35:16] "GET /api/strategies/notifications?limit=50&_t=1768232115696 HTTP/1.1" 200 - +2026-01-12 23:35:44,203 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:35:44] "GET /api/portfolio/positions?_t=1768232144194 HTTP/1.1" 200 - +2026-01-12 23:35:44,519 - app.data_sources.base - WARNING - Warning: GD data is delayed (297345s) +2026-01-12 23:35:44,531 - app.data_sources.base - WARNING - Warning: OMDA data is delayed (297345s) +2026-01-12 23:35:44,544 - app.data_sources.base - WARNING - Warning: MSFT data is delayed (297345s) +2026-01-12 23:35:44,548 - app.data_sources.base - WARNING - Warning: INTC data is delayed (297345s) +2026-01-12 23:35:44,554 - app.data_sources.base - WARNING - Warning: AMD data is delayed (297345s) +2026-01-12 23:35:44,555 - app.data_sources.base - WARNING - Warning: ORCL data is delayed (297345s) +2026-01-12 23:35:44,555 - app.data_sources.base - WARNING - Warning: SPCE data is delayed (297345s) +2026-01-12 23:35:44,561 - app.data_sources.base - WARNING - Warning: GOOGL data is delayed (297345s) +2026-01-12 23:35:44,562 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:35:44] "GET /api/portfolio/summary?_t=1768232144194 HTTP/1.1" 200 - +2026-01-12 23:35:46,013 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:35:46] "GET /api/strategies/notifications?limit=50&_t=1768232145698 HTTP/1.1" 200 - +2026-01-12 23:35:48,298 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:35:48] "GET /api/strategies/notifications?limit=50&_t=1768232148288 HTTP/1.1" 200 - +2026-01-12 23:35:48,634 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:35:48] "GET /api/portfolio/positions?_t=1768232148321 HTTP/1.1" 200 - +2026-01-12 23:35:48,634 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:35:48] "GET /api/portfolio/summary?_t=1768232148321 HTTP/1.1" 200 - +2026-01-12 23:36:14,193 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:36:14] "GET /api/portfolio/positions?_t=1768232174183 HTTP/1.1" 200 - +2026-01-12 23:36:14,500 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:36:14] "GET /api/portfolio/summary?_t=1768232174183 HTTP/1.1" 200 - +2026-01-12 23:36:16,017 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:36:16] "GET /api/strategies/notifications?limit=50&_t=1768232175704 HTTP/1.1" 200 - +2026-01-12 23:36:44,190 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:36:44] "GET /api/portfolio/positions?_t=1768232204181 HTTP/1.1" 200 - +2026-01-12 23:36:44,501 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:36:44] "GET /api/portfolio/summary?_t=1768232204181 HTTP/1.1" 200 - +2026-01-12 23:36:46,020 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:36:46] "GET /api/strategies/notifications?limit=50&_t=1768232205701 HTTP/1.1" 200 - +2026-01-12 23:36:48,291 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:36:48] "GET /api/strategies/notifications?limit=50&_t=1768232208282 HTTP/1.1" 200 - +2026-01-12 23:36:48,633 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:36:48] "GET /api/portfolio/positions?_t=1768232208317 HTTP/1.1" 200 - +2026-01-12 23:36:48,634 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:36:48] "GET /api/portfolio/summary?_t=1768232208317 HTTP/1.1" 200 - +2026-01-12 23:37:14,203 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:37:14] "GET /api/portfolio/positions?_t=1768232234191 HTTP/1.1" 200 - +2026-01-12 23:37:14,511 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:37:14] "GET /api/portfolio/summary?_t=1768232234191 HTTP/1.1" 200 - +2026-01-12 23:37:16,023 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:37:16] "GET /api/strategies/notifications?limit=50&_t=1768232235706 HTTP/1.1" 200 - +2026-01-12 23:37:44,202 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:37:44] "GET /api/portfolio/positions?_t=1768232264193 HTTP/1.1" 200 - +2026-01-12 23:37:44,511 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:37:44] "GET /api/portfolio/summary?_t=1768232264193 HTTP/1.1" 200 - +2026-01-12 23:37:46,010 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:37:46] "GET /api/strategies/notifications?limit=50&_t=1768232265696 HTTP/1.1" 200 - +2026-01-12 23:37:48,291 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:37:48] "GET /api/strategies/notifications?limit=50&_t=1768232268281 HTTP/1.1" 200 - +2026-01-12 23:37:48,625 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:37:48] "GET /api/portfolio/positions?_t=1768232268314 HTTP/1.1" 200 - +2026-01-12 23:37:48,626 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:37:48] "GET /api/portfolio/summary?_t=1768232268314 HTTP/1.1" 200 - +2026-01-12 23:38:14,196 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:38:14] "GET /api/portfolio/positions?_t=1768232294188 HTTP/1.1" 200 - +2026-01-12 23:38:14,506 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:38:14] "GET /api/portfolio/summary?_t=1768232294188 HTTP/1.1" 200 - +2026-01-12 23:38:16,033 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:38:16] "GET /api/strategies/notifications?limit=50&_t=1768232295704 HTTP/1.1" 200 - +2026-01-12 23:38:44,196 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:38:44] "GET /api/portfolio/positions?_t=1768232324187 HTTP/1.1" 200 - +2026-01-12 23:38:44,505 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:38:44] "GET /api/portfolio/summary?_t=1768232324187 HTTP/1.1" 200 - +2026-01-12 23:38:46,019 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:38:46] "GET /api/strategies/notifications?limit=50&_t=1768232325706 HTTP/1.1" 200 - +2026-01-12 23:38:48,303 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:38:48] "GET /api/strategies/notifications?limit=50&_t=1768232328293 HTTP/1.1" 200 - +2026-01-12 23:38:48,637 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:38:48] "GET /api/portfolio/positions?_t=1768232328326 HTTP/1.1" 200 - +2026-01-12 23:38:48,637 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:38:48] "GET /api/portfolio/summary?_t=1768232328326 HTTP/1.1" 200 - +2026-01-12 23:39:14,195 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:39:14] "GET /api/portfolio/positions?_t=1768232354187 HTTP/1.1" 200 - +2026-01-12 23:39:14,504 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:39:14] "GET /api/portfolio/summary?_t=1768232354187 HTTP/1.1" 200 - +2026-01-12 23:39:16,019 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:39:16] "GET /api/strategies/notifications?limit=50&_t=1768232355706 HTTP/1.1" 200 - +2026-01-12 23:39:44,205 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:39:44] "GET /api/portfolio/positions?_t=1768232384195 HTTP/1.1" 200 - +2026-01-12 23:39:44,509 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:39:44] "GET /api/portfolio/summary?_t=1768232384195 HTTP/1.1" 200 - +2026-01-12 23:39:46,012 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:39:46] "GET /api/strategies/notifications?limit=50&_t=1768232385699 HTTP/1.1" 200 - +2026-01-12 23:39:48,294 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:39:48] "GET /api/strategies/notifications?limit=50&_t=1768232388284 HTTP/1.1" 200 - +2026-01-12 23:39:48,633 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:39:48] "GET /api/portfolio/positions?_t=1768232388317 HTTP/1.1" 200 - +2026-01-12 23:39:48,634 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:39:48] "GET /api/portfolio/summary?_t=1768232388317 HTTP/1.1" 200 - +2026-01-12 23:40:14,198 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:40:14] "GET /api/portfolio/positions?_t=1768232414190 HTTP/1.1" 200 - +2026-01-12 23:40:14,507 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:40:14] "GET /api/portfolio/summary?_t=1768232414190 HTTP/1.1" 200 - +2026-01-12 23:40:16,024 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:40:16] "GET /api/strategies/notifications?limit=50&_t=1768232415706 HTTP/1.1" 200 - +2026-01-12 23:40:44,189 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:40:44] "GET /api/portfolio/positions?_t=1768232444182 HTTP/1.1" 200 - +2026-01-12 23:40:44,506 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (297645s) +2026-01-12 23:40:44,506 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:40:44] "GET /api/portfolio/summary?_t=1768232444182 HTTP/1.1" 200 - +2026-01-12 23:40:46,014 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:40:46] "GET /api/strategies/notifications?limit=50&_t=1768232445694 HTTP/1.1" 200 - +2026-01-12 23:40:48,297 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:40:48] "GET /api/strategies/notifications?limit=50&_t=1768232448285 HTTP/1.1" 200 - +2026-01-12 23:40:48,629 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:40:48] "GET /api/portfolio/positions?_t=1768232448317 HTTP/1.1" 200 - +2026-01-12 23:40:48,630 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:40:48] "GET /api/portfolio/summary?_t=1768232448317 HTTP/1.1" 200 - +2026-01-12 23:40:57,175 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-12 23:40:57,175 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-12 23:40:57,186 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-12 23:40:57,187 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-12 23:40:57,190 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 23:40:57,201 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 23:40:57,526 - app.services.strategy - INFO - Found 0 running strategies: [] +2026-01-12 23:40:57,526 - app - INFO - No running strategies to restore. +2026-01-12 23:40:57,542 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-12 23:40:57,542 - werkzeug - INFO - Press CTRL+C to quit +2026-01-12 23:41:02,249 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:02] "GET /api/market/types?_t=1768232462241 HTTP/1.1" 200 - +2026-01-12 23:41:02,562 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:02] "GET /api/portfolio/groups?_t=1768232462241 HTTP/1.1" 200 - +2026-01-12 23:41:02,563 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:02] "GET /api/portfolio/monitors?_t=1768232462241 HTTP/1.1" 200 - +2026-01-12 23:41:02,564 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:02] "GET /api/portfolio/alerts?_t=1768232462241 HTTP/1.1" 200 - +2026-01-12 23:41:02,670 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 23:41:02,670 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 23:41:02,670 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 23:41:02,670 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 23:41:02,670 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 23:41:02,670 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 23:41:02,671 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 23:41:02,671 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 23:41:02,671 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 23:41:02,671 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 23:41:05,459 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:05] "GET /api/portfolio/summary?_t=1768232462241 HTTP/1.1" 200 - +2026-01-12 23:41:05,689 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:05] "GET /api/portfolio/positions?_t=1768232462241 HTTP/1.1" 200 - +2026-01-12 23:41:10,690 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:10] "GET /api/portfolio/summary?_t=1768232470368 HTTP/1.1" 200 - +2026-01-12 23:41:10,691 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:10] "GET /api/portfolio/positions?_t=1768232470368 HTTP/1.1" 200 - +2026-01-12 23:41:15,700 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:15] "GET /api/strategies/notifications?limit=50&_t=1768232475692 HTTP/1.1" 200 - +2026-01-12 23:41:20,765 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768232480449 HTTP/1.1" 200 - +2026-01-12 23:41:20,766 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768232480449 HTTP/1.1" 200 - +2026-01-12 23:41:20,768 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:20] "GET /api/dashboard/summary?_t=1768232480449 HTTP/1.1" 200 - +2026-01-12 23:41:21,666 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:21] "GET /api/user/info?_t=1768232481656 HTTP/1.1" 200 - +2026-01-12 23:41:21,984 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:21] "GET /api/market/config?_t=1768232481656 HTTP/1.1" 200 - +2026-01-12 23:41:21,987 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:21] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 23:41:21,988 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:21] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 23:41:22,333 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:22] "GET /api/market/types?_t=1768232481995 HTTP/1.1" 200 - +2026-01-12 23:41:22,374 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 23:41:22,375 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 23:41:22,375 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 23:41:23,054 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (297683s) +2026-01-12 23:41:23,082 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (297683s) +2026-01-12 23:41:25,193 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:25] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-12 23:41:25,814 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:25] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-12 23:41:30,529 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:30] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 23:41:30,850 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:30] "GET /api/market/types?_t=1768232490517 HTTP/1.1" 200 - +2026-01-12 23:41:30,851 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:30] "GET /api/user/info?_t=1768232490517 HTTP/1.1" 200 - +2026-01-12 23:41:30,856 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:30] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 23:41:30,867 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=500 +2026-01-12 23:41:31,114 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (297691s) +2026-01-12 23:41:31,115 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:41:31,185 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:31] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 23:41:31,186 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:31] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 23:41:32,448 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=5 +2026-01-12 23:41:32,624 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (297693s) +2026-01-12 23:41:32,625 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:41:33,146 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=5 +2026-01-12 23:41:33,146 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:41:34,458 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=5 +2026-01-12 23:41:34,459 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:41:34,710 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=500 +2026-01-12 23:41:34,943 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (297695s) +2026-01-12 23:41:34,944 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:41:35,971 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-12 23:41:36,180 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (297696s) +2026-01-12 23:41:36,180 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:41:37,277 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-12 23:41:37,277 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:41:37,633 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=500 +2026-01-12 23:41:37,829 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (240158s) +2026-01-12 23:41:37,831 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:41:39,171 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:41:39,354 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:41:39,354 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:41:39,355 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:41:39,858 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:41:39,860 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:41:39,860 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:41:39,861 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:41:41,174 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:41:41,177 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:41:41,177 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:41:41,177 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:41:41,858 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:41:41,860 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:41:41,861 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:41:41,862 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:41:43,169 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:41:43,171 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:41:43,172 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:41:43,172 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:41:43,857 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:41:43,859 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:41:43,860 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:41:43,860 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:41:45,171 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:41:45,173 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:41:45,174 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:41:45,174 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:41:45,710 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:45] "GET /api/strategies/notifications?limit=50&_t=1768232505702 HTTP/1.1" 200 - +2026-01-12 23:41:46,163 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:41:46,165 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:41:46,166 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:41:46,166 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:41:46,858 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:41:46,860 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:41:46,860 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:41:46,861 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:41:48,168 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:41:48,171 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:41:48,171 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:41:48,171 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:41:48,432 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:48] "GET /api/strategies/notifications?limit=50&_t=1768232508288 HTTP/1.1" 200 - +2026-01-12 23:41:48,859 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:41:48,861 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:41:48,861 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:41:48,861 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:41:49,738 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:49] "GET /api/portfolio/summary?_t=1768232508325 HTTP/1.1" 200 - +2026-01-12 23:41:49,801 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:49] "GET /api/portfolio/positions?_t=1768232508325 HTTP/1.1" 200 - +2026-01-12 23:41:50,172 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:41:50,174 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:41:50,175 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:41:50,175 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:41:50,858 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:41:50,860 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:41:50,860 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:41:50,860 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:41:52,168 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:41:52,170 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:41:52,170 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:41:52,171 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:41:52,857 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:41:52,860 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:41:52,860 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:41:52,860 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:41:54,170 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:41:54,172 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:41:54,173 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:41:54,173 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:41:54,857 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:41:54,861 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:41:54,861 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:41:54,862 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:41:56,166 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:41:56,168 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:41:56,169 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:41:56,169 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:41:56,858 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:41:56,860 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:41:56,861 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:41:56,861 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:41:58,166 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:41:58,168 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:41:58,168 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:41:58,169 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:41:58,858 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:41:58,860 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:41:58,861 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:41:58,861 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:41:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:00,163 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:00,165 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:00,165 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:00,166 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:00,860 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:00,862 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:00,862 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:00,862 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:02,159 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:02,161 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:02,162 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:02,162 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:02,860 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:02,862 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:02,862 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:02,863 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:04,168 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:04,170 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:04,171 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:04,171 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:04,858 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:04,860 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:04,861 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:04,861 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:06,168 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:06,171 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:06,172 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:06,172 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:06,859 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:06,861 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:06,861 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:06,861 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:08,166 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:08,168 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:08,168 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:08,168 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:08,859 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:08,861 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:08,862 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:08,862 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:10,174 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:10,176 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:10,177 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:10,177 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:10,859 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:10,862 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:10,862 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:10,862 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:12,164 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:12,166 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:12,166 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:12,166 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:12,859 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:12,861 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:12,861 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:12,862 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:14,176 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:14,178 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:14,179 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:14,179 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:14,859 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:14,861 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:14,862 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:14,862 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:16,011 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:16] "GET /api/strategies/notifications?limit=50&_t=1768232535693 HTTP/1.1" 200 - +2026-01-12 23:42:16,162 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:16,164 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:16,164 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:16,164 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:16,858 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:16,860 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:16,861 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:16,861 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:18,165 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:18,167 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:18,167 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:18,167 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:18,859 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:18,861 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:18,861 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:18,861 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:20,166 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:20,168 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:20,169 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:20,169 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:20,859 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:20,861 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:20,862 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:20,862 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:22,165 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:22,167 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:22,167 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:22,167 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:22,859 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:22,861 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:22,861 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:22,861 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:24,164 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:24,166 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:24,166 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:24,167 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:24,858 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:24,860 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:24,861 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:24,861 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:26,173 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:26,175 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:26,175 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:26,176 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:26,858 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:26,860 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:26,860 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:26,860 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:28,162 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:28,164 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:28,165 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:28,165 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:28,860 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:28,862 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:28,862 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:28,862 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:30,163 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:30,165 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:30,165 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:30,165 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:30,859 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:30,861 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:30,862 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:30,862 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:32,175 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:32,177 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:32,178 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:32,178 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:32,858 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:32,860 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:32,860 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:32,860 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:34,168 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:34,171 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:34,172 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:34,172 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:34,860 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:34,862 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:34,863 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:34,863 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:36,163 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:36,165 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:36,165 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:36,166 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:36,859 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:36,862 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:36,862 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:36,862 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:38,171 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:38,173 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:38,174 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:38,174 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:38,860 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:38,862 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:38,862 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:38,863 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:40,174 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:40,176 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:40,177 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:40,177 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:40,861 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:40,863 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:40,863 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:40,864 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:42,173 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:42,175 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:42,175 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:42,175 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:42,860 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:42,862 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:42,862 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:42,862 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:44,173 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:44,175 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:44,176 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:44,176 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:44,861 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:44,864 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:44,864 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:44,865 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:46,022 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:46] "GET /api/strategies/notifications?limit=50&_t=1768232565704 HTTP/1.1" 200 - +2026-01-12 23:42:46,175 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:46,178 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:46,178 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:46,179 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:46,860 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:46,862 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:46,862 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:46,863 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:48,167 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:48,169 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:48,169 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:48,169 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:48,430 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:48] "GET /api/strategies/notifications?limit=50&_t=1768232568286 HTTP/1.1" 200 - +2026-01-12 23:42:48,861 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:48,863 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:48,864 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:48,864 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:49,074 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:49] "GET /api/portfolio/positions?_t=1768232568319 HTTP/1.1" 200 - +2026-01-12 23:42:49,335 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:49] "GET /api/portfolio/summary?_t=1768232568319 HTTP/1.1" 200 - +2026-01-12 23:42:50,176 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:50,178 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:50,178 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:50,179 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:50,860 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:50,862 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:50,862 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:50,862 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:52,166 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:52,168 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:52,168 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:52,169 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:52,860 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:52,863 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:52,863 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:52,863 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:54,170 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:54,173 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:54,173 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:54,174 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:54,860 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:54,862 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:54,862 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:54,863 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:56,172 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:56,174 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:56,175 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:56,175 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:56,860 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:56,862 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:56,863 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:56,863 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:58,164 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:58,166 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:58,166 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:58,167 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:42:58,860 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:42:58,862 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:42:58,862 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:42:58,863 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:42:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:00,179 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:00,181 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:00,181 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:00,182 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:00,869 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:00,873 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:00,873 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:00,873 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:02,175 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:02,177 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:02,178 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:02,178 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:02,860 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:02,862 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:02,863 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:02,863 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:04,170 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:04,173 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:04,174 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:04,174 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:04,861 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:04,863 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:04,863 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:04,864 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:06,177 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:06,180 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:06,180 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:06,180 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:06,859 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:06,861 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:06,862 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:06,862 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:08,162 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:08,164 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:08,165 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:08,165 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:08,860 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:08,862 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:08,863 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:08,863 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:10,176 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:10,179 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:10,179 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:10,180 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:10,861 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:10,863 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:10,863 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:10,863 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:12,171 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:12,174 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:12,175 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:12,175 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:12,862 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:12,864 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:12,865 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:12,865 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:14,171 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:14,174 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:14,174 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:14,174 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:14,861 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:14,864 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:14,864 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:14,864 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:16,020 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:16] "GET /api/strategies/notifications?limit=50&_t=1768232595705 HTTP/1.1" 200 - +2026-01-12 23:43:16,173 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:16,177 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:16,178 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:16,178 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:16,861 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:16,864 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:16,864 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:16,864 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:18,175 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:18,177 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:18,177 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:18,177 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:18,861 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:18,863 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:18,864 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:18,864 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:20,167 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:20,169 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:20,169 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:20,169 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:20,861 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:20,863 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:20,863 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:20,864 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:22,162 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:22,164 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:22,165 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:22,165 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:22,861 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:22,863 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:22,863 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:22,864 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:24,178 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:24,180 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:24,180 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:24,181 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:24,628 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=5m, limit=500 +2026-01-12 23:43:25,497 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (240505s) +2026-01-12 23:43:25,498 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:26,848 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=5m, limit=5 +2026-01-12 23:43:27,531 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=5m, limit=5 +2026-01-12 23:43:27,658 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (5m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:27,658 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:27,659 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:28,328 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (5m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:28,328 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:28,328 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:28,832 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=5m, limit=5 +2026-01-12 23:43:28,834 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (5m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:28,834 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:28,835 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:29,527 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=5m, limit=5 +2026-01-12 23:43:29,529 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (5m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:29,530 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:29,530 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:29,867 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=500 +2026-01-12 23:43:29,891 - app.data_sources.base - WARNING - Warning: AAPL data is delayed (240270s) +2026-01-12 23:43:29,893 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:30,930 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:30,932 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:30,933 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:30,933 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:32,245 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:32,247 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:32,248 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:32,248 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:32,923 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:32,926 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:32,926 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:32,926 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:34,236 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:34,238 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:34,239 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:34,239 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:34,932 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:34,935 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:34,935 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:34,936 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:36,234 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:36,236 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:36,236 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:36,237 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:36,919 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:36,921 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:36,922 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:36,922 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:38,234 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:38,236 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:38,237 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:38,237 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:38,929 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:38,931 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:38,931 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:38,931 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:40,231 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:40,233 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:40,234 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:40,234 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:40,928 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:40,930 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:40,931 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:40,931 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:42,231 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:42,233 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:42,234 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:42,234 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:42,920 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:42,922 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:42,922 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:42,922 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:44,230 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:44,232 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:44,233 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:44,233 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:44,927 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:44,929 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:44,929 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:44,930 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:46,013 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:46] "GET /api/strategies/notifications?limit=50&_t=1768232625696 HTTP/1.1" 200 - +2026-01-12 23:43:46,228 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:46,230 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:46,230 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:46,230 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:46,922 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:46,925 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:46,925 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:46,926 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:48,233 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:48,235 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:48,235 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:48,235 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:48,497 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:48] "GET /api/strategies/notifications?limit=50&_t=1768232628293 HTTP/1.1" 200 - +2026-01-12 23:43:48,929 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:48,931 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:48,931 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:48,932 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:48,964 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:48] "GET /api/portfolio/positions?_t=1768232628339 HTTP/1.1" 200 - +2026-01-12 23:43:49,186 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:49] "GET /api/portfolio/summary?_t=1768232628339 HTTP/1.1" 200 - +2026-01-12 23:43:50,243 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:50,245 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:50,245 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:50,245 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:50,920 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:50,922 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:50,922 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:50,923 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:52,243 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:52,245 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:52,245 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:52,245 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:52,927 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:52,930 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:52,931 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:52,932 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:54,239 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:54,242 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:54,242 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:54,243 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:54,922 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:54,924 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:54,925 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:54,926 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:56,237 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:56,240 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:56,241 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:56,241 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:56,926 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:56,928 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:56,928 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:56,929 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:58,232 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:58,234 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:58,234 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:58,234 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:43:58,929 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:43:58,931 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:43:58,931 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:43:58,931 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:43:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:00,233 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:00,235 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:00,235 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:00,235 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:00,930 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:00,932 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:00,932 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:00,932 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:02,232 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:02,234 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:02,234 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:02,235 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:02,918 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:02,920 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:02,920 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:02,921 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:04,237 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:04,239 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:04,239 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:04,240 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:04,920 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:04,922 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:04,923 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:04,923 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:06,236 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:06,238 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:06,238 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:06,239 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:06,921 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:06,923 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:06,924 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:06,924 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:08,234 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:08,236 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:08,236 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:08,236 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:08,919 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:08,922 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:08,922 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:08,923 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:10,229 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:10,231 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:10,231 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:10,231 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:10,928 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:10,930 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:10,930 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:10,931 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:12,239 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:12,241 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:12,242 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:12,242 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:12,924 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:12,926 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:12,927 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:12,927 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:14,237 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:14,239 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:14,239 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:14,240 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:14,922 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:14,926 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:14,926 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:14,926 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:16,030 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:16] "GET /api/strategies/notifications?limit=50&_t=1768232655704 HTTP/1.1" 200 - +2026-01-12 23:44:16,227 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:16,229 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:16,229 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:16,230 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:16,922 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:16,925 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:16,926 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:16,926 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:18,227 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:18,230 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:18,230 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:18,230 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:18,922 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:18,928 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:18,929 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:18,929 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:20,234 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:20,236 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:20,236 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:20,236 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:20,931 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:20,933 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:20,933 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:20,933 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:22,245 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:22,247 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:22,247 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:22,247 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:22,935 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:22,938 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:22,939 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:22,939 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:24,240 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:24,243 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:24,243 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:24,243 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:24,920 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:24,922 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:24,923 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:24,923 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:26,238 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:26,240 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:26,240 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:26,241 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:26,927 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:26,929 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:26,930 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:26,930 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:28,234 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:28,236 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:28,237 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:28,237 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:28,932 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:28,934 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:28,934 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:28,935 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:30,231 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:30,233 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:30,233 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:30,234 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:30,928 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:30,930 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:30,930 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:30,931 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:32,239 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:32,241 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:32,241 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:32,242 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:32,920 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:32,922 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:32,922 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:32,922 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:34,232 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:34,234 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:34,235 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:34,235 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:34,927 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:34,929 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:34,930 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:34,930 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:36,241 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:36,245 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:36,246 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:36,246 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:36,920 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:36,922 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:36,922 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:36,923 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:38,243 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:38,245 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:38,246 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:38,246 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:38,927 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:38,929 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:38,929 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:38,930 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:40,243 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:40,245 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:40,246 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:40,246 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:40,920 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:40,922 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:40,923 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:40,923 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:42,243 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:42,246 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:42,246 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:42,247 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:42,928 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:42,930 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:42,930 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:42,931 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:44,231 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:44,234 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:44,234 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:44,234 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:44,927 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:44,929 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:44,929 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:44,930 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:46,005 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:46] "GET /api/strategies/notifications?limit=50&_t=1768232685692 HTTP/1.1" 200 - +2026-01-12 23:44:46,240 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:46,244 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:46,244 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:46,245 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:46,922 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:46,924 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:46,924 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:46,925 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:48,239 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:48,242 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:48,242 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:48,243 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:48,506 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:48] "GET /api/strategies/notifications?limit=50&_t=1768232688282 HTTP/1.1" 200 - +2026-01-12 23:44:48,887 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:48] "GET /api/portfolio/positions?_t=1768232688332 HTTP/1.1" 200 - +2026-01-12 23:44:48,923 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:48,925 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:48,926 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:48,926 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:49,176 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:49] "GET /api/portfolio/summary?_t=1768232688332 HTTP/1.1" 200 - +2026-01-12 23:44:50,237 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:50,239 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:50,240 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:50,240 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:50,932 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:50,935 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:50,935 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:50,935 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:52,231 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:52,233 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:52,233 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:52,233 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:52,921 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:52,923 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:52,924 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:52,924 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:54,236 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:54,238 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:54,238 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:54,238 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:54,933 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:54,935 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:54,935 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:54,935 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:56,237 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:56,239 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:56,239 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:56,239 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:56,921 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:56,923 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:56,924 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:56,924 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:58,233 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:58,235 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:58,236 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:58,236 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:44:58,932 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:44:58,934 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:44:58,934 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:44:58,934 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:44:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:00,233 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:00,236 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:00,236 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:00,236 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:00,933 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:00,935 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:00,935 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:00,935 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:02,240 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:02,242 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:02,242 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:02,243 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:02,923 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:02,925 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:02,926 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:02,927 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:04,231 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:04,233 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:04,233 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:04,234 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:04,930 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:04,932 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:04,932 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:04,933 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:06,238 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:06,240 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:06,241 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:06,241 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:06,924 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:06,927 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:06,928 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:06,928 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:08,237 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:08,239 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:08,239 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:08,239 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:08,928 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:08,931 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:08,932 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:08,933 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:10,243 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:10,246 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:10,246 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:10,246 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:10,921 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:10,923 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:10,924 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:10,924 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:12,233 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:12,235 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:12,235 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:12,235 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:12,934 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:12,936 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:12,936 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:12,937 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:14,224 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:14,227 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:14,227 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:14,228 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:14,936 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:14,938 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:14,938 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:14,939 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:16,004 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:16] "GET /api/strategies/notifications?limit=50&_t=1768232715693 HTTP/1.1" 200 - +2026-01-12 23:45:16,234 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:16,236 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:16,236 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:16,236 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:16,933 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:16,935 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:16,935 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:16,936 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:18,236 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:18,238 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:18,239 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:18,239 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:18,933 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:18,935 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:18,936 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:18,936 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:20,230 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:20,233 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:20,233 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:20,234 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:20,920 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:20,922 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:20,923 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:20,923 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:22,240 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:22,242 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:22,242 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:22,242 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:22,921 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:22,923 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:22,923 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:22,924 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:24,229 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:24,231 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:24,232 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:24,232 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:24,932 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:24,934 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:24,934 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:24,935 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:26,230 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:26,232 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:26,232 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:26,233 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:26,926 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:26,929 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:26,929 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:26,930 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:28,232 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:28,234 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:28,234 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:28,235 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:28,932 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:28,934 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:28,935 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:28,935 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:30,232 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:30,234 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:30,234 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:30,235 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:30,924 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:30,927 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:30,927 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:30,928 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:32,236 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:32,238 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:32,238 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:32,239 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:32,920 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:32,923 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:32,923 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:32,923 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:34,231 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:34,233 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:34,233 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:34,233 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:34,932 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:34,935 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:34,936 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:34,936 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:36,235 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:36,237 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:36,237 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:36,238 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:36,933 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:36,936 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:36,936 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:36,936 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:38,238 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:38,240 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:38,241 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:38,241 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:38,932 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:38,934 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:38,935 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:38,935 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:40,230 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:40,232 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:40,233 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:40,233 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:40,933 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:40,935 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:40,935 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:40,936 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:42,233 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:42,235 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:42,235 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:42,236 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:42,932 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:42,934 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:42,934 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:42,934 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:44,237 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:44,239 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:44,239 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:44,239 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:44,921 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:44,923 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:44,923 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:44,924 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:46,008 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:46] "GET /api/strategies/notifications?limit=50&_t=1768232745692 HTTP/1.1" 200 - +2026-01-12 23:45:46,240 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:46,242 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:46,242 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:46,243 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:46,921 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:46,923 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:46,923 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:46,923 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:48,241 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:48,243 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:48,243 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:48,244 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:48,507 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:48] "GET /api/strategies/notifications?limit=50&_t=1768232748285 HTTP/1.1" 200 - +2026-01-12 23:45:48,919 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:48,921 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:48,922 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:48,922 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:48,987 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:48] "GET /api/portfolio/positions?_t=1768232748324 HTTP/1.1" 200 - +2026-01-12 23:45:49,325 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:49] "GET /api/portfolio/summary?_t=1768232748324 HTTP/1.1" 200 - +2026-01-12 23:45:50,240 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:50,242 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:50,242 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:50,242 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:50,924 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:50,926 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:50,927 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:50,927 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:52,239 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:52,241 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:52,241 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:52,242 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:52,933 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:52,935 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:52,936 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:52,936 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:54,235 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:54,238 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:54,238 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:54,238 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:54,919 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:54,921 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:54,921 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:54,922 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:56,234 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:56,236 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:56,236 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:56,236 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:56,935 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:56,937 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:56,937 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:56,937 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:58,238 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:58,240 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:58,240 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:58,240 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:45:58,925 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:45:58,928 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:45:58,928 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:45:58,929 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:45:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:00,235 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:00,237 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:00,237 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:00,237 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:00,935 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:00,937 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:00,937 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:00,937 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:02,234 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:02,236 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:02,236 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:02,236 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:02,927 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:02,931 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:02,931 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:02,932 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:04,237 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:04,239 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:04,240 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:04,240 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:04,919 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:04,921 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:04,921 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:04,922 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:06,235 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:06,237 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:06,237 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:06,237 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:06,930 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:06,932 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:06,932 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:06,933 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:08,233 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:08,235 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:08,235 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:08,236 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:08,932 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:08,935 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:08,935 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:08,935 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:10,235 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:10,238 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:10,239 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:10,239 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:10,930 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:10,932 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:10,932 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:10,933 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:12,233 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:12,235 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:12,235 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:12,236 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:12,928 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:12,931 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:12,932 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:12,932 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:14,241 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:14,243 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:14,244 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:14,244 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:14,928 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:14,931 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:14,931 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:14,932 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:16,010 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:16] "GET /api/strategies/notifications?limit=50&_t=1768232775695 HTTP/1.1" 200 - +2026-01-12 23:46:16,239 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:16,241 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:16,241 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:16,241 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:16,920 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:16,922 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:16,922 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:16,922 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:18,242 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:18,244 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:18,244 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:18,245 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:18,925 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:18,927 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:18,927 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:18,927 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:20,238 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:20,240 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:20,241 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:20,241 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:20,920 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:20,922 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:20,923 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:20,923 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:22,233 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:22,235 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:22,236 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:22,236 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:22,920 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:22,922 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:22,923 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:22,923 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:24,239 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:24,242 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:24,242 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:24,243 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:24,921 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:24,923 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:24,923 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:24,924 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:26,235 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:26,237 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:26,238 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:26,238 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:26,932 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:26,934 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:26,935 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:26,935 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:28,235 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:28,237 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:28,238 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:28,238 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:28,929 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:28,932 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:28,932 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:28,932 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:30,238 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:30,240 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:30,241 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:30,241 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:30,922 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:30,924 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:30,925 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:30,925 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:32,237 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:32,239 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:32,239 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:32,239 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:32,920 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:32,922 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:32,922 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:32,922 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:34,236 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:34,238 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:34,238 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:34,239 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:34,931 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:34,933 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:34,934 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:34,934 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:36,238 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:36,240 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:36,241 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:36,241 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:36,922 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:36,924 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:36,924 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:36,924 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:38,235 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:38,237 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:38,238 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:38,238 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:38,933 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:38,935 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:38,935 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:38,935 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:40,237 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:40,239 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:40,239 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:40,239 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:40,929 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:40,932 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:40,932 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:40,933 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:42,228 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:42,231 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:42,232 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:42,232 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:42,927 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:42,929 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:42,929 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:42,930 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:44,234 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:44,236 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:44,236 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:44,236 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:44,937 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:44,939 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:44,940 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:44,940 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:46,010 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:46] "GET /api/strategies/notifications?limit=50&_t=1768232805694 HTTP/1.1" 200 - +2026-01-12 23:46:46,242 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:46,244 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:46,244 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:46,245 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:46,924 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:46,926 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:46,926 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:46,926 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:48,237 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:48,239 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:48,239 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:48,239 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:48,487 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:48] "GET /api/strategies/notifications?limit=50&_t=1768232808281 HTTP/1.1" 200 - +2026-01-12 23:46:48,926 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:48] "GET /api/portfolio/positions?_t=1768232808313 HTTP/1.1" 200 - +2026-01-12 23:46:48,931 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:48,933 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:48,934 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:48,934 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:49,205 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:49] "GET /api/portfolio/summary?_t=1768232808313 HTTP/1.1" 200 - +2026-01-12 23:46:50,227 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:50,230 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:50,230 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:50,231 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:50,925 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:50,926 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:50,927 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:50,927 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:52,241 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:52,243 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:52,243 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:52,244 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:52,920 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:52,922 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:52,923 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:52,923 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:54,227 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:54,229 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:54,230 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:54,230 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:54,922 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:54,924 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:54,924 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:54,924 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:56,233 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:56,235 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:56,235 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:56,235 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:56,920 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:56,922 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:56,922 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:56,922 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:58,239 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:58,241 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:58,242 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:58,242 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:46:58,927 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:46:58,930 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:46:58,930 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:46:58,930 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:46:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:00,228 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:00,230 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:00,231 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:00,231 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:00,919 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:00,921 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:00,921 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:00,922 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:02,234 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:02,236 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:02,237 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:02,237 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:02,921 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:02,923 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:02,924 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:02,924 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:04,225 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:04,227 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:04,228 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:04,228 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:04,919 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:04,921 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:04,922 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:04,922 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:06,224 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:06,226 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:06,227 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:06,227 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:06,919 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:06,921 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:06,921 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:06,922 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:08,226 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:08,228 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:08,228 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:08,229 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:08,919 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:08,921 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:08,922 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:08,922 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:10,224 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:10,226 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:10,226 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:10,226 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:10,920 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:10,922 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:10,922 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:10,923 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:12,223 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:12,225 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:12,225 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:12,225 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:12,919 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:12,922 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:12,922 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:12,922 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:14,233 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:14,235 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:14,236 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:14,236 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:14,920 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:14,922 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:14,922 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:14,922 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:16,021 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:16] "GET /api/strategies/notifications?limit=50&_t=1768232835697 HTTP/1.1" 200 - +2026-01-12 23:47:16,223 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:16,225 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:16,225 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:16,225 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:16,920 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:16,922 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:16,922 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:16,923 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:18,224 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:18,226 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:18,226 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:18,227 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:18,919 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:18,921 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:18,922 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:18,922 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:20,223 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:20,225 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:20,226 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:20,226 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:20,920 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:20,922 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:20,922 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:20,923 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:22,223 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:22,225 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:22,226 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:22,226 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:22,921 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:22,923 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:22,923 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:22,924 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:24,223 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:24,225 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:24,225 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:24,226 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:24,920 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:24,922 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:24,922 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:24,923 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:26,226 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:26,228 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:26,228 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:26,229 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:26,921 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:26,923 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:26,923 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:26,923 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:28,234 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:28,237 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:28,237 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:28,237 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:28,920 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:28,922 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:28,923 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:28,923 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:30,233 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:30,235 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:30,236 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:30,236 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:30,920 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:30,922 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:30,922 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:30,923 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:32,222 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:32,224 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:32,224 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:32,225 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:32,924 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:32,926 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:32,926 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:32,926 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:34,237 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:34,239 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:34,240 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:34,240 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:34,921 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:34,923 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:34,923 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:34,924 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:36,236 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:36,238 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:36,239 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:36,239 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:36,920 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:36,922 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:36,922 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:36,922 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:38,236 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:38,238 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:38,239 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:38,239 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:38,920 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:38,922 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:38,922 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:38,923 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:40,230 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:40,233 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:40,233 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:40,234 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:40,920 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:40,922 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:40,923 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:40,923 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:42,231 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:42,234 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:42,234 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:42,234 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:42,920 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:42,922 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:42,922 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:42,923 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:44,226 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:44,228 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:44,228 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:44,229 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:44,920 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:44,922 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:44,922 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:44,922 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:46,017 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:46] "GET /api/strategies/notifications?limit=50&_t=1768232865698 HTTP/1.1" 200 - +2026-01-12 23:47:46,230 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:46,232 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:46,233 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:46,233 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:46,921 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:46,923 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:46,923 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:46,923 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:48,237 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:48,239 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:48,239 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:48,239 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:48,487 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:48] "GET /api/strategies/notifications?limit=50&_t=1768232868294 HTTP/1.1" 200 - +2026-01-12 23:47:48,922 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:48,924 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:48,924 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:48,925 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:49,100 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:49] "GET /api/portfolio/positions?_t=1768232868335 HTTP/1.1" 200 - +2026-01-12 23:47:49,315 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:49] "GET /api/portfolio/summary?_t=1768232868336 HTTP/1.1" 200 - +2026-01-12 23:47:50,223 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:50,225 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:50,226 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:50,226 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:50,920 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:50,922 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:50,923 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:50,923 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:52,229 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:52,232 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:52,232 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:52,233 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:52,921 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:52,923 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:52,924 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:52,924 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:54,236 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:54,238 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:54,238 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:54,238 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:54,920 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:54,922 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:54,923 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:54,923 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:56,226 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:56,228 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:56,228 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:56,228 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:56,920 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:56,922 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:56,923 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:56,923 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:58,223 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:58,224 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:58,225 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:58,225 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:47:58,921 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:47:58,923 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:47:58,924 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:47:58,924 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:47:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:00,225 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:00,227 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:00,228 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:00,228 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:00,923 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:00,925 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:00,925 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:00,925 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:02,238 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:02,240 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:02,240 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:02,241 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:02,921 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:02,923 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:02,924 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:02,924 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:04,237 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:04,240 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:04,240 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:04,241 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:04,921 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:04,923 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:04,923 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:04,924 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:06,228 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:06,230 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:06,230 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:06,230 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:06,923 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:06,925 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:06,925 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:06,926 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:08,230 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:08,232 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:08,233 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:08,233 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:08,922 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:08,924 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:08,924 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:08,924 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:10,238 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:10,240 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:10,241 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:10,241 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:10,922 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:10,924 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:10,924 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:10,924 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:12,229 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:12,230 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:12,231 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:12,231 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:12,922 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:12,924 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:12,924 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:12,925 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:14,239 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:14,241 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:14,241 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:14,241 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:14,920 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:14,922 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:14,922 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:14,922 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:16,014 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:16] "GET /api/strategies/notifications?limit=50&_t=1768232895698 HTTP/1.1" 200 - +2026-01-12 23:48:16,233 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:16,236 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:16,236 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:16,237 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:16,921 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:16,923 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:16,923 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:16,924 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:18,230 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:18,232 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:18,232 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:18,233 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:18,922 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:18,924 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:18,924 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:18,924 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:20,237 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:20,239 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:20,239 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:20,239 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:20,922 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:20,924 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:20,924 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:20,924 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:22,229 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:22,231 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:22,231 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:22,232 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:22,922 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:22,924 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:22,924 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:22,924 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:24,227 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:24,229 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:24,230 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:24,230 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:24,922 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:24,923 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:24,924 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:24,924 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:26,238 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:26,239 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:26,240 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:26,240 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:26,922 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:26,924 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:26,924 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:26,925 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:28,229 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:28,231 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:28,232 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:28,232 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:28,923 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:28,925 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:28,925 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:28,925 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:30,235 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:30,238 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:30,238 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:30,238 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:30,923 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:30,925 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:30,925 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:30,926 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:32,236 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:32,239 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:32,239 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:32,239 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:32,923 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:32,925 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:32,925 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:32,925 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:34,237 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:34,239 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:34,239 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:34,240 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:34,922 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:34,924 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:34,924 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:34,925 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:36,230 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:36,232 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:36,232 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:36,232 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:36,922 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:36,924 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:36,924 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:36,925 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:38,239 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:38,241 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:38,242 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:38,242 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:38,922 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:38,924 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:38,925 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:38,925 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:40,226 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:40,228 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:40,228 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:40,228 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:40,923 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:40,925 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:40,925 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:40,926 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:42,240 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:42,242 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:42,243 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:42,243 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:42,923 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:42,926 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:42,926 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:42,926 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:44,233 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:44,235 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:44,236 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:44,236 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:44,920 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:44,922 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:44,923 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:44,923 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:46,015 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:46] "GET /api/strategies/notifications?limit=50&_t=1768232925700 HTTP/1.1" 200 - +2026-01-12 23:48:46,230 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:46,232 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:46,233 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:46,233 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:46,923 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:46,925 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:46,925 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:46,925 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:48,225 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:48,227 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:48,228 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:48,228 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:48,492 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:48] "GET /api/strategies/notifications?limit=50&_t=1768232928284 HTTP/1.1" 200 - +2026-01-12 23:48:48,922 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:48,924 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:48,925 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:48,925 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:49,062 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:49] "GET /api/portfolio/positions?_t=1768232928319 HTTP/1.1" 200 - +2026-01-12 23:48:49,315 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:49] "GET /api/portfolio/summary?_t=1768232928319 HTTP/1.1" 200 - +2026-01-12 23:48:50,237 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:50,240 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:50,240 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:50,240 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:50,924 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:50,926 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:50,926 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:50,926 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:52,232 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:52,234 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:52,234 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:52,235 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:52,924 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:52,926 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:52,926 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:52,927 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:54,234 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:54,237 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:54,237 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:54,237 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:54,924 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:54,926 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:54,927 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:54,927 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:56,236 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:56,238 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:56,238 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:56,238 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:56,921 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:56,923 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:56,923 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:56,924 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:58,224 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:58,226 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:58,227 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:58,227 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:48:58,923 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:48:58,925 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:48:58,925 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:48:58,926 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:48:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:00,225 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:00,228 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:00,229 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:00,229 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:00,924 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:00,926 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:00,927 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:00,927 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:02,230 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:02,232 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:02,232 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:02,232 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:02,923 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:02,925 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:02,925 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:02,926 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:04,227 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:04,230 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:04,230 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:04,230 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:04,923 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:04,925 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:04,925 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:04,926 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:06,226 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:06,228 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:06,229 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:06,229 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:06,923 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:06,925 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:06,925 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:06,926 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:08,239 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:08,241 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:08,241 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:08,242 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:08,923 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:08,925 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:08,925 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:08,925 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:10,229 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:10,231 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:10,231 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:10,232 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:10,923 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:10,926 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:10,926 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:10,926 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:12,281 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:12,284 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:12,284 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:12,285 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:12,922 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:12,924 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:12,924 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:12,924 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:14,237 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:14,239 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:14,240 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:14,240 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:14,924 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:14,926 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:14,926 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:14,926 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:16,012 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:16] "GET /api/strategies/notifications?limit=50&_t=1768232955695 HTTP/1.1" 200 - +2026-01-12 23:49:16,225 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:16,227 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:16,228 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:16,228 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:16,923 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:16,925 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:16,925 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:16,926 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:18,224 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:18,226 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:18,226 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:18,226 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:18,925 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:18,927 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:18,927 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:18,927 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:20,239 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:20,241 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:20,242 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:20,242 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:20,924 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:20,926 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:20,926 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:20,926 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:22,226 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:22,228 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:22,228 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:22,229 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:22,924 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:22,926 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:22,926 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:22,927 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:24,233 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:24,236 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:24,236 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:24,237 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:24,925 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:24,927 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:24,927 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:24,927 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:26,235 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:26,238 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:26,238 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:26,239 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:26,922 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:26,924 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:26,924 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:26,925 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:28,241 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:28,242 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:28,243 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:28,243 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:28,921 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:28,923 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:28,923 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:28,923 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:30,228 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:30,230 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:30,231 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:30,231 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:30,926 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:30,928 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:30,928 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:30,929 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:32,242 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:32,246 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:32,247 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:32,247 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:32,925 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:32,928 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:32,928 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:32,929 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:34,234 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:34,237 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:34,237 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:34,238 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:34,925 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:34,928 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:34,928 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:34,928 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:36,232 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:36,234 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:36,234 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:36,235 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:36,929 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:36,931 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:36,931 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:36,931 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:38,232 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:38,234 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:38,235 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:38,236 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:38,924 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:38,926 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:38,927 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:38,927 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:40,227 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:40,230 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:40,230 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:40,230 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:40,925 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:40,927 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:40,927 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:40,928 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:42,225 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:42,227 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:42,228 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:42,228 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:42,926 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:42,929 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:42,930 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:42,930 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:44,239 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:44,241 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:44,242 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:44,242 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:44,924 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:44,926 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:44,927 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:44,927 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:46,011 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:46] "GET /api/strategies/notifications?limit=50&_t=1768232985698 HTTP/1.1" 200 - +2026-01-12 23:49:46,240 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:46,241 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:46,242 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:46,242 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:46,921 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:46,923 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:46,923 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:46,923 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:48,239 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:48,241 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:48,242 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:48,242 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:48,503 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:48] "GET /api/strategies/notifications?limit=50&_t=1768232988280 HTTP/1.1" 200 - +2026-01-12 23:49:48,925 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:48,929 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:48,929 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:48,930 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:48,961 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:48] "GET /api/portfolio/positions?_t=1768232988309 HTTP/1.1" 200 - +2026-01-12 23:49:49,249 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:49] "GET /api/portfolio/summary?_t=1768232988309 HTTP/1.1" 200 - +2026-01-12 23:49:50,240 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:50,242 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:50,243 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:50,243 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:50,920 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:50,923 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:50,923 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:50,923 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:52,236 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:52,239 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:52,239 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:52,239 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:52,920 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:52,922 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:52,923 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:52,923 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:54,240 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:54,242 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:54,242 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:54,243 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:54,930 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:54,936 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:54,937 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:54,939 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:56,237 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:56,240 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:56,240 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:56,240 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:56,924 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:56,926 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:56,926 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:56,927 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:58,242 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:58,243 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:58,244 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:58,244 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:49:58,925 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:49:58,927 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:49:58,928 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:49:58,928 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:49:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:00,228 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:00,230 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:00,230 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:00,230 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:00,926 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:00,928 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:00,928 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:00,929 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:02,244 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:02,246 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:02,246 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:02,246 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:02,927 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:02,929 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:02,930 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:02,930 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:04,235 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:04,238 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:04,238 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:04,239 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:04,922 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:04,924 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:04,924 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:04,925 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:06,237 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:06,240 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:06,240 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:06,240 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:06,921 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:06,923 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:06,924 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:06,924 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:08,234 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:08,237 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:08,238 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:08,238 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:08,926 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:08,929 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:08,929 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:08,929 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:10,240 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:10,243 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:10,243 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:10,243 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:10,922 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:10,924 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:10,924 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:10,925 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:12,236 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:12,239 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:12,240 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:12,240 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:12,926 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:12,928 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:12,928 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:12,929 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:14,234 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:14,236 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:14,237 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:14,237 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:14,927 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:14,929 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:14,929 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:14,929 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:16,011 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:16] "GET /api/strategies/notifications?limit=50&_t=1768233015694 HTTP/1.1" 200 - +2026-01-12 23:50:16,241 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:16,244 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:16,244 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:16,245 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:16,927 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:16,930 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:16,930 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:16,930 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:18,230 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:18,232 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:18,232 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:18,232 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:18,923 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:18,925 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:18,925 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:18,926 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:20,235 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:20,238 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:20,239 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:20,239 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:20,926 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:20,928 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:20,928 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:20,929 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:22,238 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:22,241 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:22,241 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:22,241 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:22,922 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:22,924 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:22,925 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:22,925 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:24,241 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:24,243 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:24,243 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:24,243 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:24,919 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:24,922 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:24,922 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:24,923 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:26,242 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:26,244 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:26,244 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:26,245 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:26,927 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:26,929 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:26,929 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:26,929 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:28,231 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:28,233 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:28,233 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:28,234 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:28,927 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:28,929 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:28,929 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:28,929 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:30,230 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:30,232 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:30,232 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:30,232 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:30,927 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:30,929 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:30,929 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:30,930 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:32,229 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:32,231 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:32,231 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:32,231 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:32,927 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:32,929 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:32,930 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:32,930 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:34,237 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:34,240 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:34,240 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:34,240 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:34,921 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:34,924 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:34,924 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:34,924 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:36,228 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:36,230 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:36,230 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:36,230 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:36,921 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:36,924 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:36,924 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:36,925 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:38,237 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:38,240 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:38,240 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:38,241 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:38,928 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:38,930 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:38,930 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:38,930 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:40,240 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:40,242 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:40,242 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:40,242 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:40,924 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:40,926 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:40,926 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:40,927 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:42,243 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:42,245 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:42,245 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:42,246 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:42,926 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:42,928 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:42,929 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:42,929 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:44,236 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:44,238 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:44,239 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:44,240 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:44,929 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:44,931 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:44,931 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:44,932 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:46,015 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:46] "GET /api/strategies/notifications?limit=50&_t=1768233045700 HTTP/1.1" 200 - +2026-01-12 23:50:46,230 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:46,232 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:46,232 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:46,232 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:46,927 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:46,929 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:46,930 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:46,930 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:48,234 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:48,236 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:48,236 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:48,237 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:48,502 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:48] "GET /api/strategies/notifications?limit=50&_t=1768233048294 HTTP/1.1" 200 - +2026-01-12 23:50:48,920 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:48,923 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:48,924 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:48,924 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:49,019 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:49] "GET /api/portfolio/positions?_t=1768233048325 HTTP/1.1" 200 - +2026-01-12 23:50:49,340 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:49] "GET /api/portfolio/summary?_t=1768233048325 HTTP/1.1" 200 - +2026-01-12 23:50:50,233 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:50,235 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:50,235 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:50,236 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:50,928 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:50,930 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:50,930 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:50,931 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:52,235 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:52,238 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:52,238 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:52,239 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:52,923 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:52,925 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:52,925 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:52,926 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:54,231 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:54,233 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:54,233 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:54,233 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:54,927 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:54,930 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:54,930 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:54,930 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:56,241 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:56,243 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:56,243 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:56,243 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:56,926 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:56,928 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:56,928 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:56,928 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:58,236 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:58,238 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:58,239 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:58,240 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:50:58,923 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:50:58,925 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:50:58,925 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:50:58,926 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:50:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:00,233 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:00,235 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:00,236 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:00,236 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:00,928 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:00,931 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:00,931 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:00,931 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:02,237 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:02,240 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:02,240 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:02,241 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:02,924 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:02,926 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:02,926 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:02,927 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:04,240 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:04,242 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:04,243 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:04,243 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:04,925 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:04,927 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:04,927 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:04,927 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:06,232 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:06,234 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:06,235 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:06,235 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:06,928 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:06,930 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:06,931 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:06,931 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:08,238 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:08,241 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:08,241 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:08,242 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:08,920 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:08,922 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:08,923 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:08,923 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:10,241 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:10,244 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:10,244 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:10,244 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:10,927 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:10,929 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:10,929 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:10,930 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:12,238 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:12,241 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:12,241 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:12,242 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:12,928 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:12,930 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:12,930 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:12,931 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:14,239 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:14,242 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:14,242 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:14,242 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:14,922 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:14,925 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:14,925 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:14,926 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:16,008 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:16] "GET /api/strategies/notifications?limit=50&_t=1768233075693 HTTP/1.1" 200 - +2026-01-12 23:51:16,236 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:16,239 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:16,239 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:16,239 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:16,929 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:16,931 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:16,932 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:16,932 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:18,235 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:18,237 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:18,238 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:18,238 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:18,919 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:18,921 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:18,921 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:18,922 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:20,238 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:20,241 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:20,242 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:20,242 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:20,928 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:20,930 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:20,930 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:20,930 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:22,232 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:22,235 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:22,235 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:22,235 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:22,928 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:22,930 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:22,931 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:22,931 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:24,237 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:24,240 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:24,241 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:24,241 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:24,929 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:24,931 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:24,931 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:24,931 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:26,232 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:26,234 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:26,234 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:26,234 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:26,929 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:26,931 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:26,931 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:26,932 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:28,240 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:28,243 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:28,244 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:28,244 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:28,927 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:28,929 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:28,929 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:28,930 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:30,229 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:30,232 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:30,232 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:30,232 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:30,925 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:30,927 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:30,928 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:30,928 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:32,242 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:32,244 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:32,244 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:32,245 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:32,929 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:32,931 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:32,932 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:32,932 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:34,229 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:34,231 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:34,232 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:34,232 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:34,927 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:34,929 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:34,930 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:34,930 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:36,235 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:36,237 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:36,237 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:36,238 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:36,929 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:36,931 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:36,931 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:36,932 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:38,232 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:38,235 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:38,235 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:38,235 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:38,926 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:38,928 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:38,928 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:38,928 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:40,234 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:40,236 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:40,237 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:40,237 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:40,922 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:40,924 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:40,925 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:40,925 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:42,228 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:42,230 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:42,230 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:42,231 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:42,926 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:42,928 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:42,928 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:42,929 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:44,238 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:44,242 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:44,243 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:44,243 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:44,920 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:44,922 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:44,923 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:44,923 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:46,015 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:46] "GET /api/strategies/notifications?limit=50&_t=1768233105696 HTTP/1.1" 200 - +2026-01-12 23:51:46,228 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:46,230 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:46,230 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:46,231 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:46,922 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:46,925 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:46,925 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:46,926 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:48,230 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:48,232 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:48,233 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:48,233 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:48,496 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:48] "GET /api/strategies/notifications?limit=50&_t=1768233108290 HTTP/1.1" 200 - +2026-01-12 23:51:48,927 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:48,929 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:48,929 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:48,929 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:48,991 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:48] "GET /api/portfolio/positions?_t=1768233108321 HTTP/1.1" 200 - +2026-01-12 23:51:49,311 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:49] "GET /api/portfolio/summary?_t=1768233108321 HTTP/1.1" 200 - +2026-01-12 23:51:50,225 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:50,227 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:50,227 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:50,228 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:50,920 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:50,922 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:50,923 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:50,923 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:52,232 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:52,234 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:52,234 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:52,235 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:52,930 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:52,932 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:52,932 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:52,932 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:54,230 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:54,232 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:54,232 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:54,232 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:54,931 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:54,933 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:54,934 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:54,934 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:56,242 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:56,245 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:56,245 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:56,246 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:56,924 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:56,926 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:56,927 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:56,927 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:58,236 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:58,237 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:58,238 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:58,238 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:51:58,931 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:51:58,933 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:51:58,933 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:51:58,934 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:51:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:00,228 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:52:00,230 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:52:00,230 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:52:00,231 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:00,932 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:52:00,933 - yfinance - ERROR - $AAPL: possibly delisted; no price data found (1m 2026-01-10 -> 2026-01-12) +2026-01-12 23:52:00,934 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-12 23:52:00,934 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:04,243 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-12 23:52:04,243 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-12 23:52:04,244 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-12 23:52:04,244 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-12 23:52:04,256 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 23:52:04,276 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 23:52:04,611 - app.services.strategy - INFO - Found 0 running strategies: [] +2026-01-12 23:52:04,611 - app - INFO - No running strategies to restore. +2026-01-12 23:52:04,627 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-12 23:52:04,627 - werkzeug - INFO - Press CTRL+C to quit +2026-01-12 23:52:04,929 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:52:05,021 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 23:52:05,646 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:05,936 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:52:05,936 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:07,239 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:52:07,239 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:07,922 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:52:07,923 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:09,238 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:52:09,239 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:09,936 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:52:09,937 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:10,344 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=5m, limit=500 +2026-01-12 23:52:10,548 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:11,580 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=5m, limit=5 +2026-01-12 23:52:11,800 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:12,145 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=500 +2026-01-12 23:52:12,469 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:13,501 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:52:13,678 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:14,814 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:52:14,814 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:15,497 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:52:15,497 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:16,002 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:16] "GET /api/strategies/notifications?limit=50&_t=1768233135691 HTTP/1.1" 200 - +2026-01-12 23:52:16,498 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:52:16,499 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:17,587 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:17] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768233137262 HTTP/1.1" 200 - +2026-01-12 23:52:17,588 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:17] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768233137262 HTTP/1.1" 200 - +2026-01-12 23:52:17,589 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:17] "GET /api/dashboard/summary?_t=1768233137262 HTTP/1.1" 200 - +2026-01-12 23:52:19,247 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:19] "GET /api/user/info?_t=1768233139236 HTTP/1.1" 200 - +2026-01-12 23:52:19,560 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:19] "GET /api/market/config?_t=1768233139236 HTTP/1.1" 200 - +2026-01-12 23:52:19,561 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:19] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 23:52:19,563 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:19] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 23:52:19,902 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:19] "GET /api/market/types?_t=1768233139573 HTTP/1.1" 200 - +2026-01-12 23:52:19,912 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 23:52:19,912 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 23:52:22,984 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:22] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-12 23:52:23,201 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:23] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-12 23:52:26,368 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:26] "GET /api/market/types?_t=1768233146359 HTTP/1.1" 200 - +2026-01-12 23:52:26,685 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:26] "GET /api/user/info?_t=1768233146359 HTTP/1.1" 200 - +2026-01-12 23:52:26,688 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:26] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 23:52:26,704 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:26] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 23:52:27,006 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:27] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 23:52:27,007 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:27] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 23:52:27,018 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=500 +2026-01-12 23:52:27,342 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:28,684 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=5 +2026-01-12 23:52:28,860 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:29,267 - app.routes.kline - INFO - Requesting K-lines: AShare:300475, timeframe=1D, limit=500 +2026-01-12 23:52:29,886 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:31,253 - app.routes.kline - INFO - Requesting K-lines: AShare:300475, timeframe=1D, limit=5 +2026-01-12 23:52:31,801 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:31,950 - app.routes.kline - INFO - Requesting K-lines: AShare:300475, timeframe=1D, limit=5 +2026-01-12 23:52:31,950 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:32,474 - app.routes.kline - INFO - Requesting K-lines: AShare:300475, timeframe=1m, limit=500 +2026-01-12 23:52:33,079 - app.data_sources.base - WARNING - Warning: 300475 data is delayed (31953s) +2026-01-12 23:52:33,080 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:34,105 - app.routes.kline - INFO - Requesting K-lines: AShare:300475, timeframe=1m, limit=5 +2026-01-12 23:52:34,649 - app.data_sources.base - WARNING - Warning: 300475 data is delayed (31955s) +2026-01-12 23:52:34,649 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:35,423 - app.routes.kline - INFO - Requesting K-lines: AShare:300475, timeframe=1m, limit=5 +2026-01-12 23:52:35,424 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:36,115 - app.routes.kline - INFO - Requesting K-lines: AShare:300475, timeframe=1m, limit=5 +2026-01-12 23:52:36,115 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:37,422 - app.routes.kline - INFO - Requesting K-lines: AShare:300475, timeframe=1m, limit=5 +2026-01-12 23:52:37,423 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:38,106 - app.routes.kline - INFO - Requesting K-lines: AShare:300475, timeframe=1m, limit=5 +2026-01-12 23:52:38,106 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:39,419 - app.routes.kline - INFO - Requesting K-lines: AShare:300475, timeframe=1m, limit=5 +2026-01-12 23:52:39,419 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:40,104 - app.routes.kline - INFO - Requesting K-lines: AShare:300475, timeframe=1m, limit=5 +2026-01-12 23:52:40,650 - app.data_sources.base - WARNING - Warning: 300475 data is delayed (31961s) +2026-01-12 23:52:40,651 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:41,424 - app.routes.kline - INFO - Requesting K-lines: AShare:300475, timeframe=1m, limit=5 +2026-01-12 23:52:41,424 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:42,114 - app.routes.kline - INFO - Requesting K-lines: AShare:300475, timeframe=1m, limit=5 +2026-01-12 23:52:42,115 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:43,419 - app.routes.kline - INFO - Requesting K-lines: AShare:300475, timeframe=1m, limit=5 +2026-01-12 23:52:43,420 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:44,116 - app.routes.kline - INFO - Requesting K-lines: AShare:300475, timeframe=1m, limit=5 +2026-01-12 23:52:44,116 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:45,415 - app.routes.kline - INFO - Requesting K-lines: AShare:300475, timeframe=1m, limit=5 +2026-01-12 23:52:45,415 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:45,701 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:45] "GET /api/strategies/notifications?limit=50&_t=1768233165693 HTTP/1.1" 200 - +2026-01-12 23:52:46,415 - app.routes.kline - INFO - Requesting K-lines: AShare:300475, timeframe=1m, limit=5 +2026-01-12 23:52:46,958 - app.data_sources.base - WARNING - Warning: 300475 data is delayed (31967s) +2026-01-12 23:52:46,959 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:47,106 - app.routes.kline - INFO - Requesting K-lines: AShare:300475, timeframe=1m, limit=5 +2026-01-12 23:52:47,106 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:48,424 - app.routes.kline - INFO - Requesting K-lines: AShare:300475, timeframe=1m, limit=5 +2026-01-12 23:52:48,424 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:48,598 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:48] "GET /api/strategies/notifications?limit=50&_t=1768233168281 HTTP/1.1" 200 - +2026-01-12 23:52:49,108 - app.routes.kline - INFO - Requesting K-lines: AShare:300475, timeframe=1m, limit=5 +2026-01-12 23:52:49,108 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:50,421 - app.routes.kline - INFO - Requesting K-lines: AShare:300475, timeframe=1m, limit=5 +2026-01-12 23:52:50,421 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:50,467 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:50] "GET /api/portfolio/summary?_t=1768233168318 HTTP/1.1" 200 - +2026-01-12 23:52:50,582 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:50] "GET /api/portfolio/positions?_t=1768233168318 HTTP/1.1" 200 - +2026-01-12 23:52:51,418 - app.routes.kline - INFO - Requesting K-lines: AShare:300475, timeframe=1m, limit=5 +2026-01-12 23:52:51,418 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:51,618 - app.routes.kline - INFO - Requesting K-lines: HShare:00700, timeframe=1m, limit=500 +2026-01-12 23:52:52,182 - app.data_sources.base - WARNING - Warning: 00700 data is delayed (28372s) +2026-01-12 23:52:52,184 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:53,214 - app.routes.kline - INFO - Requesting K-lines: HShare:00700, timeframe=1m, limit=5 +2026-01-12 23:52:53,777 - app.data_sources.base - WARNING - Warning: 00700 data is delayed (28374s) +2026-01-12 23:52:53,778 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:54,518 - app.routes.kline - INFO - Requesting K-lines: HShare:00700, timeframe=1m, limit=5 +2026-01-12 23:52:54,519 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:55,217 - app.routes.kline - INFO - Requesting K-lines: HShare:00700, timeframe=1m, limit=5 +2026-01-12 23:52:55,218 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:56,516 - app.routes.kline - INFO - Requesting K-lines: HShare:00700, timeframe=1m, limit=5 +2026-01-12 23:52:56,517 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:57,218 - app.routes.kline - INFO - Requesting K-lines: HShare:00700, timeframe=1m, limit=5 +2026-01-12 23:52:57,218 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:58,519 - app.routes.kline - INFO - Requesting K-lines: HShare:00700, timeframe=1m, limit=5 +2026-01-12 23:52:58,519 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:52:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:52:58,598 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=500 +2026-01-12 23:52:58,598 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:53:03,380 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:04,415 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:53:04,415 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:53:05,727 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:53:05,727 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:53:06,717 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:53:06,717 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:53:07,725 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:53:07,725 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:53:08,123 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:08,728 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:53:08,728 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:09,114 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:09,409 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:09,717 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:53:09,717 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:10,729 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:53:10,730 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:11,359 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:11,715 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:53:11,715 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:12,415 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:53:12,416 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:13,721 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:53:13,721 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:14,416 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:53:14,417 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:15,727 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:53:15,728 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:15,991 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:15] "GET /api/strategies/notifications?limit=50&_t=1768233195692 HTTP/1.1" 200 - +2026-01-12 23:53:16,408 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:53:16,408 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:53:17,725 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:53:17,726 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:53:18,724 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:53:18,724 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:53:19,718 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:53:19,718 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:53:20,167 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:20,725 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:53:20,725 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:21,437 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:21,721 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:53:21,722 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:22,725 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:53:22,725 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:23,730 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:53:23,730 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:24,108 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:24,723 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:53:24,723 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:25,728 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:53:25,728 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:26,414 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:53:26,414 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:26,771 - app.routes.kline - INFO - Requesting K-lines: Futures:SI, timeframe=1m, limit=500 +2026-01-12 23:53:27,292 - yfinance - ERROR - $SI=F: possibly delisted; no price data found (1m 2026-01-12 11:23:26.771547 -> 2026-01-13 23:53:26.771547) (Yahoo error = "Data doesn't exist for startDate = 1768235006, endDate = 1768366406") +2026-01-12 23:53:27,293 - app.data_sources.futures - WARNING - No data: SI=F +2026-01-12 23:53:27,293 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:29,729 - app.routes.kline - INFO - Requesting K-lines: Futures:SI, timeframe=5m, limit=500 +2026-01-12 23:53:29,743 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:29,915 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:31,260 - app.routes.kline - INFO - Requesting K-lines: Futures:SI, timeframe=5m, limit=5 +2026-01-12 23:53:31,943 - app.routes.kline - INFO - Requesting K-lines: Futures:SI, timeframe=5m, limit=5 +2026-01-12 23:53:31,967 - yfinance - ERROR - $SI=F: possibly delisted; no price data found (5m 2026-01-12 23:16:01.260550 -> 2026-01-13 23:53:31.260550) (Yahoo error = "Data doesn't exist for startDate = 1768277761, endDate = 1768366411") +2026-01-12 23:53:31,967 - app.data_sources.futures - WARNING - No data: SI=F +2026-01-12 23:53:31,968 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:33,167 - yfinance - ERROR - $SI=F: possibly delisted; no price data found (5m 2026-01-12 23:16:01.943376 -> 2026-01-13 23:53:31.943376) (Yahoo error = "Data doesn't exist for startDate = 1768277761, endDate = 1768366411") +2026-01-12 23:53:33,168 - app.data_sources.futures - WARNING - No data: SI=F +2026-01-12 23:53:33,168 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:33,253 - app.routes.kline - INFO - Requesting K-lines: Futures:SI, timeframe=5m, limit=5 +2026-01-12 23:53:34,259 - app.routes.kline - INFO - Requesting K-lines: Futures:SI, timeframe=5m, limit=5 +2026-01-12 23:53:34,324 - yfinance - ERROR - $SI=F: possibly delisted; no price data found (5m 2026-01-12 23:16:03.253431 -> 2026-01-13 23:53:33.253431) (Yahoo error = "Data doesn't exist for startDate = 1768277763, endDate = 1768366413") +2026-01-12 23:53:34,324 - app.data_sources.futures - WARNING - No data: SI=F +2026-01-12 23:53:34,325 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:34,949 - yfinance - ERROR - $SI=F: possibly delisted; no price data found (5m 2026-01-12 23:16:04.259269 -> 2026-01-13 23:53:34.259269) (Yahoo error = "Data doesn't exist for startDate = 1768277764, endDate = 1768366414") +2026-01-12 23:53:34,950 - app.data_sources.futures - WARNING - No data: SI=F +2026-01-12 23:53:34,950 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:35,249 - app.routes.kline - INFO - Requesting K-lines: Futures:SI, timeframe=5m, limit=5 +2026-01-12 23:53:36,254 - app.routes.kline - INFO - Requesting K-lines: Futures:SI, timeframe=5m, limit=5 +2026-01-12 23:53:36,263 - yfinance - ERROR - $SI=F: possibly delisted; no price data found (5m 2026-01-12 23:16:05.249688 -> 2026-01-13 23:53:35.249688) (Yahoo error = "Data doesn't exist for startDate = 1768277765, endDate = 1768366415") +2026-01-12 23:53:36,263 - app.data_sources.futures - WARNING - No data: SI=F +2026-01-12 23:53:36,264 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:36,318 - app.routes.kline - INFO - Requesting K-lines: Futures:SI, timeframe=1m, limit=500 +2026-01-12 23:53:36,768 - yfinance - ERROR - $SI=F: possibly delisted; no price data found (5m 2026-01-12 23:16:06.254910 -> 2026-01-13 23:53:36.254910) (Yahoo error = "Data doesn't exist for startDate = 1768277766, endDate = 1768366416") +2026-01-12 23:53:36,769 - app.data_sources.futures - WARNING - No data: SI=F +2026-01-12 23:53:36,769 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:36,843 - yfinance - ERROR - $SI=F: possibly delisted; no price data found (1m 2026-01-12 11:23:36.318891 -> 2026-01-13 23:53:36.318891) (Yahoo error = "Data doesn't exist for startDate = 1768235016, endDate = 1768366416") +2026-01-12 23:53:36,844 - app.data_sources.futures - WARNING - No data: SI=F +2026-01-12 23:53:36,845 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:38,359 - app.routes.kline - INFO - Requesting K-lines: Futures:SI, timeframe=5m, limit=500 +2026-01-12 23:53:38,361 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:39,384 - app.routes.kline - INFO - Requesting K-lines: Futures:SI, timeframe=5m, limit=5 +2026-01-12 23:53:40,386 - yfinance - ERROR - $SI=F: possibly delisted; no price data found (5m 2026-01-12 23:16:09.384683 -> 2026-01-13 23:53:39.384683) (Yahoo error = "Data doesn't exist for startDate = 1768277769, endDate = 1768366419") +2026-01-12 23:53:40,387 - app.data_sources.futures - WARNING - No data: SI=F +2026-01-12 23:53:40,387 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:40,688 - app.routes.kline - INFO - Requesting K-lines: Futures:SI, timeframe=5m, limit=5 +2026-01-12 23:53:41,239 - yfinance - ERROR - $SI=F: possibly delisted; no price data found (5m 2026-01-12 23:16:10.688447 -> 2026-01-13 23:53:40.688447) (Yahoo error = "Data doesn't exist for startDate = 1768277770, endDate = 1768366420") +2026-01-12 23:53:41,240 - app.data_sources.futures - WARNING - No data: SI=F +2026-01-12 23:53:41,240 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:41,683 - app.routes.kline - INFO - Requesting K-lines: Futures:SI, timeframe=5m, limit=5 +2026-01-12 23:53:42,375 - app.routes.kline - INFO - Requesting K-lines: Futures:SI, timeframe=5m, limit=5 +2026-01-12 23:53:42,456 - yfinance - ERROR - $SI=F: possibly delisted; no price data found (5m 2026-01-12 23:16:11.683592 -> 2026-01-13 23:53:41.683592) (Yahoo error = "Data doesn't exist for startDate = 1768277771, endDate = 1768366421") +2026-01-12 23:53:42,456 - app.data_sources.futures - WARNING - No data: SI=F +2026-01-12 23:53:42,457 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:42,915 - yfinance - ERROR - $SI=F: possibly delisted; no price data found (5m 2026-01-12 23:16:12.375827 -> 2026-01-13 23:53:42.375827) (Yahoo error = "Data doesn't exist for startDate = 1768277772, endDate = 1768366422") +2026-01-12 23:53:42,916 - app.data_sources.futures - WARNING - No data: SI=F +2026-01-12 23:53:42,916 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:43,687 - app.routes.kline - INFO - Requesting K-lines: Futures:SI, timeframe=5m, limit=5 +2026-01-12 23:53:44,384 - app.routes.kline - INFO - Requesting K-lines: Futures:SI, timeframe=5m, limit=5 +2026-01-12 23:53:44,670 - yfinance - ERROR - $SI=F: possibly delisted; no price data found (5m 2026-01-12 23:16:13.687527 -> 2026-01-13 23:53:43.687527) (Yahoo error = "Data doesn't exist for startDate = 1768277773, endDate = 1768366423") +2026-01-12 23:53:44,671 - app.data_sources.futures - WARNING - No data: SI=F +2026-01-12 23:53:44,671 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:45,403 - yfinance - ERROR - $SI=F: possibly delisted; no price data found (5m 2026-01-12 23:16:14.385190 -> 2026-01-13 23:53:44.385190) (Yahoo error = "Data doesn't exist for startDate = 1768277774, endDate = 1768366424") +2026-01-12 23:53:45,404 - app.data_sources.futures - WARNING - No data: SI=F +2026-01-12 23:53:45,404 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:45,684 - app.routes.kline - INFO - Requesting K-lines: Futures:SI, timeframe=5m, limit=5 +2026-01-12 23:53:46,012 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:46] "GET /api/strategies/notifications?limit=50&_t=1768233225695 HTTP/1.1" 200 - +2026-01-12 23:53:46,293 - yfinance - ERROR - $SI=F: possibly delisted; no price data found (5m 2026-01-12 23:16:15.685195 -> 2026-01-13 23:53:45.685195) (Yahoo error = "Data doesn't exist for startDate = 1768277775, endDate = 1768366425") +2026-01-12 23:53:46,294 - app.data_sources.futures - WARNING - No data: SI=F +2026-01-12 23:53:46,294 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:46,683 - app.routes.kline - INFO - Requesting K-lines: Futures:SI, timeframe=5m, limit=5 +2026-01-12 23:53:47,215 - yfinance - ERROR - $SI=F: possibly delisted; no price data found (5m 2026-01-12 23:16:16.684042 -> 2026-01-13 23:53:46.684042) (Yahoo error = "Data doesn't exist for startDate = 1768277776, endDate = 1768366426") +2026-01-12 23:53:47,216 - app.data_sources.futures - WARNING - No data: SI=F +2026-01-12 23:53:47,216 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:47,264 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=5m, limit=500 +2026-01-12 23:53:47,338 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:48,622 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:48] "GET /api/strategies/notifications?limit=50&_t=1768233228294 HTTP/1.1" 200 - +2026-01-12 23:53:48,684 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=5m, limit=5 +2026-01-12 23:53:49,032 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:49,304 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:49] "GET /api/portfolio/positions?_t=1768233228335 HTTP/1.1" 200 - +2026-01-12 23:53:49,373 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=5m, limit=5 +2026-01-12 23:53:49,374 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:49,716 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:49] "GET /api/portfolio/summary?_t=1768233228335 HTTP/1.1" 200 - +2026-01-12 23:53:50,682 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=5m, limit=5 +2026-01-12 23:53:50,683 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:51,368 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=5m, limit=5 +2026-01-12 23:53:51,368 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:52,672 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=5m, limit=5 +2026-01-12 23:53:52,673 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:53,368 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=5m, limit=5 +2026-01-12 23:53:53,368 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:54,660 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=500 +2026-01-12 23:53:54,773 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:55,801 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:53:55,867 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:57,115 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:53:57,115 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:57,799 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:53:57,799 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:59,110 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:53:59,110 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:53:59,801 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:53:59,801 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:53:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:01,104 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=5 +2026-01-12 23:54:01,172 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:01,377 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=500 +2026-01-12 23:54:01,377 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:54:03,248 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:04,284 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:54:04,284 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:54:05,595 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:54:05,595 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:54:06,584 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:54:06,584 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:54:07,333 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:07,586 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:54:07,587 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:08,188 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:08,549 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:08,591 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:54:08,592 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:09,596 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:54:09,596 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:10,286 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:54:10,287 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:11,582 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:54:11,583 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:12,282 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:54:12,283 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:13,587 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:54:13,587 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:54:14,285 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:54:14,285 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:54:15,586 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:54:15,586 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:54:16,007 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:16] "GET /api/strategies/notifications?limit=50&_t=1768233255696 HTTP/1.1" 200 - +2026-01-12 23:54:16,591 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:54:16,591 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:54:17,594 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:54:17,594 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:54:18,588 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:54:18,589 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:54:19,059 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:19,290 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:19,295 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:19,585 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:54:19,585 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:20,189 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:20,591 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:54:20,591 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:21,601 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:54:21,601 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:22,288 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:22,591 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:54:22,592 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:23,518 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:23,584 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:54:23,584 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:24,590 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:54:24,591 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:25,285 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:54:25,286 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:26,598 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:54:26,599 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:27,282 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:54:27,283 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:28,585 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:54:28,585 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:54:29,286 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:54:29,286 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:54:29,795 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=500 +2026-01-12 23:54:29,989 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:31,327 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:54:31,498 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:32,321 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:54:32,321 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:33,324 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:54:33,325 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:33,404 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:34,336 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:54:34,336 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:34,432 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:35,333 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:54:35,334 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:36,019 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:54:36,020 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:37,332 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:54:37,501 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:38,019 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:54:38,020 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:39,323 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:54:39,323 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:40,021 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:54:40,021 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:41,336 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:54:41,337 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:41] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:42,020 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:54:42,020 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:43,328 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:54:43,666 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:44,019 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:54:44,020 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:45,323 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:54:45,324 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:45,700 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:45] "GET /api/strategies/notifications?limit=50&_t=1768233285692 HTTP/1.1" 200 - +2026-01-12 23:54:46,336 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:54:46,337 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:47,019 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:54:47,019 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:48,323 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:54:48,323 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:48,584 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:48] "GET /api/strategies/notifications?limit=50&_t=1768233288282 HTTP/1.1" 200 - +2026-01-12 23:54:49,014 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:54:49,030 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:49] "GET /api/portfolio/positions?_t=1768233288317 HTTP/1.1" 200 - +2026-01-12 23:54:49,219 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:49,345 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:49] "GET /api/portfolio/summary?_t=1768233288317 HTTP/1.1" 200 - +2026-01-12 23:54:50,334 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:54:50,334 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:51,021 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:54:51,022 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:52,333 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:54:52,334 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:53,020 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:54:53,021 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:54,320 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:54:54,491 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:55,019 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:54:55,019 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:56,333 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:54:56,334 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:57,020 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:54:57,021 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:58,337 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:54:58,337 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:54:59,020 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:54:59,020 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:54:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:00,328 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:55:00,549 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:01,016 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:55:01,017 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:02,319 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:55:02,320 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:03,019 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:55:03,019 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:04,335 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:55:04,335 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:05,014 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:55:05,015 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:06,334 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:55:06,494 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:07,017 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:55:07,018 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:08,327 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:55:08,327 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:09,013 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:55:09,014 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:10,328 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-12 23:55:10,329 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:10,782 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=500 +2026-01-12 23:55:10,783 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:55:13,855 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:15,195 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:15,196 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:55:15,706 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:15] "GET /api/strategies/notifications?limit=50&_t=1768233315698 HTTP/1.1" 200 - +2026-01-12 23:55:16,189 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:16,190 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:55:17,198 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:17,198 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:55:18,205 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:18,205 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:55:19,189 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:19,189 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:55:19,764 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:20,113 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:20,200 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:20,201 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:20,693 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:21,195 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:21,196 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:21,929 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:22,202 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:22,203 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:23,204 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:23,204 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:24,195 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:24,195 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:24,222 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:25,201 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:25,202 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:25,888 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:25,888 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:27,193 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:27,194 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:27,887 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:27,888 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:29,190 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:29,191 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:29,887 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:29,887 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:55:31,196 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:31,196 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:55:32,202 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:32,203 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:55:32,828 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:33,018 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:33,204 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:33,205 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:34,194 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:34,195 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:35,202 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:35,202 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:36,202 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:36,203 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:37,191 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:37,192 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:37,346 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:38,196 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:38,197 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:38,889 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:38,889 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:40,203 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:40,203 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:40,888 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:40,888 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:42,195 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:42,196 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:42,888 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:42,888 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:55:44,197 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:44,197 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:55:45,273 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:45,273 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:55:45,828 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:45] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:46,014 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:46] "GET /api/strategies/notifications?limit=50&_t=1768233345699 HTTP/1.1" 200 - +2026-01-12 23:55:46,199 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:46,200 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:46,535 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:47,197 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:47,197 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:48,205 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:48,205 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:48,608 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:48] "GET /api/strategies/notifications?limit=50&_t=1768233348292 HTTP/1.1" 200 - +2026-01-12 23:55:48,958 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:48] "GET /api/portfolio/positions?_t=1768233348326 HTTP/1.1" 200 - +2026-01-12 23:55:49,192 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:49,192 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:49,308 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:49] "GET /api/portfolio/summary?_t=1768233348326 HTTP/1.1" 200 - +2026-01-12 23:55:50,197 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:50,197 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:50,462 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:51,205 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:51,206 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:51,888 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:51,889 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:53,195 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:53,196 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:53,889 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:53,889 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:55,194 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:55,194 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:55] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:55,887 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:55,887 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:55:57,203 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:57,203 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:55:57,489 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:58,205 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:58,205 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:58,806 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:59,198 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:59,198 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:55:59,889 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:55:59,889 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:55:59] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:01,209 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:01,210 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:01,892 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:01,893 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:01] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:03,198 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:03,198 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:03,889 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:03,889 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:56:05,206 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:05,207 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:56:06,196 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:06,196 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:56:06,864 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:06] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:07,201 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:07,202 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:07,938 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:07] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:08,589 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:08,589 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:09,602 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:09,603 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:10,607 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:10,607 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:10] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:11,610 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:11,611 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:12,291 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:12,291 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:13,596 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:13,596 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:56:14,306 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:14,307 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:56:15,419 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:15,691 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:15,692 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:15] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:16,380 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:16,609 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:16,609 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:16,610 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:16] "GET /api/strategies/notifications?limit=50&_t=1768233376292 HTTP/1.1" 200 - +2026-01-12 23:56:17,610 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:17,611 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:18,071 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:18,599 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:18,600 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:19,295 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:19,296 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:20,595 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:20,596 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:21,315 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:21,316 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:22,623 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:22,624 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:23,328 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:23,328 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:56:24,592 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:24,593 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:56:25,592 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:25,593 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:56:26,602 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:26,602 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:56:27,340 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:27,599 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:27,599 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:28,198 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:28,596 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:28,597 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:28] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:29,607 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:29,607 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:29,931 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:30,598 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:30,598 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:31,606 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:31,607 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:31,792 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:32,605 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:32,606 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:33,293 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:33,293 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:34,742 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:34,742 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:35,295 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:35,295 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:35] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:36,607 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:36,607 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:37,293 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:37,294 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:56:38,597 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:38,597 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:56:39,601 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:39,602 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:56:39,749 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:56:39,750 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:40,164 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:56:40,165 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:40,607 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:40,607 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:56:41,592 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:41,592 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:56:42,033 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:56:42,034 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:42,595 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:42,595 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:56:43,076 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:56:43,077 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:43,607 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:43,607 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:56:43,833 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:56:43,834 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:44,400 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:56:44,401 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:44,595 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:44,596 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:56:45,592 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:45,593 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:56:46,235 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:56:46,237 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:46] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:46,596 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:46,596 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:56:46,598 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:46] "GET /api/strategies/notifications?limit=50&_t=1768233406283 HTTP/1.1" 200 - +2026-01-12 23:56:47,096 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:56:47,097 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:47,317 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:56:47,318 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:47,439 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:47,439 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:56:48,299 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:56:48,305 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:48,568 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:56:48,570 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:48,600 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:48,601 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:56:48,604 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:48] "GET /api/strategies/notifications?limit=50&_t=1768233408290 HTTP/1.1" 200 - +2026-01-12 23:56:48,955 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:48] "GET /api/portfolio/positions?_t=1768233408334 HTTP/1.1" 200 - +2026-01-12 23:56:49,204 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:49,204 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:56:49,275 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:49] "GET /api/portfolio/summary?_t=1768233408334 HTTP/1.1" 200 - +2026-01-12 23:56:50,192 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:50,192 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:56:51,217 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:56:51,219 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:51,501 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:56:51,503 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:51,598 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:51,598 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:56:51,758 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:56:51,759 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:51] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:52,636 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:52,637 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:56:53,598 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:53,598 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:56:53,675 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:56:53,677 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:54,447 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:56:54,449 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:54,608 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:54,609 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:56:55,596 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:55,596 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:56:56,033 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:56:56,034 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:56] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:56,597 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:56,597 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:56:57,139 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:56:57,141 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:57,415 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:56:57,417 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:57,607 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:57,607 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:56:57,722 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:56:57,724 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:58,590 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:58,590 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:56:58,675 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:56:58,677 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:56:58] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:56:59,704 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:56:59,704 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:00,606 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:00,606 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:00,742 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:00,744 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:00,964 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:00,965 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:00] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:01,607 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:01,608 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:02,064 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:02,065 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:02] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:02,593 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:02,593 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:03,606 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:03,606 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:04,138 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:04,140 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:04,607 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:04,607 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:04,706 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:04,707 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:05,416 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:05,417 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:05,606 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:05,606 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:05,821 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:05,822 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:06,591 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:06,592 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:07,601 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:07,602 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:08,430 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:08,432 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:08,615 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:08,616 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:08] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:08,662 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:08,662 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:09,239 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:09,240 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:09,601 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:09,602 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:09,840 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:09,842 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:09] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:10,605 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:10,606 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:11,597 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:11,597 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:12,351 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:12,353 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:12] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:12,608 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:12,609 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:13,325 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:13,326 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:13] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:13,606 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:13,606 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:14,101 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:14,104 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:14,596 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:14,596 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:14,677 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:14,678 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:14] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:15,680 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:15,680 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:16,018 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:16,021 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:16,229 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:16,230 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:16,608 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:16,608 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:16,609 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:16] "GET /api/strategies/notifications?limit=50&_t=1768233436292 HTTP/1.1" 200 - +2026-01-12 23:57:17,609 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:17,610 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:17,680 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:17,681 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:18,401 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:18,402 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:18] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:18,606 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:18,606 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:19,595 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:19,595 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:19,603 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:19,606 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:20,598 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:20,599 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:20,607 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:20,609 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:21,009 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:21,010 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:21,593 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:21,593 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:21,611 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:21,613 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:21] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:22,599 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:22,599 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:23,608 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:23,608 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:24,328 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:24,330 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:24,460 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:24,461 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:24,633 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:24,633 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:25,608 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:25,608 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:26,279 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:26,280 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:26,366 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:26,367 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:26] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:26,593 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:26,593 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:27,228 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:27,229 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:27] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:27,597 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:27,597 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:28,609 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:28,610 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:29,060 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:29,062 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:29,598 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:29,599 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:29,601 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:29,602 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:30,254 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:30,255 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:30] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:30,596 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:30,596 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:31,609 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:31,609 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:31,617 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:31,618 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:31] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:32,599 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:32,600 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:33,198 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:33,200 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:33,600 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:33,601 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:33,605 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:33,605 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:33,757 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:33,759 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:34,624 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:34,625 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:34,665 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:34,666 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:34] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:35,605 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:35,605 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:36,593 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:36,593 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:37,392 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:37,393 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:37] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:37,596 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:37,596 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:38,232 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:38,233 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:38,597 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:38,597 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:38,607 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:38,608 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:39,238 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:39,239 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:39,595 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:39,595 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:40,315 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:40,316 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:40] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:40,598 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:40,598 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:41,619 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:41,620 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:42,448 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:42,450 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:42,597 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:42,597 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:42,921 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:42,923 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:42] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:43,601 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:43,601 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:43,822 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:43,823 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:43] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:44,417 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:44,418 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:44,600 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:44,601 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:44,623 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:44,624 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:45,608 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:45,608 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:46,599 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:46,599 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:46,601 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:46] "GET /api/strategies/notifications?limit=50&_t=1768233466283 HTTP/1.1" 200 - +2026-01-12 23:57:47,491 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:47,492 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:47,598 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:47,599 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:48,040 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:48,041 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:48,608 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:48,609 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:48,609 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:48] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:48,610 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:48,612 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:48] "GET /api/strategies/notifications?limit=50&_t=1768233468292 HTTP/1.1" 200 - +2026-01-12 23:57:48,980 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:48] "GET /api/portfolio/positions?_t=1768233468326 HTTP/1.1" 200 - +2026-01-12 23:57:49,237 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:49,239 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:49,247 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:49] "GET /api/portfolio/summary?_t=1768233468326 HTTP/1.1" 200 - +2026-01-12 23:57:49,593 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:49,593 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:49,623 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:49,624 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:49] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:50,609 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:57:50,610 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:57:52,246 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:52,247 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:52] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:57:53,403 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:57:53,405 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:57:53] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:58:48,713 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:58:48,714 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:58:48,723 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:58:48] "GET /api/strategies/notifications?limit=50&_t=1768233528286 HTTP/1.1" 200 - +2026-01-12 23:58:48,724 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:58:48] "GET /api/strategies/notifications?limit=50&_t=1768233528287 HTTP/1.1" 200 - +2026-01-12 23:58:49,015 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:58:49] "GET /api/portfolio/positions?_t=1768233528319 HTTP/1.1" 200 - +2026-01-12 23:58:49,298 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:58:49] "GET /api/portfolio/summary?_t=1768233528319 HTTP/1.1" 200 - +2026-01-12 23:58:50,204 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:58:50,205 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:58:50] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:59:14,755 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-12 23:59:14,756 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-12 23:59:14,757 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-12 23:59:14,757 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-12 23:59:14,768 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 23:59:14,769 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-12 23:59:15,133 - app.services.strategy - INFO - Found 0 running strategies: [] +2026-01-12 23:59:15,133 - app - INFO - No running strategies to restore. +2026-01-12 23:59:15,150 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-12 23:59:15,150 - werkzeug - INFO - Press CTRL+C to quit +2026-01-12 23:59:17,536 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:59:17,544 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:59:17,849 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:59:17] "GET /api/strategies/notifications?limit=50&_t=1768233557506 HTTP/1.1" 200 - +2026-01-12 23:59:18,203 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:59:18,203 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:59:19,020 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:59:19,021 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:59:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:59:19,322 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:59:19,322 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:59:20,003 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:59:20,004 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:59:20] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:59:20,205 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:59:20,206 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:59:21,286 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=5 +2026-01-12 23:59:21,286 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-12 23:59:21,754 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:59:21] "GET /api/market/types?_t=1768233561442 HTTP/1.1" 200 - +2026-01-12 23:59:21,755 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:59:21] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 23:59:21,756 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:59:21] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 23:59:22,064 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:59:22] "GET /api/user/info?_t=1768233561442 HTTP/1.1" 200 - +2026-01-12 23:59:22,079 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:59:22,081 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:59:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:59:22,082 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=500 +2026-01-12 23:59:22,173 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-12 23:59:22,388 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:59:22] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-12 23:59:22,389 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:59:22] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-12 23:59:22,814 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:59:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:59:23,165 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:59:23,166 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:59:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:59:24,012 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-12&endDate=2026-01-12&resampleFreq=1min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:59:24,013 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:59:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:59:24,159 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=5 +2026-01-12 23:59:24,330 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:59:24] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:59:25,163 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=5 +2026-01-12 23:59:25,164 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:59:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:59:25,854 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=5 +2026-01-12 23:59:25,854 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:59:25] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:59:26,895 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1D, limit=500 +2026-01-12 23:59:29,249 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2023-12-24&endDate=2026-01-12&resampleFreq=1day&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:59:29,250 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:59:29] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:59:30,891 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=5m, limit=500 +2026-01-12 23:59:32,623 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2026-01-10&endDate=2026-01-12&resampleFreq=5min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:59:32,624 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:59:32] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:59:34,927 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=30m, limit=500 +2026-01-12 23:59:36,110 - app.data_sources.forex - ERROR - Tiingo API request failed: 429 Client Error: Too Many Requests for url: https://api.tiingo.com/tiingo/fx/xauusd/prices?startDate=2025-12-28&endDate=2026-01-12&resampleFreq=30min&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json +2026-01-12 23:59:36,111 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:59:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-12 23:59:45,702 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:59:45] "GET /api/strategies/notifications?limit=50&_t=1768233585691 HTTP/1.1" 200 - +2026-01-12 23:59:48,600 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:59:48] "GET /api/strategies/notifications?limit=50&_t=1768233588288 HTTP/1.1" 200 - +2026-01-12 23:59:50,163 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:59:50] "GET /api/portfolio/summary?_t=1768233588322 HTTP/1.1" 200 - +2026-01-12 23:59:50,411 - werkzeug - INFO - 127.0.0.1 - - [12/Jan/2026 23:59:50] "GET /api/portfolio/positions?_t=1768233588322 HTTP/1.1" 200 - +2026-01-13 00:00:15,747 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:00:15] "GET /api/strategies/notifications?limit=50&_t=1768233615693 HTTP/1.1" 200 - +2026-01-13 00:00:40,270 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=500 +2026-01-13 00:00:40,270 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-13 00:00:44,820 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:00:44] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-13 00:00:45,706 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:00:45] "GET /api/strategies/notifications?limit=50&_t=1768233645697 HTTP/1.1" 200 - +2026-01-13 00:00:48,599 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:00:48] "GET /api/strategies/notifications?limit=50&_t=1768233648284 HTTP/1.1" 200 - +2026-01-13 00:00:48,923 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:00:48] "GET /api/portfolio/positions?_t=1768233648316 HTTP/1.1" 200 - +2026-01-13 00:00:49,240 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:00:49] "GET /api/portfolio/summary?_t=1768233648316 HTTP/1.1" 200 - +2026-01-13 00:01:11,662 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-13 00:01:11,662 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-13 00:01:11,663 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-13 00:01:11,663 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-13 00:01:11,677 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-13 00:01:11,687 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-13 00:01:12,066 - app.services.strategy - INFO - Found 0 running strategies: [] +2026-01-13 00:01:12,067 - app - INFO - No running strategies to restore. +2026-01-13 00:01:12,083 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-13 00:01:12,083 - werkzeug - INFO - Press CTRL+C to quit +2026-01-13 00:01:15,334 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=5m, limit=500 +2026-01-13 00:01:16,007 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:01:16] "GET /api/strategies/notifications?limit=50&_t=1768233675692 HTTP/1.1" 200 - +2026-01-13 00:01:16,612 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:01:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-13 00:01:23,887 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:01:23] "GET /api/market/types?_t=1768233683571 HTTP/1.1" 200 - +2026-01-13 00:01:23,901 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:01:23] "GET /api/portfolio/monitors?_t=1768233683571 HTTP/1.1" 200 - +2026-01-13 00:01:23,901 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:01:23] "GET /api/portfolio/alerts?_t=1768233683571 HTTP/1.1" 200 - +2026-01-13 00:01:23,902 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:01:23] "GET /api/portfolio/groups?_t=1768233683571 HTTP/1.1" 200 - +2026-01-13 00:01:23,996 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 00:01:23,996 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 00:01:23,996 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 00:01:23,996 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 00:01:23,996 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 00:01:23,996 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 00:01:23,996 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 00:01:23,997 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 00:01:23,997 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 00:01:23,998 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 00:01:25,688 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:01:25] "GET /api/portfolio/positions?_t=1768233683571 HTTP/1.1" 200 - +2026-01-13 00:01:26,819 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:01:26] "GET /api/portfolio/summary?_t=1768233683571 HTTP/1.1" 200 - +2026-01-13 00:01:40,242 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:01:40] "GET /api/portfolio/positions?_t=1768233699924 HTTP/1.1" 200 - +2026-01-13 00:01:40,242 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:01:40] "GET /api/portfolio/summary?_t=1768233699924 HTTP/1.1" 200 - +2026-01-13 00:01:45,700 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:01:45] "GET /api/strategies/notifications?limit=50&_t=1768233705692 HTTP/1.1" 200 - +2026-01-13 00:01:48,595 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:01:48] "GET /api/strategies/notifications?limit=50&_t=1768233708279 HTTP/1.1" 200 - +2026-01-13 00:01:48,612 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:01:48] "GET /api/portfolio/positions?_t=1768233708302 HTTP/1.1" 200 - +2026-01-13 00:01:48,612 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:01:48] "GET /api/portfolio/summary?_t=1768233708302 HTTP/1.1" 200 - +2026-01-13 00:01:52,875 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:01:52] "GET /api/portfolio/positions?_t=1768233712864 HTTP/1.1" 200 - +2026-01-13 00:01:53,178 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:01:53] "GET /api/portfolio/summary?_t=1768233712864 HTTP/1.1" 200 - +2026-01-13 00:01:53,889 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:01:53] "GET /api/portfolio/positions?_t=1768233713571 HTTP/1.1" 200 - +2026-01-13 00:01:53,890 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:01:53] "GET /api/portfolio/summary?_t=1768233713571 HTTP/1.1" 200 - +2026-01-13 00:01:55,627 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:01:55] "GET /api/market/types?_t=1768233715618 HTTP/1.1" 200 - +2026-01-13 00:01:55,939 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:01:55] "GET /api/portfolio/monitors?_t=1768233715618 HTTP/1.1" 200 - +2026-01-13 00:01:55,941 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:01:55] "GET /api/portfolio/groups?_t=1768233715618 HTTP/1.1" 200 - +2026-01-13 00:01:55,941 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:01:55] "GET /api/portfolio/alerts?_t=1768233715618 HTTP/1.1" 200 - +2026-01-13 00:01:57,098 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:01:57] "GET /api/portfolio/positions?_t=1768233715618 HTTP/1.1" 200 - +2026-01-13 00:01:57,142 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:01:57] "GET /api/portfolio/summary?_t=1768233715618 HTTP/1.1" 200 - +2026-01-13 00:02:01,073 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:02:01] "GET /api/market/types?_t=1768233720755 HTTP/1.1" 200 - +2026-01-13 00:02:01,079 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:02:01] "GET /api/portfolio/monitors?_t=1768233720755 HTTP/1.1" 200 - +2026-01-13 00:02:01,080 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:02:01] "GET /api/portfolio/groups?_t=1768233720755 HTTP/1.1" 200 - +2026-01-13 00:02:01,582 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:02:01] "GET /api/portfolio/positions?_t=1768233720755 HTTP/1.1" 200 - +2026-01-13 00:02:01,627 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:02:01] "GET /api/portfolio/summary?_t=1768233720755 HTTP/1.1" 200 - +2026-01-13 00:02:01,688 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:02:01] "GET /api/portfolio/alerts?_t=1768233720755 HTTP/1.1" 200 - +2026-01-13 00:02:16,010 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:02:16] "GET /api/strategies/notifications?limit=50&_t=1768233735697 HTTP/1.1" 200 - +2026-01-13 00:02:31,065 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:02:31] "GET /api/portfolio/positions?_t=1768233750772 HTTP/1.1" 200 - +2026-01-13 00:02:31,092 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:02:31] "GET /api/portfolio/summary?_t=1768233750772 HTTP/1.1" 200 - +2026-01-13 00:02:46,016 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:02:46] "GET /api/strategies/notifications?limit=50&_t=1768233765701 HTTP/1.1" 200 - +2026-01-13 00:02:48,298 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:02:48] "GET /api/strategies/notifications?limit=50&_t=1768233768287 HTTP/1.1" 200 - +2026-01-13 00:02:48,912 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:02:48] "GET /api/portfolio/summary?_t=1768233768317 HTTP/1.1" 200 - +2026-01-13 00:02:48,952 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:02:48] "GET /api/portfolio/positions?_t=1768233768317 HTTP/1.1" 200 - +2026-01-13 00:03:00,780 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:03:00] "GET /api/portfolio/positions?_t=1768233780771 HTTP/1.1" 200 - +2026-01-13 00:03:01,483 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:03:01] "GET /api/portfolio/summary?_t=1768233780771 HTTP/1.1" 200 - +2026-01-13 00:03:16,021 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:03:16] "GET /api/strategies/notifications?limit=50&_t=1768233795707 HTTP/1.1" 200 - +2026-01-13 00:03:28,832 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:03:28] "GET /api/market/types?_t=1768233808820 HTTP/1.1" 200 - +2026-01-13 00:03:29,160 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:03:29] "GET /api/portfolio/monitors?_t=1768233808820 HTTP/1.1" 200 - +2026-01-13 00:03:29,161 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:03:29] "GET /api/portfolio/groups?_t=1768233808820 HTTP/1.1" 200 - +2026-01-13 00:03:29,175 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:03:29] "GET /api/portfolio/alerts?_t=1768233808820 HTTP/1.1" 200 - +2026-01-13 00:03:29,176 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:03:29] "GET /api/strategies/notifications?limit=50&_t=1768233808820 HTTP/1.1" 200 - +2026-01-13 00:03:38,852 - app.data_sources.us_stock - WARNING - Finnhub quote failed for AVGO: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Read timed out. (read timeout=10) +2026-01-13 00:03:38,852 - app.data_sources.us_stock - WARNING - Finnhub quote failed for GOOGL: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Read timed out. (read timeout=10) +2026-01-13 00:03:39,161 - app.data_sources.us_stock - WARNING - Finnhub quote failed for AVGO: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Read timed out. (read timeout=10) +2026-01-13 00:03:39,162 - app.data_sources.us_stock - WARNING - Finnhub quote failed for INTC: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Read timed out. (read timeout=10) +2026-01-13 00:03:39,162 - app.data_sources.us_stock - WARNING - Finnhub quote failed for GOOGL: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Read timed out. (read timeout=10) +2026-01-13 00:03:41,426 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:03:41] "GET /api/market/types?_t=1768233821111 HTTP/1.1" 200 - +2026-01-13 00:03:41,430 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:03:41] "GET /api/portfolio/monitors?_t=1768233821111 HTTP/1.1" 200 - +2026-01-13 00:03:41,430 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:03:41] "GET /api/portfolio/groups?_t=1768233821111 HTTP/1.1" 200 - +2026-01-13 00:03:41,437 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:03:41] "GET /api/portfolio/alerts?_t=1768233821111 HTTP/1.1" 200 - +2026-01-13 00:03:43,974 - app.routes.portfolio - WARNING - Price fetch failed for USStock:GOOGL: +2026-01-13 00:03:48,604 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:03:48] "GET /api/strategies/notifications?limit=50&_t=1768233828284 HTTP/1.1" 200 - +2026-01-13 00:03:51,436 - app.routes.portfolio - WARNING - Price fetch failed for USStock:SPCE: +2026-01-13 00:03:52,023 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:03:52] "GET /api/portfolio/summary?_t=1768233808820 HTTP/1.1" 200 - +2026-01-13 00:03:52,023 - app.data_sources.us_stock - WARNING - Finnhub quote failed for GOOGL: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Read timed out. (read timeout=10) +2026-01-13 00:03:52,035 - app.data_sources.us_stock - WARNING - Finnhub quote failed for OMDA: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Read timed out. (read timeout=10) +2026-01-13 00:03:52,035 - app.data_sources.us_stock - WARNING - Finnhub quote failed for GD: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Read timed out. (read timeout=10) +2026-01-13 00:03:52,050 - app.data_sources.us_stock - WARNING - Finnhub quote failed for AVGO: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Read timed out. (read timeout=10) +2026-01-13 00:03:52,066 - app.data_sources.us_stock - WARNING - Finnhub quote failed for AMD: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Read timed out. (read timeout=10) +2026-01-13 00:03:52,182 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:03:52] "GET /api/portfolio/positions?_t=1768233808820 HTTP/1.1" 200 - +2026-01-13 00:03:54,078 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:03:54] "GET /api/portfolio/summary?_t=1768233821111 HTTP/1.1" 200 - +2026-01-13 00:03:55,575 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:03:55] "GET /api/portfolio/summary?_t=1768233828319 HTTP/1.1" 200 - +2026-01-13 00:03:58,804 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:03:58] "GET /api/strategies/notifications?limit=50&_t=1768233838795 HTTP/1.1" 200 - +2026-01-13 00:03:59,124 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:03:59] "GET /api/portfolio/positions?_t=1768233828319 HTTP/1.1" 200 - +2026-01-13 00:04:00,511 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:04:00] "GET /api/market/types?_t=1768233840183 HTTP/1.1" 200 - +2026-01-13 00:04:00,514 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:04:00] "GET /api/portfolio/summary?_t=1768233840183 HTTP/1.1" 200 - +2026-01-13 00:04:00,515 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:04:00] "GET /api/portfolio/monitors?_t=1768233840183 HTTP/1.1" 200 - +2026-01-13 00:04:00,516 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:04:00] "GET /api/portfolio/alerts?_t=1768233840183 HTTP/1.1" 200 - +2026-01-13 00:04:00,516 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:04:00] "GET /api/portfolio/groups?_t=1768233840183 HTTP/1.1" 200 - +2026-01-13 00:04:00,519 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:04:00] "GET /api/portfolio/positions?_t=1768233840183 HTTP/1.1" 200 - +2026-01-13 00:04:01,438 - app.routes.portfolio - WARNING - Price fetch failed for USStock:OMDA: +2026-01-13 00:04:02,678 - app.data_sources.us_stock - WARNING - Finnhub quote failed for OMDA: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Read timed out. (read timeout=10) +2026-01-13 00:04:02,693 - app.data_sources.us_stock - WARNING - Finnhub quote failed for GD: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Read timed out. (read timeout=10) +2026-01-13 00:04:04,431 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:04:04] "GET /api/portfolio/positions?_t=1768233821111 HTTP/1.1" 200 - +2026-01-13 00:04:29,127 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:04:29] "GET /api/strategies/notifications?limit=50&_t=1768233868809 HTTP/1.1" 200 - +2026-01-13 00:04:31,362 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:04:31] "GET /api/portfolio/positions?_t=1768233870204 HTTP/1.1" 200 - +2026-01-13 00:04:31,622 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:04:31] "GET /api/portfolio/summary?_t=1768233870204 HTTP/1.1" 200 - +2026-01-13 00:04:48,600 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:04:48] "GET /api/strategies/notifications?limit=50&_t=1768233888285 HTTP/1.1" 200 - +2026-01-13 00:04:48,922 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:04:48] "GET /api/portfolio/positions?_t=1768233888335 HTTP/1.1" 200 - +2026-01-13 00:04:48,926 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:04:48] "GET /api/portfolio/summary?_t=1768233888335 HTTP/1.1" 200 - +2026-01-13 00:04:58,813 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:04:58] "GET /api/strategies/notifications?limit=50&_t=1768233898803 HTTP/1.1" 200 - +2026-01-13 00:05:00,513 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:05:00] "GET /api/portfolio/positions?_t=1768233900198 HTTP/1.1" 200 - +2026-01-13 00:05:00,513 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:05:00] "GET /api/portfolio/summary?_t=1768233900198 HTTP/1.1" 200 - +2026-01-13 00:05:10,891 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:05:10] "GET /api/market/types?_t=1768233910878 HTTP/1.1" 200 - +2026-01-13 00:05:10,922 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:05:10] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 00:05:11,216 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:05:11] "GET /api/user/info?_t=1768233910878 HTTP/1.1" 200 - +2026-01-13 00:05:11,217 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=500 +2026-01-13 00:05:11,218 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:05:11] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 00:05:11,235 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:05:11] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 00:05:11,236 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:05:11] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 00:05:11,471 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:05:11] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-13 00:05:13,983 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1D, limit=500 +2026-01-13 00:05:17,497 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:05:17] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-13 00:05:18,061 - app.routes.kline - INFO - Requesting K-lines: Forex:XAUUSD, timeframe=1m, limit=500 +2026-01-13 00:05:18,062 - app.data_sources.forex - INFO - Note: Tiingo 1-minute forex data requires a paid subscription +2026-01-13 00:05:19,811 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:05:19] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-13 00:05:21,752 - app.routes.kline - INFO - Requesting K-lines: Futures:SI, timeframe=1m, limit=500 +2026-01-13 00:05:22,278 - yfinance - ERROR - $SI=F: possibly delisted; no price data found (1m 2026-01-12 11:35:21.762269 -> 2026-01-14 00:05:21.762269) (Yahoo error = "Data doesn't exist for startDate = 1768235721, endDate = 1768367121") +2026-01-13 00:05:22,279 - app.data_sources.futures - WARNING - No data: SI=F +2026-01-13 00:05:22,279 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:05:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-13 00:05:23,398 - app.routes.kline - INFO - Requesting K-lines: Futures:SI, timeframe=5m, limit=500 +2026-01-13 00:05:23,771 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:05:23] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-13 00:05:28,812 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:05:28] "GET /api/strategies/notifications?limit=50&_t=1768233928804 HTTP/1.1" 200 - +2026-01-13 00:05:48,656 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:05:48] "GET /api/strategies/notifications?limit=50&_t=1768233948291 HTTP/1.1" 200 - +2026-01-13 00:05:49,920 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:05:49] "GET /api/portfolio/positions?_t=1768233948323 HTTP/1.1" 200 - +2026-01-13 00:05:50,007 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:05:50] "GET /api/portfolio/summary?_t=1768233948323 HTTP/1.1" 200 - +2026-01-13 00:05:58,810 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:05:58] "GET /api/strategies/notifications?limit=50&_t=1768233958801 HTTP/1.1" 200 - +2026-01-13 00:06:06,092 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:06:06] "GET /api/market/types?_t=1768233966083 HTTP/1.1" 200 - +2026-01-13 00:06:06,256 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:06:06] "GET /api/portfolio/positions?_t=1768233966083 HTTP/1.1" 200 - +2026-01-13 00:06:06,305 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:06:06] "GET /api/portfolio/summary?_t=1768233966083 HTTP/1.1" 200 - +2026-01-13 00:06:06,305 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:06:06] "GET /api/portfolio/monitors?_t=1768233966083 HTTP/1.1" 200 - +2026-01-13 00:06:06,309 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:06:06] "GET /api/portfolio/groups?_t=1768233966083 HTTP/1.1" 200 - +2026-01-13 00:06:06,310 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:06:06] "GET /api/portfolio/alerts?_t=1768233966083 HTTP/1.1" 200 - +2026-01-13 00:06:28,302 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:06:28] "GET /api/strategies/notifications?limit=50&_t=1768233988293 HTTP/1.1" 200 - +2026-01-13 00:06:29,213 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:06:29] "GET /api/strategies/notifications?limit=50&_t=1768233988799 HTTP/1.1" 200 - +2026-01-13 00:06:36,813 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:06:36] "GET /api/portfolio/positions?_t=1768233996308 HTTP/1.1" 200 - +2026-01-13 00:06:37,138 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:06:37] "GET /api/portfolio/summary?_t=1768233996308 HTTP/1.1" 200 - +2026-01-13 00:06:58,678 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:06:58] "GET /api/strategies/notifications?limit=50&_t=1768234018286 HTTP/1.1" 200 - +2026-01-13 00:06:58,869 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:06:58] "GET /api/strategies/notifications?limit=50&_t=1768234018800 HTTP/1.1" 200 - +2026-01-13 00:07:06,355 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:07:06] "GET /api/portfolio/positions?_t=1768234026346 HTTP/1.1" 200 - +2026-01-13 00:07:06,658 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:07:06] "GET /api/portfolio/summary?_t=1768234026347 HTTP/1.1" 200 - +2026-01-13 00:07:29,116 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:07:29] "GET /api/strategies/notifications?limit=50&_t=1768234048801 HTTP/1.1" 200 - +2026-01-13 00:07:36,653 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:07:36] "GET /api/portfolio/positions?_t=1768234056320 HTTP/1.1" 200 - +2026-01-13 00:07:36,945 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:07:36] "GET /api/portfolio/summary?_t=1768234056320 HTTP/1.1" 200 - +2026-01-13 00:07:48,700 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:07:48] "GET /api/strategies/notifications?limit=50&_t=1768234068283 HTTP/1.1" 200 - +2026-01-13 00:07:58,814 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:07:58] "GET /api/strategies/notifications?limit=50&_t=1768234078806 HTTP/1.1" 200 - +2026-01-13 00:08:06,991 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:08:06] "GET /api/portfolio/positions?_t=1768234086300 HTTP/1.1" 200 - +2026-01-13 00:08:07,885 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:08:07] "GET /api/portfolio/summary?_t=1768234086300 HTTP/1.1" 200 - +2026-01-13 00:08:18,088 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:08:18] "GET /api/market/types?_t=1768234098081 HTTP/1.1" 200 - +2026-01-13 00:08:18,344 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:08:18] "GET /api/portfolio/monitors?_t=1768234098081 HTTP/1.1" 200 - +2026-01-13 00:08:18,344 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:08:18] "GET /api/portfolio/groups?_t=1768234098081 HTTP/1.1" 200 - +2026-01-13 00:08:18,350 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:08:18] "GET /api/portfolio/alerts?_t=1768234098081 HTTP/1.1" 200 - +2026-01-13 00:08:18,483 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:08:18] "GET /api/market/types?_t=1768234098476 HTTP/1.1" 200 - +2026-01-13 00:08:18,630 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:08:18] "GET /api/portfolio/positions?_t=1768234098081 HTTP/1.1" 200 - +2026-01-13 00:08:18,654 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:08:18] "GET /api/portfolio/summary?_t=1768234098081 HTTP/1.1" 200 - +2026-01-13 00:08:18,711 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:08:18] "GET /api/portfolio/positions?_t=1768234098476 HTTP/1.1" 200 - +2026-01-13 00:08:18,788 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:08:18] "GET /api/portfolio/summary?_t=1768234098476 HTTP/1.1" 200 - +2026-01-13 00:08:18,789 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:08:18] "GET /api/portfolio/monitors?_t=1768234098476 HTTP/1.1" 200 - +2026-01-13 00:08:18,793 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:08:18] "GET /api/portfolio/groups?_t=1768234098476 HTTP/1.1" 200 - +2026-01-13 00:08:18,946 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:08:18] "GET /api/portfolio/alerts?_t=1768234098476 HTTP/1.1" 200 - +2026-01-13 00:08:19,095 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:08:19] "GET /api/market/types?_t=1768234099087 HTTP/1.1" 200 - +2026-01-13 00:08:19,350 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:08:19] "GET /api/portfolio/positions?_t=1768234099087 HTTP/1.1" 200 - +2026-01-13 00:08:19,412 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:08:19] "GET /api/portfolio/monitors?_t=1768234099087 HTTP/1.1" 200 - +2026-01-13 00:08:19,412 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:08:19] "GET /api/portfolio/summary?_t=1768234099087 HTTP/1.1" 200 - +2026-01-13 00:08:19,413 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:08:19] "GET /api/portfolio/alerts?_t=1768234099087 HTTP/1.1" 200 - +2026-01-13 00:08:19,413 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:08:19] "GET /api/portfolio/groups?_t=1768234099087 HTTP/1.1" 200 - +2026-01-13 00:08:19,725 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:08:19] "GET /api/market/types?_t=1768234099718 HTTP/1.1" 200 - +2026-01-13 00:08:19,966 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:08:19] "GET /api/portfolio/positions?_t=1768234099718 HTTP/1.1" 200 - +2026-01-13 00:08:20,047 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:08:20] "GET /api/portfolio/monitors?_t=1768234099718 HTTP/1.1" 200 - +2026-01-13 00:08:20,047 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:08:20] "GET /api/portfolio/alerts?_t=1768234099718 HTTP/1.1" 200 - +2026-01-13 00:08:20,048 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:08:20] "GET /api/portfolio/groups?_t=1768234099718 HTTP/1.1" 200 - +2026-01-13 00:08:20,048 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:08:20] "GET /api/portfolio/summary?_t=1768234099718 HTTP/1.1" 200 - +2026-01-13 00:08:27,478 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:08:27] "GET /api/market/types?_t=1768234107163 HTTP/1.1" 200 - +2026-01-13 00:08:27,482 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:08:27] "GET /api/portfolio/positions?_t=1768234107163 HTTP/1.1" 200 - +2026-01-13 00:08:27,484 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:08:27] "GET /api/portfolio/monitors?_t=1768234107163 HTTP/1.1" 200 - +2026-01-13 00:08:27,484 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:08:27] "GET /api/portfolio/summary?_t=1768234107163 HTTP/1.1" 200 - +2026-01-13 00:08:27,485 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:08:27] "GET /api/portfolio/alerts?_t=1768234107163 HTTP/1.1" 200 - +2026-01-13 00:08:27,486 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:08:27] "GET /api/portfolio/groups?_t=1768234107163 HTTP/1.1" 200 - +2026-01-13 00:08:29,116 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:08:29] "GET /api/strategies/notifications?limit=50&_t=1768234108795 HTTP/1.1" 200 - +2026-01-13 00:08:48,299 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:08:48] "GET /api/strategies/notifications?limit=50&_t=1768234128291 HTTP/1.1" 200 - +2026-01-13 00:08:50,926 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:08:50] "GET /api/portfolio/positions?refresh=1&_t=1768234130319 HTTP/1.1" 200 - +2026-01-13 00:08:51,235 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:08:51] "GET /api/portfolio/summary?refresh=1&_t=1768234130319 HTTP/1.1" 200 - +2026-01-13 00:08:57,169 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:08:57] "GET /api/portfolio/positions?refresh=1&_t=1768234137160 HTTP/1.1" 200 - +2026-01-13 00:08:57,480 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:08:57] "GET /api/portfolio/summary?refresh=1&_t=1768234137160 HTTP/1.1" 200 - +2026-01-13 00:08:59,153 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:08:59] "GET /api/strategies/notifications?limit=50&_t=1768234138803 HTTP/1.1" 200 - +2026-01-13 00:09:20,348 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:09:20] "GET /api/portfolio/positions?refresh=1&_t=1768234160339 HTTP/1.1" 200 - +2026-01-13 00:09:20,663 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:09:20] "GET /api/portfolio/summary?refresh=1&_t=1768234160339 HTTP/1.1" 200 - +2026-01-13 00:09:27,872 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:09:27] "GET /api/portfolio/summary?refresh=1&_t=1768234167165 HTTP/1.1" 200 - +2026-01-13 00:09:28,231 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:09:28] "GET /api/portfolio/positions?refresh=1&_t=1768234167165 HTTP/1.1" 200 - +2026-01-13 00:09:28,807 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:09:28] "GET /api/strategies/notifications?limit=50&_t=1768234168799 HTTP/1.1" 200 - +2026-01-13 00:09:48,599 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:09:48] "GET /api/strategies/notifications?limit=50&_t=1768234188282 HTTP/1.1" 200 - +2026-01-13 00:09:50,330 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:09:50] "GET /api/portfolio/positions?refresh=1&_t=1768234190320 HTTP/1.1" 200 - +2026-01-13 00:09:50,633 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:09:50] "GET /api/portfolio/summary?refresh=1&_t=1768234190320 HTTP/1.1" 200 - +2026-01-13 00:09:57,493 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:09:57] "GET /api/portfolio/positions?refresh=1&_t=1768234197173 HTTP/1.1" 200 - +2026-01-13 00:09:57,494 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:09:57] "GET /api/portfolio/summary?refresh=1&_t=1768234197173 HTTP/1.1" 200 - +2026-01-13 00:09:58,806 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:09:58] "GET /api/strategies/notifications?limit=50&_t=1768234198797 HTTP/1.1" 200 - +2026-01-13 00:10:20,966 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:10:20] "GET /api/portfolio/summary?refresh=1&_t=1768234220307 HTTP/1.1" 200 - +2026-01-13 00:10:21,272 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:10:21] "GET /api/portfolio/positions?refresh=1&_t=1768234220307 HTTP/1.1" 200 - +2026-01-13 00:10:27,174 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:10:27] "GET /api/portfolio/positions?refresh=1&_t=1768234227167 HTTP/1.1" 200 - +2026-01-13 00:10:27,485 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:10:27] "GET /api/portfolio/summary?refresh=1&_t=1768234227167 HTTP/1.1" 200 - +2026-01-13 00:10:29,106 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:10:29] "GET /api/strategies/notifications?limit=50&_t=1768234228797 HTTP/1.1" 200 - +2026-01-13 00:10:48,300 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:10:48] "GET /api/strategies/notifications?limit=50&_t=1768234248287 HTTP/1.1" 200 - +2026-01-13 00:10:50,621 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:10:50] "GET /api/portfolio/positions?refresh=1&_t=1768234250301 HTTP/1.1" 200 - +2026-01-13 00:10:50,622 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:10:50] "GET /api/portfolio/summary?refresh=1&_t=1768234250301 HTTP/1.1" 200 - +2026-01-13 00:10:57,573 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:10:57] "GET /api/portfolio/positions?refresh=1&_t=1768234257164 HTTP/1.1" 200 - +2026-01-13 00:10:58,134 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:10:58] "GET /api/portfolio/summary?refresh=1&_t=1768234257164 HTTP/1.1" 200 - +2026-01-13 00:10:59,141 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:10:59] "GET /api/strategies/notifications?limit=50&_t=1768234258796 HTTP/1.1" 200 - +2026-01-13 00:11:27,176 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:11:27] "GET /api/portfolio/positions?refresh=1&_t=1768234287168 HTTP/1.1" 200 - +2026-01-13 00:11:27,480 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:11:27] "GET /api/portfolio/summary?refresh=1&_t=1768234287168 HTTP/1.1" 200 - +2026-01-13 00:11:29,117 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:11:29] "GET /api/strategies/notifications?limit=50&_t=1768234288796 HTTP/1.1" 200 - +2026-01-13 00:11:57,551 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:11:57] "GET /api/portfolio/positions?refresh=1&_t=1768234317175 HTTP/1.1" 200 - +2026-01-13 00:11:57,853 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:11:57] "GET /api/portfolio/summary?refresh=1&_t=1768234317175 HTTP/1.1" 200 - +2026-01-13 00:11:59,260 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:11:59] "GET /api/strategies/notifications?limit=50&_t=1768234318801 HTTP/1.1" 200 - +2026-01-13 00:12:27,181 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:12:27] "GET /api/portfolio/positions?refresh=1&_t=1768234347167 HTTP/1.1" 200 - +2026-01-13 00:12:27,956 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:12:27] "GET /api/portfolio/summary?refresh=1&_t=1768234347167 HTTP/1.1" 200 - +2026-01-13 00:12:29,116 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:12:29] "GET /api/strategies/notifications?limit=50&_t=1768234348796 HTTP/1.1" 200 - +2026-01-13 00:12:57,615 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:12:57] "GET /api/portfolio/positions?refresh=1&_t=1768234377167 HTTP/1.1" 200 - +2026-01-13 00:12:57,859 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:12:57] "GET /api/portfolio/summary?refresh=1&_t=1768234377167 HTTP/1.1" 200 - +2026-01-13 00:12:59,122 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:12:59] "GET /api/strategies/notifications?limit=50&_t=1768234378803 HTTP/1.1" 200 - +2026-01-13 00:13:27,626 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:13:27] "GET /api/portfolio/positions?refresh=1&_t=1768234407170 HTTP/1.1" 200 - +2026-01-13 00:13:29,108 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:13:29] "GET /api/portfolio/summary?refresh=1&_t=1768234407170 HTTP/1.1" 200 - +2026-01-13 00:13:29,117 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:13:29] "GET /api/strategies/notifications?limit=50&_t=1768234408798 HTTP/1.1" 200 - +2026-01-13 00:13:57,771 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:13:57] "GET /api/portfolio/summary?refresh=1&_t=1768234437175 HTTP/1.1" 200 - +2026-01-13 00:13:57,780 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:13:57] "GET /api/portfolio/positions?refresh=1&_t=1768234437175 HTTP/1.1" 200 - +2026-01-13 00:13:58,818 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:13:58] "GET /api/strategies/notifications?limit=50&_t=1768234438810 HTTP/1.1" 200 - +2026-01-13 00:14:27,930 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:14:27] "GET /api/portfolio/summary?refresh=1&_t=1768234467160 HTTP/1.1" 200 - +2026-01-13 00:14:28,149 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:14:28] "GET /api/portfolio/positions?refresh=1&_t=1768234467160 HTTP/1.1" 200 - +2026-01-13 00:14:28,810 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:14:28] "GET /api/strategies/notifications?limit=50&_t=1768234468801 HTTP/1.1" 200 - +2026-01-13 00:14:57,775 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:14:57] "GET /api/portfolio/positions?refresh=1&_t=1768234497174 HTTP/1.1" 200 - +2026-01-13 00:14:57,834 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:14:57] "GET /api/portfolio/summary?refresh=1&_t=1768234497174 HTTP/1.1" 200 - +2026-01-13 00:14:58,819 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:14:58] "GET /api/strategies/notifications?limit=50&_t=1768234498808 HTTP/1.1" 200 - +2026-01-13 00:15:27,868 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:15:27] "GET /api/portfolio/positions?refresh=1&_t=1768234527175 HTTP/1.1" 200 - +2026-01-13 00:15:28,123 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:15:28] "GET /api/portfolio/summary?refresh=1&_t=1768234527175 HTTP/1.1" 200 - +2026-01-13 00:15:28,821 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:15:28] "GET /api/strategies/notifications?limit=50&_t=1768234528810 HTTP/1.1" 200 - +2026-01-13 00:15:57,774 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:15:57] "GET /api/portfolio/summary?refresh=1&_t=1768234557165 HTTP/1.1" 200 - +2026-01-13 00:15:57,784 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:15:57] "GET /api/portfolio/positions?refresh=1&_t=1768234557165 HTTP/1.1" 200 - +2026-01-13 00:15:58,811 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:15:58] "GET /api/strategies/notifications?limit=50&_t=1768234558800 HTTP/1.1" 200 - +2026-01-13 00:16:27,921 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:16:27] "GET /api/portfolio/summary?refresh=1&_t=1768234587173 HTTP/1.1" 200 - +2026-01-13 00:16:28,158 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:16:28] "GET /api/portfolio/positions?refresh=1&_t=1768234587173 HTTP/1.1" 200 - +2026-01-13 00:16:28,818 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:16:28] "GET /api/strategies/notifications?limit=50&_t=1768234588810 HTTP/1.1" 200 - +2026-01-13 00:16:57,491 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:16:57] "GET /api/portfolio/summary?refresh=1&_t=1768234617168 HTTP/1.1" 200 - +2026-01-13 00:16:57,492 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:16:57] "GET /api/portfolio/positions?refresh=1&_t=1768234617168 HTTP/1.1" 200 - +2026-01-13 00:16:58,818 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:16:58] "GET /api/strategies/notifications?limit=50&_t=1768234618805 HTTP/1.1" 200 - +2026-01-13 00:17:27,858 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:17:27] "GET /api/portfolio/positions?refresh=1&_t=1768234647165 HTTP/1.1" 200 - +2026-01-13 00:17:28,230 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:17:28] "GET /api/portfolio/summary?refresh=1&_t=1768234647165 HTTP/1.1" 200 - +2026-01-13 00:17:28,807 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:17:28] "GET /api/strategies/notifications?limit=50&_t=1768234648800 HTTP/1.1" 200 - +2026-01-13 00:17:57,477 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:17:57] "GET /api/portfolio/positions?refresh=1&_t=1768234677160 HTTP/1.1" 200 - +2026-01-13 00:17:57,479 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:17:57] "GET /api/portfolio/summary?refresh=1&_t=1768234677160 HTTP/1.1" 200 - +2026-01-13 00:17:58,814 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:17:58] "GET /api/strategies/notifications?limit=50&_t=1768234678804 HTTP/1.1" 200 - +2026-01-13 00:18:28,016 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:18:28] "GET /api/portfolio/summary?refresh=1&_t=1768234707331 HTTP/1.1" 200 - +2026-01-13 00:18:28,296 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:18:28] "GET /api/portfolio/positions?refresh=1&_t=1768234707331 HTTP/1.1" 200 - +2026-01-13 00:18:29,297 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:18:29] "GET /api/strategies/notifications?limit=50&_t=1768234709288 HTTP/1.1" 200 - +2026-01-13 00:18:57,648 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:18:57] "GET /api/portfolio/positions?refresh=1&_t=1768234737314 HTTP/1.1" 200 - +2026-01-13 00:18:57,648 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:18:57] "GET /api/portfolio/summary?refresh=1&_t=1768234737314 HTTP/1.1" 200 - +2026-01-13 00:18:59,298 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:18:59] "GET /api/strategies/notifications?limit=50&_t=1768234739288 HTTP/1.1" 200 - +2026-01-13 00:19:48,769 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:19:48] "GET /api/strategies/notifications?limit=50&_t=1768234788336 HTTP/1.1" 200 - +2026-01-13 00:19:50,354 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:19:50] "GET /api/portfolio/summary?refresh=1&_t=1768234788335 HTTP/1.1" 200 - +2026-01-13 00:19:50,625 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:19:50] "GET /api/portfolio/positions?refresh=1&_t=1768234788335 HTTP/1.1" 200 - +2026-01-13 00:20:39,448 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:20:39] "GET /api/strategies/notifications?limit=50&_t=1768234839121 HTTP/1.1" 200 - +2026-01-13 00:20:39,491 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:20:39] "GET /api/portfolio/positions?refresh=1&_t=1768234839071 HTTP/1.1" 200 - +2026-01-13 00:20:40,028 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:20:40] "GET /api/portfolio/summary?refresh=1&_t=1768234839071 HTTP/1.1" 200 - +2026-01-13 00:20:54,949 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:20:54] "GET /api/strategies/notifications?limit=50&_t=1768234854624 HTTP/1.1" 200 - +2026-01-13 00:20:54,994 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:20:54] "GET /api/portfolio/positions?refresh=1&_t=1768234854681 HTTP/1.1" 200 - +2026-01-13 00:20:54,995 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:20:54] "GET /api/portfolio/summary?refresh=1&_t=1768234854681 HTTP/1.1" 200 - +2026-01-13 00:20:56,345 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:20:56] "GET /api/strategies/notifications?limit=50&_t=1768234856290 HTTP/1.1" 200 - +2026-01-13 00:20:57,632 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:20:57] "GET /api/portfolio/positions?refresh=1&_t=1768234857309 HTTP/1.1" 200 - +2026-01-13 00:20:57,633 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:20:57] "GET /api/portfolio/summary?refresh=1&_t=1768234857309 HTTP/1.1" 200 - +2026-01-13 00:20:59,382 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:20:59] "GET /api/strategies/notifications?limit=50&_t=1768234859282 HTTP/1.1" 200 - +2026-01-13 00:21:20,919 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:21:20] "GET /api/portfolio/positions?refresh=1&_t=1768234880315 HTTP/1.1" 200 - +2026-01-13 00:21:21,195 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:21:21] "GET /api/portfolio/summary?refresh=1&_t=1768234880315 HTTP/1.1" 200 - +2026-01-13 00:21:27,347 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:21:27] "GET /api/portfolio/positions?refresh=1&_t=1768234887334 HTTP/1.1" 200 - +2026-01-13 00:21:27,654 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:21:27] "GET /api/portfolio/summary?refresh=1&_t=1768234887334 HTTP/1.1" 200 - +2026-01-13 00:21:31,224 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-13 00:21:31,224 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-13 00:21:31,225 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-13 00:21:31,226 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-13 00:21:31,237 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-13 00:21:31,257 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-13 00:21:31,581 - app.services.strategy - INFO - Found 0 running strategies: [] +2026-01-13 00:21:31,582 - app - INFO - No running strategies to restore. +2026-01-13 00:21:31,596 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-13 00:21:31,597 - werkzeug - INFO - Press CTRL+C to quit +2026-01-13 00:21:41,213 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:21:41] "GET /api/market/types?_t=1768234901202 HTTP/1.1" 200 - +2026-01-13 00:21:41,528 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:21:41] "GET /api/portfolio/alerts?_t=1768234901202 HTTP/1.1" 200 - +2026-01-13 00:21:41,529 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:21:41] "GET /api/portfolio/groups?_t=1768234901202 HTTP/1.1" 200 - +2026-01-13 00:21:41,529 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:21:41] "GET /api/portfolio/monitors?_t=1768234901202 HTTP/1.1" 200 - +2026-01-13 00:21:41,621 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 00:21:44,618 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:21:44] "GET /api/portfolio/positions?_t=1768234901202 HTTP/1.1" 200 - +2026-01-13 00:21:47,033 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:21:47] "GET /api/portfolio/summary?_t=1768234901202 HTTP/1.1" 200 - +2026-01-13 00:21:59,123 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:21:59] "GET /api/strategies/notifications?limit=50&_t=1768234918804 HTTP/1.1" 200 - +2026-01-13 00:22:14,025 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:22:14] "GET /api/portfolio/positions?refresh=1&_t=1768234931319 HTTP/1.1" 200 - +2026-01-13 00:22:16,802 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:22:16] "GET /api/portfolio/summary?refresh=1&_t=1768234931319 HTTP/1.1" 200 - +2026-01-13 00:22:29,604 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:22:29] "GET /api/strategies/notifications?limit=50&_t=1768234949289 HTTP/1.1" 200 - +2026-01-13 00:22:44,086 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:22:44] "GET /api/portfolio/positions?refresh=1&_t=1768234961332 HTTP/1.1" 200 - +2026-01-13 00:22:46,734 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:22:46] "GET /api/portfolio/summary?refresh=1&_t=1768234961332 HTTP/1.1" 200 - +2026-01-13 00:22:59,595 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:22:59] "GET /api/strategies/notifications?limit=50&_t=1768234979282 HTTP/1.1" 200 - +2026-01-13 00:23:05,654 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:23:05] "GET /api/strategies?_t=1768234985641 HTTP/1.1" 200 - +2026-01-13 00:23:07,491 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:23:07] "GET /api/market/types?_t=1768234987155 HTTP/1.1" 200 - +2026-01-13 00:23:07,499 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:23:07] "GET /api/portfolio/alerts?_t=1768234987156 HTTP/1.1" 200 - +2026-01-13 00:23:07,500 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:23:07] "GET /api/portfolio/monitors?_t=1768234987155 HTTP/1.1" 200 - +2026-01-13 00:23:07,508 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:23:07] "GET /api/portfolio/groups?_t=1768234987155 HTTP/1.1" 200 - +2026-01-13 00:23:10,203 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:23:10] "GET /api/portfolio/summary?_t=1768234987155 HTTP/1.1" 200 - +2026-01-13 00:23:12,605 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:23:12] "GET /api/portfolio/positions?_t=1768234987155 HTTP/1.1" 200 - +2026-01-13 00:23:29,123 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:23:29] "GET /api/strategies/notifications?limit=50&_t=1768235008806 HTTP/1.1" 200 - +2026-01-13 00:23:39,861 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:23:39] "GET /api/portfolio/positions?refresh=1&_t=1768235017169 HTTP/1.1" 200 - +2026-01-13 00:23:42,563 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:23:42] "GET /api/portfolio/summary?refresh=1&_t=1768235017169 HTTP/1.1" 200 - +2026-01-13 00:23:48,527 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:23:48] "GET /api/strategies?_t=1768235028144 HTTP/1.1" 200 - +2026-01-13 00:23:50,759 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:23:50] "GET /api/strategies/equityCurve?id=14&_t=1768235030748 HTTP/1.1" 200 - +2026-01-13 00:23:51,110 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:23:51] "GET /api/strategies/equityCurve?id=14&_t=1768235030748 HTTP/1.1" 200 - +2026-01-13 00:23:51,110 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:23:51] "GET /api/strategies/positions?id=14&_t=1768235030752 HTTP/1.1" 200 - +2026-01-13 00:23:52,620 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:23:52] "GET /api/strategies/positions?id=13&_t=1768235032292 HTTP/1.1" 200 - +2026-01-13 00:23:52,621 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:23:52] "GET /api/strategies/equityCurve?id=13&_t=1768235032291 HTTP/1.1" 200 - +2026-01-13 00:23:52,621 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:23:52] "GET /api/strategies/equityCurve?id=13&_t=1768235032291 HTTP/1.1" 200 - +2026-01-13 00:23:53,279 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:23:53] "GET /api/strategies/equityCurve?id=12&_t=1768235033268 HTTP/1.1" 200 - +2026-01-13 00:23:53,582 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:23:53] "GET /api/strategies/positions?id=12&_t=1768235033269 HTTP/1.1" 200 - +2026-01-13 00:23:53,582 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:23:53] "GET /api/strategies/equityCurve?id=12&_t=1768235033268 HTTP/1.1" 200 - +2026-01-13 00:23:54,504 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:23:54] "GET /api/strategies/positions?id=11&_t=1768235034177 HTTP/1.1" 200 - +2026-01-13 00:23:54,505 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:23:54] "GET /api/strategies/equityCurve?id=11&_t=1768235034176 HTTP/1.1" 200 - +2026-01-13 00:23:54,505 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:23:54] "GET /api/strategies/equityCurve?id=11&_t=1768235034176 HTTP/1.1" 200 - +2026-01-13 00:23:55,012 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:23:55] "GET /api/strategies/equityCurve?id=10&_t=1768235034998 HTTP/1.1" 200 - +2026-01-13 00:23:55,321 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:23:55] "GET /api/strategies/positions?id=10&_t=1768235034999 HTTP/1.1" 200 - +2026-01-13 00:23:55,321 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:23:55] "GET /api/strategies/equityCurve?id=10&_t=1768235034998 HTTP/1.1" 200 - +2026-01-13 00:23:56,921 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:23:56] "GET /api/market/types?_t=1768235036595 HTTP/1.1" 200 - +2026-01-13 00:23:56,923 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:23:56] "GET /api/user/info?_t=1768235036595 HTTP/1.1" 200 - +2026-01-13 00:23:56,926 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:23:56] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 00:23:56,928 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:23:56] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 00:23:57,171 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:23:57] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 00:23:57,250 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=500 +2026-01-13 00:23:57,251 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:23:57] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 00:23:57,989 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:23:57] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-13 00:23:58,806 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:23:58] "GET /api/strategies/notifications?limit=50&_t=1768235038796 HTTP/1.1" 200 - +2026-01-13 00:24:00,614 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:24:00] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 00:24:00,709 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:24:00] "GET /api/user/info?_t=1768235040579 HTTP/1.1" 200 - +2026-01-13 00:24:00,915 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:24:00] "GET /api/market/config?_t=1768235040579 HTTP/1.1" 200 - +2026-01-13 00:24:00,924 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 00:24:00,925 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 00:24:00,925 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 00:24:00,991 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:24:00] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 00:24:01,038 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:24:01] "GET /api/market/types?_t=1768235040989 HTTP/1.1" 200 - +2026-01-13 00:24:03,420 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:24:03] "GET /api/strategies?_t=1768235043001 HTTP/1.1" 200 - +2026-01-13 00:24:03,483 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:24:03] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-13 00:24:04,464 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:24:04] "GET /api/dashboard/summary?_t=1768235044337 HTTP/1.1" 200 - +2026-01-13 00:24:04,520 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:24:04] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-13 00:24:04,656 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:24:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768235044337 HTTP/1.1" 200 - +2026-01-13 00:24:04,657 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:24:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768235044337 HTTP/1.1" 200 - +2026-01-13 00:24:09,644 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:24:09] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235049329 HTTP/1.1" 200 - +2026-01-13 00:24:10,666 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:24:10] "GET /api/strategies?_t=1768235050493 HTTP/1.1" 200 - +2026-01-13 00:24:11,855 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:24:11] "GET /api/strategies/positions?id=14&_t=1768235051534 HTTP/1.1" 200 - +2026-01-13 00:24:11,856 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:24:11] "GET /api/strategies/equityCurve?id=14&_t=1768235051531 HTTP/1.1" 200 - +2026-01-13 00:24:11,872 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:24:11] "GET /api/strategies/equityCurve?id=14&_t=1768235051531 HTTP/1.1" 200 - +2026-01-13 00:24:16,537 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:24:16] "GET /api/strategies/positions?id=14&_t=1768235056529 HTTP/1.1" 200 - +2026-01-13 00:24:18,953 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:24:18] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 00:24:18,955 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:24:18] "GET /api/credentials/list?user_id=1&_t=1768235058631 HTTP/1.1" 200 - +2026-01-13 00:24:18,969 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:24:18] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 00:24:21,539 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:24:21] "GET /api/strategies/positions?id=14&_t=1768235061529 HTTP/1.1" 200 - +2026-01-13 00:24:26,841 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:24:26] "GET /api/strategies/positions?id=14&_t=1768235066528 HTTP/1.1" 200 - +2026-01-13 00:24:28,804 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:24:28] "GET /api/strategies/notifications?limit=50&_t=1768235068795 HTTP/1.1" 200 - +2026-01-13 00:24:31,853 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:24:31] "GET /api/strategies/positions?id=14&_t=1768235071536 HTTP/1.1" 200 - +2026-01-13 00:24:36,536 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:24:36] "GET /api/strategies/positions?id=14&_t=1768235076529 HTTP/1.1" 200 - +2026-01-13 00:24:41,849 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:24:41] "GET /api/strategies/equityCurve?id=14&_t=1768235081527 HTTP/1.1" 200 - +2026-01-13 00:24:41,850 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:24:41] "GET /api/strategies/positions?id=14&_t=1768235081528 HTTP/1.1" 200 - +2026-01-13 00:24:46,654 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:24:46] "GET /api/strategies/positions?id=14&_t=1768235086531 HTTP/1.1" 200 - +2026-01-13 00:24:51,851 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:24:51] "GET /api/strategies/positions?id=14&_t=1768235091529 HTTP/1.1" 200 - +2026-01-13 00:24:56,539 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:24:56] "GET /api/strategies/positions?id=14&_t=1768235096531 HTTP/1.1" 200 - +2026-01-13 00:24:59,122 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:24:59] "GET /api/strategies/notifications?limit=50&_t=1768235098805 HTTP/1.1" 200 - +2026-01-13 00:25:01,537 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:25:01] "GET /api/strategies/positions?id=14&_t=1768235101529 HTTP/1.1" 200 - +2026-01-13 00:25:06,845 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:25:06] "GET /api/strategies/positions?id=14&_t=1768235106527 HTTP/1.1" 200 - +2026-01-13 00:25:11,528 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:25:11] "GET /api/strategies/equityCurve?id=14&_t=1768235111519 HTTP/1.1" 200 - +2026-01-13 00:25:11,941 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:25:11] "GET /api/strategies/positions?id=14&_t=1768235111531 HTTP/1.1" 200 - +2026-01-13 00:25:16,548 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:25:16] "GET /api/strategies/positions?id=14&_t=1768235116540 HTTP/1.1" 200 - +2026-01-13 00:25:21,846 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:25:21] "GET /api/strategies/positions?id=14&_t=1768235121531 HTTP/1.1" 200 - +2026-01-13 00:25:23,322 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:25:23] "GET /api/credentials/get?id=4&user_id=1&_t=1768235123301 HTTP/1.1" 200 - +2026-01-13 00:25:26,356 - app.routes.strategy - INFO - Testing connection: exchange_id=binance +2026-01-13 00:25:26,356 - app.routes.strategy - INFO - API Key: 9E46G... (len=64) +2026-01-13 00:25:26,357 - app.routes.strategy - INFO - Secret Key: I5uDy... (len=64) +2026-01-13 00:25:26,623 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:25:26] "GET /api/strategies/positions?id=14&_t=1768235126531 HTTP/1.1" 200 - +2026-01-13 00:25:28,179 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:25:28] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2026-01-13 00:25:28,947 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:25:28] "GET /api/strategies/notifications?limit=50&_t=1768235128799 HTTP/1.1" 200 - +2026-01-13 00:25:31,840 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:25:31] "GET /api/strategies/positions?id=14&_t=1768235131527 HTTP/1.1" 200 - +2026-01-13 00:25:36,534 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:25:36] "GET /api/strategies/positions?id=14&_t=1768235136527 HTTP/1.1" 200 - +2026-01-13 00:25:41,833 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:25:41] "GET /api/strategies/equityCurve?id=14&_t=1768235141518 HTTP/1.1" 200 - +2026-01-13 00:25:41,841 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:25:41] "GET /api/strategies/positions?id=14&_t=1768235141530 HTTP/1.1" 200 - +2026-01-13 00:25:44,555 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:25:44] "GET /api/credentials/get?id=3&user_id=1&_t=1768235144539 HTTP/1.1" 200 - +2026-01-13 00:25:46,777 - app.routes.strategy - INFO - Testing connection: exchange_id=bitget +2026-01-13 00:25:46,777 - app.routes.strategy - INFO - API Key: bg_87... (len=35) +2026-01-13 00:25:46,777 - app.routes.strategy - INFO - Secret Key: 3b7ee... (len=64) +2026-01-13 00:25:46,841 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:25:46] "GET /api/strategies/positions?id=14&_t=1768235146527 HTTP/1.1" 200 - +2026-01-13 00:25:48,697 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:25:48] "POST /api/strategies/test-connection HTTP/1.1" 200 - +2026-01-13 00:25:49,922 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:25:49] "PUT /api/strategies/update?id=14 HTTP/1.1" 200 - +2026-01-13 00:25:50,289 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:25:50] "GET /api/strategies?_t=1768235149955 HTTP/1.1" 200 - +2026-01-13 00:25:51,543 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:25:51] "GET /api/strategies/positions?id=14&_t=1768235151532 HTTP/1.1" 200 - +2026-01-13 00:25:52,544 - app.services.trading_executor - INFO - Strategy 14 loop starting +2026-01-13 00:25:52,544 - app.services.trading_executor - INFO - Strategy 14 started +2026-01-13 00:25:52,545 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:25:52] "POST /api/strategies/start?id=14 HTTP/1.1" 200 - +2026-01-13 00:25:52,546 - app.services.trading_executor - INFO - Strategy 14 derivatives trading; normalize market_type to: swap +2026-01-13 00:25:52,674 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:25:52] "GET /api/strategies?_t=1768235152575 HTTP/1.1" 200 - +2026-01-13 00:25:53,069 - app.services.trading_executor - INFO - ็ญ–็•ฅ 14 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-13 00:25:53,082 - app.services.trading_executor - INFO - Strategy 14 initialized; pending_signals=0 +2026-01-13 00:25:56,536 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:25:56] "GET /api/strategies/positions?id=14&_t=1768235156527 HTTP/1.1" 200 - +2026-01-13 00:25:59,153 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:25:59] "GET /api/strategies/notifications?limit=50&_t=1768235158798 HTTP/1.1" 200 - +2026-01-13 00:26:01,538 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:26:01] "GET /api/strategies/positions?id=14&_t=1768235161527 HTTP/1.1" 200 - +2026-01-13 00:26:02,560 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:26:02] "GET /api/strategies/trades?id=14&_t=1768235162237 HTTP/1.1" 200 - +2026-01-13 00:26:06,540 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:26:06] "GET /api/strategies/positions?id=14&_t=1768235166532 HTTP/1.1" 200 - +2026-01-13 00:26:11,835 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:26:11] "GET /api/strategies/equityCurve?id=14&_t=1768235171519 HTTP/1.1" 200 - +2026-01-13 00:26:11,842 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:26:11] "GET /api/strategies/positions?id=14&_t=1768235171532 HTTP/1.1" 200 - +2026-01-13 00:26:16,541 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:26:16] "GET /api/strategies/positions?id=14&_t=1768235176532 HTTP/1.1" 200 - +2026-01-13 00:26:21,993 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:26:21] "GET /api/strategies/positions?id=14&_t=1768235181532 HTTP/1.1" 200 - +2026-01-13 00:26:27,293 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:26:27] "GET /api/strategies/positions?id=14&_t=1768235187281 HTTP/1.1" 200 - +2026-01-13 00:26:29,600 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:26:29] "GET /api/strategies/notifications?limit=50&_t=1768235189279 HTTP/1.1" 200 - +2026-01-13 00:26:32,296 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:26:32] "GET /api/strategies/positions?id=14&_t=1768235192288 HTTP/1.1" 200 - +2026-01-13 00:26:37,591 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:26:37] "GET /api/strategies/positions?id=14&_t=1768235197280 HTTP/1.1" 200 - +2026-01-13 00:26:42,296 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:26:42] "GET /api/strategies/equityCurve?id=14&_t=1768235202287 HTTP/1.1" 200 - +2026-01-13 00:26:42,604 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:26:42] "GET /api/strategies/positions?id=14&_t=1768235202287 HTTP/1.1" 200 - +2026-01-13 00:26:47,625 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:26:47] "GET /api/strategies/positions?id=14&_t=1768235207283 HTTP/1.1" 200 - +2026-01-13 00:26:52,299 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:26:52] "GET /api/strategies/positions?id=14&_t=1768235212291 HTTP/1.1" 200 - +2026-01-13 00:26:57,601 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:26:57] "GET /api/strategies/positions?id=14&_t=1768235217288 HTTP/1.1" 200 - +2026-01-13 00:26:59,345 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:26:59] "GET /api/strategies/notifications?limit=50&_t=1768235219293 HTTP/1.1" 200 - +2026-01-13 00:27:02,610 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:27:02] "GET /api/strategies/positions?id=14&_t=1768235222293 HTTP/1.1" 200 - +2026-01-13 00:27:07,302 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:27:07] "GET /api/strategies/positions?id=14&_t=1768235227288 HTTP/1.1" 200 - +2026-01-13 00:27:12,720 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:27:12] "GET /api/strategies/positions?id=14&_t=1768235232286 HTTP/1.1" 200 - +2026-01-13 00:27:12,721 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:27:12] "GET /api/strategies/equityCurve?id=14&_t=1768235232286 HTTP/1.1" 200 - +2026-01-13 00:27:17,294 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:27:17] "GET /api/strategies/positions?id=14&_t=1768235237286 HTTP/1.1" 200 - +2026-01-13 00:27:48,600 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:27:48] "GET /api/strategies/positions?id=14&_t=1768235268283 HTTP/1.1" 200 - +2026-01-13 00:27:48,600 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:27:48] "GET /api/strategies/notifications?limit=50&_t=1768235268284 HTTP/1.1" 200 - +2026-01-13 00:27:48,602 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:27:48] "GET /api/strategies/equityCurve?id=14&_t=1768235268284 HTTP/1.1" 200 - +2026-01-13 00:27:51,725 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:27:51] "GET /api/strategies/positions?id=14&_t=1768235271699 HTTP/1.1" 200 - +2026-01-13 00:27:53,662 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:27:53] "GET /api/strategies?_t=1768235273352 HTTP/1.1" 200 - +2026-01-13 00:27:54,784 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:27:54] "GET /api/strategies/equityCurve?id=14&_t=1768235274769 HTTP/1.1" 200 - +2026-01-13 00:27:55,134 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:27:55] "GET /api/strategies/positions?id=14&_t=1768235274771 HTTP/1.1" 200 - +2026-01-13 00:27:55,134 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:27:55] "GET /api/strategies/equityCurve?id=14&_t=1768235274769 HTTP/1.1" 200 - +2026-01-13 00:27:56,360 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:27:56] "GET /api/strategies/trades?id=14&_t=1768235276035 HTTP/1.1" 200 - +2026-01-13 00:27:58,810 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:27:58] "GET /api/strategies/notifications?limit=50&_t=1768235278799 HTTP/1.1" 200 - +2026-01-13 00:28:00,599 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:28:00] "GET /api/strategies/positions?id=14&_t=1768235280282 HTTP/1.1" 200 - +2026-01-13 00:28:01,334 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:28:01] "GET /api/strategies/notifications?limit=50&_t=1768235281321 HTTP/1.1" 200 - +2026-01-13 00:28:04,664 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:28:04] "GET /api/portfolio/summary?refresh=1&_t=1768235281345 HTTP/1.1" 200 - +2026-01-13 00:28:04,777 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:28:04] "GET /api/strategies/positions?id=14&_t=1768235284770 HTTP/1.1" 200 - +2026-01-13 00:28:07,376 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:28:07] "GET /api/portfolio/positions?refresh=1&_t=1768235281345 HTTP/1.1" 200 - +2026-01-13 00:28:07,382 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:28:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768235287061 HTTP/1.1" 200 - +2026-01-13 00:28:07,383 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:28:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768235287061 HTTP/1.1" 200 - +2026-01-13 00:28:07,390 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:28:07] "GET /api/dashboard/summary?_t=1768235287061 HTTP/1.1" 200 - +2026-01-13 00:28:12,446 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:28:12] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235292038 HTTP/1.1" 200 - +2026-01-13 00:28:17,050 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:28:17] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235297042 HTTP/1.1" 200 - +2026-01-13 00:28:22,050 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:28:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235302042 HTTP/1.1" 200 - +2026-01-13 00:28:23,351 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:28:23] "GET /api/portfolio/positions?refresh=1&_t=1768235300317 HTTP/1.1" 200 - +2026-01-13 00:28:26,045 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:28:26] "GET /api/portfolio/summary?refresh=1&_t=1768235300317 HTTP/1.1" 200 - +2026-01-13 00:28:26,601 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:28:26] "GET /api/strategies/notifications?limit=50&_t=1768235306284 HTTP/1.1" 200 - +2026-01-13 00:28:27,059 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:28:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235307050 HTTP/1.1" 200 - +2026-01-13 00:28:29,119 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:28:29] "GET /api/strategies/notifications?limit=50&_t=1768235308803 HTTP/1.1" 200 - +2026-01-13 00:28:32,049 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:28:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235312040 HTTP/1.1" 200 - +2026-01-13 00:28:37,362 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:28:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235317048 HTTP/1.1" 200 - +2026-01-13 00:28:42,044 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:28:42] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235322036 HTTP/1.1" 200 - +2026-01-13 00:28:47,355 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:28:47] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235327040 HTTP/1.1" 200 - +2026-01-13 00:28:52,370 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:28:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235332047 HTTP/1.1" 200 - +2026-01-13 00:28:53,032 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:28:53] "GET /api/portfolio/positions?refresh=1&_t=1768235330333 HTTP/1.1" 200 - +2026-01-13 00:28:55,744 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:28:55] "GET /api/portfolio/summary?refresh=1&_t=1768235330333 HTTP/1.1" 200 - +2026-01-13 00:28:56,707 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:28:56] "GET /api/strategies/notifications?limit=50&_t=1768235336290 HTTP/1.1" 200 - +2026-01-13 00:28:57,053 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:28:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235337043 HTTP/1.1" 200 - +2026-01-13 00:28:59,115 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:28:59] "GET /api/strategies/notifications?limit=50&_t=1768235338798 HTTP/1.1" 200 - +2026-01-13 00:29:02,049 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:29:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235342039 HTTP/1.1" 200 - +2026-01-13 00:29:07,355 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:29:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235347040 HTTP/1.1" 200 - +2026-01-13 00:29:12,057 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:29:12] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235352048 HTTP/1.1" 200 - +2026-01-13 00:29:17,355 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:29:17] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235357040 HTTP/1.1" 200 - +2026-01-13 00:29:22,108 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:29:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235362049 HTTP/1.1" 200 - +2026-01-13 00:29:27,364 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:29:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235367047 HTTP/1.1" 200 - +2026-01-13 00:29:28,812 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:29:28] "GET /api/strategies/notifications?limit=50&_t=1768235368804 HTTP/1.1" 200 - +2026-01-13 00:29:32,366 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:29:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235372051 HTTP/1.1" 200 - +2026-01-13 00:29:37,048 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:29:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235377039 HTTP/1.1" 200 - +2026-01-13 00:29:42,353 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:29:42] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235382038 HTTP/1.1" 200 - +2026-01-13 00:29:47,165 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:29:47] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235387045 HTTP/1.1" 200 - +2026-01-13 00:29:48,646 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:29:48] "GET /api/strategies/notifications?limit=50&_t=1768235388330 HTTP/1.1" 200 - +2026-01-13 00:29:51,329 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:29:51] "GET /api/portfolio/positions?refresh=1&_t=1768235388329 HTTP/1.1" 200 - +2026-01-13 00:29:52,049 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:29:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235392042 HTTP/1.1" 200 - +2026-01-13 00:29:54,044 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:29:54] "GET /api/portfolio/summary?refresh=1&_t=1768235388329 HTTP/1.1" 200 - +2026-01-13 00:29:57,374 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:29:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235397051 HTTP/1.1" 200 - +2026-01-13 00:29:58,806 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:29:58] "GET /api/strategies/notifications?limit=50&_t=1768235398799 HTTP/1.1" 200 - +2026-01-13 00:30:02,358 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:30:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235402040 HTTP/1.1" 200 - +2026-01-13 00:30:07,053 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:30:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235407044 HTTP/1.1" 200 - +2026-01-13 00:30:12,363 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:30:12] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235412046 HTTP/1.1" 200 - +2026-01-13 00:30:17,054 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:30:17] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235417044 HTTP/1.1" 200 - +2026-01-13 00:30:22,352 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:30:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235422037 HTTP/1.1" 200 - +2026-01-13 00:30:27,055 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:30:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235427047 HTTP/1.1" 200 - +2026-01-13 00:30:29,124 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:30:29] "GET /api/strategies/notifications?limit=50&_t=1768235428807 HTTP/1.1" 200 - +2026-01-13 00:30:32,046 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:30:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235432038 HTTP/1.1" 200 - +2026-01-13 00:30:37,361 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:30:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235437049 HTTP/1.1" 200 - +2026-01-13 00:30:42,142 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:30:42] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235442051 HTTP/1.1" 200 - +2026-01-13 00:30:47,362 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:30:47] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235447048 HTTP/1.1" 200 - +2026-01-13 00:30:48,295 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:30:48] "GET /api/strategies/notifications?limit=50&_t=1768235448284 HTTP/1.1" 200 - +2026-01-13 00:30:51,331 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:30:51] "GET /api/portfolio/summary?refresh=1&_t=1768235448324 HTTP/1.1" 200 - +2026-01-13 00:30:52,058 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:30:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235452050 HTTP/1.1" 200 - +2026-01-13 00:30:54,028 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:30:54] "GET /api/portfolio/positions?refresh=1&_t=1768235448324 HTTP/1.1" 200 - +2026-01-13 00:30:57,351 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:30:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235457036 HTTP/1.1" 200 - +2026-01-13 00:30:58,815 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:30:58] "GET /api/strategies/notifications?limit=50&_t=1768235458807 HTTP/1.1" 200 - +2026-01-13 00:31:02,354 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:31:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235462040 HTTP/1.1" 200 - +2026-01-13 00:31:07,050 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:31:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235467040 HTTP/1.1" 200 - +2026-01-13 00:31:12,361 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:31:12] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235472046 HTTP/1.1" 200 - +2026-01-13 00:31:17,052 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:31:17] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235477044 HTTP/1.1" 200 - +2026-01-13 00:31:22,355 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:31:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235482037 HTTP/1.1" 200 - +2026-01-13 00:31:27,056 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:31:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235487048 HTTP/1.1" 200 - +2026-01-13 00:31:29,112 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:31:29] "GET /api/strategies/notifications?limit=50&_t=1768235488798 HTTP/1.1" 200 - +2026-01-13 00:31:32,048 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:31:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235492039 HTTP/1.1" 200 - +2026-01-13 00:31:37,352 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:31:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235497038 HTTP/1.1" 200 - +2026-01-13 00:31:42,053 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:31:42] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235502044 HTTP/1.1" 200 - +2026-01-13 00:31:47,368 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:31:47] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235507050 HTTP/1.1" 200 - +2026-01-13 00:31:48,304 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:31:48] "GET /api/strategies/notifications?limit=50&_t=1768235508295 HTTP/1.1" 200 - +2026-01-13 00:31:51,349 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:31:51] "GET /api/portfolio/positions?refresh=1&_t=1768235508324 HTTP/1.1" 200 - +2026-01-13 00:31:52,050 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:31:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235512041 HTTP/1.1" 200 - +2026-01-13 00:31:54,043 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:31:54] "GET /api/portfolio/summary?refresh=1&_t=1768235508324 HTTP/1.1" 200 - +2026-01-13 00:31:57,355 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:31:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235517040 HTTP/1.1" 200 - +2026-01-13 00:31:58,818 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:31:58] "GET /api/strategies/notifications?limit=50&_t=1768235518810 HTTP/1.1" 200 - +2026-01-13 00:32:02,398 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:32:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235522049 HTTP/1.1" 200 - +2026-01-13 00:32:07,052 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:32:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235527044 HTTP/1.1" 200 - +2026-01-13 00:32:12,367 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:32:12] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235532049 HTTP/1.1" 200 - +2026-01-13 00:32:17,053 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:32:17] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235537044 HTTP/1.1" 200 - +2026-01-13 00:32:22,378 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:32:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235542046 HTTP/1.1" 200 - +2026-01-13 00:32:27,057 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:32:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235547049 HTTP/1.1" 200 - +2026-01-13 00:32:29,113 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:32:29] "GET /api/strategies/notifications?limit=50&_t=1768235548797 HTTP/1.1" 200 - +2026-01-13 00:32:32,205 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:32:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235552042 HTTP/1.1" 200 - +2026-01-13 00:32:37,358 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:32:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235557042 HTTP/1.1" 200 - +2026-01-13 00:32:42,195 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:32:42] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235562041 HTTP/1.1" 200 - +2026-01-13 00:32:47,362 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:32:47] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235567044 HTTP/1.1" 200 - +2026-01-13 00:32:48,299 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:32:48] "GET /api/strategies/notifications?limit=50&_t=1768235568285 HTTP/1.1" 200 - +2026-01-13 00:32:51,324 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:32:51] "GET /api/portfolio/positions?refresh=1&_t=1768235568317 HTTP/1.1" 200 - +2026-01-13 00:32:52,295 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:32:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235572287 HTTP/1.1" 200 - +2026-01-13 00:32:54,016 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:32:54] "GET /api/portfolio/summary?refresh=1&_t=1768235568317 HTTP/1.1" 200 - +2026-01-13 00:32:57,596 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:32:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235577284 HTTP/1.1" 200 - +2026-01-13 00:32:59,298 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:32:59] "GET /api/strategies/notifications?limit=50&_t=1768235579290 HTTP/1.1" 200 - +2026-01-13 00:33:02,602 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:33:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235582283 HTTP/1.1" 200 - +2026-01-13 00:33:07,303 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:33:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235587290 HTTP/1.1" 200 - +2026-01-13 00:33:12,667 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:33:12] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235592286 HTTP/1.1" 200 - +2026-01-13 00:33:17,304 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:33:17] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235597292 HTTP/1.1" 200 - +2026-01-13 00:33:22,600 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:33:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235602290 HTTP/1.1" 200 - +2026-01-13 00:33:27,293 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:33:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235607284 HTTP/1.1" 200 - +2026-01-13 00:33:29,686 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:33:29] "GET /api/strategies/notifications?limit=50&_t=1768235609288 HTTP/1.1" 200 - +2026-01-13 00:33:32,309 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:33:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235612288 HTTP/1.1" 200 - +2026-01-13 00:33:37,607 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:33:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235617290 HTTP/1.1" 200 - +2026-01-13 00:33:42,300 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:33:42] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235622290 HTTP/1.1" 200 - +2026-01-13 00:33:47,651 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:33:47] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235627280 HTTP/1.1" 200 - +2026-01-13 00:33:48,301 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:33:48] "GET /api/strategies/notifications?limit=50&_t=1768235628290 HTTP/1.1" 200 - +2026-01-13 00:33:58,664 - app.routes.portfolio - WARNING - Price fetch failed for USStock:SPCE: +2026-01-13 00:33:58,665 - app.data_sources.us_stock - WARNING - Finnhub quote failed for SPCE: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Read timed out. (read timeout=10) +2026-01-13 00:33:58,959 - app.data_sources.us_stock - WARNING - Finnhub quote failed for GD: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Read timed out. (read timeout=10) +2026-01-13 00:33:59,633 - app.data_sources.us_stock - WARNING - Finnhub quote failed for OMDA: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Read timed out. (read timeout=10) +2026-01-13 00:34:08,675 - app.routes.portfolio - WARNING - Price fetch failed for USStock:OMDA: +2026-01-13 00:34:18,690 - app.routes.portfolio - WARNING - Price fetch failed for USStock:GD: +2026-01-13 00:34:23,625 - app.services.trading_executor - WARNING - Failed to fetch price: okx GET https://www.okx.com/api/v5/market/ticker?instId=ETH-USDT +2026-01-13 00:34:23,625 - app.services.trading_executor - WARNING - Strategy 14 failed to fetch current price +2026-01-13 00:34:28,700 - app.routes.portfolio - WARNING - Price fetch failed for USStock:INTC: +2026-01-13 00:34:34,024 - app.services.trading_executor - WARNING - Failed to fetch price: okx GET https://www.okx.com/api/v5/market/ticker?instId=ETH-USDT +2026-01-13 00:34:34,024 - app.services.trading_executor - WARNING - Strategy 14 failed to fetch current price +2026-01-13 00:34:38,712 - app.routes.portfolio - WARNING - Price fetch failed for USStock:MSFT: +2026-01-13 00:34:41,809 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:34:41] "GET /api/portfolio/positions?refresh=1&_t=1768235628326 HTTP/1.1" 200 - +2026-01-13 00:34:44,522 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:34:44] "GET /api/portfolio/summary?refresh=1&_t=1768235628326 HTTP/1.1" 200 - +2026-01-13 00:34:48,296 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:34:48] "GET /api/strategies/notifications?limit=50&_t=1768235688283 HTTP/1.1" 200 - +2026-01-13 00:34:48,683 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:34:48] "GET /api/strategies/notifications?limit=50&_t=1768235688284 HTTP/1.1" 200 - +2026-01-13 00:34:48,684 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:34:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235688284 HTTP/1.1" 200 - +2026-01-13 00:34:51,419 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:34:51] "GET /api/portfolio/positions?refresh=1&_t=1768235688312 HTTP/1.1" 200 - +2026-01-13 00:34:54,158 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:34:54] "GET /api/portfolio/summary?refresh=1&_t=1768235688312 HTTP/1.1" 200 - +2026-01-13 00:35:48,656 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:35:48] "GET /api/strategies/notifications?limit=50&_t=1768235748282 HTTP/1.1" 200 - +2026-01-13 00:35:48,658 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:35:48] "GET /api/strategies/notifications?limit=50&_t=1768235748281 HTTP/1.1" 200 - +2026-01-13 00:35:48,659 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:35:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235748281 HTTP/1.1" 200 - +2026-01-13 00:35:51,360 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:35:51] "GET /api/portfolio/summary?refresh=1&_t=1768235748308 HTTP/1.1" 200 - +2026-01-13 00:35:54,068 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:35:54] "GET /api/portfolio/positions?refresh=1&_t=1768235748308 HTTP/1.1" 200 - +2026-01-13 00:36:48,299 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:36:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235808290 HTTP/1.1" 200 - +2026-01-13 00:36:48,608 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:36:48] "GET /api/strategies/notifications?limit=50&_t=1768235808290 HTTP/1.1" 200 - +2026-01-13 00:36:48,608 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:36:48] "GET /api/strategies/notifications?limit=50&_t=1768235808290 HTTP/1.1" 200 - +2026-01-13 00:36:54,355 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:36:54] "GET /api/portfolio/positions?refresh=1&_t=1768235808318 HTTP/1.1" 200 - +2026-01-13 00:36:57,206 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:36:57] "GET /api/portfolio/summary?refresh=1&_t=1768235808318 HTTP/1.1" 200 - +2026-01-13 00:37:48,600 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:37:48] "GET /api/strategies/notifications?limit=50&_t=1768235868283 HTTP/1.1" 200 - +2026-01-13 00:37:48,601 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:37:48] "GET /api/strategies/notifications?limit=50&_t=1768235868285 HTTP/1.1" 200 - +2026-01-13 00:37:48,602 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:37:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235868284 HTTP/1.1" 200 - +2026-01-13 00:37:51,391 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:37:51] "GET /api/portfolio/positions?refresh=1&_t=1768235868314 HTTP/1.1" 200 - +2026-01-13 00:37:54,005 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:37:54] "GET /api/portfolio/summary?refresh=1&_t=1768235868314 HTTP/1.1" 200 - +2026-01-13 00:38:48,305 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:38:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235928295 HTTP/1.1" 200 - +2026-01-13 00:38:48,614 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:38:48] "GET /api/strategies/notifications?limit=50&_t=1768235928295 HTTP/1.1" 200 - +2026-01-13 00:38:48,615 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:38:48] "GET /api/strategies/notifications?limit=50&_t=1768235928294 HTTP/1.1" 200 - +2026-01-13 00:38:51,359 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:38:51] "GET /api/portfolio/positions?refresh=1&_t=1768235928322 HTTP/1.1" 200 - +2026-01-13 00:38:54,088 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:38:54] "GET /api/portfolio/summary?refresh=1&_t=1768235928322 HTTP/1.1" 200 - +2026-01-13 00:39:48,601 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:39:48] "GET /api/strategies/notifications?limit=50&_t=1768235988282 HTTP/1.1" 200 - +2026-01-13 00:39:48,602 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:39:48] "GET /api/strategies/notifications?limit=50&_t=1768235988283 HTTP/1.1" 200 - +2026-01-13 00:39:48,603 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:39:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768235988282 HTTP/1.1" 200 - +2026-01-13 00:39:51,383 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:39:51] "GET /api/portfolio/positions?refresh=1&_t=1768235988308 HTTP/1.1" 200 - +2026-01-13 00:39:54,010 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:39:54] "GET /api/portfolio/summary?refresh=1&_t=1768235988308 HTTP/1.1" 200 - +2026-01-13 00:40:48,289 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:40:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768236048280 HTTP/1.1" 200 - +2026-01-13 00:40:48,595 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:40:48] "GET /api/strategies/notifications?limit=50&_t=1768236048282 HTTP/1.1" 200 - +2026-01-13 00:40:48,604 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:40:48] "GET /api/strategies/notifications?limit=50&_t=1768236048294 HTTP/1.1" 200 - +2026-01-13 00:40:51,321 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:40:51] "GET /api/portfolio/positions?refresh=1&_t=1768236048324 HTTP/1.1" 200 - +2026-01-13 00:40:54,041 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:40:54] "GET /api/portfolio/summary?refresh=1&_t=1768236048325 HTTP/1.1" 200 - +2026-01-13 00:41:48,609 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:41:48] "GET /api/strategies/notifications?limit=50&_t=1768236108280 HTTP/1.1" 200 - +2026-01-13 00:41:48,609 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:41:48] "GET /api/strategies/notifications?limit=50&_t=1768236108281 HTTP/1.1" 200 - +2026-01-13 00:41:48,610 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:41:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768236108280 HTTP/1.1" 200 - +2026-01-13 00:41:51,456 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:41:51] "GET /api/portfolio/positions?refresh=1&_t=1768236108309 HTTP/1.1" 200 - +2026-01-13 00:41:54,025 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:41:54] "GET /api/portfolio/summary?refresh=1&_t=1768236108309 HTTP/1.1" 200 - +2026-01-13 00:42:48,292 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:42:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768236168282 HTTP/1.1" 200 - +2026-01-13 00:42:48,598 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:42:48] "GET /api/strategies/notifications?limit=50&_t=1768236168282 HTTP/1.1" 200 - +2026-01-13 00:42:48,598 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:42:48] "GET /api/strategies/notifications?limit=50&_t=1768236168282 HTTP/1.1" 200 - +2026-01-13 00:42:51,318 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:42:51] "GET /api/portfolio/positions?refresh=1&_t=1768236168310 HTTP/1.1" 200 - +2026-01-13 00:42:54,114 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:42:54] "GET /api/portfolio/summary?refresh=1&_t=1768236168310 HTTP/1.1" 200 - +2026-01-13 00:43:48,601 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:43:48] "GET /api/strategies/notifications?limit=50&_t=1768236228280 HTTP/1.1" 200 - +2026-01-13 00:43:48,602 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:43:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768236228280 HTTP/1.1" 200 - +2026-01-13 00:43:48,607 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:43:48] "GET /api/strategies/notifications?limit=50&_t=1768236228281 HTTP/1.1" 200 - +2026-01-13 00:43:51,356 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:43:51] "GET /api/portfolio/positions?refresh=1&_t=1768236228306 HTTP/1.1" 200 - +2026-01-13 00:43:54,080 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:43:54] "GET /api/portfolio/summary?refresh=1&_t=1768236228306 HTTP/1.1" 200 - +2026-01-13 00:44:48,313 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:44:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768236288290 HTTP/1.1" 200 - +2026-01-13 00:44:48,647 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:44:48] "GET /api/strategies/notifications?limit=50&_t=1768236288292 HTTP/1.1" 200 - +2026-01-13 00:44:48,648 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:44:48] "GET /api/strategies/notifications?limit=50&_t=1768236288293 HTTP/1.1" 200 - +2026-01-13 00:44:51,391 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:44:51] "GET /api/portfolio/positions?refresh=1&_t=1768236288331 HTTP/1.1" 200 - +2026-01-13 00:44:54,087 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:44:54] "GET /api/portfolio/summary?refresh=1&_t=1768236288331 HTTP/1.1" 200 - +2026-01-13 00:45:48,598 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:45:48] "GET /api/strategies/notifications?limit=50&_t=1768236348283 HTTP/1.1" 200 - +2026-01-13 00:45:48,598 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:45:48] "GET /api/strategies/notifications?limit=50&_t=1768236348282 HTTP/1.1" 200 - +2026-01-13 00:45:48,599 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:45:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768236348282 HTTP/1.1" 200 - +2026-01-13 00:45:51,324 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:45:51] "GET /api/portfolio/summary?refresh=1&_t=1768236348314 HTTP/1.1" 200 - +2026-01-13 00:45:54,069 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:45:54] "GET /api/portfolio/positions?refresh=1&_t=1768236348314 HTTP/1.1" 200 - +2026-01-13 00:46:48,289 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:46:48] "GET /api/strategies/notifications?limit=50&_t=1768236408280 HTTP/1.1" 200 - +2026-01-13 00:46:48,594 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:46:48] "GET /api/strategies/notifications?limit=50&_t=1768236408280 HTTP/1.1" 200 - +2026-01-13 00:46:48,595 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:46:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768236408280 HTTP/1.1" 200 - +2026-01-13 00:46:51,335 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:46:51] "GET /api/portfolio/positions?refresh=1&_t=1768236408315 HTTP/1.1" 200 - +2026-01-13 00:46:54,032 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:46:54] "GET /api/portfolio/summary?refresh=1&_t=1768236408315 HTTP/1.1" 200 - +2026-01-13 00:47:48,616 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:47:48] "GET /api/strategies/notifications?limit=50&_t=1768236468289 HTTP/1.1" 200 - +2026-01-13 00:47:48,620 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:47:48] "GET /api/strategies/notifications?limit=50&_t=1768236468289 HTTP/1.1" 200 - +2026-01-13 00:47:48,621 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:47:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768236468289 HTTP/1.1" 200 - +2026-01-13 00:47:52,411 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:47:52] "GET /api/portfolio/summary?refresh=1&_t=1768236468324 HTTP/1.1" 200 - +2026-01-13 00:47:54,546 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:47:54] "GET /api/portfolio/positions?refresh=1&_t=1768236468324 HTTP/1.1" 200 - +2026-01-13 00:48:48,305 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:48:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768236528293 HTTP/1.1" 200 - +2026-01-13 00:48:48,609 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:48:48] "GET /api/strategies/notifications?limit=50&_t=1768236528293 HTTP/1.1" 200 - +2026-01-13 00:48:48,610 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:48:48] "GET /api/strategies/notifications?limit=50&_t=1768236528294 HTTP/1.1" 200 - +2026-01-13 00:48:51,278 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:48:51] "GET /api/portfolio/positions?refresh=1&_t=1768236528324 HTTP/1.1" 200 - +2026-01-13 00:48:54,393 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:48:54] "GET /api/portfolio/summary?refresh=1&_t=1768236528324 HTTP/1.1" 200 - +2026-01-13 00:49:48,606 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:49:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768236588289 HTTP/1.1" 200 - +2026-01-13 00:49:48,607 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:49:48] "GET /api/strategies/notifications?limit=50&_t=1768236588289 HTTP/1.1" 200 - +2026-01-13 00:49:48,614 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:49:48] "GET /api/strategies/notifications?limit=50&_t=1768236588289 HTTP/1.1" 200 - +2026-01-13 00:49:51,364 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:49:51] "GET /api/portfolio/positions?refresh=1&_t=1768236588324 HTTP/1.1" 200 - +2026-01-13 00:49:54,016 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:49:54] "GET /api/portfolio/summary?refresh=1&_t=1768236588324 HTTP/1.1" 200 - +2026-01-13 00:50:15,984 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:50:15] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768236615949 HTTP/1.1" 200 - +2026-01-13 00:50:16,292 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:50:16] "GET /api/strategies/notifications?limit=50&_t=1768236615970 HTTP/1.1" 200 - +2026-01-13 00:50:17,355 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:50:17] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768236617037 HTTP/1.1" 200 - +2026-01-13 00:50:17,618 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:50:17] "GET /api/market/types?_t=1768236617395 HTTP/1.1" 200 - +2026-01-13 00:50:17,719 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:50:17] "GET /api/portfolio/groups?_t=1768236617395 HTTP/1.1" 200 - +2026-01-13 00:50:17,719 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:50:17] "GET /api/portfolio/alerts?_t=1768236617395 HTTP/1.1" 200 - +2026-01-13 00:50:17,720 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:50:17] "GET /api/portfolio/monitors?_t=1768236617395 HTTP/1.1" 200 - +2026-01-13 00:50:20,122 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:50:20] "GET /api/portfolio/positions?_t=1768236617395 HTTP/1.1" 200 - +2026-01-13 00:50:22,824 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:50:22] "GET /api/portfolio/summary?_t=1768236617395 HTTP/1.1" 200 - +2026-01-13 00:50:29,124 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:50:29] "GET /api/strategies/notifications?limit=50&_t=1768236628807 HTTP/1.1" 200 - +2026-01-13 00:50:48,608 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:50:48] "GET /api/strategies/notifications?limit=50&_t=1768236648293 HTTP/1.1" 200 - +2026-01-13 00:50:50,159 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:50:50] "GET /api/portfolio/positions?refresh=1&_t=1768236647394 HTTP/1.1" 200 - +2026-01-13 00:50:52,859 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:50:52] "GET /api/portfolio/summary?refresh=1&_t=1768236647394 HTTP/1.1" 200 - +2026-01-13 00:50:55,540 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:50:55] "GET /api/portfolio/positions?refresh=1&_t=1768236648327 HTTP/1.1" 200 - +2026-01-13 00:50:58,164 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:50:58] "GET /api/portfolio/summary?refresh=1&_t=1768236648327 HTTP/1.1" 200 - +2026-01-13 00:50:59,109 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:50:59] "GET /api/strategies/notifications?limit=50&_t=1768236658796 HTTP/1.1" 200 - +2026-01-13 00:51:20,023 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:51:20] "GET /api/portfolio/positions?refresh=1&_t=1768236677395 HTTP/1.1" 200 - +2026-01-13 00:51:23,150 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:51:23] "GET /api/portfolio/summary?refresh=1&_t=1768236677395 HTTP/1.1" 200 - +2026-01-13 00:51:29,113 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:51:29] "GET /api/strategies/notifications?limit=50&_t=1768236688800 HTTP/1.1" 200 - +2026-01-13 00:51:48,601 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:51:48] "GET /api/strategies/notifications?limit=50&_t=1768236708284 HTTP/1.1" 200 - +2026-01-13 00:51:50,038 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:51:50] "GET /api/portfolio/positions?refresh=1&_t=1768236707403 HTTP/1.1" 200 - +2026-01-13 00:51:52,813 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:51:52] "GET /api/portfolio/summary?refresh=1&_t=1768236707403 HTTP/1.1" 200 - +2026-01-13 00:51:55,463 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:51:55] "GET /api/portfolio/positions?refresh=1&_t=1768236708322 HTTP/1.1" 200 - +2026-01-13 00:51:58,201 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:51:58] "GET /api/portfolio/summary?refresh=1&_t=1768236708322 HTTP/1.1" 200 - +2026-01-13 00:51:59,123 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:51:59] "GET /api/strategies/notifications?limit=50&_t=1768236718809 HTTP/1.1" 200 - +2026-01-13 00:52:21,012 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:52:21] "GET /api/portfolio/positions?refresh=1&_t=1768236737404 HTTP/1.1" 200 - +2026-01-13 00:52:23,136 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:52:23] "GET /api/portfolio/summary?refresh=1&_t=1768236737404 HTTP/1.1" 200 - +2026-01-13 00:52:29,114 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:52:29] "GET /api/strategies/notifications?limit=50&_t=1768236748796 HTTP/1.1" 200 - +2026-01-13 00:52:48,619 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:52:48] "GET /api/strategies/notifications?limit=50&_t=1768236768292 HTTP/1.1" 200 - +2026-01-13 00:52:50,129 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:52:50] "GET /api/portfolio/positions?refresh=1&_t=1768236767391 HTTP/1.1" 200 - +2026-01-13 00:52:52,797 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:52:52] "GET /api/portfolio/summary?refresh=1&_t=1768236767391 HTTP/1.1" 200 - +2026-01-13 00:52:55,418 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:52:55] "GET /api/portfolio/positions?refresh=1&_t=1768236768332 HTTP/1.1" 200 - +2026-01-13 00:52:58,142 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:52:58] "GET /api/portfolio/summary?refresh=1&_t=1768236768332 HTTP/1.1" 200 - +2026-01-13 00:52:59,113 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:52:59] "GET /api/strategies/notifications?limit=50&_t=1768236778797 HTTP/1.1" 200 - +2026-01-13 00:53:20,032 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:53:20] "GET /api/portfolio/positions?refresh=1&_t=1768236797397 HTTP/1.1" 200 - +2026-01-13 00:53:22,808 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:53:22] "GET /api/portfolio/summary?refresh=1&_t=1768236797397 HTTP/1.1" 200 - +2026-01-13 00:53:29,108 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:53:29] "GET /api/strategies/notifications?limit=50&_t=1768236808795 HTTP/1.1" 200 - +2026-01-13 00:53:48,621 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:53:48] "GET /api/strategies/notifications?limit=50&_t=1768236828292 HTTP/1.1" 200 - +2026-01-13 00:53:50,057 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:53:50] "GET /api/portfolio/positions?refresh=1&_t=1768236827394 HTTP/1.1" 200 - +2026-01-13 00:53:52,990 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:53:52] "GET /api/portfolio/summary?refresh=1&_t=1768236827394 HTTP/1.1" 200 - +2026-01-13 00:53:55,434 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:53:55] "GET /api/portfolio/positions?refresh=1&_t=1768236828326 HTTP/1.1" 200 - +2026-01-13 00:53:58,142 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:53:58] "GET /api/portfolio/summary?refresh=1&_t=1768236828326 HTTP/1.1" 200 - +2026-01-13 00:53:59,124 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:53:59] "GET /api/strategies/notifications?limit=50&_t=1768236838810 HTTP/1.1" 200 - +2026-01-13 00:54:20,723 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:54:20] "GET /api/portfolio/positions?refresh=1&_t=1768236857394 HTTP/1.1" 200 - +2026-01-13 00:54:23,417 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:54:23] "GET /api/portfolio/summary?refresh=1&_t=1768236857394 HTTP/1.1" 200 - +2026-01-13 00:54:29,112 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:54:29] "GET /api/strategies/notifications?limit=50&_t=1768236868798 HTTP/1.1" 200 - +2026-01-13 00:54:48,602 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:54:48] "GET /api/strategies/notifications?limit=50&_t=1768236888292 HTTP/1.1" 200 - +2026-01-13 00:54:50,126 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:54:50] "GET /api/portfolio/positions?refresh=1&_t=1768236887390 HTTP/1.1" 200 - +2026-01-13 00:54:53,354 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:54:53] "GET /api/portfolio/summary?refresh=1&_t=1768236887390 HTTP/1.1" 200 - +2026-01-13 00:54:55,548 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:54:55] "GET /api/portfolio/positions?refresh=1&_t=1768236888323 HTTP/1.1" 200 - +2026-01-13 00:54:58,215 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:54:58] "GET /api/portfolio/summary?refresh=1&_t=1768236888323 HTTP/1.1" 200 - +2026-01-13 00:54:59,112 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:54:59] "GET /api/strategies/notifications?limit=50&_t=1768236898800 HTTP/1.1" 200 - +2026-01-13 00:55:20,183 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:55:20] "GET /api/portfolio/positions?refresh=1&_t=1768236917395 HTTP/1.1" 200 - +2026-01-13 00:55:22,768 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:55:22] "GET /api/portfolio/summary?refresh=1&_t=1768236917395 HTTP/1.1" 200 - +2026-01-13 00:55:29,109 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:55:29] "GET /api/strategies/notifications?limit=50&_t=1768236928797 HTTP/1.1" 200 - +2026-01-13 00:55:48,602 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:55:48] "GET /api/strategies/notifications?limit=50&_t=1768236948288 HTTP/1.1" 200 - +2026-01-13 00:55:50,053 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:55:50] "GET /api/portfolio/positions?refresh=1&_t=1768236947405 HTTP/1.1" 200 - +2026-01-13 00:55:52,744 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:55:52] "GET /api/portfolio/summary?refresh=1&_t=1768236947405 HTTP/1.1" 200 - +2026-01-13 00:55:55,454 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:55:55] "GET /api/portfolio/summary?refresh=1&_t=1768236948321 HTTP/1.1" 200 - +2026-01-13 00:55:58,145 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:55:58] "GET /api/portfolio/positions?refresh=1&_t=1768236948321 HTTP/1.1" 200 - +2026-01-13 00:55:59,111 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:55:59] "GET /api/strategies/notifications?limit=50&_t=1768236958799 HTTP/1.1" 200 - +2026-01-13 00:56:20,068 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:56:20] "GET /api/portfolio/positions?refresh=1&_t=1768236977395 HTTP/1.1" 200 - +2026-01-13 00:56:23,162 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:56:23] "GET /api/portfolio/summary?refresh=1&_t=1768236977395 HTTP/1.1" 200 - +2026-01-13 00:56:29,118 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:56:29] "GET /api/strategies/notifications?limit=50&_t=1768236988803 HTTP/1.1" 200 - +2026-01-13 00:56:48,596 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:56:48] "GET /api/strategies/notifications?limit=50&_t=1768237008286 HTTP/1.1" 200 - +2026-01-13 00:56:50,029 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:56:50] "GET /api/portfolio/positions?refresh=1&_t=1768237007401 HTTP/1.1" 200 - +2026-01-13 00:56:52,735 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:56:52] "GET /api/portfolio/summary?refresh=1&_t=1768237007401 HTTP/1.1" 200 - +2026-01-13 00:56:55,790 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:56:55] "GET /api/portfolio/positions?refresh=1&_t=1768237008321 HTTP/1.1" 200 - +2026-01-13 00:56:58,219 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:56:58] "GET /api/portfolio/summary?refresh=1&_t=1768237008321 HTTP/1.1" 200 - +2026-01-13 00:56:59,116 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:56:59] "GET /api/strategies/notifications?limit=50&_t=1768237018800 HTTP/1.1" 200 - +2026-01-13 00:57:20,041 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:57:20] "GET /api/portfolio/positions?refresh=1&_t=1768237037399 HTTP/1.1" 200 - +2026-01-13 00:57:22,734 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:57:22] "GET /api/portfolio/summary?refresh=1&_t=1768237037399 HTTP/1.1" 200 - +2026-01-13 00:57:29,114 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:57:29] "GET /api/strategies/notifications?limit=50&_t=1768237048799 HTTP/1.1" 200 - +2026-01-13 00:57:48,602 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:57:48] "GET /api/strategies/notifications?limit=50&_t=1768237068288 HTTP/1.1" 200 - +2026-01-13 00:57:50,646 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:57:50] "GET /api/portfolio/positions?refresh=1&_t=1768237067400 HTTP/1.1" 200 - +2026-01-13 00:57:52,970 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:57:52] "GET /api/portfolio/summary?refresh=1&_t=1768237067400 HTTP/1.1" 200 - +2026-01-13 00:57:55,739 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:57:55] "GET /api/portfolio/positions?refresh=1&_t=1768237068324 HTTP/1.1" 200 - +2026-01-13 00:57:59,126 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:57:59] "GET /api/strategies/notifications?limit=50&_t=1768237078808 HTTP/1.1" 200 - +2026-01-13 00:58:00,098 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:58:00] "GET /api/portfolio/summary?refresh=1&_t=1768237068324 HTTP/1.1" 200 - +2026-01-13 00:58:20,018 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:58:20] "GET /api/portfolio/positions?refresh=1&_t=1768237097399 HTTP/1.1" 200 - +2026-01-13 00:58:22,737 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:58:22] "GET /api/portfolio/summary?refresh=1&_t=1768237097399 HTTP/1.1" 200 - +2026-01-13 00:58:29,069 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:58:29] "GET /api/strategies/notifications?limit=50&_t=1768237108801 HTTP/1.1" 200 - +2026-01-13 00:58:48,609 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:58:48] "GET /api/strategies/notifications?limit=50&_t=1768237128293 HTTP/1.1" 200 - +2026-01-13 00:58:50,051 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:58:50] "GET /api/portfolio/positions?refresh=1&_t=1768237127399 HTTP/1.1" 200 - +2026-01-13 00:58:52,749 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:58:52] "GET /api/portfolio/summary?refresh=1&_t=1768237127399 HTTP/1.1" 200 - +2026-01-13 00:58:55,485 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:58:55] "GET /api/portfolio/positions?refresh=1&_t=1768237128322 HTTP/1.1" 200 - +2026-01-13 00:58:58,202 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:58:58] "GET /api/portfolio/summary?refresh=1&_t=1768237128322 HTTP/1.1" 200 - +2026-01-13 00:58:59,113 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:58:59] "GET /api/strategies/notifications?limit=50&_t=1768237138799 HTTP/1.1" 200 - +2026-01-13 00:59:20,042 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:59:20] "GET /api/portfolio/positions?refresh=1&_t=1768237157393 HTTP/1.1" 200 - +2026-01-13 00:59:22,768 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:59:22] "GET /api/portfolio/summary?refresh=1&_t=1768237157393 HTTP/1.1" 200 - +2026-01-13 00:59:29,114 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:59:29] "GET /api/strategies/notifications?limit=50&_t=1768237168798 HTTP/1.1" 200 - +2026-01-13 00:59:48,598 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:59:48] "GET /api/strategies/notifications?limit=50&_t=1768237188283 HTTP/1.1" 200 - +2026-01-13 00:59:50,095 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:59:50] "GET /api/portfolio/positions?refresh=1&_t=1768237187402 HTTP/1.1" 200 - +2026-01-13 00:59:52,856 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:59:52] "GET /api/portfolio/summary?refresh=1&_t=1768237187402 HTTP/1.1" 200 - +2026-01-13 00:59:55,501 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:59:55] "GET /api/portfolio/positions?refresh=1&_t=1768237188318 HTTP/1.1" 200 - +2026-01-13 00:59:58,559 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:59:58] "GET /api/portfolio/summary?refresh=1&_t=1768237188318 HTTP/1.1" 200 - +2026-01-13 00:59:59,115 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 00:59:59] "GET /api/strategies/notifications?limit=50&_t=1768237198797 HTTP/1.1" 200 - +2026-01-13 01:00:20,032 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:00:20] "GET /api/portfolio/positions?refresh=1&_t=1768237217400 HTTP/1.1" 200 - +2026-01-13 01:00:22,918 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:00:22] "GET /api/portfolio/summary?refresh=1&_t=1768237217400 HTTP/1.1" 200 - +2026-01-13 01:00:29,135 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:00:29] "GET /api/strategies/notifications?limit=50&_t=1768237228803 HTTP/1.1" 200 - +2026-01-13 01:00:48,599 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:00:48] "GET /api/strategies/notifications?limit=50&_t=1768237248284 HTTP/1.1" 200 - +2026-01-13 01:00:50,104 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:00:50] "GET /api/portfolio/positions?refresh=1&_t=1768237247399 HTTP/1.1" 200 - +2026-01-13 01:00:52,870 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:00:52] "GET /api/portfolio/summary?refresh=1&_t=1768237247399 HTTP/1.1" 200 - +2026-01-13 01:00:55,632 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:00:55] "GET /api/portfolio/positions?refresh=1&_t=1768237248315 HTTP/1.1" 200 - +2026-01-13 01:00:58,146 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:00:58] "GET /api/portfolio/summary?refresh=1&_t=1768237248315 HTTP/1.1" 200 - +2026-01-13 01:00:59,120 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:00:59] "GET /api/strategies/notifications?limit=50&_t=1768237258803 HTTP/1.1" 200 - +2026-01-13 01:01:21,695 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:01:21] "GET /api/portfolio/positions?refresh=1&_t=1768237277391 HTTP/1.1" 200 - +2026-01-13 01:01:22,902 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:01:22] "GET /api/portfolio/summary?refresh=1&_t=1768237277391 HTTP/1.1" 200 - +2026-01-13 01:01:29,120 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:01:29] "GET /api/strategies/notifications?limit=50&_t=1768237288805 HTTP/1.1" 200 - +2026-01-13 01:01:48,606 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:01:48] "GET /api/strategies/notifications?limit=50&_t=1768237308282 HTTP/1.1" 200 - +2026-01-13 01:01:50,448 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:01:50] "GET /api/portfolio/positions?refresh=1&_t=1768237307391 HTTP/1.1" 200 - +2026-01-13 01:01:53,506 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:01:53] "GET /api/portfolio/summary?refresh=1&_t=1768237307391 HTTP/1.1" 200 - +2026-01-13 01:01:55,714 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:01:55] "GET /api/portfolio/positions?refresh=1&_t=1768237308315 HTTP/1.1" 200 - +2026-01-13 01:01:58,351 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:01:58] "GET /api/portfolio/summary?refresh=1&_t=1768237308315 HTTP/1.1" 200 - +2026-01-13 01:01:59,110 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:01:59] "GET /api/strategies/notifications?limit=50&_t=1768237318797 HTTP/1.1" 200 - +2026-01-13 01:02:20,546 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:02:20] "GET /api/portfolio/positions?refresh=1&_t=1768237337393 HTTP/1.1" 200 - +2026-01-13 01:02:23,287 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:02:23] "GET /api/portfolio/summary?refresh=1&_t=1768237337393 HTTP/1.1" 200 - +2026-01-13 01:02:29,114 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:02:29] "GET /api/strategies/notifications?limit=50&_t=1768237348799 HTTP/1.1" 200 - +2026-01-13 01:02:48,598 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:02:48] "GET /api/strategies/notifications?limit=50&_t=1768237368285 HTTP/1.1" 200 - +2026-01-13 01:02:50,187 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:02:50] "GET /api/portfolio/positions?refresh=1&_t=1768237367402 HTTP/1.1" 200 - +2026-01-13 01:02:53,041 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:02:53] "GET /api/portfolio/summary?refresh=1&_t=1768237367402 HTTP/1.1" 200 - +2026-01-13 01:02:55,622 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:02:55] "GET /api/portfolio/positions?refresh=1&_t=1768237368322 HTTP/1.1" 200 - +2026-01-13 01:02:58,269 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:02:58] "GET /api/portfolio/summary?refresh=1&_t=1768237368322 HTTP/1.1" 200 - +2026-01-13 01:02:59,127 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:02:59] "GET /api/strategies/notifications?limit=50&_t=1768237378811 HTTP/1.1" 200 - +2026-01-13 01:03:20,202 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:03:20] "GET /api/portfolio/positions?refresh=1&_t=1768237397401 HTTP/1.1" 200 - +2026-01-13 01:03:22,973 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:03:22] "GET /api/portfolio/summary?refresh=1&_t=1768237397401 HTTP/1.1" 200 - +2026-01-13 01:03:29,111 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:03:29] "GET /api/strategies/notifications?limit=50&_t=1768237408799 HTTP/1.1" 200 - +2026-01-13 01:03:48,603 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:03:48] "GET /api/strategies/notifications?limit=50&_t=1768237428289 HTTP/1.1" 200 - +2026-01-13 01:03:50,163 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:03:50] "GET /api/portfolio/positions?refresh=1&_t=1768237427405 HTTP/1.1" 200 - +2026-01-13 01:03:52,809 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:03:52] "GET /api/portfolio/summary?refresh=1&_t=1768237427405 HTTP/1.1" 200 - +2026-01-13 01:03:55,701 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:03:55] "GET /api/portfolio/positions?refresh=1&_t=1768237428324 HTTP/1.1" 200 - +2026-01-13 01:03:58,389 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:03:58] "GET /api/portfolio/summary?refresh=1&_t=1768237428324 HTTP/1.1" 200 - +2026-01-13 01:03:59,123 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:03:59] "GET /api/strategies/notifications?limit=50&_t=1768237438809 HTTP/1.1" 200 - +2026-01-13 01:04:20,127 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:04:20] "GET /api/portfolio/positions?refresh=1&_t=1768237457394 HTTP/1.1" 200 - +2026-01-13 01:04:22,801 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:04:22] "GET /api/portfolio/summary?refresh=1&_t=1768237457394 HTTP/1.1" 200 - +2026-01-13 01:04:29,114 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:04:29] "GET /api/strategies/notifications?limit=50&_t=1768237468803 HTTP/1.1" 200 - +2026-01-13 01:04:48,598 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:04:48] "GET /api/strategies/notifications?limit=50&_t=1768237488286 HTTP/1.1" 200 - +2026-01-13 01:04:53,504 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:04:53] "GET /api/portfolio/summary?refresh=1&_t=1768237487399 HTTP/1.1" 200 - +2026-01-13 01:04:54,194 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:04:54] "GET /api/portfolio/positions?refresh=1&_t=1768237487399 HTTP/1.1" 200 - +2026-01-13 01:04:56,208 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:04:56] "GET /api/portfolio/positions?refresh=1&_t=1768237488317 HTTP/1.1" 200 - +2026-01-13 01:04:58,902 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:04:58] "GET /api/portfolio/summary?refresh=1&_t=1768237488317 HTTP/1.1" 200 - +2026-01-13 01:04:59,123 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:04:59] "GET /api/strategies/notifications?limit=50&_t=1768237498807 HTTP/1.1" 200 - +2026-01-13 01:05:20,463 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:05:20] "GET /api/portfolio/positions?refresh=1&_t=1768237517406 HTTP/1.1" 200 - +2026-01-13 01:05:22,849 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:05:22] "GET /api/portfolio/summary?refresh=1&_t=1768237517406 HTTP/1.1" 200 - +2026-01-13 01:05:29,112 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:05:29] "GET /api/strategies/notifications?limit=50&_t=1768237528798 HTTP/1.1" 200 - +2026-01-13 01:05:48,612 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:05:48] "GET /api/strategies/notifications?limit=50&_t=1768237548286 HTTP/1.1" 200 - +2026-01-13 01:05:50,111 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:05:50] "GET /api/portfolio/positions?refresh=1&_t=1768237547402 HTTP/1.1" 200 - +2026-01-13 01:05:52,806 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:05:52] "GET /api/portfolio/summary?refresh=1&_t=1768237547402 HTTP/1.1" 200 - +2026-01-13 01:05:55,497 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:05:55] "GET /api/portfolio/positions?refresh=1&_t=1768237548324 HTTP/1.1" 200 - +2026-01-13 01:05:58,220 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:05:58] "GET /api/portfolio/summary?refresh=1&_t=1768237548324 HTTP/1.1" 200 - +2026-01-13 01:05:59,120 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:05:59] "GET /api/strategies/notifications?limit=50&_t=1768237558808 HTTP/1.1" 200 - +2026-01-13 01:06:20,316 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:06:20] "GET /api/portfolio/positions?refresh=1&_t=1768237577401 HTTP/1.1" 200 - +2026-01-13 01:06:22,795 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:06:22] "GET /api/portfolio/summary?refresh=1&_t=1768237577401 HTTP/1.1" 200 - +2026-01-13 01:06:29,119 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:06:29] "GET /api/strategies/notifications?limit=50&_t=1768237588803 HTTP/1.1" 200 - +2026-01-13 01:06:48,605 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:06:48] "GET /api/strategies/notifications?limit=50&_t=1768237608291 HTTP/1.1" 200 - +2026-01-13 01:06:50,111 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:06:50] "GET /api/portfolio/positions?refresh=1&_t=1768237607396 HTTP/1.1" 200 - +2026-01-13 01:06:52,862 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:06:52] "GET /api/portfolio/summary?refresh=1&_t=1768237607396 HTTP/1.1" 200 - +2026-01-13 01:06:55,607 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:06:55] "GET /api/portfolio/positions?refresh=1&_t=1768237608327 HTTP/1.1" 200 - +2026-01-13 01:06:58,242 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:06:58] "GET /api/portfolio/summary?refresh=1&_t=1768237608327 HTTP/1.1" 200 - +2026-01-13 01:06:59,115 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:06:59] "GET /api/strategies/notifications?limit=50&_t=1768237618804 HTTP/1.1" 200 - +2026-01-13 01:07:20,144 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:07:20] "GET /api/portfolio/positions?refresh=1&_t=1768237637390 HTTP/1.1" 200 - +2026-01-13 01:07:22,860 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:07:22] "GET /api/portfolio/summary?refresh=1&_t=1768237637390 HTTP/1.1" 200 - +2026-01-13 01:07:29,122 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:07:29] "GET /api/strategies/notifications?limit=50&_t=1768237648805 HTTP/1.1" 200 - +2026-01-13 01:07:48,611 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:07:48] "GET /api/strategies/notifications?limit=50&_t=1768237668284 HTTP/1.1" 200 - +2026-01-13 01:07:50,105 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:07:50] "GET /api/portfolio/positions?refresh=1&_t=1768237667412 HTTP/1.1" 200 - +2026-01-13 01:07:52,829 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:07:52] "GET /api/portfolio/summary?refresh=1&_t=1768237667412 HTTP/1.1" 200 - +2026-01-13 01:07:55,533 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:07:55] "GET /api/portfolio/positions?refresh=1&_t=1768237668326 HTTP/1.1" 200 - +2026-01-13 01:07:58,350 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:07:58] "GET /api/portfolio/summary?refresh=1&_t=1768237668326 HTTP/1.1" 200 - +2026-01-13 01:07:59,109 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:07:59] "GET /api/strategies/notifications?limit=50&_t=1768237678795 HTTP/1.1" 200 - +2026-01-13 01:08:20,112 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:08:20] "GET /api/portfolio/positions?refresh=1&_t=1768237697398 HTTP/1.1" 200 - +2026-01-13 01:08:22,825 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:08:22] "GET /api/portfolio/summary?refresh=1&_t=1768237697398 HTTP/1.1" 200 - +2026-01-13 01:08:29,117 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:08:29] "GET /api/strategies/notifications?limit=50&_t=1768237708804 HTTP/1.1" 200 - +2026-01-13 01:08:48,598 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:08:48] "GET /api/strategies/notifications?limit=50&_t=1768237728284 HTTP/1.1" 200 - +2026-01-13 01:08:50,160 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:08:50] "GET /api/portfolio/positions?refresh=1&_t=1768237727398 HTTP/1.1" 200 - +2026-01-13 01:08:52,808 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:08:52] "GET /api/portfolio/summary?refresh=1&_t=1768237727398 HTTP/1.1" 200 - +2026-01-13 01:08:55,496 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:08:55] "GET /api/portfolio/positions?refresh=1&_t=1768237728315 HTTP/1.1" 200 - +2026-01-13 01:08:58,239 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:08:58] "GET /api/portfolio/summary?refresh=1&_t=1768237728315 HTTP/1.1" 200 - +2026-01-13 01:08:59,114 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:08:59] "GET /api/strategies/notifications?limit=50&_t=1768237738797 HTTP/1.1" 200 - +2026-01-13 01:09:20,095 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:09:20] "GET /api/portfolio/positions?refresh=1&_t=1768237757400 HTTP/1.1" 200 - +2026-01-13 01:09:22,803 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:09:22] "GET /api/portfolio/summary?refresh=1&_t=1768237757400 HTTP/1.1" 200 - +2026-01-13 01:09:29,123 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:09:29] "GET /api/strategies/notifications?limit=50&_t=1768237768808 HTTP/1.1" 200 - +2026-01-13 01:09:48,604 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:09:48] "GET /api/strategies/notifications?limit=50&_t=1768237788289 HTTP/1.1" 200 - +2026-01-13 01:09:50,094 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:09:50] "GET /api/portfolio/positions?refresh=1&_t=1768237787392 HTTP/1.1" 200 - +2026-01-13 01:09:52,788 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:09:52] "GET /api/portfolio/summary?refresh=1&_t=1768237787392 HTTP/1.1" 200 - +2026-01-13 01:09:55,539 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:09:55] "GET /api/portfolio/positions?refresh=1&_t=1768237788326 HTTP/1.1" 200 - +2026-01-13 01:09:58,194 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:09:58] "GET /api/portfolio/summary?refresh=1&_t=1768237788326 HTTP/1.1" 200 - +2026-01-13 01:09:59,128 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:09:59] "GET /api/strategies/notifications?limit=50&_t=1768237798807 HTTP/1.1" 200 - +2026-01-13 01:10:20,199 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:10:20] "GET /api/portfolio/positions?refresh=1&_t=1768237817405 HTTP/1.1" 200 - +2026-01-13 01:10:22,800 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:10:22] "GET /api/portfolio/summary?refresh=1&_t=1768237817405 HTTP/1.1" 200 - +2026-01-13 01:10:29,115 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:10:29] "GET /api/strategies/notifications?limit=50&_t=1768237828796 HTTP/1.1" 200 - +2026-01-13 01:10:48,599 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:10:48] "GET /api/strategies/notifications?limit=50&_t=1768237848284 HTTP/1.1" 200 - +2026-01-13 01:10:50,147 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:10:50] "GET /api/portfolio/positions?refresh=1&_t=1768237847402 HTTP/1.1" 200 - +2026-01-13 01:10:52,804 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:10:52] "GET /api/portfolio/summary?refresh=1&_t=1768237847402 HTTP/1.1" 200 - +2026-01-13 01:10:55,564 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:10:55] "GET /api/portfolio/positions?refresh=1&_t=1768237848317 HTTP/1.1" 200 - +2026-01-13 01:10:58,300 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:10:58] "GET /api/portfolio/summary?refresh=1&_t=1768237848317 HTTP/1.1" 200 - +2026-01-13 01:10:59,121 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:10:59] "GET /api/strategies/notifications?limit=50&_t=1768237858804 HTTP/1.1" 200 - +2026-01-13 01:11:20,101 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:11:20] "GET /api/portfolio/positions?refresh=1&_t=1768237877396 HTTP/1.1" 200 - +2026-01-13 01:11:22,804 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:11:22] "GET /api/portfolio/summary?refresh=1&_t=1768237877396 HTTP/1.1" 200 - +2026-01-13 01:11:29,117 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:11:29] "GET /api/strategies/notifications?limit=50&_t=1768237888804 HTTP/1.1" 200 - +2026-01-13 01:11:48,607 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:11:48] "GET /api/strategies/notifications?limit=50&_t=1768237908289 HTTP/1.1" 200 - +2026-01-13 01:11:50,107 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:11:50] "GET /api/portfolio/positions?refresh=1&_t=1768237907396 HTTP/1.1" 200 - +2026-01-13 01:11:52,791 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:11:52] "GET /api/portfolio/summary?refresh=1&_t=1768237907396 HTTP/1.1" 200 - +2026-01-13 01:11:55,511 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:11:55] "GET /api/portfolio/positions?refresh=1&_t=1768237908324 HTTP/1.1" 200 - +2026-01-13 01:11:58,199 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:11:58] "GET /api/portfolio/summary?refresh=1&_t=1768237908324 HTTP/1.1" 200 - +2026-01-13 01:11:59,120 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:11:59] "GET /api/strategies/notifications?limit=50&_t=1768237918801 HTTP/1.1" 200 - +2026-01-13 01:12:20,099 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:12:20] "GET /api/portfolio/positions?refresh=1&_t=1768237937402 HTTP/1.1" 200 - +2026-01-13 01:12:22,803 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:12:22] "GET /api/portfolio/summary?refresh=1&_t=1768237937402 HTTP/1.1" 200 - +2026-01-13 01:12:29,114 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:12:29] "GET /api/strategies/notifications?limit=50&_t=1768237948800 HTTP/1.1" 200 - +2026-01-13 01:12:48,599 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:12:48] "GET /api/strategies/notifications?limit=50&_t=1768237968285 HTTP/1.1" 200 - +2026-01-13 01:12:50,149 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:12:50] "GET /api/portfolio/positions?refresh=1&_t=1768237967401 HTTP/1.1" 200 - +2026-01-13 01:12:53,308 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:12:53] "GET /api/portfolio/summary?refresh=1&_t=1768237967401 HTTP/1.1" 200 - +2026-01-13 01:12:55,515 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:12:55] "GET /api/portfolio/positions?refresh=1&_t=1768237968333 HTTP/1.1" 200 - +2026-01-13 01:12:58,208 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:12:58] "GET /api/portfolio/summary?refresh=1&_t=1768237968333 HTTP/1.1" 200 - +2026-01-13 01:12:59,112 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:12:59] "GET /api/strategies/notifications?limit=50&_t=1768237978797 HTTP/1.1" 200 - +2026-01-13 01:13:20,089 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:13:20] "GET /api/portfolio/positions?refresh=1&_t=1768237997393 HTTP/1.1" 200 - +2026-01-13 01:13:22,779 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:13:22] "GET /api/portfolio/summary?refresh=1&_t=1768237997393 HTTP/1.1" 200 - +2026-01-13 01:13:29,127 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:13:29] "GET /api/strategies/notifications?limit=50&_t=1768238008809 HTTP/1.1" 200 - +2026-01-13 01:13:48,600 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:13:48] "GET /api/strategies/notifications?limit=50&_t=1768238028284 HTTP/1.1" 200 - +2026-01-13 01:13:50,096 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:13:50] "GET /api/portfolio/positions?refresh=1&_t=1768238027395 HTTP/1.1" 200 - +2026-01-13 01:13:52,808 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:13:52] "GET /api/portfolio/summary?refresh=1&_t=1768238027395 HTTP/1.1" 200 - +2026-01-13 01:13:55,577 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:13:55] "GET /api/portfolio/positions?refresh=1&_t=1768238028319 HTTP/1.1" 200 - +2026-01-13 01:13:58,221 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:13:58] "GET /api/portfolio/summary?refresh=1&_t=1768238028319 HTTP/1.1" 200 - +2026-01-13 01:13:58,805 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:13:58] "GET /api/strategies/notifications?limit=50&_t=1768238038797 HTTP/1.1" 200 - +2026-01-13 01:14:21,410 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:14:21] "GET /api/portfolio/positions?refresh=1&_t=1768238057391 HTTP/1.1" 200 - +2026-01-13 01:14:24,057 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:14:24] "GET /api/portfolio/summary?refresh=1&_t=1768238057391 HTTP/1.1" 200 - +2026-01-13 01:14:28,804 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:14:28] "GET /api/strategies/notifications?limit=50&_t=1768238068796 HTTP/1.1" 200 - +2026-01-13 01:14:48,289 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:14:48] "GET /api/strategies/notifications?limit=50&_t=1768238088280 HTTP/1.1" 200 - +2026-01-13 01:14:50,172 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:14:50] "GET /api/portfolio/positions?refresh=1&_t=1768238087394 HTTP/1.1" 200 - +2026-01-13 01:14:52,843 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:14:52] "GET /api/portfolio/summary?refresh=1&_t=1768238087394 HTTP/1.1" 200 - +2026-01-13 01:14:55,514 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:14:55] "GET /api/portfolio/positions?refresh=1&_t=1768238088312 HTTP/1.1" 200 - +2026-01-13 01:14:58,225 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:14:58] "GET /api/portfolio/summary?refresh=1&_t=1768238088312 HTTP/1.1" 200 - +2026-01-13 01:14:59,127 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:14:59] "GET /api/strategies/notifications?limit=50&_t=1768238098808 HTTP/1.1" 200 - +2026-01-13 01:15:21,864 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:15:21] "GET /api/portfolio/positions?refresh=1&_t=1768238117391 HTTP/1.1" 200 - +2026-01-13 01:15:24,584 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:15:24] "GET /api/portfolio/summary?refresh=1&_t=1768238117391 HTTP/1.1" 200 - +2026-01-13 01:15:28,809 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:15:28] "GET /api/strategies/notifications?limit=50&_t=1768238128799 HTTP/1.1" 200 - +2026-01-13 01:15:48,307 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:15:48] "GET /api/strategies/notifications?limit=50&_t=1768238148294 HTTP/1.1" 200 - +2026-01-13 01:15:50,118 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:15:50] "GET /api/portfolio/positions?refresh=1&_t=1768238147405 HTTP/1.1" 200 - +2026-01-13 01:15:52,814 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:15:52] "GET /api/portfolio/summary?refresh=1&_t=1768238147405 HTTP/1.1" 200 - +2026-01-13 01:15:55,508 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:15:55] "GET /api/portfolio/positions?refresh=1&_t=1768238148331 HTTP/1.1" 200 - +2026-01-13 01:15:58,209 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:15:58] "GET /api/portfolio/summary?refresh=1&_t=1768238148331 HTTP/1.1" 200 - +2026-01-13 01:15:59,113 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:15:59] "GET /api/strategies/notifications?limit=50&_t=1768238158800 HTTP/1.1" 200 - +2026-01-13 01:16:20,092 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:16:20] "GET /api/portfolio/positions?refresh=1&_t=1768238177399 HTTP/1.1" 200 - +2026-01-13 01:16:22,784 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:16:22] "GET /api/portfolio/summary?refresh=1&_t=1768238177399 HTTP/1.1" 200 - +2026-01-13 01:16:28,827 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:16:28] "GET /api/strategies/notifications?limit=50&_t=1768238188808 HTTP/1.1" 200 - +2026-01-13 01:16:48,616 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:16:48] "GET /api/strategies/notifications?limit=50&_t=1768238208292 HTTP/1.1" 200 - +2026-01-13 01:16:50,218 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:16:50] "GET /api/portfolio/positions?refresh=1&_t=1768238207404 HTTP/1.1" 200 - +2026-01-13 01:16:52,900 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:16:52] "GET /api/portfolio/summary?refresh=1&_t=1768238207404 HTTP/1.1" 200 - +2026-01-13 01:16:53,874 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:16:53] "GET /api/market/types?_t=1768238213547 HTTP/1.1" 200 - +2026-01-13 01:16:53,876 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:16:53] "GET /api/user/info?_t=1768238213547 HTTP/1.1" 200 - +2026-01-13 01:16:53,876 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:16:53] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 01:16:53,880 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:16:53] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 01:16:54,197 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:16:54] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 01:16:54,197 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:16:54] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 01:16:54,205 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=500 +2026-01-13 01:16:54,643 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:16:54] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-13 01:16:55,374 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:16:55] "GET /api/strategies?_t=1768238215059 HTTP/1.1" 200 - +2026-01-13 01:16:55,611 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:16:55] "GET /api/portfolio/positions?refresh=1&_t=1768238208334 HTTP/1.1" 200 - +2026-01-13 01:16:58,268 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:16:58] "GET /api/portfolio/summary?refresh=1&_t=1768238208334 HTTP/1.1" 200 - +2026-01-13 01:16:58,804 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:16:58] "GET /api/strategies/notifications?limit=50&_t=1768238218795 HTTP/1.1" 200 - +2026-01-13 01:16:59,325 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:16:59] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 01:16:59,325 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:16:59] "GET /api/credentials/list?user_id=1&_t=1768238219001 HTTP/1.1" 200 - +2026-01-13 01:16:59,332 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:16:59] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 01:17:28,806 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:17:28] "GET /api/strategies/notifications?limit=50&_t=1768238248798 HTTP/1.1" 200 - +2026-01-13 01:17:49,294 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:17:49] "GET /api/strategies/notifications?limit=50&_t=1768238268288 HTTP/1.1" 200 - +2026-01-13 01:17:49,338 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:17:49] "GET /api/strategies?_t=1768238269326 HTTP/1.1" 200 - +2026-01-13 01:17:51,977 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:17:51] "GET /api/portfolio/positions?refresh=1&_t=1768238268324 HTTP/1.1" 200 - +2026-01-13 01:17:54,745 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:17:54] "GET /api/portfolio/summary?refresh=1&_t=1768238268324 HTTP/1.1" 200 - +2026-01-13 01:17:58,813 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:17:58] "GET /api/strategies/notifications?limit=50&_t=1768238278806 HTTP/1.1" 200 - +2026-01-13 01:18:02,575 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:18:02] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 01:18:02,892 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:18:02] "GET /api/credentials/list?user_id=1&_t=1768238282566 HTTP/1.1" 200 - +2026-01-13 01:18:02,893 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:18:02] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 01:18:09,485 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:18:09] "GET /api/strategies?_t=1768238289472 HTTP/1.1" 200 - +2026-01-13 01:18:15,462 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:18:15] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 01:18:15,462 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:18:15] "GET /api/credentials/list?user_id=1&_t=1768238295449 HTTP/1.1" 200 - +2026-01-13 01:18:15,463 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:18:15] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 01:18:27,862 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:18:27] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 01:18:28,170 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:18:28] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 01:18:28,171 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:18:28] "GET /api/credentials/list?user_id=1&_t=1768238307851 HTTP/1.1" 200 - +2026-01-13 01:18:29,117 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:18:29] "GET /api/strategies/notifications?limit=50&_t=1768238308798 HTTP/1.1" 200 - +2026-01-13 01:18:49,593 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:18:49] "GET /api/strategies/notifications?limit=50&_t=1768238328295 HTTP/1.1" 200 - +2026-01-13 01:18:49,932 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:18:49] "GET /api/strategies?_t=1768238329924 HTTP/1.1" 200 - +2026-01-13 01:18:52,321 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:18:52] "GET /api/portfolio/summary?refresh=1&_t=1768238328331 HTTP/1.1" 200 - +2026-01-13 01:18:55,035 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:18:55] "GET /api/portfolio/positions?refresh=1&_t=1768238328331 HTTP/1.1" 200 - +2026-01-13 01:18:58,810 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:18:58] "GET /api/strategies/notifications?limit=50&_t=1768238338802 HTTP/1.1" 200 - +2026-01-13 01:19:28,816 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:19:28] "GET /api/strategies/notifications?limit=50&_t=1768238368808 HTTP/1.1" 200 - +2026-01-13 01:19:31,930 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:19:31] "GET /api/strategies?_t=1768238371916 HTTP/1.1" 200 - +2026-01-13 01:19:31,930 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:19:31] "GET /api/strategies/notifications?limit=50&_t=1768238371916 HTTP/1.1" 200 - +2026-01-13 01:19:48,288 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:19:48] "GET /api/strategies/notifications?limit=50&_t=1768238388279 HTTP/1.1" 200 - +2026-01-13 01:19:51,183 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:19:51] "GET /api/portfolio/positions?refresh=1&_t=1768238388316 HTTP/1.1" 200 - +2026-01-13 01:19:53,707 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:19:53] "GET /api/portfolio/summary?refresh=1&_t=1768238388316 HTTP/1.1" 200 - +2026-01-13 01:19:56,601 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:19:56] "GET /api/strategies/notifications?limit=50&_t=1768238396591 HTTP/1.1" 200 - +2026-01-13 01:19:56,601 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:19:56] "GET /api/strategies?_t=1768238396591 HTTP/1.1" 200 - +2026-01-13 01:20:20,138 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:20:20] "GET /api/strategies?_t=1768238420116 HTTP/1.1" 200 - +2026-01-13 01:20:20,139 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:20:20] "GET /api/strategies/notifications?limit=50&_t=1768238420116 HTTP/1.1" 200 - +2026-01-13 01:20:20,363 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:20:20] "GET /api/market/types?_t=1768238420348 HTTP/1.1" 200 - +2026-01-13 01:20:20,674 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:20:20] "GET /api/portfolio/monitors?_t=1768238420348 HTTP/1.1" 200 - +2026-01-13 01:20:20,674 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:20:20] "GET /api/portfolio/alerts?_t=1768238420348 HTTP/1.1" 200 - +2026-01-13 01:20:20,681 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:20:20] "GET /api/strategies/notifications?limit=50&_t=1768238420348 HTTP/1.1" 200 - +2026-01-13 01:20:20,690 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:20:20] "GET /api/portfolio/groups?_t=1768238420348 HTTP/1.1" 200 - +2026-01-13 01:20:23,348 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:20:23] "GET /api/portfolio/positions?_t=1768238420348 HTTP/1.1" 200 - +2026-01-13 01:20:26,058 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:20:26] "GET /api/portfolio/summary?_t=1768238420348 HTTP/1.1" 200 - +2026-01-13 01:20:38,785 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:20:38] "GET /api/strategies?_t=1768238438769 HTTP/1.1" 200 - +2026-01-13 01:20:38,786 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:20:38] "GET /api/strategies/notifications?limit=50&_t=1768238438769 HTTP/1.1" 200 - +2026-01-13 01:20:39,358 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:20:39] "GET /api/market/types?_t=1768238439337 HTTP/1.1" 200 - +2026-01-13 01:20:39,365 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:20:39] "GET /api/portfolio/monitors?_t=1768238439338 HTTP/1.1" 200 - +2026-01-13 01:20:39,660 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:20:39] "GET /api/portfolio/alerts?_t=1768238439338 HTTP/1.1" 200 - +2026-01-13 01:20:39,660 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:20:39] "GET /api/portfolio/groups?_t=1768238439338 HTTP/1.1" 200 - +2026-01-13 01:20:39,675 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:20:39] "GET /api/strategies/notifications?limit=50&_t=1768238439338 HTTP/1.1" 200 - +2026-01-13 01:20:41,766 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:20:41] "GET /api/portfolio/positions?_t=1768238439338 HTTP/1.1" 200 - +2026-01-13 01:20:44,469 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:20:44] "GET /api/portfolio/summary?_t=1768238439338 HTTP/1.1" 200 - +2026-01-13 01:20:55,307 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:20:55] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 01:20:55,308 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:20:55] "GET /api/credentials/list?user_id=1&_t=1768238454986 HTTP/1.1" 200 - +2026-01-13 01:20:55,314 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:20:55] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 01:21:08,747 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:21:08] "GET /api/strategies/notifications?limit=50&_t=1768238468738 HTTP/1.1" 200 - +2026-01-13 01:21:09,594 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:21:09] "GET /api/strategies/notifications?limit=50&_t=1768238469281 HTTP/1.1" 200 - +2026-01-13 01:21:12,420 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:21:12] "GET /api/portfolio/positions?refresh=1&_t=1768238469301 HTTP/1.1" 200 - +2026-01-13 01:21:15,011 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:21:15] "GET /api/portfolio/summary?refresh=1&_t=1768238469301 HTTP/1.1" 200 - +2026-01-13 01:21:17,537 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:21:17] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 01:21:17,846 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:21:17] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 01:21:17,846 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:21:17] "GET /api/credentials/list?user_id=1&_t=1768238477523 HTTP/1.1" 200 - +2026-01-13 01:21:39,047 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:21:39] "GET /api/strategies/notifications?limit=50&_t=1768238498732 HTTP/1.1" 200 - +2026-01-13 01:21:39,310 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:21:39] "GET /api/strategies/notifications?limit=50&_t=1768238499290 HTTP/1.1" 200 - +2026-01-13 01:21:42,379 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:21:42] "GET /api/portfolio/summary?refresh=1&_t=1768238499331 HTTP/1.1" 200 - +2026-01-13 01:21:45,041 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:21:45] "GET /api/portfolio/positions?refresh=1&_t=1768238499331 HTTP/1.1" 200 - +2026-01-13 01:22:08,744 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:22:08] "GET /api/strategies/notifications?limit=50&_t=1768238528735 HTTP/1.1" 200 - +2026-01-13 01:22:09,609 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:22:09] "GET /api/strategies/notifications?limit=50&_t=1768238529290 HTTP/1.1" 200 - +2026-01-13 01:22:12,321 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:22:12] "GET /api/portfolio/positions?refresh=1&_t=1768238529321 HTTP/1.1" 200 - +2026-01-13 01:22:15,180 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:22:15] "GET /api/portfolio/summary?refresh=1&_t=1768238529321 HTTP/1.1" 200 - +2026-01-13 01:22:30,433 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:22:30] "GET /api/credentials/get?id=4&user_id=1&_t=1768238550404 HTTP/1.1" 200 - +2026-01-13 01:22:39,047 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:22:39] "GET /api/strategies/notifications?limit=50&_t=1768238558732 HTTP/1.1" 200 - +2026-01-13 01:22:39,310 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:22:39] "GET /api/strategies/notifications?limit=50&_t=1768238559289 HTTP/1.1" 200 - +2026-01-13 01:22:46,582 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:22:46] "GET /api/portfolio/positions?refresh=1&_t=1768238559308 HTTP/1.1" 200 - +2026-01-13 01:22:49,112 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:22:49] "GET /api/portfolio/summary?refresh=1&_t=1768238559308 HTTP/1.1" 200 - +2026-01-13 01:23:08,744 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:23:08] "GET /api/strategies/notifications?limit=50&_t=1768238588736 HTTP/1.1" 200 - +2026-01-13 01:23:09,606 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:23:09] "GET /api/strategies/notifications?limit=50&_t=1768238589294 HTTP/1.1" 200 - +2026-01-13 01:23:12,318 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:23:12] "GET /api/portfolio/positions?refresh=1&_t=1768238589323 HTTP/1.1" 200 - +2026-01-13 01:23:15,025 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:23:15] "GET /api/portfolio/summary?refresh=1&_t=1768238589324 HTTP/1.1" 200 - +2026-01-13 01:23:38,749 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:23:38] "GET /api/strategies/notifications?limit=50&_t=1768238618741 HTTP/1.1" 200 - +2026-01-13 01:23:39,615 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:23:39] "GET /api/strategies/notifications?limit=50&_t=1768238619285 HTTP/1.1" 200 - +2026-01-13 01:23:42,404 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:23:42] "GET /api/portfolio/positions?refresh=1&_t=1768238619331 HTTP/1.1" 200 - +2026-01-13 01:23:45,039 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:23:45] "GET /api/portfolio/summary?refresh=1&_t=1768238619331 HTTP/1.1" 200 - +2026-01-13 01:24:08,752 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:24:08] "GET /api/strategies/notifications?limit=50&_t=1768238648740 HTTP/1.1" 200 - +2026-01-13 01:24:39,049 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:24:39] "GET /api/strategies/notifications?limit=50&_t=1768238678733 HTTP/1.1" 200 - +2026-01-13 01:24:48,303 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:24:48] "GET /api/strategies/notifications?limit=50&_t=1768238688293 HTTP/1.1" 200 - +2026-01-13 01:24:51,322 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:24:51] "GET /api/portfolio/positions?refresh=1&_t=1768238688326 HTTP/1.1" 200 - +2026-01-13 01:24:54,051 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:24:54] "GET /api/portfolio/summary?refresh=1&_t=1768238688326 HTTP/1.1" 200 - +2026-01-13 01:25:08,741 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:25:08] "GET /api/strategies/notifications?limit=50&_t=1768238708733 HTTP/1.1" 200 - +2026-01-13 01:25:37,599 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:25:37] "GET /api/strategies/notifications?limit=50&_t=1768238737281 HTTP/1.1" 200 - +2026-01-13 01:25:38,811 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:25:38] "GET /api/strategies/notifications?limit=50&_t=1768238738742 HTTP/1.1" 200 - +2026-01-13 01:25:39,597 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:25:39] "GET /api/strategies/notifications?limit=50&_t=1768238739285 HTTP/1.1" 200 - +2026-01-13 01:25:40,355 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:25:40] "GET /api/portfolio/positions?refresh=1&_t=1768238737314 HTTP/1.1" 200 - +2026-01-13 01:25:43,017 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:25:43] "GET /api/portfolio/summary?refresh=1&_t=1768238737314 HTTP/1.1" 200 - +2026-01-13 01:26:09,045 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:26:09] "GET /api/strategies/notifications?limit=50&_t=1768238768735 HTTP/1.1" 200 - +2026-01-13 01:26:09,300 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:26:09] "GET /api/strategies/notifications?limit=50&_t=1768238769289 HTTP/1.1" 200 - +2026-01-13 01:26:12,302 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:26:12] "GET /api/portfolio/positions?refresh=1&_t=1768238769323 HTTP/1.1" 200 - +2026-01-13 01:26:14,981 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:26:14] "GET /api/portfolio/summary?refresh=1&_t=1768238769323 HTTP/1.1" 200 - +2026-01-13 01:26:38,742 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:26:38] "GET /api/strategies/notifications?limit=50&_t=1768238798734 HTTP/1.1" 200 - +2026-01-13 01:26:39,593 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:26:39] "GET /api/strategies/notifications?limit=50&_t=1768238799279 HTTP/1.1" 200 - +2026-01-13 01:26:42,330 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:26:42] "GET /api/portfolio/positions?refresh=1&_t=1768238799296 HTTP/1.1" 200 - +2026-01-13 01:26:44,995 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:26:44] "GET /api/portfolio/summary?refresh=1&_t=1768238799296 HTTP/1.1" 200 - +2026-01-13 01:27:08,742 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:27:08] "GET /api/strategies/notifications?limit=50&_t=1768238828733 HTTP/1.1" 200 - +2026-01-13 01:27:16,601 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:27:16] "GET /api/strategies/notifications?limit=50&_t=1768238836288 HTTP/1.1" 200 - +2026-01-13 01:27:19,308 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:27:19] "GET /api/portfolio/positions?refresh=1&_t=1768238836321 HTTP/1.1" 200 - +2026-01-13 01:27:22,016 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:27:22] "GET /api/portfolio/summary?refresh=1&_t=1768238836321 HTTP/1.1" 200 - +2026-01-13 01:27:38,748 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:27:38] "GET /api/strategies/notifications?limit=50&_t=1768238858741 HTTP/1.1" 200 - +2026-01-13 01:27:44,603 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:27:44] "GET /api/strategies/notifications?limit=50&_t=1768238864282 HTTP/1.1" 200 - +2026-01-13 01:27:47,321 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:27:47] "GET /api/portfolio/positions?refresh=1&_t=1768238864326 HTTP/1.1" 200 - +2026-01-13 01:27:50,025 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:27:50] "GET /api/portfolio/summary?refresh=1&_t=1768238864326 HTTP/1.1" 200 - +2026-01-13 01:28:08,747 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:28:08] "GET /api/strategies/notifications?limit=50&_t=1768238888740 HTTP/1.1" 200 - +2026-01-13 01:28:39,045 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:28:39] "GET /api/strategies/notifications?limit=50&_t=1768238918729 HTTP/1.1" 200 - +2026-01-13 01:29:04,677 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-13 01:29:04,677 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-13 01:29:04,678 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-13 01:29:04,678 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-13 01:29:04,692 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-13 01:29:04,704 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-13 01:29:05,025 - app.services.strategy - INFO - Found 1 running strategies: [{'id': 14, 'strategy_type': 'IndicatorStrategy'}] +2026-01-13 01:29:05,026 - app - INFO - Restoring 1 running strategies... +2026-01-13 01:29:05,026 - app.services.trading_executor - INFO - Strategy 14 loop starting +2026-01-13 01:29:05,026 - app.services.trading_executor - INFO - Strategy 14 started +2026-01-13 01:29:05,026 - app - INFO - [OK] IndicatorStrategy 14 restored +2026-01-13 01:29:05,026 - app - INFO - Strategy restore completed: 1/1 restored +2026-01-13 01:29:05,031 - app.services.trading_executor - INFO - Strategy 14 derivatives trading; normalize market_type to: swap +2026-01-13 01:29:05,058 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-13 01:29:05,058 - werkzeug - INFO - Press CTRL+C to quit +2026-01-13 01:29:06,515 - app.services.trading_executor - INFO - ็ญ–็•ฅ 14 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-13 01:29:06,529 - app.services.trading_executor - INFO - Strategy 14 initialized; pending_signals=0 +2026-01-13 01:29:39,062 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:29:39] "GET /api/strategies/notifications?limit=50&_t=1768238978739 HTTP/1.1" 200 - +2026-01-13 01:29:53,044 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:29:53] "GET /api/strategies/notifications?limit=50&_t=1768238993033 HTTP/1.1" 200 - +2026-01-13 01:29:53,045 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:29:53] "GET /api/strategies?_t=1768238993033 HTTP/1.1" 200 - +2026-01-13 01:29:55,845 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:29:55] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 01:29:55,845 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:29:55] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 01:29:56,141 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:29:56] "GET /api/credentials/list?user_id=1&_t=1768238995831 HTTP/1.1" 200 - +2026-01-13 01:30:23,312 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:30:23] "GET /api/strategies/notifications?limit=50&_t=1768239022992 HTTP/1.1" 200 - +2026-01-13 01:30:40,455 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:30:40] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 01:30:40,864 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:30:40] "GET /api/credentials/list?user_id=1&_t=1768239040440 HTTP/1.1" 200 - +2026-01-13 01:30:40,864 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:30:40] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 01:30:53,313 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:30:53] "GET /api/strategies/notifications?limit=50&_t=1768239052994 HTTP/1.1" 200 - +2026-01-13 01:31:22,998 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:31:22] "GET /api/strategies/notifications?limit=50&_t=1768239082990 HTTP/1.1" 200 - +2026-01-13 01:31:53,303 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:31:53] "GET /api/strategies/notifications?limit=50&_t=1768239112989 HTTP/1.1" 200 - +2026-01-13 01:32:22,992 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:32:22] "GET /api/strategies/notifications?limit=50&_t=1768239142983 HTTP/1.1" 200 - +2026-01-13 01:32:53,309 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:32:53] "GET /api/strategies/notifications?limit=50&_t=1768239172997 HTTP/1.1" 200 - +2026-01-13 01:33:22,996 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:33:22] "GET /api/strategies/notifications?limit=50&_t=1768239202987 HTTP/1.1" 200 - +2026-01-13 01:33:39,972 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:33:39] "GET /api/strategies?_t=1768239219963 HTTP/1.1" 200 - +2026-01-13 01:33:40,244 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:33:40] "GET /api/strategies?_t=1768239220234 HTTP/1.1" 200 - +2026-01-13 01:33:40,315 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:33:40] "GET /api/strategies?_t=1768239220306 HTTP/1.1" 200 - +2026-01-13 01:33:52,996 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:33:52] "GET /api/strategies/notifications?limit=50&_t=1768239232989 HTTP/1.1" 200 - +2026-01-13 01:34:06,741 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3087.9, pending_signals=1 +2026-01-13 01:34:06,743 - app.services.trading_executor - INFO - Strategy 14 triggered signals: [{'type': 'close_long', 'trigger_price': 3087.9, 'position_size': 0, 'timestamp': 1768239000}] +2026-01-13 01:34:16,612 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3087.9, pending_signals=1 +2026-01-13 01:34:16,614 - app.services.trading_executor - INFO - Strategy 14 triggered signals: [{'type': 'close_long', 'trigger_price': 3087.9, 'position_size': 0, 'timestamp': 1768239000}] +2026-01-13 01:34:22,998 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:34:22] "GET /api/strategies/notifications?limit=50&_t=1768239262989 HTTP/1.1" 200 - +2026-01-13 01:34:50,731 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:34:50] "GET /api/market/types?_t=1768239290718 HTTP/1.1" 200 - +2026-01-13 01:34:51,006 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 01:34:51,037 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:34:51] "GET /api/portfolio/monitors?_t=1768239290718 HTTP/1.1" 200 - +2026-01-13 01:34:51,038 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:34:51] "GET /api/portfolio/groups?_t=1768239290718 HTTP/1.1" 200 - +2026-01-13 01:34:51,038 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:34:51] "GET /api/portfolio/alerts?_t=1768239290718 HTTP/1.1" 200 - +2026-01-13 01:34:53,303 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:34:53] "GET /api/strategies/notifications?limit=50&_t=1768239292983 HTTP/1.1" 200 - +2026-01-13 01:34:53,926 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:34:53] "GET /api/portfolio/positions?_t=1768239290718 HTTP/1.1" 200 - +2026-01-13 01:34:56,347 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:34:56] "GET /api/portfolio/summary?_t=1768239290718 HTTP/1.1" 200 - +2026-01-13 01:35:23,000 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:35:23] "GET /api/strategies/notifications?limit=50&_t=1768239322986 HTTP/1.1" 200 - +2026-01-13 01:35:23,748 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:35:23] "GET /api/portfolio/positions?refresh=1&_t=1768239320727 HTTP/1.1" 200 - +2026-01-13 01:35:26,461 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:35:26] "GET /api/portfolio/summary?refresh=1&_t=1768239320727 HTTP/1.1" 200 - +2026-01-13 01:35:26,702 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3088.21, pending_signals=1 +2026-01-13 01:35:26,707 - app.services.trading_executor - INFO - Strategy 14 triggered signals: [{'type': 'close_long', 'trigger_price': 3088.21, 'position_size': 0, 'timestamp': 1768239000}] +2026-01-13 01:35:36,624 - app.services.trading_executor - INFO - [monitoring] strategy=14 price=3088.21, pending_signals=1 +2026-01-13 01:35:36,626 - app.services.trading_executor - INFO - Strategy 14 triggered signals: [{'type': 'close_long', 'trigger_price': 3088.21, 'position_size': 0, 'timestamp': 1768239000}] +2026-01-13 01:35:49,012 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:35:49] "GET /api/strategies?_t=1768239348685 HTTP/1.1" 200 - +2026-01-13 01:35:53,007 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:35:53] "GET /api/strategies/notifications?limit=50&_t=1768239352996 HTTP/1.1" 200 - +2026-01-13 01:36:23,303 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:36:23] "GET /api/strategies/notifications?limit=50&_t=1768239382990 HTTP/1.1" 200 - +2026-01-13 01:36:29,022 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:36:29] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 01:36:29,344 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:36:29] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 01:36:29,344 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:36:29] "GET /api/credentials/list?user_id=1&_t=1768239389013 HTTP/1.1" 200 - +2026-01-13 01:36:53,311 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:36:53] "GET /api/strategies/notifications?limit=50&_t=1768239412996 HTTP/1.1" 200 - +2026-01-13 01:37:18,743 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:37:18] "GET /api/strategies?_t=1768239438734 HTTP/1.1" 200 - +2026-01-13 01:37:19,067 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:37:19] "GET /api/strategies?_t=1768239439052 HTTP/1.1" 200 - +2026-01-13 01:37:19,118 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:37:19] "GET /api/strategies?_t=1768239439106 HTTP/1.1" 200 - +2026-01-13 01:37:19,371 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:37:19] "GET /api/strategies?_t=1768239439362 HTTP/1.1" 200 - +2026-01-13 01:37:19,417 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:37:19] "GET /api/strategies?_t=1768239439402 HTTP/1.1" 200 - +2026-01-13 01:37:20,289 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:37:20] "GET /api/strategies?_t=1768239440274 HTTP/1.1" 200 - +2026-01-13 01:37:20,291 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:37:20] "GET /api/strategies/notifications?limit=50&_t=1768239440274 HTTP/1.1" 200 - +2026-01-13 01:37:30,508 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:37:30] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 01:37:30,509 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:37:30] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 01:37:30,509 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:37:30] "GET /api/credentials/list?user_id=1&_t=1768239450495 HTTP/1.1" 200 - +2026-01-13 01:37:50,583 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:37:50] "GET /api/strategies/notifications?limit=50&_t=1768239470257 HTTP/1.1" 200 - +2026-01-13 01:38:20,253 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:38:20] "GET /api/strategies/notifications?limit=50&_t=1768239500245 HTTP/1.1" 200 - +2026-01-13 01:38:50,575 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:38:50] "GET /api/strategies/notifications?limit=50&_t=1768239530256 HTTP/1.1" 200 - +2026-01-13 01:39:20,254 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:39:20] "GET /api/strategies/notifications?limit=50&_t=1768239560247 HTTP/1.1" 200 - +2026-01-13 01:39:50,571 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:39:50] "GET /api/strategies/notifications?limit=50&_t=1768239590257 HTTP/1.1" 200 - +2026-01-13 01:40:20,255 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:40:20] "GET /api/strategies/notifications?limit=50&_t=1768239620247 HTTP/1.1" 200 - +2026-01-13 01:40:50,554 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:40:50] "GET /api/strategies/notifications?limit=50&_t=1768239650242 HTTP/1.1" 200 - +2026-01-13 01:41:20,264 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:41:20] "GET /api/strategies/notifications?limit=50&_t=1768239680257 HTTP/1.1" 200 - +2026-01-13 01:41:48,664 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:41:48] "GET /api/strategies?_t=1768239708654 HTTP/1.1" 200 - +2026-01-13 01:41:50,257 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:41:50] "GET /api/strategies/notifications?limit=50&_t=1768239710248 HTTP/1.1" 200 - +2026-01-13 01:41:58,648 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:41:58] "GET /api/strategies?_t=1768239718639 HTTP/1.1" 200 - +2026-01-13 01:42:09,719 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:42:09] "GET /api/strategies?_t=1768239729707 HTTP/1.1" 200 - +2026-01-13 01:42:20,252 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:42:20] "GET /api/strategies/notifications?limit=50&_t=1768239740244 HTTP/1.1" 200 - +2026-01-13 01:42:50,562 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:42:50] "GET /api/strategies/notifications?limit=50&_t=1768239770244 HTTP/1.1" 200 - +2026-01-13 01:43:20,563 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:43:20] "GET /api/strategies/notifications?limit=50&_t=1768239800247 HTTP/1.1" 200 - +2026-01-13 01:43:33,328 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:43:33] "GET /api/strategies/notifications?limit=50&_t=1768239813313 HTTP/1.1" 200 - +2026-01-13 01:43:33,328 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:43:33] "GET /api/strategies?_t=1768239813313 HTTP/1.1" 200 - +2026-01-13 01:44:03,289 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:44:03] "GET /api/strategies/notifications?limit=50&_t=1768239843281 HTTP/1.1" 200 - +2026-01-13 01:44:24,350 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:44:24] "GET /api/strategies?_t=1768239864342 HTTP/1.1" 200 - +2026-01-13 01:44:33,291 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:44:33] "GET /api/strategies/notifications?limit=50&_t=1768239873282 HTTP/1.1" 200 - +2026-01-13 01:45:03,296 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:45:03] "GET /api/strategies/notifications?limit=50&_t=1768239903287 HTTP/1.1" 200 - +2026-01-13 01:45:09,452 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:45:09] "GET /api/credentials/list?user_id=1&_t=1768239909133 HTTP/1.1" 200 - +2026-01-13 01:45:09,453 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:45:09] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 01:45:09,453 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:45:09] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 01:45:33,300 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:45:33] "GET /api/strategies/notifications?limit=50&_t=1768239933291 HTTP/1.1" 200 - +2026-01-13 01:45:48,289 - app.services.ibkr_trading.client - ERROR - IBKR connection failed: There is no current event loop in thread 'Thread-77 (process_request_thread)'. +2026-01-13 01:45:48,289 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:45:48] "POST /api/ibkr/connect HTTP/1.1" 400 - +2026-01-13 01:46:03,307 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:46:03] "GET /api/strategies/notifications?limit=50&_t=1768239963283 HTTP/1.1" 200 - +2026-01-13 01:46:33,601 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:46:33] "GET /api/strategies/notifications?limit=50&_t=1768239993282 HTTP/1.1" 200 - +2026-01-13 01:47:03,299 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:47:03] "GET /api/strategies/notifications?limit=50&_t=1768240023290 HTTP/1.1" 200 - +2026-01-13 01:47:33,608 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:47:33] "GET /api/strategies/notifications?limit=50&_t=1768240053290 HTTP/1.1" 200 - +2026-01-13 01:48:03,287 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:48:03] "GET /api/strategies/notifications?limit=50&_t=1768240083280 HTTP/1.1" 200 - +2026-01-13 01:48:33,601 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:48:33] "GET /api/strategies/notifications?limit=50&_t=1768240113286 HTTP/1.1" 200 - +2026-01-13 01:48:42,250 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:48:42] "GET /api/strategies?_t=1768240122242 HTTP/1.1" 200 - +2026-01-13 01:48:45,237 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:48:45] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 01:48:45,548 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:48:45] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 01:48:45,549 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:48:45] "GET /api/credentials/list?user_id=1&_t=1768240125228 HTTP/1.1" 200 - +2026-01-13 01:49:03,600 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:49:03] "GET /api/strategies/notifications?limit=50&_t=1768240143286 HTTP/1.1" 200 - +2026-01-13 01:49:33,298 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:49:33] "GET /api/strategies/notifications?limit=50&_t=1768240173290 HTTP/1.1" 200 - +2026-01-13 01:49:45,608 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:49:45] "GET /api/strategies?_t=1768240185597 HTTP/1.1" 200 - +2026-01-13 01:50:03,289 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:50:03] "GET /api/strategies/notifications?limit=50&_t=1768240203281 HTTP/1.1" 200 - +2026-01-13 01:50:34,274 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:50:34] "GET /api/strategies/notifications?limit=50&_t=1768240233290 HTTP/1.1" 200 - +2026-01-13 01:50:34,611 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:50:34] "GET /api/strategies?_t=1768240234601 HTTP/1.1" 200 - +2026-01-13 01:50:57,089 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:50:57] "GET /api/strategies?_t=1768240257080 HTTP/1.1" 200 - +2026-01-13 01:50:58,177 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:50:58] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 01:50:58,489 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:50:58] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 01:50:58,489 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:50:58] "GET /api/credentials/list?user_id=1&_t=1768240258168 HTTP/1.1" 200 - +2026-01-13 01:51:03,602 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:51:03] "GET /api/strategies/notifications?limit=50&_t=1768240263281 HTTP/1.1" 200 - +2026-01-13 01:51:33,301 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:51:33] "GET /api/strategies/notifications?limit=50&_t=1768240293291 HTTP/1.1" 200 - +2026-01-13 01:52:03,607 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:52:03] "GET /api/strategies/notifications?limit=50&_t=1768240323291 HTTP/1.1" 200 - +2026-01-13 01:52:33,288 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:52:33] "GET /api/strategies/notifications?limit=50&_t=1768240353280 HTTP/1.1" 200 - +2026-01-13 01:52:39,065 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:52:39] "GET /api/strategies?_t=1768240359052 HTTP/1.1" 200 - +2026-01-13 01:52:50,646 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:52:50] "GET /api/strategies?_t=1768240370635 HTTP/1.1" 200 - +2026-01-13 01:53:03,289 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:53:03] "GET /api/strategies/notifications?limit=50&_t=1768240383281 HTTP/1.1" 200 - +2026-01-13 01:53:09,123 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:53:09] "GET /api/strategies?_t=1768240389113 HTTP/1.1" 200 - +2026-01-13 01:53:12,098 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:53:12] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 01:53:12,421 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:53:12] "GET /api/credentials/list?user_id=1&_t=1768240392088 HTTP/1.1" 200 - +2026-01-13 01:53:12,422 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:53:12] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 01:53:33,605 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:53:33] "GET /api/strategies/notifications?limit=50&_t=1768240413291 HTTP/1.1" 200 - +2026-01-13 01:53:39,827 - app.services.ibkr_trading.client - ERROR - IBKR connection failed: There is no current event loop in thread 'Thread-110 (process_request_thread)'. +2026-01-13 01:53:39,828 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:53:39] "POST /api/ibkr/connect HTTP/1.1" 400 - +2026-01-13 01:53:46,943 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-13 01:53:46,944 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-13 01:53:46,944 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-13 01:53:46,944 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-13 01:53:46,957 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-13 01:53:46,958 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-13 01:53:47,281 - app.services.strategy - INFO - Found 1 running strategies: [{'id': 14, 'strategy_type': 'IndicatorStrategy'}] +2026-01-13 01:53:47,282 - app - INFO - Restoring 1 running strategies... +2026-01-13 01:53:47,282 - app.services.trading_executor - INFO - Strategy 14 loop starting +2026-01-13 01:53:47,282 - app.services.trading_executor - INFO - Strategy 14 started +2026-01-13 01:53:47,283 - app - INFO - [OK] IndicatorStrategy 14 restored +2026-01-13 01:53:47,283 - app - INFO - Strategy restore completed: 1/1 restored +2026-01-13 01:53:47,284 - app.services.trading_executor - INFO - Strategy 14 derivatives trading; normalize market_type to: swap +2026-01-13 01:53:47,314 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-13 01:53:47,315 - werkzeug - INFO - Press CTRL+C to quit +2026-01-13 01:53:48,459 - app.services.trading_executor - INFO - ็ญ–็•ฅ 14 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-13 01:53:48,472 - app.services.trading_executor - INFO - Strategy 14 initialized; pending_signals=0 +2026-01-13 01:53:49,589 - app.services.ibkr_trading.client - ERROR - IBKR connection failed: There is no current event loop in thread 'Thread-4 (process_request_thread)'. +2026-01-13 01:53:49,590 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:53:49] "POST /api/ibkr/connect HTTP/1.1" 400 - +2026-01-13 01:54:03,300 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:54:03] "GET /api/strategies/notifications?limit=50&_t=1768240443292 HTTP/1.1" 200 - +2026-01-13 01:54:33,597 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:54:33] "GET /api/strategies/notifications?limit=50&_t=1768240473283 HTTP/1.1" 200 - +2026-01-13 01:55:03,296 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:55:03] "GET /api/strategies/notifications?limit=50&_t=1768240503289 HTTP/1.1" 200 - +2026-01-13 01:55:33,597 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:55:33] "GET /api/strategies/notifications?limit=50&_t=1768240533281 HTTP/1.1" 200 - +2026-01-13 01:56:03,302 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:56:03] "GET /api/strategies/notifications?limit=50&_t=1768240563294 HTTP/1.1" 200 - +2026-01-13 01:56:33,606 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:56:33] "GET /api/strategies/notifications?limit=50&_t=1768240593290 HTTP/1.1" 200 - +2026-01-13 01:57:03,300 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:57:03] "GET /api/strategies/notifications?limit=50&_t=1768240623293 HTTP/1.1" 200 - +2026-01-13 01:57:33,596 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:57:33] "GET /api/strategies/notifications?limit=50&_t=1768240653283 HTTP/1.1" 200 - +2026-01-13 01:58:03,290 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:58:03] "GET /api/strategies/notifications?limit=50&_t=1768240683282 HTTP/1.1" 200 - +2026-01-13 01:58:33,605 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:58:33] "GET /api/strategies/notifications?limit=50&_t=1768240713291 HTTP/1.1" 200 - +2026-01-13 01:59:03,302 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:59:03] "GET /api/strategies/notifications?limit=50&_t=1768240743294 HTTP/1.1" 200 - +2026-01-13 01:59:33,601 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 01:59:33] "GET /api/strategies/notifications?limit=50&_t=1768240773286 HTTP/1.1" 200 - +2026-01-13 02:00:03,298 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:00:03] "GET /api/strategies/notifications?limit=50&_t=1768240803290 HTTP/1.1" 200 - +2026-01-13 02:00:33,608 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:00:33] "GET /api/strategies/notifications?limit=50&_t=1768240833291 HTTP/1.1" 200 - +2026-01-13 02:01:03,299 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:01:03] "GET /api/strategies/notifications?limit=50&_t=1768240863290 HTTP/1.1" 200 - +2026-01-13 02:01:33,596 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:01:33] "GET /api/strategies/notifications?limit=50&_t=1768240893285 HTTP/1.1" 200 - +2026-01-13 02:02:03,297 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:02:03] "GET /api/strategies/notifications?limit=50&_t=1768240923288 HTTP/1.1" 200 - +2026-01-13 02:02:33,604 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:02:33] "GET /api/strategies/notifications?limit=50&_t=1768240953286 HTTP/1.1" 200 - +2026-01-13 02:03:03,298 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:03:03] "GET /api/strategies/notifications?limit=50&_t=1768240983289 HTTP/1.1" 200 - +2026-01-13 02:03:33,606 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:03:33] "GET /api/strategies/notifications?limit=50&_t=1768241013288 HTTP/1.1" 200 - +2026-01-13 02:04:03,301 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:04:03] "GET /api/strategies/notifications?limit=50&_t=1768241043292 HTTP/1.1" 200 - +2026-01-13 02:04:33,607 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:04:33] "GET /api/strategies/notifications?limit=50&_t=1768241073291 HTTP/1.1" 200 - +2026-01-13 02:05:03,291 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:05:03] "GET /api/strategies/notifications?limit=50&_t=1768241103284 HTTP/1.1" 200 - +2026-01-13 02:05:33,598 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:05:33] "GET /api/strategies/notifications?limit=50&_t=1768241133281 HTTP/1.1" 200 - +2026-01-13 02:06:03,289 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:06:03] "GET /api/strategies/notifications?limit=50&_t=1768241163280 HTTP/1.1" 200 - +2026-01-13 02:06:48,598 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:06:48] "GET /api/strategies/notifications?limit=50&_t=1768241208287 HTTP/1.1" 200 - +2026-01-13 02:07:48,295 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:07:48] "GET /api/strategies/notifications?limit=50&_t=1768241268286 HTTP/1.1" 200 - +2026-01-13 02:07:55,697 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:07:55] "GET /api/strategies/notifications?limit=50&_t=1768241275362 HTTP/1.1" 200 - +2026-01-13 02:07:55,790 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 02:07:57,326 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:07:57] "GET /api/market/types?_t=1768241277313 HTTP/1.1" 200 - +2026-01-13 02:07:57,650 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:07:57] "GET /api/portfolio/monitors?_t=1768241277313 HTTP/1.1" 200 - +2026-01-13 02:07:57,651 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:07:57] "GET /api/portfolio/groups?_t=1768241277313 HTTP/1.1" 200 - +2026-01-13 02:07:57,651 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:07:57] "GET /api/portfolio/alerts?_t=1768241277313 HTTP/1.1" 200 - +2026-01-13 02:07:57,652 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:07:57] "GET /api/strategies/notifications?limit=50&_t=1768241277313 HTTP/1.1" 200 - +2026-01-13 02:08:00,416 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:08:00] "GET /api/portfolio/summary?refresh=1&_t=1768241275382 HTTP/1.1" 200 - +2026-01-13 02:08:01,606 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:08:01] "GET /api/portfolio/positions?refresh=1&_t=1768241275382 HTTP/1.1" 200 - +2026-01-13 02:08:03,999 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:08:03] "GET /api/portfolio/positions?_t=1768241277313 HTTP/1.1" 200 - +2026-01-13 02:08:06,701 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:08:06] "GET /api/portfolio/summary?_t=1768241277313 HTTP/1.1" 200 - +2026-01-13 02:08:08,517 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:08:08] "GET /api/strategies?_t=1768241288509 HTTP/1.1" 200 - +2026-01-13 02:08:10,324 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:08:10] "GET /api/strategies/equityCurve?id=14&_t=1768241290273 HTTP/1.1" 200 - +2026-01-13 02:08:10,641 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:08:10] "GET /api/strategies/positions?id=14&_t=1768241290276 HTTP/1.1" 200 - +2026-01-13 02:08:10,642 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:08:10] "GET /api/strategies/equityCurve?id=14&_t=1768241290273 HTTP/1.1" 200 - +2026-01-13 02:08:12,418 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:08:12] "GET /api/strategies/trades?id=14&_t=1768241292105 HTTP/1.1" 200 - +2026-01-13 02:08:15,219 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:08:15] "GET /api/dashboard/summary?_t=1768241295196 HTTP/1.1" 200 - +2026-01-13 02:08:15,317 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:08:15] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768241295196 HTTP/1.1" 200 - +2026-01-13 02:08:15,518 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:08:15] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768241295196 HTTP/1.1" 200 - +2026-01-13 02:08:20,182 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:08:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768241300171 HTTP/1.1" 200 - +2026-01-13 02:08:25,492 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:08:25] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768241305170 HTTP/1.1" 200 - +2026-01-13 02:08:27,300 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:08:27] "GET /api/strategies/notifications?limit=50&_t=1768241307291 HTTP/1.1" 200 - +2026-01-13 02:08:30,497 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:08:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768241310180 HTTP/1.1" 200 - +2026-01-13 02:08:32,038 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:08:32] "GET /api/strategies?_t=1768241312018 HTTP/1.1" 200 - +2026-01-13 02:08:33,815 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:08:33] "GET /api/strategies/positions?id=14&_t=1768241313472 HTTP/1.1" 200 - +2026-01-13 02:08:33,815 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:08:33] "GET /api/strategies/equityCurve?id=14&_t=1768241313469 HTTP/1.1" 200 - +2026-01-13 02:08:33,819 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:08:33] "GET /api/strategies/equityCurve?id=14&_t=1768241313469 HTTP/1.1" 200 - +2026-01-13 02:08:34,642 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:08:34] "GET /api/strategies/trades?id=14&_t=1768241314634 HTTP/1.1" 200 - +2026-01-13 02:08:36,325 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:08:36] "GET /api/strategies/trades?id=13&_t=1768241316007 HTTP/1.1" 200 - +2026-01-13 02:08:36,326 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:08:36] "GET /api/strategies/positions?id=13&_t=1768241316007 HTTP/1.1" 200 - +2026-01-13 02:08:36,326 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:08:36] "GET /api/strategies/equityCurve?id=13&_t=1768241316006 HTTP/1.1" 200 - +2026-01-13 02:08:36,327 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:08:36] "GET /api/strategies/equityCurve?id=13&_t=1768241316006 HTTP/1.1" 200 - +2026-01-13 02:08:38,427 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:08:38] "GET /api/strategies/equityCurve?id=14&_t=1768241318418 HTTP/1.1" 200 - +2026-01-13 02:08:38,736 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:08:38] "GET /api/strategies/trades?id=14&_t=1768241318419 HTTP/1.1" 200 - +2026-01-13 02:08:38,736 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:08:38] "GET /api/strategies/positions?id=14&_t=1768241318419 HTTP/1.1" 200 - +2026-01-13 02:08:38,737 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:08:38] "GET /api/strategies/equityCurve?id=14&_t=1768241318418 HTTP/1.1" 200 - +2026-01-13 02:08:43,740 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:08:43] "GET /api/strategies/positions?id=14&_t=1768241323424 HTTP/1.1" 200 - +2026-01-13 02:08:48,294 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:08:48] "GET /api/strategies/notifications?limit=50&_t=1768241328283 HTTP/1.1" 200 - +2026-01-13 02:08:48,740 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:08:48] "GET /api/strategies/positions?id=14&_t=1768241328423 HTTP/1.1" 200 - +2026-01-13 02:08:53,434 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:08:53] "GET /api/strategies/positions?id=14&_t=1768241333425 HTTP/1.1" 200 - +2026-01-13 02:08:57,615 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:08:57] "GET /api/strategies/notifications?limit=50&_t=1768241337291 HTTP/1.1" 200 - +2026-01-13 02:08:58,429 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:08:58] "GET /api/strategies/positions?id=14&_t=1768241338420 HTTP/1.1" 200 - +2026-01-13 02:09:03,744 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:09:03] "GET /api/strategies/positions?id=14&_t=1768241343424 HTTP/1.1" 200 - +2026-01-13 02:09:08,430 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:09:08] "GET /api/strategies/equityCurve?id=14&_t=1768241348421 HTTP/1.1" 200 - +2026-01-13 02:09:08,738 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:09:08] "GET /api/strategies/positions?id=14&_t=1768241348421 HTTP/1.1" 200 - +2026-01-13 02:09:13,741 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:09:13] "GET /api/strategies/positions?id=14&_t=1768241353425 HTTP/1.1" 200 - +2026-01-13 02:09:18,434 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:09:18] "GET /api/strategies/positions?id=14&_t=1768241358425 HTTP/1.1" 200 - +2026-01-13 02:09:23,734 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:09:23] "GET /api/strategies/positions?id=14&_t=1768241363420 HTTP/1.1" 200 - +2026-01-13 02:09:27,300 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:09:27] "GET /api/strategies/notifications?limit=50&_t=1768241367292 HTTP/1.1" 200 - +2026-01-13 02:09:28,743 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:09:28] "GET /api/strategies/positions?id=14&_t=1768241368425 HTTP/1.1" 200 - +2026-01-13 02:09:33,427 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:09:33] "GET /api/strategies/positions?id=14&_t=1768241373419 HTTP/1.1" 200 - +2026-01-13 02:09:38,752 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:09:38] "GET /api/strategies/positions?id=14&_t=1768241378426 HTTP/1.1" 200 - +2026-01-13 02:09:38,753 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:09:38] "GET /api/strategies/equityCurve?id=14&_t=1768241378425 HTTP/1.1" 200 - +2026-01-13 02:09:43,432 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:09:43] "GET /api/strategies/positions?id=14&_t=1768241383423 HTTP/1.1" 200 - +2026-01-13 02:09:48,624 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:09:48] "GET /api/strategies/notifications?limit=50&_t=1768241388295 HTTP/1.1" 200 - +2026-01-13 02:09:48,749 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:09:48] "GET /api/strategies/positions?id=14&_t=1768241388426 HTTP/1.1" 200 - +2026-01-13 02:09:53,435 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:09:53] "GET /api/strategies/positions?id=14&_t=1768241393425 HTTP/1.1" 200 - +2026-01-13 02:09:57,607 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:09:57] "GET /api/strategies/notifications?limit=50&_t=1768241397289 HTTP/1.1" 200 - +2026-01-13 02:09:58,430 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:09:58] "GET /api/strategies/positions?id=14&_t=1768241398422 HTTP/1.1" 200 - +2026-01-13 02:10:03,738 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:10:03] "GET /api/strategies/positions?id=14&_t=1768241403424 HTTP/1.1" 200 - +2026-01-13 02:10:08,433 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:10:08] "GET /api/strategies/equityCurve?id=14&_t=1768241408424 HTTP/1.1" 200 - +2026-01-13 02:10:08,738 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:10:08] "GET /api/strategies/positions?id=14&_t=1768241408424 HTTP/1.1" 200 - +2026-01-13 02:10:13,737 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:10:13] "GET /api/strategies/positions?id=14&_t=1768241413419 HTTP/1.1" 200 - +2026-01-13 02:10:18,430 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:10:18] "GET /api/strategies/positions?id=14&_t=1768241418422 HTTP/1.1" 200 - +2026-01-13 02:10:23,746 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:10:23] "GET /api/strategies/positions?id=14&_t=1768241423427 HTTP/1.1" 200 - +2026-01-13 02:10:27,299 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:10:27] "GET /api/strategies/notifications?limit=50&_t=1768241427290 HTTP/1.1" 200 - +2026-01-13 02:10:28,742 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:10:28] "GET /api/strategies/positions?id=14&_t=1768241428427 HTTP/1.1" 200 - +2026-01-13 02:10:33,433 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:10:33] "GET /api/strategies/positions?id=14&_t=1768241433425 HTTP/1.1" 200 - +2026-01-13 02:10:38,741 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:10:38] "GET /api/strategies/equityCurve?id=14&_t=1768241438424 HTTP/1.1" 200 - +2026-01-13 02:10:38,750 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:10:38] "GET /api/strategies/positions?id=14&_t=1768241438425 HTTP/1.1" 200 - +2026-01-13 02:10:43,435 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:10:43] "GET /api/strategies/positions?id=14&_t=1768241443426 HTTP/1.1" 200 - +2026-01-13 02:10:48,602 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:10:48] "GET /api/strategies/notifications?limit=50&_t=1768241448286 HTTP/1.1" 200 - +2026-01-13 02:10:48,737 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:10:48] "GET /api/strategies/positions?id=14&_t=1768241448424 HTTP/1.1" 200 - +2026-01-13 02:10:53,426 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:10:53] "GET /api/strategies/positions?id=14&_t=1768241453419 HTTP/1.1" 200 - +2026-01-13 02:10:57,618 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:10:57] "GET /api/strategies/notifications?limit=50&_t=1768241457295 HTTP/1.1" 200 - +2026-01-13 02:10:58,430 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:10:58] "GET /api/strategies/positions?id=14&_t=1768241458424 HTTP/1.1" 200 - +2026-01-13 02:11:03,735 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:11:03] "GET /api/strategies/positions?id=14&_t=1768241463422 HTTP/1.1" 200 - +2026-01-13 02:11:08,429 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:11:08] "GET /api/strategies/equityCurve?id=14&_t=1768241468413 HTTP/1.1" 200 - +2026-01-13 02:11:08,743 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:11:08] "GET /api/strategies/positions?id=14&_t=1768241468418 HTTP/1.1" 200 - +2026-01-13 02:11:14,598 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:11:14] "GET /api/strategies/positions?id=14&_t=1768241474282 HTTP/1.1" 200 - +2026-01-13 02:11:19,292 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:11:19] "GET /api/strategies/positions?id=14&_t=1768241479284 HTTP/1.1" 200 - +2026-01-13 02:11:24,600 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:11:24] "GET /api/strategies/positions?id=14&_t=1768241484283 HTTP/1.1" 200 - +2026-01-13 02:11:28,291 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:11:28] "GET /api/strategies/notifications?limit=50&_t=1768241488283 HTTP/1.1" 200 - +2026-01-13 02:11:29,607 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:11:29] "GET /api/strategies/positions?id=14&_t=1768241489289 HTTP/1.1" 200 - +2026-01-13 02:11:34,296 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:11:34] "GET /api/strategies/positions?id=14&_t=1768241494289 HTTP/1.1" 200 - +2026-01-13 02:11:39,603 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:11:39] "GET /api/strategies/positions?id=14&_t=1768241499287 HTTP/1.1" 200 - +2026-01-13 02:11:39,604 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:11:39] "GET /api/strategies/equityCurve?id=14&_t=1768241499287 HTTP/1.1" 200 - +2026-01-13 02:11:44,288 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:11:44] "GET /api/strategies/positions?id=14&_t=1768241504280 HTTP/1.1" 200 - +2026-01-13 02:11:48,606 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:11:48] "GET /api/strategies/notifications?limit=50&_t=1768241508292 HTTP/1.1" 200 - +2026-01-13 02:11:49,338 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:11:49] "GET /api/strategies/positions?id=14&_t=1768241509292 HTTP/1.1" 200 - +2026-01-13 02:11:54,595 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:11:54] "GET /api/strategies/positions?id=14&_t=1768241514283 HTTP/1.1" 200 - +2026-01-13 02:11:57,299 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:11:57] "GET /api/strategies/notifications?limit=50&_t=1768241517291 HTTP/1.1" 200 - +2026-01-13 02:11:59,598 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:11:59] "GET /api/strategies/positions?id=14&_t=1768241519285 HTTP/1.1" 200 - +2026-01-13 02:12:04,301 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:12:04] "GET /api/strategies/positions?id=14&_t=1768241524291 HTTP/1.1" 200 - +2026-01-13 02:12:09,634 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:12:09] "GET /api/strategies/positions?id=14&_t=1768241529285 HTTP/1.1" 200 - +2026-01-13 02:12:09,634 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:12:09] "GET /api/strategies/equityCurve?id=14&_t=1768241529285 HTTP/1.1" 200 - +2026-01-13 02:12:48,292 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:12:48] "GET /api/strategies/positions?id=14&_t=1768241568283 HTTP/1.1" 200 - +2026-01-13 02:12:48,600 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:12:48] "GET /api/strategies/notifications?limit=50&_t=1768241568283 HTTP/1.1" 200 - +2026-01-13 02:12:48,601 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:12:48] "GET /api/strategies/notifications?limit=50&_t=1768241568284 HTTP/1.1" 200 - +2026-01-13 02:12:48,602 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:12:48] "GET /api/strategies/equityCurve?id=14&_t=1768241568284 HTTP/1.1" 200 - +2026-01-13 02:13:48,622 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:13:48] "GET /api/strategies/notifications?limit=50&_t=1768241628282 HTTP/1.1" 200 - +2026-01-13 02:13:48,622 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:13:48] "GET /api/strategies/notifications?limit=50&_t=1768241628282 HTTP/1.1" 200 - +2026-01-13 02:13:48,623 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:13:48] "GET /api/strategies/positions?id=14&_t=1768241628281 HTTP/1.1" 200 - +2026-01-13 02:13:48,624 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:13:48] "GET /api/strategies/equityCurve?id=14&_t=1768241628283 HTTP/1.1" 200 - +2026-01-13 02:14:48,296 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:14:48] "GET /api/strategies/positions?id=14&_t=1768241688287 HTTP/1.1" 200 - +2026-01-13 02:14:48,613 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:14:48] "GET /api/strategies/notifications?limit=50&_t=1768241688288 HTTP/1.1" 200 - +2026-01-13 02:14:48,615 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:14:48] "GET /api/strategies/notifications?limit=50&_t=1768241688288 HTTP/1.1" 200 - +2026-01-13 02:14:48,616 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:14:48] "GET /api/strategies/equityCurve?id=14&_t=1768241688289 HTTP/1.1" 200 - +2026-01-13 02:15:48,620 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:15:48] "GET /api/strategies/positions?id=14&_t=1768241748293 HTTP/1.1" 200 - +2026-01-13 02:15:48,622 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:15:48] "GET /api/strategies/notifications?limit=50&_t=1768241748294 HTTP/1.1" 200 - +2026-01-13 02:15:48,623 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:15:48] "GET /api/strategies/equityCurve?id=14&_t=1768241748294 HTTP/1.1" 200 - +2026-01-13 02:15:48,633 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:15:48] "GET /api/strategies/notifications?limit=50&_t=1768241748294 HTTP/1.1" 200 - +2026-01-13 02:16:48,294 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:16:48] "GET /api/strategies/notifications?limit=50&_t=1768241808284 HTTP/1.1" 200 - +2026-01-13 02:16:48,604 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:16:48] "GET /api/strategies/notifications?limit=50&_t=1768241808285 HTTP/1.1" 200 - +2026-01-13 02:16:48,604 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:16:48] "GET /api/strategies/positions?id=14&_t=1768241808284 HTTP/1.1" 200 - +2026-01-13 02:16:48,605 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:16:48] "GET /api/strategies/equityCurve?id=14&_t=1768241808286 HTTP/1.1" 200 - +2026-01-13 02:17:48,611 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:17:48] "GET /api/strategies/notifications?limit=50&_t=1768241868293 HTTP/1.1" 200 - +2026-01-13 02:17:48,612 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:17:48] "GET /api/strategies/notifications?limit=50&_t=1768241868292 HTTP/1.1" 200 - +2026-01-13 02:17:48,612 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:17:48] "GET /api/strategies/positions?id=14&_t=1768241868292 HTTP/1.1" 200 - +2026-01-13 02:17:48,613 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:17:48] "GET /api/strategies/equityCurve?id=14&_t=1768241868293 HTTP/1.1" 200 - +2026-01-13 02:18:48,299 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:18:48] "GET /api/strategies/positions?id=14&_t=1768241928290 HTTP/1.1" 200 - +2026-01-13 02:18:48,610 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:18:48] "GET /api/strategies/notifications?limit=50&_t=1768241928291 HTTP/1.1" 200 - +2026-01-13 02:18:48,610 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:18:48] "GET /api/strategies/equityCurve?id=14&_t=1768241928291 HTTP/1.1" 200 - +2026-01-13 02:18:48,616 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:18:48] "GET /api/strategies/notifications?limit=50&_t=1768241928291 HTTP/1.1" 200 - +2026-01-13 02:19:48,608 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:19:48] "GET /api/strategies/positions?id=14&_t=1768241988286 HTTP/1.1" 200 - +2026-01-13 02:19:48,609 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:19:48] "GET /api/strategies/notifications?limit=50&_t=1768241988286 HTTP/1.1" 200 - +2026-01-13 02:19:48,610 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:19:48] "GET /api/strategies/notifications?limit=50&_t=1768241988287 HTTP/1.1" 200 - +2026-01-13 02:19:48,610 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:19:48] "GET /api/strategies/equityCurve?id=14&_t=1768241988286 HTTP/1.1" 200 - +2026-01-13 02:20:48,294 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:20:48] "GET /api/strategies/notifications?limit=50&_t=1768242048286 HTTP/1.1" 200 - +2026-01-13 02:20:48,604 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:20:48] "GET /api/strategies/positions?id=14&_t=1768242048286 HTTP/1.1" 200 - +2026-01-13 02:20:48,604 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:20:48] "GET /api/strategies/notifications?limit=50&_t=1768242048286 HTTP/1.1" 200 - +2026-01-13 02:20:48,605 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:20:48] "GET /api/strategies/equityCurve?id=14&_t=1768242048287 HTTP/1.1" 200 - +2026-01-13 02:21:48,604 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:21:48] "GET /api/strategies/notifications?limit=50&_t=1768242108282 HTTP/1.1" 200 - +2026-01-13 02:21:48,605 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:21:48] "GET /api/strategies/positions?id=14&_t=1768242108282 HTTP/1.1" 200 - +2026-01-13 02:21:48,605 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:21:48] "GET /api/strategies/notifications?limit=50&_t=1768242108282 HTTP/1.1" 200 - +2026-01-13 02:21:48,606 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:21:48] "GET /api/strategies/equityCurve?id=14&_t=1768242108282 HTTP/1.1" 200 - +2026-01-13 02:22:48,293 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:22:48] "GET /api/strategies/positions?id=14&_t=1768242168284 HTTP/1.1" 200 - +2026-01-13 02:22:48,602 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:22:48] "GET /api/strategies/notifications?limit=50&_t=1768242168284 HTTP/1.1" 200 - +2026-01-13 02:22:48,602 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:22:48] "GET /api/strategies/equityCurve?id=14&_t=1768242168285 HTTP/1.1" 200 - +2026-01-13 02:22:48,608 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:22:48] "GET /api/strategies/notifications?limit=50&_t=1768242168286 HTTP/1.1" 200 - +2026-01-13 02:23:48,608 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:23:48] "GET /api/strategies/notifications?limit=50&_t=1768242228289 HTTP/1.1" 200 - +2026-01-13 02:23:48,609 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:23:48] "GET /api/strategies/notifications?limit=50&_t=1768242228289 HTTP/1.1" 200 - +2026-01-13 02:23:48,610 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:23:48] "GET /api/strategies/positions?id=14&_t=1768242228289 HTTP/1.1" 200 - +2026-01-13 02:23:48,610 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:23:48] "GET /api/strategies/equityCurve?id=14&_t=1768242228289 HTTP/1.1" 200 - +2026-01-13 02:24:48,301 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:24:48] "GET /api/strategies/positions?id=14&_t=1768242288289 HTTP/1.1" 200 - +2026-01-13 02:24:48,605 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:24:48] "GET /api/strategies/notifications?limit=50&_t=1768242288289 HTTP/1.1" 200 - +2026-01-13 02:24:48,606 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:24:48] "GET /api/strategies/notifications?limit=50&_t=1768242288290 HTTP/1.1" 200 - +2026-01-13 02:24:48,609 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:24:48] "GET /api/strategies/equityCurve?id=14&_t=1768242288290 HTTP/1.1" 200 - +2026-01-13 02:25:48,610 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:25:48] "GET /api/strategies/positions?id=14&_t=1768242348294 HTTP/1.1" 200 - +2026-01-13 02:25:48,611 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:25:48] "GET /api/strategies/notifications?limit=50&_t=1768242348294 HTTP/1.1" 200 - +2026-01-13 02:25:48,612 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:25:48] "GET /api/strategies/notifications?limit=50&_t=1768242348295 HTTP/1.1" 200 - +2026-01-13 02:25:48,612 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:25:48] "GET /api/strategies/equityCurve?id=14&_t=1768242348295 HTTP/1.1" 200 - +2026-01-13 02:26:48,293 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:26:48] "GET /api/strategies/positions?id=14&_t=1768242408285 HTTP/1.1" 200 - +2026-01-13 02:26:48,600 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:26:48] "GET /api/strategies/notifications?limit=50&_t=1768242408285 HTTP/1.1" 200 - +2026-01-13 02:26:48,601 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:26:48] "GET /api/strategies/notifications?limit=50&_t=1768242408285 HTTP/1.1" 200 - +2026-01-13 02:26:48,601 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:26:48] "GET /api/strategies/equityCurve?id=14&_t=1768242408286 HTTP/1.1" 200 - +2026-01-13 02:27:48,608 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:27:48] "GET /api/strategies/notifications?limit=50&_t=1768242468287 HTTP/1.1" 200 - +2026-01-13 02:27:48,609 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:27:48] "GET /api/strategies/notifications?limit=50&_t=1768242468288 HTTP/1.1" 200 - +2026-01-13 02:27:48,609 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:27:48] "GET /api/strategies/positions?id=14&_t=1768242468288 HTTP/1.1" 200 - +2026-01-13 02:27:48,610 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:27:48] "GET /api/strategies/equityCurve?id=14&_t=1768242468288 HTTP/1.1" 200 - +2026-01-13 02:28:48,295 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:28:48] "GET /api/strategies/notifications?limit=50&_t=1768242528286 HTTP/1.1" 200 - +2026-01-13 02:28:48,604 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:28:48] "GET /api/strategies/positions?id=14&_t=1768242528286 HTTP/1.1" 200 - +2026-01-13 02:28:48,604 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:28:48] "GET /api/strategies/notifications?limit=50&_t=1768242528287 HTTP/1.1" 200 - +2026-01-13 02:28:48,606 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:28:48] "GET /api/strategies/equityCurve?id=14&_t=1768242528287 HTTP/1.1" 200 - +2026-01-13 02:29:48,610 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:29:48] "GET /api/strategies/positions?id=14&_t=1768242588290 HTTP/1.1" 200 - +2026-01-13 02:29:48,613 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:29:48] "GET /api/strategies/notifications?limit=50&_t=1768242588290 HTTP/1.1" 200 - +2026-01-13 02:29:48,614 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:29:48] "GET /api/strategies/notifications?limit=50&_t=1768242588290 HTTP/1.1" 200 - +2026-01-13 02:29:48,616 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:29:48] "GET /api/strategies/equityCurve?id=14&_t=1768242588290 HTTP/1.1" 200 - +2026-01-13 02:30:48,294 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:30:48] "GET /api/strategies/positions?id=14&_t=1768242648283 HTTP/1.1" 200 - +2026-01-13 02:30:48,601 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:30:48] "GET /api/strategies/notifications?limit=50&_t=1768242648284 HTTP/1.1" 200 - +2026-01-13 02:30:48,602 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:30:48] "GET /api/strategies/notifications?limit=50&_t=1768242648283 HTTP/1.1" 200 - +2026-01-13 02:30:48,602 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:30:48] "GET /api/strategies/equityCurve?id=14&_t=1768242648284 HTTP/1.1" 200 - +2026-01-13 02:31:48,607 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:31:48] "GET /api/strategies/positions?id=14&_t=1768242708283 HTTP/1.1" 200 - +2026-01-13 02:31:48,608 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:31:48] "GET /api/strategies/notifications?limit=50&_t=1768242708284 HTTP/1.1" 200 - +2026-01-13 02:31:48,609 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:31:48] "GET /api/strategies/notifications?limit=50&_t=1768242708285 HTTP/1.1" 200 - +2026-01-13 02:31:48,610 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:31:48] "GET /api/strategies/equityCurve?id=14&_t=1768242708285 HTTP/1.1" 200 - +2026-01-13 02:32:48,295 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:32:48] "GET /api/strategies/notifications?limit=50&_t=1768242768283 HTTP/1.1" 200 - +2026-01-13 02:32:48,598 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:32:48] "GET /api/strategies/notifications?limit=50&_t=1768242768284 HTTP/1.1" 200 - +2026-01-13 02:32:48,599 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:32:48] "GET /api/strategies/positions?id=14&_t=1768242768283 HTTP/1.1" 200 - +2026-01-13 02:32:48,599 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:32:48] "GET /api/strategies/equityCurve?id=14&_t=1768242768284 HTTP/1.1" 200 - +2026-01-13 02:33:19,272 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:33:19] "GET /api/strategies/notifications?limit=50&_t=1768242798928 HTTP/1.1" 200 - +2026-01-13 02:33:19,272 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:33:19] "GET /api/strategies/positions?id=14&_t=1768242798921 HTTP/1.1" 200 - +2026-01-13 02:33:19,273 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:33:19] "GET /api/strategies/equityCurve?id=14&_t=1768242798928 HTTP/1.1" 200 - +2026-01-13 02:33:23,433 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:33:23] "GET /api/strategies/positions?id=14&_t=1768242803424 HTTP/1.1" 200 - +2026-01-13 02:33:24,900 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:33:24] "GET /api/market/types?_t=1768242804565 HTTP/1.1" 200 - +2026-01-13 02:33:24,906 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:33:24] "GET /api/portfolio/monitors?_t=1768242804565 HTTP/1.1" 200 - +2026-01-13 02:33:24,907 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:33:24] "GET /api/portfolio/alerts?_t=1768242804565 HTTP/1.1" 200 - +2026-01-13 02:33:24,907 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:33:24] "GET /api/portfolio/groups?_t=1768242804565 HTTP/1.1" 200 - +2026-01-13 02:33:27,602 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:33:27] "GET /api/strategies/notifications?limit=50&_t=1768242807289 HTTP/1.1" 200 - +2026-01-13 02:33:28,637 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:33:28] "GET /api/portfolio/positions?_t=1768242804565 HTTP/1.1" 200 - +2026-01-13 02:33:31,021 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:33:31] "GET /api/portfolio/summary?_t=1768242804565 HTTP/1.1" 200 - +2026-01-13 02:33:48,613 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:33:48] "GET /api/strategies/notifications?limit=50&_t=1768242828284 HTTP/1.1" 200 - +2026-01-13 02:33:55,060 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:33:55] "GET /api/portfolio/positions?refresh=1&_t=1768242832342 HTTP/1.1" 200 - +2026-01-13 02:33:57,612 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:33:57] "GET /api/strategies/notifications?limit=50&_t=1768242837298 HTTP/1.1" 200 - +2026-01-13 02:33:57,801 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:33:57] "GET /api/portfolio/summary?refresh=1&_t=1768242832342 HTTP/1.1" 200 - +2026-01-13 02:34:27,296 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:34:27] "GET /api/strategies/notifications?limit=50&_t=1768242867289 HTTP/1.1" 200 - +2026-01-13 02:34:27,566 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:34:27] "GET /api/portfolio/positions?refresh=1&_t=1768242864571 HTTP/1.1" 200 - +2026-01-13 02:34:30,365 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:34:30] "GET /api/portfolio/summary?refresh=1&_t=1768242864571 HTTP/1.1" 200 - +2026-01-13 02:34:48,605 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:34:48] "GET /api/strategies/notifications?limit=50&_t=1768242888289 HTTP/1.1" 200 - +2026-01-13 02:34:57,616 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:34:57] "GET /api/strategies/notifications?limit=50&_t=1768242897301 HTTP/1.1" 200 - +2026-01-13 02:34:58,023 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:34:58] "GET /api/portfolio/positions?refresh=1&_t=1768242895317 HTTP/1.1" 200 - +2026-01-13 02:35:04,142 - app.data_sources.us_stock - WARNING - Finnhub quote failed for ORCL: FinnhubAPIException(status_code: 502): JSON error message from Finnhub: +502 Bad Gateway + +

502 Bad Gateway

+
nginx/1.18.0
+ + + +2026-01-13 02:35:04,457 - app.data_sources.us_stock - WARNING - Finnhub quote failed for SPCE: FinnhubAPIException(status_code: 502): JSON error message from Finnhub: +502 Bad Gateway + +

502 Bad Gateway

+
nginx/1.18.0
+ + + +2026-01-13 02:35:04,905 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:35:04] "GET /api/portfolio/summary?refresh=1&_t=1768242895317 HTTP/1.1" 200 - +2026-01-13 02:35:27,299 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:35:27] "GET /api/strategies/notifications?limit=50&_t=1768242927289 HTTP/1.1" 200 - +2026-01-13 02:35:28,417 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:35:28] "GET /api/portfolio/positions?refresh=1&_t=1768242925335 HTTP/1.1" 200 - +2026-01-13 02:35:32,102 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:35:32] "GET /api/portfolio/summary?refresh=1&_t=1768242925335 HTTP/1.1" 200 - +2026-01-13 02:35:48,599 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:35:48] "GET /api/strategies/notifications?limit=50&_t=1768242948285 HTTP/1.1" 200 - +2026-01-13 02:35:58,029 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:35:58] "GET /api/portfolio/positions?refresh=1&_t=1768242955329 HTTP/1.1" 200 - +2026-01-13 02:36:00,889 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:36:00] "GET /api/portfolio/summary?refresh=1&_t=1768242955329 HTTP/1.1" 200 - +2026-01-13 02:36:28,332 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:36:28] "GET /api/portfolio/positions?refresh=1&_t=1768242985339 HTTP/1.1" 200 - +2026-01-13 02:36:31,057 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:36:31] "GET /api/portfolio/summary?refresh=1&_t=1768242985339 HTTP/1.1" 200 - +2026-01-13 02:36:48,298 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:36:48] "GET /api/strategies/notifications?limit=50&_t=1768243008288 HTTP/1.1" 200 - +2026-01-13 02:36:48,605 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:36:48] "GET /api/strategies/notifications?limit=50&_t=1768243008288 HTTP/1.1" 200 - +2026-01-13 02:37:48,609 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:37:48] "GET /api/strategies/notifications?limit=50&_t=1768243068293 HTTP/1.1" 200 - +2026-01-13 02:37:48,661 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:37:48] "GET /api/strategies/notifications?limit=50&_t=1768243068334 HTTP/1.1" 200 - +2026-01-13 02:37:51,556 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:37:51] "GET /api/portfolio/summary?refresh=1&_t=1768243068333 HTTP/1.1" 200 - +2026-01-13 02:37:54,278 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:37:54] "GET /api/portfolio/positions?refresh=1&_t=1768243068333 HTTP/1.1" 200 - +2026-01-13 02:38:48,293 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:38:48] "GET /api/strategies/notifications?limit=50&_t=1768243128282 HTTP/1.1" 200 - +2026-01-13 02:38:48,631 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:38:48] "GET /api/strategies/notifications?limit=50&_t=1768243128309 HTTP/1.1" 200 - +2026-01-13 02:38:51,351 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:38:51] "GET /api/portfolio/summary?refresh=1&_t=1768243128308 HTTP/1.1" 200 - +2026-01-13 02:38:54,021 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:38:54] "GET /api/portfolio/positions?refresh=1&_t=1768243128308 HTTP/1.1" 200 - +2026-01-13 02:39:48,295 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:39:48] "GET /api/strategies/notifications?limit=50&_t=1768243188284 HTTP/1.1" 200 - +2026-01-13 02:39:48,630 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:39:48] "GET /api/strategies/notifications?limit=50&_t=1768243188314 HTTP/1.1" 200 - +2026-01-13 02:39:51,309 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:39:51] "GET /api/portfolio/positions?refresh=1&_t=1768243188312 HTTP/1.1" 200 - +2026-01-13 02:39:54,017 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:39:54] "GET /api/portfolio/summary?refresh=1&_t=1768243188312 HTTP/1.1" 200 - +2026-01-13 02:40:48,302 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:40:48] "GET /api/strategies/notifications?limit=50&_t=1768243248293 HTTP/1.1" 200 - +2026-01-13 02:40:48,642 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:40:48] "GET /api/strategies/notifications?limit=50&_t=1768243248318 HTTP/1.1" 200 - +2026-01-13 02:40:51,320 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:40:51] "GET /api/portfolio/positions?refresh=1&_t=1768243248317 HTTP/1.1" 200 - +2026-01-13 02:40:54,026 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:40:54] "GET /api/portfolio/summary?refresh=1&_t=1768243248317 HTTP/1.1" 200 - +2026-01-13 02:41:48,302 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:41:48] "GET /api/strategies/notifications?limit=50&_t=1768243308290 HTTP/1.1" 200 - +2026-01-13 02:41:48,638 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:41:48] "GET /api/strategies/notifications?limit=50&_t=1768243308324 HTTP/1.1" 200 - +2026-01-13 02:41:51,331 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:41:51] "GET /api/portfolio/summary?refresh=1&_t=1768243308323 HTTP/1.1" 200 - +2026-01-13 02:41:54,055 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:41:54] "GET /api/portfolio/positions?refresh=1&_t=1768243308323 HTTP/1.1" 200 - +2026-01-13 02:42:48,295 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:42:48] "GET /api/strategies/notifications?limit=50&_t=1768243368286 HTTP/1.1" 200 - +2026-01-13 02:42:48,639 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:42:48] "GET /api/strategies/notifications?limit=50&_t=1768243368325 HTTP/1.1" 200 - +2026-01-13 02:42:51,373 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:42:51] "GET /api/portfolio/positions?refresh=1&_t=1768243368323 HTTP/1.1" 200 - +2026-01-13 02:42:54,020 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:42:54] "GET /api/portfolio/summary?refresh=1&_t=1768243368323 HTTP/1.1" 200 - +2026-01-13 02:43:48,303 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:43:48] "GET /api/strategies/notifications?limit=50&_t=1768243428292 HTTP/1.1" 200 - +2026-01-13 02:43:48,641 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:43:48] "GET /api/strategies/notifications?limit=50&_t=1768243428326 HTTP/1.1" 200 - +2026-01-13 02:43:51,344 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:43:51] "GET /api/portfolio/positions?refresh=1&_t=1768243428325 HTTP/1.1" 200 - +2026-01-13 02:43:54,029 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:43:54] "GET /api/portfolio/summary?refresh=1&_t=1768243428325 HTTP/1.1" 200 - +2026-01-13 02:44:48,292 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:44:48] "GET /api/strategies/notifications?limit=50&_t=1768243488282 HTTP/1.1" 200 - +2026-01-13 02:44:48,646 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:44:48] "GET /api/strategies/notifications?limit=50&_t=1768243488319 HTTP/1.1" 200 - +2026-01-13 02:44:51,324 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:44:51] "GET /api/portfolio/summary?refresh=1&_t=1768243488318 HTTP/1.1" 200 - +2026-01-13 02:44:54,029 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:44:54] "GET /api/portfolio/positions?refresh=1&_t=1768243488317 HTTP/1.1" 200 - +2026-01-13 02:45:48,290 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:45:48] "GET /api/strategies/notifications?limit=50&_t=1768243548281 HTTP/1.1" 200 - +2026-01-13 02:45:48,627 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:45:48] "GET /api/strategies/notifications?limit=50&_t=1768243548312 HTTP/1.1" 200 - +2026-01-13 02:45:51,305 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:45:51] "GET /api/portfolio/positions?refresh=1&_t=1768243548311 HTTP/1.1" 200 - +2026-01-13 02:45:54,008 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:45:54] "GET /api/portfolio/summary?refresh=1&_t=1768243548311 HTTP/1.1" 200 - +2026-01-13 02:46:48,296 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:46:48] "GET /api/strategies/notifications?limit=50&_t=1768243608286 HTTP/1.1" 200 - +2026-01-13 02:46:48,634 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:46:48] "GET /api/strategies/notifications?limit=50&_t=1768243608314 HTTP/1.1" 200 - +2026-01-13 02:46:51,312 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:46:51] "GET /api/portfolio/positions?refresh=1&_t=1768243608313 HTTP/1.1" 200 - +2026-01-13 02:46:54,018 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:46:54] "GET /api/portfolio/summary?refresh=1&_t=1768243608313 HTTP/1.1" 200 - +2026-01-13 02:47:48,293 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:47:48] "GET /api/strategies/notifications?limit=50&_t=1768243668284 HTTP/1.1" 200 - +2026-01-13 02:47:48,630 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:47:48] "GET /api/strategies/notifications?limit=50&_t=1768243668316 HTTP/1.1" 200 - +2026-01-13 02:47:51,324 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:47:51] "GET /api/portfolio/summary?refresh=1&_t=1768243668315 HTTP/1.1" 200 - +2026-01-13 02:47:54,026 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:47:54] "GET /api/portfolio/positions?refresh=1&_t=1768243668315 HTTP/1.1" 200 - +2026-01-13 02:48:48,302 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:48:48] "GET /api/strategies/notifications?limit=50&_t=1768243728292 HTTP/1.1" 200 - +2026-01-13 02:48:48,642 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:48:48] "GET /api/strategies/notifications?limit=50&_t=1768243728325 HTTP/1.1" 200 - +2026-01-13 02:48:51,336 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:48:51] "GET /api/portfolio/summary?refresh=1&_t=1768243728323 HTTP/1.1" 200 - +2026-01-13 02:48:54,024 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:48:54] "GET /api/portfolio/positions?refresh=1&_t=1768243728323 HTTP/1.1" 200 - +2026-01-13 02:49:48,297 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:49:48] "GET /api/strategies/notifications?limit=50&_t=1768243788287 HTTP/1.1" 200 - +2026-01-13 02:49:48,634 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:49:48] "GET /api/strategies/notifications?limit=50&_t=1768243788320 HTTP/1.1" 200 - +2026-01-13 02:49:51,325 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:49:51] "GET /api/portfolio/summary?refresh=1&_t=1768243788319 HTTP/1.1" 200 - +2026-01-13 02:49:54,178 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:49:54] "GET /api/portfolio/positions?refresh=1&_t=1768243788319 HTTP/1.1" 200 - +2026-01-13 02:50:48,303 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:50:48] "GET /api/strategies/notifications?limit=50&_t=1768243848291 HTTP/1.1" 200 - +2026-01-13 02:50:48,639 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:50:48] "GET /api/strategies/notifications?limit=50&_t=1768243848327 HTTP/1.1" 200 - +2026-01-13 02:50:51,323 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:50:51] "GET /api/portfolio/summary?refresh=1&_t=1768243848326 HTTP/1.1" 200 - +2026-01-13 02:50:54,030 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:50:54] "GET /api/portfolio/positions?refresh=1&_t=1768243848326 HTTP/1.1" 200 - +2026-01-13 02:51:48,295 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:51:48] "GET /api/strategies/notifications?limit=50&_t=1768243908286 HTTP/1.1" 200 - +2026-01-13 02:51:48,628 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:51:48] "GET /api/strategies/notifications?limit=50&_t=1768243908315 HTTP/1.1" 200 - +2026-01-13 02:51:51,331 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:51:51] "GET /api/portfolio/positions?refresh=1&_t=1768243908313 HTTP/1.1" 200 - +2026-01-13 02:51:54,016 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:51:54] "GET /api/portfolio/summary?refresh=1&_t=1768243908313 HTTP/1.1" 200 - +2026-01-13 02:52:48,300 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:52:48] "GET /api/strategies/notifications?limit=50&_t=1768243968290 HTTP/1.1" 200 - +2026-01-13 02:52:48,650 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:52:48] "GET /api/strategies/notifications?limit=50&_t=1768243968328 HTTP/1.1" 200 - +2026-01-13 02:52:51,345 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:52:51] "GET /api/portfolio/summary?refresh=1&_t=1768243968326 HTTP/1.1" 200 - +2026-01-13 02:52:54,028 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:52:54] "GET /api/portfolio/positions?refresh=1&_t=1768243968326 HTTP/1.1" 200 - +2026-01-13 02:53:48,290 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:53:48] "GET /api/strategies/notifications?limit=50&_t=1768244028281 HTTP/1.1" 200 - +2026-01-13 02:53:48,632 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:53:48] "GET /api/strategies/notifications?limit=50&_t=1768244028309 HTTP/1.1" 200 - +2026-01-13 02:53:51,305 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:53:51] "GET /api/portfolio/positions?refresh=1&_t=1768244028308 HTTP/1.1" 200 - +2026-01-13 02:53:54,010 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:53:54] "GET /api/portfolio/summary?refresh=1&_t=1768244028308 HTTP/1.1" 200 - +2026-01-13 02:54:46,297 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:54:46] "GET /api/strategies/notifications?limit=50&_t=1768244086287 HTTP/1.1" 200 - +2026-01-13 02:54:46,635 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:54:46] "GET /api/strategies/notifications?limit=50&_t=1768244086321 HTTP/1.1" 200 - +2026-01-13 02:54:49,307 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:54:49] "GET /api/portfolio/positions?refresh=1&_t=1768244086320 HTTP/1.1" 200 - +2026-01-13 02:54:52,009 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:54:52] "GET /api/portfolio/summary?refresh=1&_t=1768244086320 HTTP/1.1" 200 - +2026-01-13 02:55:36,299 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:55:36] "GET /api/strategies/notifications?limit=50&_t=1768244136290 HTTP/1.1" 200 - +2026-01-13 02:55:36,655 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:55:36] "GET /api/strategies/notifications?limit=50&_t=1768244136331 HTTP/1.1" 200 - +2026-01-13 02:55:39,334 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:55:39] "GET /api/portfolio/summary?refresh=1&_t=1768244136329 HTTP/1.1" 200 - +2026-01-13 02:55:42,039 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:55:42] "GET /api/portfolio/positions?refresh=1&_t=1768244136329 HTTP/1.1" 200 - +2026-01-13 02:56:31,289 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:56:31] "GET /api/strategies/notifications?limit=50&_t=1768244191279 HTTP/1.1" 200 - +2026-01-13 02:56:31,672 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:56:31] "GET /api/strategies/notifications?limit=50&_t=1768244191338 HTTP/1.1" 200 - +2026-01-13 02:56:33,294 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:56:33] "GET /api/strategies/notifications?limit=50&_t=1768244193285 HTTP/1.1" 200 - +2026-01-13 02:56:34,348 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:56:34] "GET /api/portfolio/positions?refresh=1&_t=1768244191337 HTTP/1.1" 200 - +2026-01-13 02:56:37,048 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:56:37] "GET /api/portfolio/summary?refresh=1&_t=1768244191337 HTTP/1.1" 200 - +2026-01-13 02:57:09,597 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:57:09] "GET /api/strategies/notifications?limit=50&_t=1768244229282 HTTP/1.1" 200 - +2026-01-13 02:57:09,630 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:57:09] "GET /api/strategies/notifications?limit=50&_t=1768244229314 HTTP/1.1" 200 - +2026-01-13 02:57:12,313 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:57:12] "GET /api/portfolio/summary?refresh=1&_t=1768244229313 HTTP/1.1" 200 - +2026-01-13 02:57:15,055 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:57:15] "GET /api/portfolio/positions?refresh=1&_t=1768244229313 HTTP/1.1" 200 - +2026-01-13 02:57:48,296 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:57:48] "GET /api/strategies/notifications?limit=50&_t=1768244268286 HTTP/1.1" 200 - +2026-01-13 02:57:48,637 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:57:48] "GET /api/strategies/notifications?limit=50&_t=1768244268324 HTTP/1.1" 200 - +2026-01-13 02:57:51,528 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:57:51] "GET /api/portfolio/positions?refresh=1&_t=1768244268323 HTTP/1.1" 200 - +2026-01-13 02:57:54,022 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:57:54] "GET /api/portfolio/summary?refresh=1&_t=1768244268323 HTTP/1.1" 200 - +2026-01-13 02:58:15,291 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:58:15] "GET /api/strategies/notifications?limit=50&_t=1768244295282 HTTP/1.1" 200 - +2026-01-13 02:58:15,632 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:58:15] "GET /api/strategies/notifications?limit=50&_t=1768244295315 HTTP/1.1" 200 - +2026-01-13 02:58:18,319 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:58:18] "GET /api/portfolio/summary?refresh=1&_t=1768244295313 HTTP/1.1" 200 - +2026-01-13 02:58:21,019 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:58:21] "GET /api/portfolio/positions?refresh=1&_t=1768244295313 HTTP/1.1" 200 - +2026-01-13 02:58:48,291 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:58:48] "GET /api/strategies/notifications?limit=50&_t=1768244328280 HTTP/1.1" 200 - +2026-01-13 02:58:48,637 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:58:48] "GET /api/strategies/notifications?limit=50&_t=1768244328308 HTTP/1.1" 200 - +2026-01-13 02:58:51,316 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:58:51] "GET /api/portfolio/summary?refresh=1&_t=1768244328307 HTTP/1.1" 200 - +2026-01-13 02:58:54,064 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:58:54] "GET /api/portfolio/positions?refresh=1&_t=1768244328307 HTTP/1.1" 200 - +2026-01-13 02:59:48,301 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:59:48] "GET /api/strategies/notifications?limit=50&_t=1768244388292 HTTP/1.1" 200 - +2026-01-13 02:59:48,642 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:59:48] "GET /api/strategies/notifications?limit=50&_t=1768244388324 HTTP/1.1" 200 - +2026-01-13 02:59:51,323 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:59:51] "GET /api/portfolio/summary?refresh=1&_t=1768244388323 HTTP/1.1" 200 - +2026-01-13 02:59:54,025 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 02:59:54] "GET /api/portfolio/positions?refresh=1&_t=1768244388323 HTTP/1.1" 200 - +2026-01-13 03:00:48,287 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:00:48] "GET /api/strategies/notifications?limit=50&_t=1768244448279 HTTP/1.1" 200 - +2026-01-13 03:00:48,647 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:00:48] "GET /api/strategies/notifications?limit=50&_t=1768244448323 HTTP/1.1" 200 - +2026-01-13 03:00:51,343 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:00:51] "GET /api/portfolio/summary?refresh=1&_t=1768244448321 HTTP/1.1" 200 - +2026-01-13 03:00:54,026 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:00:54] "GET /api/portfolio/positions?refresh=1&_t=1768244448321 HTTP/1.1" 200 - +2026-01-13 03:01:03,216 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:01:03] "GET /api/strategies?_t=1768244463202 HTTP/1.1" 200 - +2026-01-13 03:01:03,483 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:01:03] "GET /api/strategies?_t=1768244463472 HTTP/1.1" 200 - +2026-01-13 03:01:03,568 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:01:03] "GET /api/strategies?_t=1768244463558 HTTP/1.1" 200 - +2026-01-13 03:01:03,685 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:01:03] "GET /api/strategies?_t=1768244463669 HTTP/1.1" 200 - +2026-01-13 03:01:03,769 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:01:03] "GET /api/strategies?_t=1768244463756 HTTP/1.1" 200 - +2026-01-13 03:01:03,861 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:01:03] "GET /api/strategies?_t=1768244463851 HTTP/1.1" 200 - +2026-01-13 03:01:04,163 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:01:04] "GET /api/strategies?_t=1768244464154 HTTP/1.1" 200 - +2026-01-13 03:01:13,983 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:01:13] "GET /api/strategies?_t=1768244473972 HTTP/1.1" 200 - +2026-01-13 03:01:48,299 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:01:48] "GET /api/strategies/notifications?limit=50&_t=1768244508290 HTTP/1.1" 200 - +2026-01-13 03:01:48,637 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:01:48] "GET /api/strategies/notifications?limit=50&_t=1768244508323 HTTP/1.1" 200 - +2026-01-13 03:01:51,339 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:01:51] "GET /api/portfolio/summary?refresh=1&_t=1768244508320 HTTP/1.1" 200 - +2026-01-13 03:01:54,056 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:01:54] "GET /api/portfolio/positions?refresh=1&_t=1768244508320 HTTP/1.1" 200 - +2026-01-13 03:02:48,297 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:02:48] "GET /api/strategies/notifications?limit=50&_t=1768244568288 HTTP/1.1" 200 - +2026-01-13 03:02:48,652 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:02:48] "GET /api/strategies/notifications?limit=50&_t=1768244568325 HTTP/1.1" 200 - +2026-01-13 03:02:51,362 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:02:51] "GET /api/portfolio/positions?refresh=1&_t=1768244568323 HTTP/1.1" 200 - +2026-01-13 03:02:54,032 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:02:54] "GET /api/portfolio/summary?refresh=1&_t=1768244568323 HTTP/1.1" 200 - +2026-01-13 03:03:12,244 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:03:12] "GET /api/strategies?_t=1768244592229 HTTP/1.1" 200 - +2026-01-13 03:03:48,300 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:03:48] "GET /api/strategies/notifications?limit=50&_t=1768244628290 HTTP/1.1" 200 - +2026-01-13 03:03:48,343 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:03:48] "GET /api/strategies/notifications?limit=50&_t=1768244628332 HTTP/1.1" 200 - +2026-01-13 03:03:51,028 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:03:51] "GET /api/portfolio/positions?refresh=1&_t=1768244628331 HTTP/1.1" 200 - +2026-01-13 03:03:53,728 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:03:53] "GET /api/portfolio/summary?refresh=1&_t=1768244628331 HTTP/1.1" 200 - +2026-01-13 03:04:48,600 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:04:48] "GET /api/strategies/notifications?limit=50&_t=1768244688283 HTTP/1.1" 200 - +2026-01-13 03:04:48,634 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:04:48] "GET /api/strategies/notifications?limit=50&_t=1768244688317 HTTP/1.1" 200 - +2026-01-13 03:04:51,314 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:04:51] "GET /api/portfolio/positions?refresh=1&_t=1768244688316 HTTP/1.1" 200 - +2026-01-13 03:04:54,051 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:04:54] "GET /api/portfolio/summary?refresh=1&_t=1768244688316 HTTP/1.1" 200 - +2026-01-13 03:05:48,641 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:05:48] "GET /api/strategies/notifications?limit=50&_t=1768244748321 HTTP/1.1" 200 - +2026-01-13 03:05:51,043 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:05:51] "GET /api/portfolio/positions?refresh=1&_t=1768244748320 HTTP/1.1" 200 - +2026-01-13 03:05:53,767 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:05:53] "GET /api/portfolio/summary?refresh=1&_t=1768244748320 HTTP/1.1" 200 - +2026-01-13 03:06:48,657 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:06:48] "GET /api/strategies/notifications?limit=50&_t=1768244808334 HTTP/1.1" 200 - +2026-01-13 03:06:51,344 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:06:51] "GET /api/portfolio/summary?refresh=1&_t=1768244808332 HTTP/1.1" 200 - +2026-01-13 03:06:54,039 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:06:54] "GET /api/portfolio/positions?refresh=1&_t=1768244808332 HTTP/1.1" 200 - +2026-01-13 03:07:35,853 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:07:35] "GET /api/strategies/notifications?limit=50&_t=1768244855813 HTTP/1.1" 200 - +2026-01-13 03:07:36,217 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:07:36] "GET /api/strategies?_t=1768244856206 HTTP/1.1" 200 - +2026-01-13 03:07:36,510 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:07:36] "GET /api/strategies?_t=1768244856494 HTTP/1.1" 200 - +2026-01-13 03:07:37,894 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:07:37] "GET /api/strategies/equityCurve?id=14&_t=1768244857876 HTTP/1.1" 200 - +2026-01-13 03:07:37,894 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:07:37] "GET /api/strategies/equityCurve?id=14&_t=1768244857876 HTTP/1.1" 200 - +2026-01-13 03:07:38,197 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:07:38] "GET /api/strategies/positions?id=14&_t=1768244857881 HTTP/1.1" 200 - +2026-01-13 03:07:39,373 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:07:39] "GET /api/strategies/trades?id=14&_t=1768244859063 HTTP/1.1" 200 - +2026-01-13 03:07:42,883 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:07:42] "GET /api/strategies/positions?id=14&_t=1768244862876 HTTP/1.1" 200 - +2026-01-13 03:07:44,082 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:07:44] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768244864056 HTTP/1.1" 200 - +2026-01-13 03:07:44,085 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:07:44] "GET /api/dashboard/summary?_t=1768244864056 HTTP/1.1" 200 - +2026-01-13 03:07:44,092 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:07:44] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768244864056 HTTP/1.1" 200 - +2026-01-13 03:07:46,438 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:07:46] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 03:07:46,564 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:07:46] "GET /api/user/info?_t=1768244866412 HTTP/1.1" 200 - +2026-01-13 03:07:46,749 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:07:46] "GET /api/market/config?_t=1768244866412 HTTP/1.1" 200 - +2026-01-13 03:07:46,755 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 03:07:46,756 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 03:07:46,767 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 03:07:46,797 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:07:46] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 03:07:46,884 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:07:46] "GET /api/market/types?_t=1768244866761 HTTP/1.1" 200 - +2026-01-13 03:07:48,434 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:07:48] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-13 03:07:48,665 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:07:48] "GET /api/strategies/notifications?limit=50&_t=1768244868344 HTTP/1.1" 200 - +2026-01-13 03:07:48,742 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:07:48] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-13 03:07:51,034 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:07:51] "GET /api/portfolio/positions?refresh=1&_t=1768244868340 HTTP/1.1" 200 - +2026-01-13 03:07:51,600 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:07:51] "GET /api/strategies?_t=1768244871269 HTTP/1.1" 200 - +2026-01-13 03:07:53,411 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:07:53] "GET /api/market/types?_t=1768244873400 HTTP/1.1" 200 - +2026-01-13 03:07:53,731 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:07:53] "GET /api/portfolio/monitors?_t=1768244873400 HTTP/1.1" 200 - +2026-01-13 03:07:53,732 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:07:53] "GET /api/portfolio/groups?_t=1768244873400 HTTP/1.1" 200 - +2026-01-13 03:07:53,733 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:07:53] "GET /api/portfolio/summary?refresh=1&_t=1768244868340 HTTP/1.1" 200 - +2026-01-13 03:07:53,735 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:07:53] "GET /api/portfolio/alerts?_t=1768244873400 HTTP/1.1" 200 - +2026-01-13 03:07:56,162 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:07:56] "GET /api/portfolio/positions?_t=1768244873400 HTTP/1.1" 200 - +2026-01-13 03:07:58,865 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:07:58] "GET /api/portfolio/summary?_t=1768244873400 HTTP/1.1" 200 - +2026-01-13 03:08:03,602 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:08:03] "GET /api/strategies/notifications?limit=50&_t=1768244883288 HTTP/1.1" 200 - +2026-01-13 03:08:21,904 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:08:21] "GET /api/strategies?_t=1768244901890 HTTP/1.1" 200 - +2026-01-13 03:08:23,405 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:08:23] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 03:08:23,406 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:08:23] "GET /api/credentials/list?user_id=1&_t=1768244903393 HTTP/1.1" 200 - +2026-01-13 03:08:23,408 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:08:23] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 03:08:33,603 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:08:33] "GET /api/strategies/notifications?limit=50&_t=1768244913281 HTTP/1.1" 200 - +2026-01-13 03:08:48,635 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:08:48] "GET /api/strategies/notifications?limit=50&_t=1768244928318 HTTP/1.1" 200 - +2026-01-13 03:08:51,011 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:08:51] "GET /api/portfolio/positions?refresh=1&_t=1768244928317 HTTP/1.1" 200 - +2026-01-13 03:08:53,710 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:08:53] "GET /api/portfolio/summary?refresh=1&_t=1768244928317 HTTP/1.1" 200 - +2026-01-13 03:09:03,610 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:09:03] "GET /api/strategies/notifications?limit=50&_t=1768244943292 HTTP/1.1" 200 - +2026-01-13 03:09:27,444 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:09:27] "GET /api/strategies/notifications?limit=50&_t=1768244967425 HTTP/1.1" 200 - +2026-01-13 03:09:27,446 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:09:27] "GET /api/strategies?_t=1768244967425 HTTP/1.1" 200 - +2026-01-13 03:09:27,685 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:09:27] "GET /api/market/types?_t=1768244967671 HTTP/1.1" 200 - +2026-01-13 03:09:28,005 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:09:28] "GET /api/portfolio/monitors?_t=1768244967671 HTTP/1.1" 200 - +2026-01-13 03:09:28,006 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:09:28] "GET /api/portfolio/groups?_t=1768244967671 HTTP/1.1" 200 - +2026-01-13 03:09:28,006 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:09:28] "GET /api/portfolio/alerts?_t=1768244967671 HTTP/1.1" 200 - +2026-01-13 03:09:28,008 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:09:28] "GET /api/strategies/notifications?limit=50&_t=1768244967671 HTTP/1.1" 200 - +2026-01-13 03:09:30,380 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:09:30] "GET /api/portfolio/positions?_t=1768244967671 HTTP/1.1" 200 - +2026-01-13 03:09:32,793 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:09:32] "GET /api/portfolio/summary?_t=1768244967671 HTTP/1.1" 200 - +2026-01-13 03:09:57,714 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:09:57] "GET /api/strategies/notifications?limit=50&_t=1768244997399 HTTP/1.1" 200 - +2026-01-13 03:09:58,293 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:09:58] "GET /api/strategies/notifications?limit=50&_t=1768244998284 HTTP/1.1" 200 - +2026-01-13 03:10:01,424 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:10:01] "GET /api/portfolio/positions?refresh=1&_t=1768244998327 HTTP/1.1" 200 - +2026-01-13 03:10:04,038 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:10:04] "GET /api/portfolio/summary?refresh=1&_t=1768244998327 HTTP/1.1" 200 - +2026-01-13 03:10:27,330 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:10:27] "GET /api/strategies/notifications?limit=50&_t=1768245027316 HTTP/1.1" 200 - +2026-01-13 03:10:27,331 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:10:27] "GET /api/strategies?_t=1768245027316 HTTP/1.1" 200 - +2026-01-13 03:10:27,851 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:10:27] "GET /api/market/types?_t=1768245027835 HTTP/1.1" 200 - +2026-01-13 03:10:27,856 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:10:27] "GET /api/portfolio/monitors?_t=1768245027835 HTTP/1.1" 200 - +2026-01-13 03:10:28,175 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:10:28] "GET /api/portfolio/groups?_t=1768245027835 HTTP/1.1" 200 - +2026-01-13 03:10:28,176 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:10:28] "GET /api/portfolio/alerts?_t=1768245027835 HTTP/1.1" 200 - +2026-01-13 03:10:28,178 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:10:28] "GET /api/strategies/notifications?limit=50&_t=1768245027835 HTTP/1.1" 200 - +2026-01-13 03:10:30,859 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:10:30] "GET /api/portfolio/summary?_t=1768245027835 HTTP/1.1" 200 - +2026-01-13 03:10:33,310 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:10:33] "GET /api/portfolio/positions?_t=1768245027835 HTTP/1.1" 200 - +2026-01-13 03:10:57,607 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:10:57] "GET /api/strategies/notifications?limit=50&_t=1768245057290 HTTP/1.1" 200 - +2026-01-13 03:10:58,294 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:10:58] "GET /api/strategies/notifications?limit=50&_t=1768245058282 HTTP/1.1" 200 - +2026-01-13 03:11:01,601 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:11:01] "GET /api/portfolio/summary?refresh=1&_t=1768245058327 HTTP/1.1" 200 - +2026-01-13 03:11:04,052 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:11:04] "GET /api/portfolio/positions?refresh=1&_t=1768245058326 HTTP/1.1" 200 - +2026-01-13 03:11:27,301 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:11:27] "GET /api/strategies/notifications?limit=50&_t=1768245087289 HTTP/1.1" 200 - +2026-01-13 03:11:28,591 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:11:28] "GET /api/strategies/notifications?limit=50&_t=1768245088280 HTTP/1.1" 200 - +2026-01-13 03:11:31,337 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:11:31] "GET /api/portfolio/positions?refresh=1&_t=1768245088313 HTTP/1.1" 200 - +2026-01-13 03:11:34,036 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:11:34] "GET /api/portfolio/summary?refresh=1&_t=1768245088313 HTTP/1.1" 200 - +2026-01-13 03:11:57,297 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:11:57] "GET /api/strategies/notifications?limit=50&_t=1768245117289 HTTP/1.1" 200 - +2026-01-13 03:11:58,610 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:11:58] "GET /api/strategies/notifications?limit=50&_t=1768245118294 HTTP/1.1" 200 - +2026-01-13 03:12:01,349 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:12:01] "GET /api/portfolio/positions?refresh=1&_t=1768245118330 HTTP/1.1" 200 - +2026-01-13 03:12:04,023 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:12:04] "GET /api/portfolio/summary?refresh=1&_t=1768245118330 HTTP/1.1" 200 - +2026-01-13 03:12:27,296 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:12:27] "GET /api/strategies/notifications?limit=50&_t=1768245147288 HTTP/1.1" 200 - +2026-01-13 03:12:28,596 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:12:28] "GET /api/strategies/notifications?limit=50&_t=1768245148281 HTTP/1.1" 200 - +2026-01-13 03:12:31,315 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:12:31] "GET /api/portfolio/positions?refresh=1&_t=1768245148319 HTTP/1.1" 200 - +2026-01-13 03:12:34,026 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:12:34] "GET /api/portfolio/summary?refresh=1&_t=1768245148319 HTTP/1.1" 200 - +2026-01-13 03:12:57,290 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:12:57] "GET /api/strategies/notifications?limit=50&_t=1768245177282 HTTP/1.1" 200 - +2026-01-13 03:12:58,607 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:12:58] "GET /api/strategies/notifications?limit=50&_t=1768245178293 HTTP/1.1" 200 - +2026-01-13 03:13:01,326 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:13:01] "GET /api/portfolio/positions?refresh=1&_t=1768245178309 HTTP/1.1" 200 - +2026-01-13 03:13:04,012 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:13:04] "GET /api/portfolio/summary?refresh=1&_t=1768245178309 HTTP/1.1" 200 - +2026-01-13 03:13:27,306 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:13:27] "GET /api/strategies/notifications?limit=50&_t=1768245207297 HTTP/1.1" 200 - +2026-01-13 03:13:28,602 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:13:28] "GET /api/strategies/notifications?limit=50&_t=1768245208289 HTTP/1.1" 200 - +2026-01-13 03:13:31,377 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:13:31] "GET /api/portfolio/positions?refresh=1&_t=1768245208324 HTTP/1.1" 200 - +2026-01-13 03:13:34,278 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:13:34] "GET /api/portfolio/summary?refresh=1&_t=1768245208324 HTTP/1.1" 200 - +2026-01-13 03:13:57,306 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:13:57] "GET /api/strategies/notifications?limit=50&_t=1768245237297 HTTP/1.1" 200 - +2026-01-13 03:14:27,596 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:14:27] "GET /api/strategies/notifications?limit=50&_t=1768245267285 HTTP/1.1" 200 - +2026-01-13 03:14:48,294 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:14:48] "GET /api/strategies/notifications?limit=50&_t=1768245288285 HTTP/1.1" 200 - +2026-01-13 03:14:49,114 - app.data_sources.us_stock - WARNING - Finnhub quote failed for OMDA: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response')) +2026-01-13 03:14:51,319 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:14:51] "GET /api/portfolio/positions?refresh=1&_t=1768245288318 HTTP/1.1" 200 - +2026-01-13 03:14:54,034 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:14:54] "GET /api/portfolio/summary?refresh=1&_t=1768245288318 HTTP/1.1" 200 - +2026-01-13 03:14:57,299 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:14:57] "GET /api/strategies/notifications?limit=50&_t=1768245297291 HTTP/1.1" 200 - +2026-01-13 03:15:28,256 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:15:28] "GET /api/strategies/notifications?limit=50&_t=1768245327297 HTTP/1.1" 200 - +2026-01-13 03:15:28,331 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:15:28] "GET /api/strategies?_t=1768245328322 HTTP/1.1" 200 - +2026-01-13 03:15:48,303 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:15:48] "GET /api/strategies/notifications?limit=50&_t=1768245348291 HTTP/1.1" 200 - +2026-01-13 03:15:51,032 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:15:51] "GET /api/portfolio/positions?refresh=1&_t=1768245348336 HTTP/1.1" 200 - +2026-01-13 03:15:53,729 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:15:53] "GET /api/portfolio/summary?refresh=1&_t=1768245348336 HTTP/1.1" 200 - +2026-01-13 03:15:57,594 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:15:57] "GET /api/strategies/notifications?limit=50&_t=1768245357282 HTTP/1.1" 200 - +2026-01-13 03:16:48,292 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:16:48] "GET /api/strategies/notifications?limit=50&_t=1768245408282 HTTP/1.1" 200 - +2026-01-13 03:16:48,595 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:16:48] "GET /api/strategies/notifications?limit=50&_t=1768245408284 HTTP/1.1" 200 - +2026-01-13 03:16:51,310 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:16:51] "GET /api/portfolio/summary?refresh=1&_t=1768245408310 HTTP/1.1" 200 - +2026-01-13 03:16:54,012 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:16:54] "GET /api/portfolio/positions?refresh=1&_t=1768245408310 HTTP/1.1" 200 - +2026-01-13 03:17:48,616 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:17:48] "GET /api/strategies/notifications?limit=50&_t=1768245468294 HTTP/1.1" 200 - +2026-01-13 03:17:48,616 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:17:48] "GET /api/strategies/notifications?limit=50&_t=1768245468295 HTTP/1.1" 200 - +2026-01-13 03:17:51,361 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:17:51] "GET /api/portfolio/positions?refresh=1&_t=1768245468338 HTTP/1.1" 200 - +2026-01-13 03:17:54,056 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:17:54] "GET /api/portfolio/summary?refresh=1&_t=1768245468338 HTTP/1.1" 200 - +2026-01-13 03:18:48,292 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:18:48] "GET /api/strategies/notifications?limit=50&_t=1768245528284 HTTP/1.1" 200 - +2026-01-13 03:18:48,599 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:18:48] "GET /api/strategies/notifications?limit=50&_t=1768245528284 HTTP/1.1" 200 - +2026-01-13 03:18:51,508 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:18:51] "GET /api/portfolio/positions?refresh=1&_t=1768245528322 HTTP/1.1" 200 - +2026-01-13 03:18:54,124 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:18:54] "GET /api/portfolio/summary?refresh=1&_t=1768245528322 HTTP/1.1" 200 - +2026-01-13 03:19:48,601 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:19:48] "GET /api/strategies/notifications?limit=50&_t=1768245588283 HTTP/1.1" 200 - +2026-01-13 03:19:48,601 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:19:48] "GET /api/strategies/notifications?limit=50&_t=1768245588283 HTTP/1.1" 200 - +2026-01-13 03:19:51,349 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:19:51] "GET /api/portfolio/positions?refresh=1&_t=1768245588315 HTTP/1.1" 200 - +2026-01-13 03:19:54,049 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:19:54] "GET /api/portfolio/summary?refresh=1&_t=1768245588315 HTTP/1.1" 200 - +2026-01-13 03:20:48,298 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:20:48] "GET /api/strategies/notifications?limit=50&_t=1768245648288 HTTP/1.1" 200 - +2026-01-13 03:20:48,299 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:20:48] "GET /api/strategies/notifications?limit=50&_t=1768245648287 HTTP/1.1" 200 - +2026-01-13 03:20:51,336 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:20:51] "GET /api/portfolio/summary?refresh=1&_t=1768245648322 HTTP/1.1" 200 - +2026-01-13 03:20:53,966 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:20:53] "GET /api/portfolio/positions?refresh=1&_t=1768245648321 HTTP/1.1" 200 - +2026-01-13 03:21:48,296 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:21:48] "GET /api/strategies/notifications?limit=50&_t=1768245708288 HTTP/1.1" 200 - +2026-01-13 03:21:48,603 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:21:48] "GET /api/strategies/notifications?limit=50&_t=1768245708288 HTTP/1.1" 200 - +2026-01-13 03:21:51,298 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:21:51] "GET /api/portfolio/positions?refresh=1&_t=1768245708319 HTTP/1.1" 200 - +2026-01-13 03:21:53,958 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:21:53] "GET /api/portfolio/summary?refresh=1&_t=1768245708319 HTTP/1.1" 200 - +2026-01-13 03:22:48,602 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:22:48] "GET /api/strategies/notifications?limit=50&_t=1768245768284 HTTP/1.1" 200 - +2026-01-13 03:22:48,603 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:22:48] "GET /api/strategies/notifications?limit=50&_t=1768245768285 HTTP/1.1" 200 - +2026-01-13 03:22:51,451 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:22:51] "GET /api/portfolio/positions?refresh=1&_t=1768245768320 HTTP/1.1" 200 - +2026-01-13 03:22:53,972 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:22:53] "GET /api/portfolio/summary?refresh=1&_t=1768245768320 HTTP/1.1" 200 - +2026-01-13 03:23:48,293 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:23:48] "GET /api/strategies/notifications?limit=50&_t=1768245828283 HTTP/1.1" 200 - +2026-01-13 03:23:48,595 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:23:48] "GET /api/strategies/notifications?limit=50&_t=1768245828283 HTTP/1.1" 200 - +2026-01-13 03:23:51,275 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:23:51] "GET /api/portfolio/positions?refresh=1&_t=1768245828318 HTTP/1.1" 200 - +2026-01-13 03:23:53,974 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:23:53] "GET /api/portfolio/summary?refresh=1&_t=1768245828318 HTTP/1.1" 200 - +2026-01-13 03:24:48,609 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:24:48] "GET /api/strategies/notifications?limit=50&_t=1768245888290 HTTP/1.1" 200 - +2026-01-13 03:24:48,610 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:24:48] "GET /api/strategies/notifications?limit=50&_t=1768245888292 HTTP/1.1" 200 - +2026-01-13 03:24:51,561 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:24:51] "GET /api/portfolio/positions?refresh=1&_t=1768245888323 HTTP/1.1" 200 - +2026-01-13 03:24:54,263 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:24:54] "GET /api/portfolio/summary?refresh=1&_t=1768245888323 HTTP/1.1" 200 - +2026-01-13 03:25:48,289 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:25:48] "GET /api/strategies/notifications?limit=50&_t=1768245948280 HTTP/1.1" 200 - +2026-01-13 03:25:48,594 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:25:48] "GET /api/strategies/notifications?limit=50&_t=1768245948281 HTTP/1.1" 200 - +2026-01-13 03:25:51,334 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:25:51] "GET /api/portfolio/positions?refresh=1&_t=1768245948309 HTTP/1.1" 200 - +2026-01-13 03:25:54,037 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:25:54] "GET /api/portfolio/summary?refresh=1&_t=1768245948309 HTTP/1.1" 200 - +2026-01-13 03:26:40,207 - app.services.trading_executor - WARNING - Failed to fetch price: okx GET https://www.okx.com/api/v5/market/ticker?instId=ETH-USDT +2026-01-13 03:26:40,207 - app.services.trading_executor - WARNING - Strategy 14 failed to fetch current price +2026-01-13 03:26:48,611 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:26:48] "GET /api/strategies/notifications?limit=50&_t=1768246008284 HTTP/1.1" 200 - +2026-01-13 03:26:48,612 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:26:48] "GET /api/strategies/notifications?limit=50&_t=1768246008284 HTTP/1.1" 200 - +2026-01-13 03:26:50,599 - app.services.trading_executor - WARNING - Failed to fetch price: okx GET https://www.okx.com/api/v5/market/ticker?instId=ETH-USDT +2026-01-13 03:26:50,600 - app.services.trading_executor - WARNING - Strategy 14 failed to fetch current price +2026-01-13 03:26:57,248 - app.data_sources.us_stock - WARNING - Finnhub quote failed for OMDA: ('Connection aborted.', ConnectionResetError(10054, 'An existing connection was forcibly closed by the remote host', None, 10054, None)) +2026-01-13 03:26:57,248 - app.data_sources.us_stock - WARNING - Finnhub quote failed for SPCE: ('Connection aborted.', ConnectionResetError(10054, 'An existing connection was forcibly closed by the remote host', None, 10054, None)) +2026-01-13 03:26:57,248 - app.services.trading_executor - WARNING - Failed to fetch price: okx GET https://www.okx.com/api/v5/market/ticker?instId=ETH-USDT +2026-01-13 03:26:57,248 - app.data_sources.us_stock - WARNING - Finnhub quote failed for GD: ('Connection aborted.', ConnectionResetError(10054, 'An existing connection was forcibly closed by the remote host', None, 10054, None)) +2026-01-13 03:26:57,249 - app.services.trading_executor - WARNING - Strategy 14 failed to fetch current price +2026-01-13 03:26:58,655 - app.routes.portfolio - WARNING - Price fetch failed for USStock:SPCE: +2026-01-13 03:27:01,589 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:27:01] "GET /api/portfolio/positions?refresh=1&_t=1768246008320 HTTP/1.1" 200 - +2026-01-13 03:27:04,312 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:27:04] "GET /api/portfolio/summary?refresh=1&_t=1768246008320 HTTP/1.1" 200 - +2026-01-13 03:27:48,303 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:27:48] "GET /api/strategies/notifications?limit=50&_t=1768246068293 HTTP/1.1" 200 - +2026-01-13 03:27:48,612 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:27:48] "GET /api/strategies/notifications?limit=50&_t=1768246068293 HTTP/1.1" 200 - +2026-01-13 03:27:51,610 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:27:51] "GET /api/portfolio/positions?refresh=1&_t=1768246068328 HTTP/1.1" 200 - +2026-01-13 03:27:54,371 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:27:54] "GET /api/portfolio/summary?refresh=1&_t=1768246068328 HTTP/1.1" 200 - +2026-01-13 03:28:25,937 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:28:25] "GET /api/strategies/notifications?limit=50&_t=1768246105588 HTTP/1.1" 200 - +2026-01-13 03:28:27,292 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:28:27] "GET /api/market/types?_t=1768246107275 HTTP/1.1" 200 - +2026-01-13 03:28:27,601 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:28:27] "GET /api/portfolio/groups?_t=1768246107275 HTTP/1.1" 200 - +2026-01-13 03:28:27,602 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:28:27] "GET /api/portfolio/monitors?_t=1768246107275 HTTP/1.1" 200 - +2026-01-13 03:28:27,603 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:28:27] "GET /api/portfolio/alerts?_t=1768246107275 HTTP/1.1" 200 - +2026-01-13 03:28:27,610 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:28:27] "GET /api/strategies/notifications?limit=50&_t=1768246107282 HTTP/1.1" 200 - +2026-01-13 03:28:30,347 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:28:30] "GET /api/portfolio/positions?_t=1768246107275 HTTP/1.1" 200 - +2026-01-13 03:28:32,703 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:28:32] "GET /api/portfolio/summary?_t=1768246107275 HTTP/1.1" 200 - +2026-01-13 03:28:48,597 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:28:48] "GET /api/strategies/notifications?limit=50&_t=1768246128284 HTTP/1.1" 200 - +2026-01-13 03:28:51,323 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:28:51] "GET /api/portfolio/positions?refresh=1&_t=1768246128317 HTTP/1.1" 200 - +2026-01-13 03:28:52,411 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:28:52] "DELETE /api/portfolio/alerts/12 HTTP/1.1" 200 - +2026-01-13 03:28:52,758 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:28:52] "GET /api/portfolio/alerts?_t=1768246132441 HTTP/1.1" 200 - +2026-01-13 03:28:54,132 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:28:54] "GET /api/portfolio/summary?refresh=1&_t=1768246128317 HTTP/1.1" 200 - +2026-01-13 03:28:57,598 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:28:57] "GET /api/strategies/notifications?limit=50&_t=1768246137284 HTTP/1.1" 200 - +2026-01-13 03:29:00,327 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:29:00] "GET /api/portfolio/summary?refresh=1&_t=1768246137279 HTTP/1.1" 200 - +2026-01-13 03:29:03,058 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:29:03] "GET /api/portfolio/positions?refresh=1&_t=1768246137279 HTTP/1.1" 200 - +2026-01-13 03:29:27,603 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:29:27] "GET /api/strategies/notifications?limit=50&_t=1768246167288 HTTP/1.1" 200 - +2026-01-13 03:29:48,292 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:29:48] "GET /api/strategies/notifications?limit=50&_t=1768246188284 HTTP/1.1" 200 - +2026-01-13 03:29:51,341 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:29:51] "GET /api/portfolio/positions?refresh=1&_t=1768246188311 HTTP/1.1" 200 - +2026-01-13 03:29:54,042 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:29:54] "GET /api/portfolio/summary?refresh=1&_t=1768246188311 HTTP/1.1" 200 - +2026-01-13 03:29:57,295 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:29:57] "GET /api/strategies/notifications?limit=50&_t=1768246197288 HTTP/1.1" 200 - +2026-01-13 03:30:27,606 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:30:27] "GET /api/strategies/notifications?limit=50&_t=1768246227287 HTTP/1.1" 200 - +2026-01-13 03:30:48,299 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:30:48] "GET /api/strategies/notifications?limit=50&_t=1768246248290 HTTP/1.1" 200 - +2026-01-13 03:30:52,271 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:30:52] "GET /api/portfolio/positions?refresh=1&_t=1768246248327 HTTP/1.1" 200 - +2026-01-13 03:30:55,012 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:30:55] "GET /api/portfolio/summary?refresh=1&_t=1768246248328 HTTP/1.1" 200 - +2026-01-13 03:30:57,301 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:30:57] "GET /api/strategies/notifications?limit=50&_t=1768246257293 HTTP/1.1" 200 - +2026-01-13 03:31:27,301 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:31:27] "GET /api/strategies/notifications?limit=50&_t=1768246287293 HTTP/1.1" 200 - +2026-01-13 03:31:48,593 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:31:48] "GET /api/strategies/notifications?limit=50&_t=1768246308280 HTTP/1.1" 200 - +2026-01-13 03:31:51,282 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:31:51] "GET /api/portfolio/positions?refresh=1&_t=1768246308316 HTTP/1.1" 200 - +2026-01-13 03:31:54,029 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:31:54] "GET /api/portfolio/summary?refresh=1&_t=1768246308316 HTTP/1.1" 200 - +2026-01-13 03:31:57,300 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:31:57] "GET /api/strategies/notifications?limit=50&_t=1768246317292 HTTP/1.1" 200 - +2026-01-13 03:32:27,607 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:32:27] "GET /api/strategies/notifications?limit=50&_t=1768246347290 HTTP/1.1" 200 - +2026-01-13 03:32:48,296 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:32:48] "GET /api/strategies/notifications?limit=50&_t=1768246368286 HTTP/1.1" 200 - +2026-01-13 03:32:51,600 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:32:51] "GET /api/portfolio/positions?refresh=1&_t=1768246368320 HTTP/1.1" 200 - +2026-01-13 03:32:54,249 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:32:54] "GET /api/portfolio/summary?refresh=1&_t=1768246368320 HTTP/1.1" 200 - +2026-01-13 03:32:57,294 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:32:57] "GET /api/strategies/notifications?limit=50&_t=1768246377286 HTTP/1.1" 200 - +2026-01-13 03:33:27,610 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:33:27] "GET /api/strategies/notifications?limit=50&_t=1768246407294 HTTP/1.1" 200 - +2026-01-13 03:33:30,915 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:33:30] "GET /api/strategies?_t=1768246410903 HTTP/1.1" 200 - +2026-01-13 03:33:32,638 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:33:32] "GET /api/credentials/list?user_id=1&_t=1768246412208 HTTP/1.1" 200 - +2026-01-13 03:33:32,638 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:33:32] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 03:33:32,638 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:33:32] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 03:33:48,295 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:33:48] "GET /api/strategies/notifications?limit=50&_t=1768246428286 HTTP/1.1" 200 - +2026-01-13 03:33:51,311 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:33:51] "GET /api/portfolio/positions?refresh=1&_t=1768246428322 HTTP/1.1" 200 - +2026-01-13 03:33:54,165 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:33:54] "GET /api/portfolio/summary?refresh=1&_t=1768246428322 HTTP/1.1" 200 - +2026-01-13 03:33:57,302 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:33:57] "GET /api/strategies/notifications?limit=50&_t=1768246437295 HTTP/1.1" 200 - +2026-01-13 03:34:27,612 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:34:27] "GET /api/strategies/notifications?limit=50&_t=1768246467290 HTTP/1.1" 200 - +2026-01-13 03:34:48,299 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:34:48] "GET /api/strategies/notifications?limit=50&_t=1768246488291 HTTP/1.1" 200 - +2026-01-13 03:34:51,307 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:34:51] "GET /api/portfolio/positions?refresh=1&_t=1768246488321 HTTP/1.1" 200 - +2026-01-13 03:34:54,014 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:34:54] "GET /api/portfolio/summary?refresh=1&_t=1768246488321 HTTP/1.1" 200 - +2026-01-13 03:34:57,293 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:34:57] "GET /api/strategies/notifications?limit=50&_t=1768246497285 HTTP/1.1" 200 - +2026-01-13 03:35:27,609 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:35:27] "GET /api/strategies/notifications?limit=50&_t=1768246527296 HTTP/1.1" 200 - +2026-01-13 03:35:57,292 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:35:57] "GET /api/strategies/notifications?limit=50&_t=1768246557285 HTTP/1.1" 200 - +2026-01-13 03:36:27,607 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:36:27] "GET /api/strategies/notifications?limit=50&_t=1768246587291 HTTP/1.1" 200 - +2026-01-13 03:36:57,291 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:36:57] "GET /api/strategies/notifications?limit=50&_t=1768246617284 HTTP/1.1" 200 - +2026-01-13 03:37:27,608 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:37:27] "GET /api/strategies/notifications?limit=50&_t=1768246647293 HTTP/1.1" 200 - +2026-01-13 03:37:57,293 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:37:57] "GET /api/strategies/notifications?limit=50&_t=1768246677285 HTTP/1.1" 200 - +2026-01-13 03:38:27,609 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:38:27] "GET /api/strategies/notifications?limit=50&_t=1768246707289 HTTP/1.1" 200 - +2026-01-13 03:38:57,297 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:38:57] "GET /api/strategies/notifications?limit=50&_t=1768246737289 HTTP/1.1" 200 - +2026-01-13 03:39:27,601 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:39:27] "GET /api/strategies/notifications?limit=50&_t=1768246767287 HTTP/1.1" 200 - +2026-01-13 03:39:57,294 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:39:57] "GET /api/strategies/notifications?limit=50&_t=1768246797287 HTTP/1.1" 200 - +2026-01-13 03:40:19,895 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:40:19] "GET /api/strategies?_t=1768246819885 HTTP/1.1" 200 - +2026-01-13 03:40:27,291 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:40:27] "GET /api/strategies/notifications?limit=50&_t=1768246827283 HTTP/1.1" 200 - +2026-01-13 03:40:40,043 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:40:40] "GET /api/strategies?_t=1768246840027 HTTP/1.1" 200 - +2026-01-13 03:40:57,305 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:40:57] "GET /api/strategies/notifications?limit=50&_t=1768246857294 HTTP/1.1" 200 - +2026-01-13 03:41:03,857 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:41:03] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 03:41:03,857 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:41:03] "GET /api/credentials/list?user_id=1&_t=1768246863544 HTTP/1.1" 200 - +2026-01-13 03:41:03,858 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:41:03] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 03:41:27,293 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:41:27] "GET /api/strategies/notifications?limit=50&_t=1768246887285 HTTP/1.1" 200 - +2026-01-13 03:41:34,669 - app - ERROR - Failed to start pending order worker: name 'MT5Client' is used prior to global declaration (pending_order_worker.py, line 775) +2026-01-13 03:41:34,669 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-13 03:41:34,672 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-13 03:41:34,672 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-13 03:41:34,681 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-13 03:41:35,034 - app.services.strategy - INFO - Found 1 running strategies: [{'id': 14, 'strategy_type': 'IndicatorStrategy'}] +2026-01-13 03:41:35,034 - app - INFO - Restoring 1 running strategies... +2026-01-13 03:41:35,034 - app.services.trading_executor - INFO - Strategy 14 loop starting +2026-01-13 03:41:35,034 - app.services.trading_executor - INFO - Strategy 14 started +2026-01-13 03:41:35,034 - app - INFO - [OK] IndicatorStrategy 14 restored +2026-01-13 03:41:35,035 - app - INFO - Strategy restore completed: 1/1 restored +2026-01-13 03:41:35,039 - app.services.trading_executor - INFO - Strategy 14 derivatives trading; normalize market_type to: swap +2026-01-13 03:41:35,064 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-13 03:41:35,065 - werkzeug - INFO - Press CTRL+C to quit +2026-01-13 03:41:36,493 - app.services.trading_executor - INFO - ็ญ–็•ฅ 14 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-13 03:41:36,505 - app.services.trading_executor - INFO - Strategy 14 initialized; pending_signals=0 +2026-01-13 03:41:45,979 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:41:45] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 03:41:45,980 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:41:45] "GET /api/credentials/list?user_id=1&_t=1768246905659 HTTP/1.1" 200 - +2026-01-13 03:41:45,980 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:41:45] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 03:41:57,296 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:41:57] "GET /api/strategies/notifications?limit=50&_t=1768246917287 HTTP/1.1" 200 - +2026-01-13 03:42:27,606 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:42:27] "GET /api/strategies/notifications?limit=50&_t=1768246947294 HTTP/1.1" 200 - +2026-01-13 03:42:57,298 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:42:57] "GET /api/strategies/notifications?limit=50&_t=1768246977290 HTTP/1.1" 200 - +2026-01-13 03:43:27,607 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:43:27] "GET /api/strategies/notifications?limit=50&_t=1768247007291 HTTP/1.1" 200 - +2026-01-13 03:43:57,306 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:43:57] "GET /api/strategies/notifications?limit=50&_t=1768247037298 HTTP/1.1" 200 - +2026-01-13 03:44:27,604 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:44:27] "GET /api/strategies/notifications?limit=50&_t=1768247067285 HTTP/1.1" 200 - +2026-01-13 03:44:57,297 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:44:57] "GET /api/strategies/notifications?limit=50&_t=1768247097288 HTTP/1.1" 200 - +2026-01-13 03:45:27,605 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:45:27] "GET /api/strategies/notifications?limit=50&_t=1768247127288 HTTP/1.1" 200 - +2026-01-13 03:45:57,294 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:45:57] "GET /api/strategies/notifications?limit=50&_t=1768247157286 HTTP/1.1" 200 - +2026-01-13 03:46:27,613 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:46:27] "GET /api/strategies/notifications?limit=50&_t=1768247187294 HTTP/1.1" 200 - +2026-01-13 03:46:57,301 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:46:57] "GET /api/strategies/notifications?limit=50&_t=1768247217293 HTTP/1.1" 200 - +2026-01-13 03:47:27,609 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:47:27] "GET /api/strategies/notifications?limit=50&_t=1768247247291 HTTP/1.1" 200 - +2026-01-13 03:47:57,299 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:47:57] "GET /api/strategies/notifications?limit=50&_t=1768247277291 HTTP/1.1" 200 - +2026-01-13 03:48:27,602 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:48:27] "GET /api/strategies/notifications?limit=50&_t=1768247307288 HTTP/1.1" 200 - +2026-01-13 03:48:37,885 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:48:37] "GET /api/strategies?_t=1768247317877 HTTP/1.1" 200 - +2026-01-13 03:48:50,598 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:48:50] "GET /api/strategies?_t=1768247330586 HTTP/1.1" 200 - +2026-01-13 03:48:57,297 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:48:57] "GET /api/strategies/notifications?limit=50&_t=1768247337288 HTTP/1.1" 200 - +2026-01-13 03:49:27,602 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:49:27] "GET /api/strategies/notifications?limit=50&_t=1768247367287 HTTP/1.1" 200 - +2026-01-13 03:49:51,770 - app - ERROR - Failed to start pending order worker: name 'MT5Client' is used prior to global declaration (pending_order_worker.py, line 809) +2026-01-13 03:49:51,771 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-13 03:49:51,778 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-13 03:49:51,778 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-13 03:49:51,789 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-13 03:49:52,194 - app.services.strategy - INFO - Found 1 running strategies: [{'id': 14, 'strategy_type': 'IndicatorStrategy'}] +2026-01-13 03:49:52,195 - app - INFO - Restoring 1 running strategies... +2026-01-13 03:49:52,195 - app.services.trading_executor - INFO - Strategy 14 loop starting +2026-01-13 03:49:52,195 - app.services.trading_executor - INFO - Strategy 14 started +2026-01-13 03:49:52,196 - app - INFO - [OK] IndicatorStrategy 14 restored +2026-01-13 03:49:52,196 - app - INFO - Strategy restore completed: 1/1 restored +2026-01-13 03:49:52,200 - app.services.trading_executor - INFO - Strategy 14 derivatives trading; normalize market_type to: swap +2026-01-13 03:49:52,214 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-13 03:49:52,214 - werkzeug - INFO - Press CTRL+C to quit +2026-01-13 03:49:53,336 - app.services.trading_executor - INFO - ็ญ–็•ฅ 14 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-13 03:49:53,350 - app.services.trading_executor - INFO - Strategy 14 initialized; pending_signals=0 +2026-01-13 03:49:54,100 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:49:54] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 03:49:54,402 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:49:54] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 03:49:54,402 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:49:54] "GET /api/credentials/list?user_id=1&_t=1768247394090 HTTP/1.1" 200 - +2026-01-13 03:49:57,612 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:49:57] "GET /api/strategies/notifications?limit=50&_t=1768247397296 HTTP/1.1" 200 - +2026-01-13 03:50:27,303 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:50:27] "GET /api/strategies/notifications?limit=50&_t=1768247427295 HTTP/1.1" 200 - +2026-01-13 03:50:57,607 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:50:57] "GET /api/strategies/notifications?limit=50&_t=1768247457293 HTTP/1.1" 200 - +2026-01-13 03:51:27,290 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:51:27] "GET /api/strategies/notifications?limit=50&_t=1768247487283 HTTP/1.1" 200 - +2026-01-13 03:51:46,553 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:51:46] "GET /api/strategies?_t=1768247506545 HTTP/1.1" 200 - +2026-01-13 03:51:50,547 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:51:50] "GET /api/strategies?_t=1768247510538 HTTP/1.1" 200 - +2026-01-13 03:51:57,609 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:51:57] "GET /api/strategies/notifications?limit=50&_t=1768247517290 HTTP/1.1" 200 - +2026-01-13 03:52:00,639 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:52:00] "GET /api/strategies?_t=1768247520630 HTTP/1.1" 200 - +2026-01-13 03:52:27,294 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:52:27] "GET /api/strategies/notifications?limit=50&_t=1768247547286 HTTP/1.1" 200 - +2026-01-13 03:52:57,598 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:52:57] "GET /api/strategies/notifications?limit=50&_t=1768247577283 HTTP/1.1" 200 - +2026-01-13 03:53:27,301 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:53:27] "GET /api/strategies/notifications?limit=50&_t=1768247607293 HTTP/1.1" 200 - +2026-01-13 03:53:57,607 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:53:57] "GET /api/strategies/notifications?limit=50&_t=1768247637292 HTTP/1.1" 200 - +2026-01-13 03:54:27,303 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:54:27] "GET /api/strategies/notifications?limit=50&_t=1768247667295 HTTP/1.1" 200 - +2026-01-13 03:54:57,598 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:54:57] "GET /api/strategies/notifications?limit=50&_t=1768247697282 HTTP/1.1" 200 - +2026-01-13 03:55:27,294 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:55:27] "GET /api/strategies/notifications?limit=50&_t=1768247727285 HTTP/1.1" 200 - +2026-01-13 03:55:57,607 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:55:57] "GET /api/strategies/notifications?limit=50&_t=1768247757294 HTTP/1.1" 200 - +2026-01-13 03:56:27,303 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:56:27] "GET /api/strategies/notifications?limit=50&_t=1768247787296 HTTP/1.1" 200 - +2026-01-13 03:56:57,597 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:56:57] "GET /api/strategies/notifications?limit=50&_t=1768247817282 HTTP/1.1" 200 - +2026-01-13 03:57:27,301 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:57:27] "GET /api/strategies/notifications?limit=50&_t=1768247847293 HTTP/1.1" 200 - +2026-01-13 03:57:57,600 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:57:57] "GET /api/strategies/notifications?limit=50&_t=1768247877285 HTTP/1.1" 200 - +2026-01-13 03:58:27,306 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:58:27] "GET /api/strategies/notifications?limit=50&_t=1768247907298 HTTP/1.1" 200 - +2026-01-13 03:58:57,602 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:58:57] "GET /api/strategies/notifications?limit=50&_t=1768247937282 HTTP/1.1" 200 - +2026-01-13 03:59:27,305 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:59:27] "GET /api/strategies/notifications?limit=50&_t=1768247967296 HTTP/1.1" 200 - +2026-01-13 03:59:57,599 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 03:59:57] "GET /api/strategies/notifications?limit=50&_t=1768247997283 HTTP/1.1" 200 - +2026-01-13 04:00:27,300 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:00:27] "GET /api/strategies/notifications?limit=50&_t=1768248027290 HTTP/1.1" 200 - +2026-01-13 04:00:57,606 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:00:57] "GET /api/strategies/notifications?limit=50&_t=1768248057294 HTTP/1.1" 200 - +2026-01-13 04:01:27,294 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:01:27] "GET /api/strategies/notifications?limit=50&_t=1768248087287 HTTP/1.1" 200 - +2026-01-13 04:01:57,602 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:01:57] "GET /api/strategies/notifications?limit=50&_t=1768248117285 HTTP/1.1" 200 - +2026-01-13 04:01:59,992 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:01:59] "GET /api/strategies?_t=1768248119980 HTTP/1.1" 200 - +2026-01-13 04:02:03,616 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:02:03] "GET /api/strategies/notifications?limit=50&_t=1768248123595 HTTP/1.1" 200 - +2026-01-13 04:02:03,617 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:02:03] "GET /api/strategies?_t=1768248123595 HTTP/1.1" 200 - +2026-01-13 04:02:33,881 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:02:33] "GET /api/strategies/notifications?limit=50&_t=1768248153566 HTTP/1.1" 200 - +2026-01-13 04:03:03,572 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:03:03] "GET /api/strategies/notifications?limit=50&_t=1768248183563 HTTP/1.1" 200 - +2026-01-13 04:03:16,442 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:03:16] "GET /api/strategies?_t=1768248196433 HTTP/1.1" 200 - +2026-01-13 04:03:33,567 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:03:33] "GET /api/strategies/notifications?limit=50&_t=1768248213558 HTTP/1.1" 200 - +2026-01-13 04:04:03,567 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:04:03] "GET /api/strategies/notifications?limit=50&_t=1768248243558 HTTP/1.1" 200 - +2026-01-13 04:04:22,428 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:04:22] "GET /api/credentials/list?user_id=1&_t=1768248262107 HTTP/1.1" 200 - +2026-01-13 04:04:22,429 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:04:22] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 04:04:22,429 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:04:22] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 04:04:33,569 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:04:33] "GET /api/strategies/notifications?limit=50&_t=1768248273559 HTTP/1.1" 200 - +2026-01-13 04:05:04,611 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:05:04] "GET /api/strategies/notifications?limit=50&_t=1768248304294 HTTP/1.1" 200 - +2026-01-13 04:05:29,209 - app - ERROR - Failed to start pending order worker: name 'MT5Client' is used prior to global declaration (pending_order_worker.py, line 809) +2026-01-13 04:05:29,209 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-13 04:05:29,213 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-13 04:05:29,213 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-13 04:05:29,224 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-13 04:05:29,564 - app.services.strategy - INFO - Found 1 running strategies: [{'id': 14, 'strategy_type': 'IndicatorStrategy'}] +2026-01-13 04:05:29,564 - app - INFO - Restoring 1 running strategies... +2026-01-13 04:05:29,564 - app.services.trading_executor - INFO - Strategy 14 loop starting +2026-01-13 04:05:29,564 - app.services.trading_executor - INFO - Strategy 14 started +2026-01-13 04:05:29,565 - app - INFO - [OK] IndicatorStrategy 14 restored +2026-01-13 04:05:29,565 - app - INFO - Strategy restore completed: 1/1 restored +2026-01-13 04:05:29,569 - app.services.trading_executor - INFO - Strategy 14 derivatives trading; normalize market_type to: swap +2026-01-13 04:05:29,594 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-13 04:05:29,595 - werkzeug - INFO - Press CTRL+C to quit +2026-01-13 04:05:31,058 - app.services.trading_executor - INFO - ็ญ–็•ฅ 14 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-13 04:05:31,071 - app.services.trading_executor - INFO - Strategy 14 initialized; pending_signals=0 +2026-01-13 04:05:34,295 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:05:34] "GET /api/strategies/notifications?limit=50&_t=1768248334286 HTTP/1.1" 200 - +2026-01-13 04:06:48,600 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:06:48] "GET /api/strategies/notifications?limit=50&_t=1768248408283 HTTP/1.1" 200 - +2026-01-13 04:07:48,290 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:07:48] "GET /api/strategies/notifications?limit=50&_t=1768248468281 HTTP/1.1" 200 - +2026-01-13 04:08:48,603 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:08:48] "GET /api/strategies/notifications?limit=50&_t=1768248528287 HTTP/1.1" 200 - +2026-01-13 04:09:48,288 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:09:48] "GET /api/strategies/notifications?limit=50&_t=1768248588280 HTTP/1.1" 200 - +2026-01-13 04:10:04,610 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:10:04] "GET /api/strategies/notifications?limit=50&_t=1768248604293 HTTP/1.1" 200 - +2026-01-13 04:10:34,303 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:10:34] "GET /api/strategies/notifications?limit=50&_t=1768248634291 HTTP/1.1" 200 - +2026-01-13 04:11:04,673 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:11:04] "GET /api/strategies/notifications?limit=50&_t=1768248664290 HTTP/1.1" 200 - +2026-01-13 04:11:48,304 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:11:48] "GET /api/strategies/notifications?limit=50&_t=1768248708294 HTTP/1.1" 200 - +2026-01-13 04:12:48,597 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:12:48] "GET /api/strategies/notifications?limit=50&_t=1768248768282 HTTP/1.1" 200 - +2026-01-13 04:13:48,295 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:13:48] "GET /api/strategies/notifications?limit=50&_t=1768248828286 HTTP/1.1" 200 - +2026-01-13 04:14:48,605 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:14:48] "GET /api/strategies/notifications?limit=50&_t=1768248888291 HTTP/1.1" 200 - +2026-01-13 04:15:48,303 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:15:48] "GET /api/strategies/notifications?limit=50&_t=1768248948294 HTTP/1.1" 200 - +2026-01-13 04:16:48,017 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:16:48] "GET /api/strategies/notifications?limit=50&_t=1768249007666 HTTP/1.1" 200 - +2026-01-13 04:17:04,316 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:17:04] "GET /api/strategies/notifications?limit=50&_t=1768249024291 HTTP/1.1" 200 - +2026-01-13 04:17:34,606 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:17:34] "GET /api/strategies/notifications?limit=50&_t=1768249054290 HTTP/1.1" 200 - +2026-01-13 04:18:48,593 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:18:48] "GET /api/strategies/notifications?limit=50&_t=1768249128280 HTTP/1.1" 200 - +2026-01-13 04:19:48,296 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:19:48] "GET /api/strategies/notifications?limit=50&_t=1768249188287 HTTP/1.1" 200 - +2026-01-13 04:20:48,620 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:20:48] "GET /api/strategies/notifications?limit=50&_t=1768249248294 HTTP/1.1" 200 - +2026-01-13 04:21:48,296 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:21:48] "GET /api/strategies/notifications?limit=50&_t=1768249308287 HTTP/1.1" 200 - +2026-01-13 04:22:48,604 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:22:48] "GET /api/strategies/notifications?limit=50&_t=1768249368290 HTTP/1.1" 200 - +2026-01-13 04:23:48,300 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:23:48] "GET /api/strategies/notifications?limit=50&_t=1768249428290 HTTP/1.1" 200 - +2026-01-13 04:24:48,605 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:24:48] "GET /api/strategies/notifications?limit=50&_t=1768249488293 HTTP/1.1" 200 - +2026-01-13 04:25:48,291 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:25:48] "GET /api/strategies/notifications?limit=50&_t=1768249548281 HTTP/1.1" 200 - +2026-01-13 04:26:48,609 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:26:48] "GET /api/strategies/notifications?limit=50&_t=1768249608290 HTTP/1.1" 200 - +2026-01-13 04:27:48,290 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:27:48] "GET /api/strategies/notifications?limit=50&_t=1768249668281 HTTP/1.1" 200 - +2026-01-13 04:28:48,600 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:28:48] "GET /api/strategies/notifications?limit=50&_t=1768249728288 HTTP/1.1" 200 - +2026-01-13 04:29:03,569 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:29:03] "GET /api/strategies/notifications?limit=50&_t=1768249743562 HTTP/1.1" 200 - +2026-01-13 04:29:05,585 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:29:05] "GET /api/strategies/notifications?limit=50&_t=1768249745557 HTTP/1.1" 200 - +2026-01-13 04:29:05,586 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:29:05] "GET /api/strategies?_t=1768249745557 HTTP/1.1" 200 - +2026-01-13 04:29:07,939 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:29:07] "GET /api/strategies/equityCurve?id=14&_t=1768249747923 HTTP/1.1" 200 - +2026-01-13 04:29:08,244 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:29:08] "GET /api/strategies/positions?id=14&_t=1768249747926 HTTP/1.1" 200 - +2026-01-13 04:29:08,245 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:29:08] "GET /api/strategies/equityCurve?id=14&_t=1768249747923 HTTP/1.1" 200 - +2026-01-13 04:29:09,676 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:29:09] "GET /api/strategies/trades?id=14&_t=1768249749359 HTTP/1.1" 200 - +2026-01-13 04:29:14,010 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:29:14] "GET /api/market/types?_t=1768249754000 HTTP/1.1" 200 - +2026-01-13 04:29:14,330 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:29:14] "GET /api/portfolio/monitors?_t=1768249754000 HTTP/1.1" 200 - +2026-01-13 04:29:14,332 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:29:14] "GET /api/portfolio/alerts?_t=1768249754000 HTTP/1.1" 200 - +2026-01-13 04:29:14,333 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:29:14] "GET /api/portfolio/groups?_t=1768249754000 HTTP/1.1" 200 - +2026-01-13 04:29:14,441 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 04:29:17,312 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:29:17] "GET /api/portfolio/summary?_t=1768249754000 HTTP/1.1" 200 - +2026-01-13 04:29:19,734 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:29:19] "GET /api/portfolio/positions?_t=1768249754000 HTTP/1.1" 200 - +2026-01-13 04:29:35,841 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:29:35] "GET /api/strategies/notifications?limit=50&_t=1768249775529 HTTP/1.1" 200 - +2026-01-13 04:29:47,042 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:29:47] "GET /api/portfolio/positions?refresh=1&_t=1768249784332 HTTP/1.1" 200 - +2026-01-13 04:29:49,779 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 04:29:49] "GET /api/portfolio/summary?refresh=1&_t=1768249784333 HTTP/1.1" 200 - +2026-01-13 17:31:17,649 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-13 17:31:17,649 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-13 17:31:17,655 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-13 17:31:17,655 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-13 17:31:17,872 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-13 17:31:17,874 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-13 17:31:17,890 - app.services.strategy - INFO - Found 1 running strategies: [{'id': 14, 'strategy_type': 'IndicatorStrategy'}] +2026-01-13 17:31:17,896 - app - INFO - Restoring 1 running strategies... +2026-01-13 17:31:17,896 - app.services.trading_executor - INFO - Strategy 14 loop starting +2026-01-13 17:31:17,896 - app.services.trading_executor - INFO - Strategy 14 started +2026-01-13 17:31:17,900 - app - INFO - [OK] IndicatorStrategy 14 restored +2026-01-13 17:31:17,904 - app - INFO - Strategy restore completed: 1/1 restored +2026-01-13 17:31:17,912 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://172.18.0.2:5000 +2026-01-13 17:31:17,915 - werkzeug - INFO - Press CTRL+C to quit +2026-01-13 17:31:17,925 - app.services.trading_executor - INFO - Strategy 14 derivatives trading; normalize market_type to: swap +2026-01-13 17:31:17,932 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: okx GET https://www.okx.com/api/v5/public/instruments?instType=SPOT; trying fallback +2026-01-13 17:31:18,042 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: okx GET https://www.okx.com/api/v5/public/instruments?instType=SPOT +2026-01-13 17:31:18,044 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2026-01-13 17:31:18,046 - app.services.trading_executor - ERROR - Strategy 14 failed to fetch K-lines +2026-01-13 17:31:18,050 - app.services.trading_executor - INFO - Strategy 14 loop exited +2026-01-13 17:31:46,826 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:31:46] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:31:48,285 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:31:48] "GET /api/strategies/notifications?limit=50&_t=1768296708266 HTTP/1.1" 200 - +2026-01-13 17:32:16,871 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:32:16] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:32:19,671 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:32:19] "GET /api/strategies/notifications?limit=50&_t=1768296739630 HTTP/1.1" 200 - +2026-01-13 17:32:21,167 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:32:21] "GET /api/settings/schema?_t=1768296741162 HTTP/1.1" 200 - +2026-01-13 17:32:21,171 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:32:21] "GET /api/settings/values?_t=1768296741162 HTTP/1.1" 200 - +2026-01-13 17:32:21,181 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:32:21] "GET /api/strategies/notifications?limit=50&_t=1768296741162 HTTP/1.1" 200 - +2026-01-13 17:32:32,371 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:32:32] "GET /api/dashboard/summary?_t=1768296752335 HTTP/1.1" 200 - +2026-01-13 17:32:32,372 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:32:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768296752335 HTTP/1.1" 200 - +2026-01-13 17:32:32,378 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:32:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768296752335 HTTP/1.1" 200 - +2026-01-13 17:32:35,871 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:32:35] "GET /api/user/info?_t=1768296755851 HTTP/1.1" 200 - +2026-01-13 17:32:35,872 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:32:35] "GET /api/market/config?_t=1768296755851 HTTP/1.1" 200 - +2026-01-13 17:32:35,886 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:32:35] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 17:32:35,919 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:32:35] "GET /api/market/types?_t=1768296755912 HTTP/1.1" 200 - +2026-01-13 17:32:35,927 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:32:35] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 17:32:35,981 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: okx GET https://www.okx.com/api/v5/public/instruments?instType=SPOT; trying fallback +2026-01-13 17:32:36,011 - app.data_sources.forex - ERROR - Tiingo API request failed: SOCKSHTTPSConnectionPool(host='api.tiingo.com', port=443): Max retries exceeded with url: /tiingo/fx/xauusd/prices?startDate=2026-01-10&endDate=2026-01-13&resampleFreq=1day&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.tiingo.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:32:36,095 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: okx GET https://www.okx.com/api/v5/public/instruments?instType=SPOT; trying fallback +2026-01-13 17:32:36,095 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: okx GET https://www.okx.com/api/v5/public/instruments?instType=SPOT +2026-01-13 17:32:36,095 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: okx GET https://www.okx.com/api/v5/public/instruments?instType=SPOT; trying fallback +2026-01-13 17:32:36,096 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2026-01-13 17:32:36,186 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 17:32:36,186 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 17:32:36,187 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 17:32:36,187 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 17:32:36,188 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 17:32:36,188 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 17:32:36,189 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 17:32:36,192 - urllib3.connectionpool - WARNING - Retrying (Retry(total=2, connect=2, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=1.600519&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:32:36,193 - urllib3.connectionpool - WARNING - Retrying (Retry(total=2, connect=2, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=0.300475&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:32:36,194 - urllib3.connectionpool - WARNING - Retrying (Retry(total=2, connect=2, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSConnection(host='web.ifzq.gtimg.cn', port=80): Failed to establish a new connection: [Errno 111] Connection refused")': /appstock/app/fqkline/get?param=hk00700,day,,,2,qfq +2026-01-13 17:32:36,195 - urllib3.connectionpool - WARNING - Retrying (Retry(total=2, connect=2, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=0.000858&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:32:36,206 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: okx GET https://www.okx.com/api/v5/public/instruments?instType=SPOT +2026-01-13 17:32:36,208 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: okx GET https://www.okx.com/api/v5/public/instruments?instType=SPOT +2026-01-13 17:32:36,208 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2026-01-13 17:32:36,208 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BNB/USDT +2026-01-13 17:32:36,233 - yfinance - ERROR - Failed to get ticker 'SI=F' reason: Failed to perform, curl: (7) Failed to connect to 127.0.0.1 port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 17:32:36,234 - yfinance - ERROR - Failed to get ticker 'AAPL' reason: Failed to perform, curl: (7) Failed to connect to 127.0.0.1 port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 17:32:36,235 - yfinance - ERROR - Failed to get ticker 'AVGO' reason: Failed to perform, curl: (7) Failed to connect to 127.0.0.1 port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 17:32:36,237 - yfinance - ERROR - $AVGO: possibly delisted; no timezone found +2026-01-13 17:32:36,240 - app.data_sources.us_stock - ERROR - Finnhub fetch failed: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//stock/candle?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=AVGO&resolution=D&from=1768037556&to=1768296756 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:32:36,241 - yfinance - ERROR - Failed to get ticker 'AVGO' reason: Failed to perform, curl: (7) Failed to connect to 127.0.0.1 port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 17:32:36,241 - app.data_sources.base - WARNING - USStock/yfinance: no data for AVGO +2026-01-13 17:32:36,242 - yfinance - ERROR - $AVGO: possibly delisted; no timezone found +2026-01-13 17:32:36,242 - app.data_sources.futures - ERROR - Failed to fetch traditional futures data: Failed to perform, curl: (7) Failed to connect to 127.0.0.1 port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 17:32:36,244 - urllib3.connectionpool - WARNING - Retrying (Retry(total=2, connect=2, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=1.600519&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:32:36,245 - app.data_sources.us_stock - ERROR - Finnhub fetch failed: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//stock/candle?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=AVGO&resolution=D&from=1768037556&to=1768296756 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:32:36,246 - app.data_sources.us_stock - WARNING - yfinance fetch failed: Failed to perform, curl: (7) Failed to connect to 127.0.0.1 port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 17:32:36,247 - yfinance - ERROR - Failed to get ticker 'SI=F' reason: Failed to perform, curl: (7) Failed to connect to 127.0.0.1 port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 17:32:36,247 - app.data_sources.base - WARNING - USStock/yfinance: no data for AVGO +2026-01-13 17:32:36,249 - yfinance - ERROR - $SI=F: possibly delisted; no timezone found +2026-01-13 17:32:36,251 - app.data_sources.futures - WARNING - No data: SI=F +2026-01-13 17:32:36,251 - app.data_sources.us_stock - ERROR - Finnhub fetch failed: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//stock/candle?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=AAPL&resolution=D&from=1768037556&to=1768296756 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:32:36,251 - app.data_sources.forex - ERROR - Tiingo API request failed: SOCKSHTTPSConnectionPool(host='api.tiingo.com', port=443): Max retries exceeded with url: /tiingo/fx/xauusd/prices?startDate=2026-01-10&endDate=2026-01-13&resampleFreq=1day&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.tiingo.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:32:36,252 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-13 17:32:36,254 - urllib3.connectionpool - WARNING - Retrying (Retry(total=2, connect=2, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSConnection(host='web.ifzq.gtimg.cn', port=80): Failed to establish a new connection: [Errno 111] Connection refused")': /appstock/app/fqkline/get?param=hk00700,day,,,2,qfq +2026-01-13 17:32:36,256 - urllib3.connectionpool - WARNING - Retrying (Retry(total=2, connect=2, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=0.300475&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:32:36,316 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: okx GET https://www.okx.com/api/v5/public/instruments?instType=SPOT; trying fallback +2026-01-13 17:32:36,316 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: okx GET https://www.okx.com/api/v5/public/instruments?instType=SPOT; trying fallback +2026-01-13 17:32:36,317 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: okx GET https://www.okx.com/api/v5/public/instruments?instType=SPOT; trying fallback +2026-01-13 17:32:36,427 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: okx GET https://www.okx.com/api/v5/public/instruments?instType=SPOT +2026-01-13 17:32:36,428 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: okx GET https://www.okx.com/api/v5/public/instruments?instType=SPOT +2026-01-13 17:32:36,428 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: okx GET https://www.okx.com/api/v5/public/instruments?instType=SPOT +2026-01-13 17:32:36,428 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2026-01-13 17:32:36,429 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BNB/USDT +2026-01-13 17:32:36,429 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2026-01-13 17:32:36,432 - urllib3.connectionpool - WARNING - Retrying (Retry(total=2, connect=2, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=0.000858&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:32:36,432 - yfinance - ERROR - Failed to get ticker 'AAPL' reason: Failed to perform, curl: (7) Failed to connect to 127.0.0.1 port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 17:32:36,433 - yfinance - ERROR - $AAPL: possibly delisted; no timezone found +2026-01-13 17:32:36,435 - app.data_sources.us_stock - ERROR - Finnhub fetch failed: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//stock/candle?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=AAPL&resolution=D&from=1768037556&to=1768296756 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:32:36,437 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-13 17:32:36,725 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:32:36] "GET /api/market/types?_t=1768296756712 HTTP/1.1" 200 - +2026-01-13 17:32:36,731 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:32:36] "GET /api/user/info?_t=1768296756712 HTTP/1.1" 200 - +2026-01-13 17:32:36,752 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:32:36] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 17:32:36,753 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:32:36] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 17:32:36,763 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:32:36] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 17:32:36,767 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:32:36] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 17:32:36,783 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=500 +2026-01-13 17:32:36,787 - yfinance - ERROR - Failed to get ticker 'AVGO' reason: Failed to perform, curl: (7) Failed to connect to 127.0.0.1 port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 17:32:36,788 - yfinance - ERROR - $AVGO: possibly delisted; no timezone found +2026-01-13 17:32:36,789 - app.data_sources.us_stock - ERROR - Finnhub fetch failed: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//stock/candle?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=AVGO&resolution=D&from=1725010356&to=1768296756 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:32:36,789 - app.data_sources.base - WARNING - USStock/yfinance: no data for AVGO +2026-01-13 17:32:36,790 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:32:36] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-13 17:32:37,195 - urllib3.connectionpool - WARNING - Retrying (Retry(total=1, connect=1, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=1.600519&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:32:37,196 - urllib3.connectionpool - WARNING - Retrying (Retry(total=1, connect=1, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=0.300475&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:32:37,196 - urllib3.connectionpool - WARNING - Retrying (Retry(total=1, connect=1, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSConnection(host='web.ifzq.gtimg.cn', port=80): Failed to establish a new connection: [Errno 111] Connection refused")': /appstock/app/fqkline/get?param=hk00700,day,,,2,qfq +2026-01-13 17:32:37,197 - urllib3.connectionpool - WARNING - Retrying (Retry(total=1, connect=1, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=0.000858&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:32:37,247 - urllib3.connectionpool - WARNING - Retrying (Retry(total=1, connect=1, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=1.600519&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:32:37,256 - urllib3.connectionpool - WARNING - Retrying (Retry(total=1, connect=1, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSConnection(host='web.ifzq.gtimg.cn', port=80): Failed to establish a new connection: [Errno 111] Connection refused")': /appstock/app/fqkline/get?param=hk00700,day,,,2,qfq +2026-01-13 17:32:37,256 - urllib3.connectionpool - WARNING - Retrying (Retry(total=1, connect=1, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=0.300475&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:32:37,433 - urllib3.connectionpool - WARNING - Retrying (Retry(total=1, connect=1, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=0.000858&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:32:38,525 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=500 +2026-01-13 17:32:38,527 - yfinance - ERROR - Failed to get ticker 'AVGO' reason: Failed to perform, curl: (7) Failed to connect to 127.0.0.1 port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 17:32:38,528 - yfinance - ERROR - $AVGO: possibly delisted; no timezone found +2026-01-13 17:32:38,530 - app.data_sources.us_stock - ERROR - Finnhub fetch failed: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//stock/candle?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=AVGO&resolution=D&from=1725010358&to=1768296758 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:32:38,530 - app.data_sources.base - WARNING - USStock/yfinance: no data for AVGO +2026-01-13 17:32:38,531 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:32:38] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-13 17:32:39,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=500 +2026-01-13 17:32:39,072 - yfinance - ERROR - Failed to get ticker 'AVGO' reason: Failed to perform, curl: (7) Failed to connect to 127.0.0.1 port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 17:32:39,073 - yfinance - ERROR - $AVGO: possibly delisted; no timezone found +2026-01-13 17:32:39,074 - app.data_sources.us_stock - ERROR - Finnhub fetch failed: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//stock/candle?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=AVGO&resolution=D&from=1725010359&to=1768296759 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:32:39,074 - app.data_sources.base - WARNING - USStock/yfinance: no data for AVGO +2026-01-13 17:32:39,074 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:32:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-13 17:32:39,196 - urllib3.connectionpool - WARNING - Retrying (Retry(total=0, connect=0, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=1.600519&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:32:39,197 - urllib3.connectionpool - WARNING - Retrying (Retry(total=0, connect=0, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=0.300475&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:32:39,198 - urllib3.connectionpool - WARNING - Retrying (Retry(total=0, connect=0, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=0.000858&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:32:39,199 - app.data_sources.cn_stock - ERROR - Eastmoney A-share fetch failed: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=1.600519&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:32:39,199 - app.data_sources.cn_stock - ERROR - Eastmoney A-share fetch failed: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=0.300475&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:32:39,200 - app.data_sources.cn_stock - ERROR - Eastmoney A-share fetch failed: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=0.000858&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:32:39,197 - urllib3.connectionpool - WARNING - Retrying (Retry(total=0, connect=0, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSConnection(host='web.ifzq.gtimg.cn', port=80): Failed to establish a new connection: [Errno 111] Connection refused")': /appstock/app/fqkline/get?param=hk00700,day,,,2,qfq +2026-01-13 17:32:39,204 - app.data_sources.cn_stock - ERROR - Tencent quote fetch failed: SOCKSHTTPConnectionPool(host='web.ifzq.gtimg.cn', port=80): Max retries exceeded with url: /appstock/app/fqkline/get?param=hk00700,day,,,2,qfq (Caused by NewConnectionError("SOCKSConnection(host='web.ifzq.gtimg.cn', port=80): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:32:39,210 - app.data_sources.cn_stock - ERROR - Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/socks.py", line 787, in connect + super(socksocket, self).connect(proxy_addr) +ConnectionRefusedError: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 110, in _new_conn + conn = socks.create_connection( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 209, in create_connection + raise err + File "/usr/local/lib/python3.12/site-packages/socks.py", line 199, in create_connection + sock.connect((remote_host, remote_port)) + File "/usr/local/lib/python3.12/site-packages/socks.py", line 47, in wrapper + return function(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 800, in connect + raise ProxyConnectionError(msg, error) +socks.ProxyConnectionError: Error connecting to SOCKS5 proxy 127.0.0.1:10808: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen + response = self._make_request( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 488, in _make_request + raise new_e + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 464, in _make_request + self._validate_conn(conn) + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 1093, in _validate_conn + conn.connect() + File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 759, in connect + self.sock = sock = self._new_conn() + ^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 141, in _new_conn + raise NewConnectionError( +urllib3.exceptions.NewConnectionError: SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 644, in send + resp = conn.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 841, in urlopen + retries = retries.increment( + ^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/util/retry.py", line 535, in increment + raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +urllib3.exceptions.MaxRetryError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=0.000858&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/app/app/data_sources/cn_stock.py", line 294, in _fetch_eastmoney_ashare + response = session.get(url, params=params, headers=headers, timeout=15) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 602, in get + return self.request("GET", url, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request + resp = self.send(prep, **send_kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send + r = adapter.send(request, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 677, in send + raise ConnectionError(e, request=request) +requests.exceptions.ConnectionError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=0.000858&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +2026-01-13 17:32:39,211 - app.data_sources.cn_stock - ERROR - Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/socks.py", line 787, in connect + super(socksocket, self).connect(proxy_addr) +ConnectionRefusedError: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 110, in _new_conn + conn = socks.create_connection( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 209, in create_connection + raise err + File "/usr/local/lib/python3.12/site-packages/socks.py", line 199, in create_connection + sock.connect((remote_host, remote_port)) + File "/usr/local/lib/python3.12/site-packages/socks.py", line 47, in wrapper + return function(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 800, in connect + raise ProxyConnectionError(msg, error) +socks.ProxyConnectionError: Error connecting to SOCKS5 proxy 127.0.0.1:10808: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen + response = self._make_request( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 488, in _make_request + raise new_e + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 464, in _make_request + self._validate_conn(conn) + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 1093, in _validate_conn + conn.connect() + File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 759, in connect + self.sock = sock = self._new_conn() + ^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 141, in _new_conn + raise NewConnectionError( +urllib3.exceptions.NewConnectionError: SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 644, in send + resp = conn.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 841, in urlopen + retries = retries.increment( + ^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/util/retry.py", line 535, in increment + raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +urllib3.exceptions.MaxRetryError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=1.600519&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/app/app/data_sources/cn_stock.py", line 294, in _fetch_eastmoney_ashare + response = session.get(url, params=params, headers=headers, timeout=15) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 602, in get + return self.request("GET", url, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request + resp = self.send(prep, **send_kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send + r = adapter.send(request, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 677, in send + raise ConnectionError(e, request=request) +requests.exceptions.ConnectionError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=1.600519&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +2026-01-13 17:32:39,211 - app.data_sources.cn_stock - ERROR - Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/socks.py", line 787, in connect + super(socksocket, self).connect(proxy_addr) +ConnectionRefusedError: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 110, in _new_conn + conn = socks.create_connection( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 209, in create_connection + raise err + File "/usr/local/lib/python3.12/site-packages/socks.py", line 199, in create_connection + sock.connect((remote_host, remote_port)) + File "/usr/local/lib/python3.12/site-packages/socks.py", line 47, in wrapper + return function(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 800, in connect + raise ProxyConnectionError(msg, error) +socks.ProxyConnectionError: Error connecting to SOCKS5 proxy 127.0.0.1:10808: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen + response = self._make_request( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 488, in _make_request + raise new_e + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 464, in _make_request + self._validate_conn(conn) + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 1093, in _validate_conn + conn.connect() + File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 759, in connect + self.sock = sock = self._new_conn() + ^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 141, in _new_conn + raise NewConnectionError( +urllib3.exceptions.NewConnectionError: SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 644, in send + resp = conn.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 841, in urlopen + retries = retries.increment( + ^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/util/retry.py", line 535, in increment + raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +urllib3.exceptions.MaxRetryError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=0.300475&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/app/app/data_sources/cn_stock.py", line 294, in _fetch_eastmoney_ashare + response = session.get(url, params=params, headers=headers, timeout=15) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 602, in get + return self.request("GET", url, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request + resp = self.send(prep, **send_kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send + r = adapter.send(request, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 677, in send + raise ConnectionError(e, request=request) +requests.exceptions.ConnectionError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=0.300475&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +2026-01-13 17:32:39,212 - app.data_sources.cn_stock - ERROR - Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/socks.py", line 787, in connect + super(socksocket, self).connect(proxy_addr) +ConnectionRefusedError: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 110, in _new_conn + conn = socks.create_connection( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 209, in create_connection + raise err + File "/usr/local/lib/python3.12/site-packages/socks.py", line 199, in create_connection + sock.connect((remote_host, remote_port)) + File "/usr/local/lib/python3.12/site-packages/socks.py", line 47, in wrapper + return function(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 800, in connect + raise ProxyConnectionError(msg, error) +socks.ProxyConnectionError: Error connecting to SOCKS5 proxy 127.0.0.1:10808: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen + response = self._make_request( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 493, in _make_request + conn.request( + File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 500, in request + self.endheaders() + File "/usr/local/lib/python3.12/http/client.py", line 1333, in endheaders + self._send_output(message_body, encode_chunked=encode_chunked) + File "/usr/local/lib/python3.12/http/client.py", line 1093, in _send_output + self.send(msg) + File "/usr/local/lib/python3.12/http/client.py", line 1037, in send + self.connect() + File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 331, in connect + self.sock = self._new_conn() + ^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 141, in _new_conn + raise NewConnectionError( +urllib3.exceptions.NewConnectionError: SOCKSConnection(host='web.ifzq.gtimg.cn', port=80): Failed to establish a new connection: [Errno 111] Connection refused + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 644, in send + resp = conn.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 841, in urlopen + retries = retries.increment( + ^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/util/retry.py", line 535, in increment + raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +urllib3.exceptions.MaxRetryError: SOCKSHTTPConnectionPool(host='web.ifzq.gtimg.cn', port=80): Max retries exceeded with url: /appstock/app/fqkline/get?param=hk00700,day,,,2,qfq (Caused by NewConnectionError("SOCKSConnection(host='web.ifzq.gtimg.cn', port=80): Failed to establish a new connection: [Errno 111] Connection refused")) + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/app/app/data_sources/cn_stock.py", line 83, in _fetch_tencent_kline + response = session.get(url, timeout=10) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 602, in get + return self.request("GET", url, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request + resp = self.send(prep, **send_kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send + r = adapter.send(request, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 677, in send + raise ConnectionError(e, request=request) +requests.exceptions.ConnectionError: SOCKSHTTPConnectionPool(host='web.ifzq.gtimg.cn', port=80): Max retries exceeded with url: /appstock/app/fqkline/get?param=hk00700,day,,,2,qfq (Caused by NewConnectionError("SOCKSConnection(host='web.ifzq.gtimg.cn', port=80): Failed to establish a new connection: [Errno 111] Connection refused")) + +2026-01-13 17:32:39,218 - urllib3.connectionpool - WARNING - Retrying (Retry(total=2, connect=2, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=116.00700&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:32:39,218 - yfinance - ERROR - Failed to get ticker '000858.SZ' reason: Failed to perform, curl: (7) Failed to connect to 127.0.0.1 port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 17:32:39,219 - yfinance - ERROR - $000858.SZ: possibly delisted; no timezone found +2026-01-13 17:32:39,221 - yfinance - ERROR - Failed to get ticker '600519.SS' reason: Failed to perform, curl: (7) Failed to connect to 127.0.0.1 port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 17:32:39,222 - yfinance - ERROR - $600519.SS: possibly delisted; no timezone found +2026-01-13 17:32:39,222 - app.data_sources.us_stock - ERROR - Finnhub fetch failed: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//stock/candle?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=000858.SZ&resolution=D&from=1768037559&to=1768296759 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:32:39,223 - app.data_sources.us_stock - ERROR - Finnhub fetch failed: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//stock/candle?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=600519.SS&resolution=D&from=1768037559&to=1768296759 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:32:39,224 - app.data_sources.base - WARNING - USStock/yfinance: no data for 000858.SZ +2026-01-13 17:32:39,224 - app.data_sources.base - WARNING - USStock/yfinance: no data for 600519.SS +2026-01-13 17:32:39,224 - yfinance - ERROR - Failed to get ticker '300475.SZ' reason: Failed to perform, curl: (7) Failed to connect to 127.0.0.1 port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 17:32:39,226 - app.data_sources.cn_stock - ERROR - Akshare A-share fetch failed: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61%2Cf116&ut=7eea3edcaed734bea9cbfc24409ed989&klt=101&fqt=1&secid=1.600519&beg=20260109&end=20260113 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:32:39,226 - app.data_sources.cn_stock - ERROR - Akshare A-share fetch failed: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61%2Cf116&ut=7eea3edcaed734bea9cbfc24409ed989&klt=101&fqt=1&secid=0.000858&beg=20260109&end=20260113 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:32:39,226 - yfinance - ERROR - $300475.SZ: possibly delisted; no timezone found +2026-01-13 17:32:39,229 - app.data_sources.cn_stock - ERROR - Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/socks.py", line 787, in connect + super(socksocket, self).connect(proxy_addr) +ConnectionRefusedError: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 110, in _new_conn + conn = socks.create_connection( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 209, in create_connection + raise err + File "/usr/local/lib/python3.12/site-packages/socks.py", line 199, in create_connection + sock.connect((remote_host, remote_port)) + File "/usr/local/lib/python3.12/site-packages/socks.py", line 47, in wrapper + return function(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 800, in connect + raise ProxyConnectionError(msg, error) +socks.ProxyConnectionError: Error connecting to SOCKS5 proxy 127.0.0.1:10808: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen + response = self._make_request( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 488, in _make_request + raise new_e + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 464, in _make_request + self._validate_conn(conn) + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 1093, in _validate_conn + conn.connect() + File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 759, in connect + self.sock = sock = self._new_conn() + ^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 141, in _new_conn + raise NewConnectionError( +urllib3.exceptions.NewConnectionError: SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 644, in send + resp = conn.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 841, in urlopen + retries = retries.increment( + ^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/util/retry.py", line 535, in increment + raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +urllib3.exceptions.MaxRetryError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61%2Cf116&ut=7eea3edcaed734bea9cbfc24409ed989&klt=101&fqt=1&secid=1.600519&beg=20260109&end=20260113 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/app/app/data_sources/cn_stock.py", line 361, in _fetch_akshare + df = ak.stock_zh_a_hist( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/akshare/stock_feature/stock_hist_em.py", line 990, in stock_zh_a_hist + r = requests.get(url, params=params, timeout=timeout) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/api.py", line 73, in get + return request("get", url, params=params, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/api.py", line 59, in request + return session.request(method=method, url=url, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request + resp = self.send(prep, **send_kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send + r = adapter.send(request, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 677, in send + raise ConnectionError(e, request=request) +requests.exceptions.ConnectionError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61%2Cf116&ut=7eea3edcaed734bea9cbfc24409ed989&klt=101&fqt=1&secid=1.600519&beg=20260109&end=20260113 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +2026-01-13 17:32:39,230 - app.data_sources.us_stock - ERROR - Finnhub fetch failed: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//stock/candle?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=300475.SZ&resolution=D&from=1768037559&to=1768296759 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:32:39,230 - app.data_sources.cn_stock - WARNING - AShare 600519 data fetch failed +2026-01-13 17:32:39,231 - app.data_sources.cn_stock - ERROR - Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/socks.py", line 787, in connect + super(socksocket, self).connect(proxy_addr) +ConnectionRefusedError: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 110, in _new_conn + conn = socks.create_connection( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 209, in create_connection + raise err + File "/usr/local/lib/python3.12/site-packages/socks.py", line 199, in create_connection + sock.connect((remote_host, remote_port)) + File "/usr/local/lib/python3.12/site-packages/socks.py", line 47, in wrapper + return function(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 800, in connect + raise ProxyConnectionError(msg, error) +socks.ProxyConnectionError: Error connecting to SOCKS5 proxy 127.0.0.1:10808: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen + response = self._make_request( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 488, in _make_request + raise new_e + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 464, in _make_request + self._validate_conn(conn) + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 1093, in _validate_conn + conn.connect() + File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 759, in connect + self.sock = sock = self._new_conn() + ^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 141, in _new_conn + raise NewConnectionError( +urllib3.exceptions.NewConnectionError: SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 644, in send + resp = conn.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 841, in urlopen + retries = retries.increment( + ^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/util/retry.py", line 535, in increment + raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +urllib3.exceptions.MaxRetryError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61%2Cf116&ut=7eea3edcaed734bea9cbfc24409ed989&klt=101&fqt=1&secid=0.000858&beg=20260109&end=20260113 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/app/app/data_sources/cn_stock.py", line 361, in _fetch_akshare + df = ak.stock_zh_a_hist( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/akshare/stock_feature/stock_hist_em.py", line 990, in stock_zh_a_hist + r = requests.get(url, params=params, timeout=timeout) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/api.py", line 73, in get + return request("get", url, params=params, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/api.py", line 59, in request + return session.request(method=method, url=url, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request + resp = self.send(prep, **send_kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send + r = adapter.send(request, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 677, in send + raise ConnectionError(e, request=request) +requests.exceptions.ConnectionError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61%2Cf116&ut=7eea3edcaed734bea9cbfc24409ed989&klt=101&fqt=1&secid=0.000858&beg=20260109&end=20260113 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +2026-01-13 17:32:39,231 - app.data_sources.base - WARNING - USStock/yfinance: no data for 300475.SZ +2026-01-13 17:32:39,232 - app.data_sources.cn_stock - WARNING - AShare 000858 data fetch failed +2026-01-13 17:32:39,233 - app.data_sources.cn_stock - ERROR - Akshare A-share fetch failed: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61%2Cf116&ut=7eea3edcaed734bea9cbfc24409ed989&klt=101&fqt=1&secid=0.300475&beg=20260109&end=20260113 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:32:39,234 - app.data_sources.cn_stock - ERROR - Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/socks.py", line 787, in connect + super(socksocket, self).connect(proxy_addr) +ConnectionRefusedError: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 110, in _new_conn + conn = socks.create_connection( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 209, in create_connection + raise err + File "/usr/local/lib/python3.12/site-packages/socks.py", line 199, in create_connection + sock.connect((remote_host, remote_port)) + File "/usr/local/lib/python3.12/site-packages/socks.py", line 47, in wrapper + return function(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 800, in connect + raise ProxyConnectionError(msg, error) +socks.ProxyConnectionError: Error connecting to SOCKS5 proxy 127.0.0.1:10808: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen + response = self._make_request( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 488, in _make_request + raise new_e + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 464, in _make_request + self._validate_conn(conn) + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 1093, in _validate_conn + conn.connect() + File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 759, in connect + self.sock = sock = self._new_conn() + ^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 141, in _new_conn + raise NewConnectionError( +urllib3.exceptions.NewConnectionError: SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 644, in send + resp = conn.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 841, in urlopen + retries = retries.increment( + ^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/util/retry.py", line 535, in increment + raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +urllib3.exceptions.MaxRetryError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61%2Cf116&ut=7eea3edcaed734bea9cbfc24409ed989&klt=101&fqt=1&secid=0.300475&beg=20260109&end=20260113 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/app/app/data_sources/cn_stock.py", line 361, in _fetch_akshare + df = ak.stock_zh_a_hist( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/akshare/stock_feature/stock_hist_em.py", line 990, in stock_zh_a_hist + r = requests.get(url, params=params, timeout=timeout) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/api.py", line 73, in get + return request("get", url, params=params, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/api.py", line 59, in request + return session.request(method=method, url=url, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request + resp = self.send(prep, **send_kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send + r = adapter.send(request, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 677, in send + raise ConnectionError(e, request=request) +requests.exceptions.ConnectionError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61%2Cf116&ut=7eea3edcaed734bea9cbfc24409ed989&klt=101&fqt=1&secid=0.300475&beg=20260109&end=20260113 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +2026-01-13 17:32:39,234 - app.data_sources.cn_stock - WARNING - AShare 300475 data fetch failed +2026-01-13 17:32:39,248 - urllib3.connectionpool - WARNING - Retrying (Retry(total=0, connect=0, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=1.600519&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:32:39,250 - app.data_sources.cn_stock - ERROR - Eastmoney A-share fetch failed: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=1.600519&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:32:39,251 - app.data_sources.cn_stock - ERROR - Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/socks.py", line 787, in connect + super(socksocket, self).connect(proxy_addr) +ConnectionRefusedError: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 110, in _new_conn + conn = socks.create_connection( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 209, in create_connection + raise err + File "/usr/local/lib/python3.12/site-packages/socks.py", line 199, in create_connection + sock.connect((remote_host, remote_port)) + File "/usr/local/lib/python3.12/site-packages/socks.py", line 47, in wrapper + return function(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 800, in connect + raise ProxyConnectionError(msg, error) +socks.ProxyConnectionError: Error connecting to SOCKS5 proxy 127.0.0.1:10808: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen + response = self._make_request( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 488, in _make_request + raise new_e + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 464, in _make_request + self._validate_conn(conn) + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 1093, in _validate_conn + conn.connect() + File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 759, in connect + self.sock = sock = self._new_conn() + ^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 141, in _new_conn + raise NewConnectionError( +urllib3.exceptions.NewConnectionError: SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 644, in send + resp = conn.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 841, in urlopen + retries = retries.increment( + ^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/util/retry.py", line 535, in increment + raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +urllib3.exceptions.MaxRetryError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=1.600519&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/app/app/data_sources/cn_stock.py", line 294, in _fetch_eastmoney_ashare + response = session.get(url, params=params, headers=headers, timeout=15) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 602, in get + return self.request("GET", url, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request + resp = self.send(prep, **send_kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send + r = adapter.send(request, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 677, in send + raise ConnectionError(e, request=request) +requests.exceptions.ConnectionError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=1.600519&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +2026-01-13 17:32:39,253 - yfinance - ERROR - Failed to get ticker '600519.SS' reason: Failed to perform, curl: (7) Failed to connect to 127.0.0.1 port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 17:32:39,253 - yfinance - ERROR - $600519.SS: possibly delisted; no timezone found +2026-01-13 17:32:39,254 - app.data_sources.us_stock - ERROR - Finnhub fetch failed: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//stock/candle?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=600519.SS&resolution=D&from=1768037559&to=1768296759 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:32:39,256 - urllib3.connectionpool - WARNING - Retrying (Retry(total=0, connect=0, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSConnection(host='web.ifzq.gtimg.cn', port=80): Failed to establish a new connection: [Errno 111] Connection refused")': /appstock/app/fqkline/get?param=hk00700,day,,,2,qfq +2026-01-13 17:32:39,257 - urllib3.connectionpool - WARNING - Retrying (Retry(total=0, connect=0, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=0.300475&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:32:39,269 - app.data_sources.base - WARNING - USStock/yfinance: no data for 600519.SS +2026-01-13 17:32:39,271 - app.data_sources.cn_stock - ERROR - Tencent quote fetch failed: SOCKSHTTPConnectionPool(host='web.ifzq.gtimg.cn', port=80): Max retries exceeded with url: /appstock/app/fqkline/get?param=hk00700,day,,,2,qfq (Caused by NewConnectionError("SOCKSConnection(host='web.ifzq.gtimg.cn', port=80): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:32:39,271 - app.data_sources.cn_stock - ERROR - Eastmoney A-share fetch failed: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=0.300475&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:32:39,273 - app.data_sources.cn_stock - ERROR - Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/socks.py", line 787, in connect + super(socksocket, self).connect(proxy_addr) +ConnectionRefusedError: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 110, in _new_conn + conn = socks.create_connection( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 209, in create_connection + raise err + File "/usr/local/lib/python3.12/site-packages/socks.py", line 199, in create_connection + sock.connect((remote_host, remote_port)) + File "/usr/local/lib/python3.12/site-packages/socks.py", line 47, in wrapper + return function(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 800, in connect + raise ProxyConnectionError(msg, error) +socks.ProxyConnectionError: Error connecting to SOCKS5 proxy 127.0.0.1:10808: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen + response = self._make_request( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 493, in _make_request + conn.request( + File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 500, in request + self.endheaders() + File "/usr/local/lib/python3.12/http/client.py", line 1333, in endheaders + self._send_output(message_body, encode_chunked=encode_chunked) + File "/usr/local/lib/python3.12/http/client.py", line 1093, in _send_output + self.send(msg) + File "/usr/local/lib/python3.12/http/client.py", line 1037, in send + self.connect() + File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 331, in connect + self.sock = self._new_conn() + ^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 141, in _new_conn + raise NewConnectionError( +urllib3.exceptions.NewConnectionError: SOCKSConnection(host='web.ifzq.gtimg.cn', port=80): Failed to establish a new connection: [Errno 111] Connection refused + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 644, in send + resp = conn.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 841, in urlopen + retries = retries.increment( + ^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/util/retry.py", line 535, in increment + raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +urllib3.exceptions.MaxRetryError: SOCKSHTTPConnectionPool(host='web.ifzq.gtimg.cn', port=80): Max retries exceeded with url: /appstock/app/fqkline/get?param=hk00700,day,,,2,qfq (Caused by NewConnectionError("SOCKSConnection(host='web.ifzq.gtimg.cn', port=80): Failed to establish a new connection: [Errno 111] Connection refused")) + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/app/app/data_sources/cn_stock.py", line 83, in _fetch_tencent_kline + response = session.get(url, timeout=10) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 602, in get + return self.request("GET", url, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request + resp = self.send(prep, **send_kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send + r = adapter.send(request, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 677, in send + raise ConnectionError(e, request=request) +requests.exceptions.ConnectionError: SOCKSHTTPConnectionPool(host='web.ifzq.gtimg.cn', port=80): Max retries exceeded with url: /appstock/app/fqkline/get?param=hk00700,day,,,2,qfq (Caused by NewConnectionError("SOCKSConnection(host='web.ifzq.gtimg.cn', port=80): Failed to establish a new connection: [Errno 111] Connection refused")) + +2026-01-13 17:32:39,274 - app.data_sources.cn_stock - ERROR - Akshare A-share fetch failed: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61%2Cf116&ut=7eea3edcaed734bea9cbfc24409ed989&klt=101&fqt=1&secid=1.600519&beg=20260109&end=20260113 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:32:39,275 - app.data_sources.cn_stock - ERROR - Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/socks.py", line 787, in connect + super(socksocket, self).connect(proxy_addr) +ConnectionRefusedError: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 110, in _new_conn + conn = socks.create_connection( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 209, in create_connection + raise err + File "/usr/local/lib/python3.12/site-packages/socks.py", line 199, in create_connection + sock.connect((remote_host, remote_port)) + File "/usr/local/lib/python3.12/site-packages/socks.py", line 47, in wrapper + return function(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 800, in connect + raise ProxyConnectionError(msg, error) +socks.ProxyConnectionError: Error connecting to SOCKS5 proxy 127.0.0.1:10808: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen + response = self._make_request( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 488, in _make_request + raise new_e + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 464, in _make_request + self._validate_conn(conn) + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 1093, in _validate_conn + conn.connect() + File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 759, in connect + self.sock = sock = self._new_conn() + ^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 141, in _new_conn + raise NewConnectionError( +urllib3.exceptions.NewConnectionError: SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 644, in send + resp = conn.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 841, in urlopen + retries = retries.increment( + ^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/util/retry.py", line 535, in increment + raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +urllib3.exceptions.MaxRetryError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=0.300475&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/app/app/data_sources/cn_stock.py", line 294, in _fetch_eastmoney_ashare + response = session.get(url, params=params, headers=headers, timeout=15) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 602, in get + return self.request("GET", url, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request + resp = self.send(prep, **send_kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send + r = adapter.send(request, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 677, in send + raise ConnectionError(e, request=request) +requests.exceptions.ConnectionError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=0.300475&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +2026-01-13 17:32:39,276 - urllib3.connectionpool - WARNING - Retrying (Retry(total=2, connect=2, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=116.00700&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:32:39,278 - app.data_sources.cn_stock - ERROR - Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/socks.py", line 787, in connect + super(socksocket, self).connect(proxy_addr) +ConnectionRefusedError: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 110, in _new_conn + conn = socks.create_connection( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 209, in create_connection + raise err + File "/usr/local/lib/python3.12/site-packages/socks.py", line 199, in create_connection + sock.connect((remote_host, remote_port)) + File "/usr/local/lib/python3.12/site-packages/socks.py", line 47, in wrapper + return function(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 800, in connect + raise ProxyConnectionError(msg, error) +socks.ProxyConnectionError: Error connecting to SOCKS5 proxy 127.0.0.1:10808: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen + response = self._make_request( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 488, in _make_request + raise new_e + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 464, in _make_request + self._validate_conn(conn) + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 1093, in _validate_conn + conn.connect() + File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 759, in connect + self.sock = sock = self._new_conn() + ^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 141, in _new_conn + raise NewConnectionError( +urllib3.exceptions.NewConnectionError: SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 644, in send + resp = conn.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 841, in urlopen + retries = retries.increment( + ^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/util/retry.py", line 535, in increment + raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +urllib3.exceptions.MaxRetryError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61%2Cf116&ut=7eea3edcaed734bea9cbfc24409ed989&klt=101&fqt=1&secid=1.600519&beg=20260109&end=20260113 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/app/app/data_sources/cn_stock.py", line 361, in _fetch_akshare + df = ak.stock_zh_a_hist( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/akshare/stock_feature/stock_hist_em.py", line 990, in stock_zh_a_hist + r = requests.get(url, params=params, timeout=timeout) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/api.py", line 73, in get + return request("get", url, params=params, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/api.py", line 59, in request + return session.request(method=method, url=url, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request + resp = self.send(prep, **send_kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send + r = adapter.send(request, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 677, in send + raise ConnectionError(e, request=request) +requests.exceptions.ConnectionError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61%2Cf116&ut=7eea3edcaed734bea9cbfc24409ed989&klt=101&fqt=1&secid=1.600519&beg=20260109&end=20260113 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +2026-01-13 17:32:39,280 - app.data_sources.cn_stock - WARNING - AShare 600519 data fetch failed +2026-01-13 17:32:39,280 - yfinance - ERROR - Failed to get ticker '300475.SZ' reason: Failed to perform, curl: (7) Failed to connect to 127.0.0.1 port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 17:32:39,281 - yfinance - ERROR - $300475.SZ: possibly delisted; no timezone found +2026-01-13 17:32:39,282 - app.data_sources.us_stock - ERROR - Finnhub fetch failed: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//stock/candle?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=300475.SZ&resolution=D&from=1768037559&to=1768296759 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:32:39,282 - app.data_sources.base - WARNING - USStock/yfinance: no data for 300475.SZ +2026-01-13 17:32:39,283 - app.data_sources.cn_stock - ERROR - Akshare A-share fetch failed: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61%2Cf116&ut=7eea3edcaed734bea9cbfc24409ed989&klt=101&fqt=1&secid=0.300475&beg=20260109&end=20260113 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:32:39,284 - app.data_sources.cn_stock - ERROR - Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/socks.py", line 787, in connect + super(socksocket, self).connect(proxy_addr) +ConnectionRefusedError: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 110, in _new_conn + conn = socks.create_connection( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 209, in create_connection + raise err + File "/usr/local/lib/python3.12/site-packages/socks.py", line 199, in create_connection + sock.connect((remote_host, remote_port)) + File "/usr/local/lib/python3.12/site-packages/socks.py", line 47, in wrapper + return function(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 800, in connect + raise ProxyConnectionError(msg, error) +socks.ProxyConnectionError: Error connecting to SOCKS5 proxy 127.0.0.1:10808: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen + response = self._make_request( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 488, in _make_request + raise new_e + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 464, in _make_request + self._validate_conn(conn) + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 1093, in _validate_conn + conn.connect() + File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 759, in connect + self.sock = sock = self._new_conn() + ^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 141, in _new_conn + raise NewConnectionError( +urllib3.exceptions.NewConnectionError: SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 644, in send + resp = conn.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 841, in urlopen + retries = retries.increment( + ^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/util/retry.py", line 535, in increment + raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +urllib3.exceptions.MaxRetryError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61%2Cf116&ut=7eea3edcaed734bea9cbfc24409ed989&klt=101&fqt=1&secid=0.300475&beg=20260109&end=20260113 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/app/app/data_sources/cn_stock.py", line 361, in _fetch_akshare + df = ak.stock_zh_a_hist( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/akshare/stock_feature/stock_hist_em.py", line 990, in stock_zh_a_hist + r = requests.get(url, params=params, timeout=timeout) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/api.py", line 73, in get + return request("get", url, params=params, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/api.py", line 59, in request + return session.request(method=method, url=url, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request + resp = self.send(prep, **send_kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send + r = adapter.send(request, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 677, in send + raise ConnectionError(e, request=request) +requests.exceptions.ConnectionError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61%2Cf116&ut=7eea3edcaed734bea9cbfc24409ed989&klt=101&fqt=1&secid=0.300475&beg=20260109&end=20260113 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +2026-01-13 17:32:39,284 - app.data_sources.cn_stock - WARNING - AShare 300475 data fetch failed +2026-01-13 17:32:39,436 - urllib3.connectionpool - WARNING - Retrying (Retry(total=0, connect=0, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=0.000858&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:32:39,437 - app.data_sources.cn_stock - ERROR - Eastmoney A-share fetch failed: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=0.000858&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:32:39,438 - app.data_sources.cn_stock - ERROR - Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/socks.py", line 787, in connect + super(socksocket, self).connect(proxy_addr) +ConnectionRefusedError: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 110, in _new_conn + conn = socks.create_connection( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 209, in create_connection + raise err + File "/usr/local/lib/python3.12/site-packages/socks.py", line 199, in create_connection + sock.connect((remote_host, remote_port)) + File "/usr/local/lib/python3.12/site-packages/socks.py", line 47, in wrapper + return function(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 800, in connect + raise ProxyConnectionError(msg, error) +socks.ProxyConnectionError: Error connecting to SOCKS5 proxy 127.0.0.1:10808: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen + response = self._make_request( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 488, in _make_request + raise new_e + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 464, in _make_request + self._validate_conn(conn) + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 1093, in _validate_conn + conn.connect() + File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 759, in connect + self.sock = sock = self._new_conn() + ^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 141, in _new_conn + raise NewConnectionError( +urllib3.exceptions.NewConnectionError: SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 644, in send + resp = conn.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 841, in urlopen + retries = retries.increment( + ^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/util/retry.py", line 535, in increment + raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +urllib3.exceptions.MaxRetryError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=0.000858&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/app/app/data_sources/cn_stock.py", line 294, in _fetch_eastmoney_ashare + response = session.get(url, params=params, headers=headers, timeout=15) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 602, in get + return self.request("GET", url, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request + resp = self.send(prep, **send_kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send + r = adapter.send(request, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 677, in send + raise ConnectionError(e, request=request) +requests.exceptions.ConnectionError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=0.000858&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +2026-01-13 17:32:39,441 - yfinance - ERROR - Failed to get ticker '000858.SZ' reason: Failed to perform, curl: (7) Failed to connect to 127.0.0.1 port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 17:32:39,442 - yfinance - ERROR - $000858.SZ: possibly delisted; no timezone found +2026-01-13 17:32:39,443 - app.data_sources.us_stock - ERROR - Finnhub fetch failed: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//stock/candle?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=000858.SZ&resolution=D&from=1768037559&to=1768296759 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:32:39,444 - app.data_sources.base - WARNING - USStock/yfinance: no data for 000858.SZ +2026-01-13 17:32:39,444 - app.data_sources.cn_stock - ERROR - Akshare A-share fetch failed: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61%2Cf116&ut=7eea3edcaed734bea9cbfc24409ed989&klt=101&fqt=1&secid=0.000858&beg=20260109&end=20260113 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:32:39,446 - app.data_sources.cn_stock - ERROR - Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/socks.py", line 787, in connect + super(socksocket, self).connect(proxy_addr) +ConnectionRefusedError: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 110, in _new_conn + conn = socks.create_connection( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 209, in create_connection + raise err + File "/usr/local/lib/python3.12/site-packages/socks.py", line 199, in create_connection + sock.connect((remote_host, remote_port)) + File "/usr/local/lib/python3.12/site-packages/socks.py", line 47, in wrapper + return function(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 800, in connect + raise ProxyConnectionError(msg, error) +socks.ProxyConnectionError: Error connecting to SOCKS5 proxy 127.0.0.1:10808: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen + response = self._make_request( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 488, in _make_request + raise new_e + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 464, in _make_request + self._validate_conn(conn) + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 1093, in _validate_conn + conn.connect() + File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 759, in connect + self.sock = sock = self._new_conn() + ^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 141, in _new_conn + raise NewConnectionError( +urllib3.exceptions.NewConnectionError: SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 644, in send + resp = conn.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 841, in urlopen + retries = retries.increment( + ^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/util/retry.py", line 535, in increment + raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +urllib3.exceptions.MaxRetryError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61%2Cf116&ut=7eea3edcaed734bea9cbfc24409ed989&klt=101&fqt=1&secid=0.000858&beg=20260109&end=20260113 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/app/app/data_sources/cn_stock.py", line 361, in _fetch_akshare + df = ak.stock_zh_a_hist( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/akshare/stock_feature/stock_hist_em.py", line 990, in stock_zh_a_hist + r = requests.get(url, params=params, timeout=timeout) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/api.py", line 73, in get + return request("get", url, params=params, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/api.py", line 59, in request + return session.request(method=method, url=url, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request + resp = self.send(prep, **send_kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send + r = adapter.send(request, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 677, in send + raise ConnectionError(e, request=request) +requests.exceptions.ConnectionError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61%2Cf116&ut=7eea3edcaed734bea9cbfc24409ed989&klt=101&fqt=1&secid=0.000858&beg=20260109&end=20260113 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +2026-01-13 17:32:39,446 - app.data_sources.cn_stock - WARNING - AShare 000858 data fetch failed +2026-01-13 17:32:40,220 - urllib3.connectionpool - WARNING - Retrying (Retry(total=1, connect=1, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=116.00700&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:32:40,280 - urllib3.connectionpool - WARNING - Retrying (Retry(total=1, connect=1, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=116.00700&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:32:42,221 - urllib3.connectionpool - WARNING - Retrying (Retry(total=0, connect=0, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=116.00700&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:32:42,222 - app.data_sources.cn_stock - ERROR - Eastmoney HK stock fetch failed: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=116.00700&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:32:42,223 - app.data_sources.cn_stock - ERROR - Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/socks.py", line 787, in connect + super(socksocket, self).connect(proxy_addr) +ConnectionRefusedError: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 110, in _new_conn + conn = socks.create_connection( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 209, in create_connection + raise err + File "/usr/local/lib/python3.12/site-packages/socks.py", line 199, in create_connection + sock.connect((remote_host, remote_port)) + File "/usr/local/lib/python3.12/site-packages/socks.py", line 47, in wrapper + return function(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 800, in connect + raise ProxyConnectionError(msg, error) +socks.ProxyConnectionError: Error connecting to SOCKS5 proxy 127.0.0.1:10808: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen + response = self._make_request( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 488, in _make_request + raise new_e + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 464, in _make_request + self._validate_conn(conn) + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 1093, in _validate_conn + conn.connect() + File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 759, in connect + self.sock = sock = self._new_conn() + ^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 141, in _new_conn + raise NewConnectionError( +urllib3.exceptions.NewConnectionError: SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 644, in send + resp = conn.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 841, in urlopen + retries = retries.increment( + ^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/util/retry.py", line 535, in increment + raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +urllib3.exceptions.MaxRetryError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=116.00700&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/app/app/data_sources/cn_stock.py", line 605, in _fetch_eastmoney_kline + response = session.get(url, params=params, headers=headers, timeout=15) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 602, in get + return self.request("GET", url, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request + resp = self.send(prep, **send_kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send + r = adapter.send(request, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 677, in send + raise ConnectionError(e, request=request) +requests.exceptions.ConnectionError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=116.00700&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +2026-01-13 17:32:42,225 - yfinance - ERROR - Failed to get ticker '00700.HK' reason: Failed to perform, curl: (7) Failed to connect to 127.0.0.1 port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 17:32:42,225 - yfinance - ERROR - $00700.HK: possibly delisted; no timezone found +2026-01-13 17:32:42,226 - app.data_sources.us_stock - ERROR - Finnhub fetch failed: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//stock/candle?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=00700.HK&resolution=D&from=1768037562&to=1768296762 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:32:42,226 - app.data_sources.base - WARNING - USStock/yfinance: no data for 00700.HK +2026-01-13 17:32:42,228 - app.data_sources.cn_stock - ERROR - Akshare HK stock fetch failed: SOCKSHTTPSConnectionPool(host='33.push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=116.00700&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61&klt=101&fqt=1&end=20500000&lmt=1000000 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='33.push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:32:42,229 - app.data_sources.cn_stock - ERROR - Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/socks.py", line 787, in connect + super(socksocket, self).connect(proxy_addr) +ConnectionRefusedError: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 110, in _new_conn + conn = socks.create_connection( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 209, in create_connection + raise err + File "/usr/local/lib/python3.12/site-packages/socks.py", line 199, in create_connection + sock.connect((remote_host, remote_port)) + File "/usr/local/lib/python3.12/site-packages/socks.py", line 47, in wrapper + return function(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 800, in connect + raise ProxyConnectionError(msg, error) +socks.ProxyConnectionError: Error connecting to SOCKS5 proxy 127.0.0.1:10808: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen + response = self._make_request( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 488, in _make_request + raise new_e + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 464, in _make_request + self._validate_conn(conn) + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 1093, in _validate_conn + conn.connect() + File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 759, in connect + self.sock = sock = self._new_conn() + ^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 141, in _new_conn + raise NewConnectionError( +urllib3.exceptions.NewConnectionError: SOCKSHTTPSConnection(host='33.push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 644, in send + resp = conn.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 841, in urlopen + retries = retries.increment( + ^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/util/retry.py", line 535, in increment + raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +urllib3.exceptions.MaxRetryError: SOCKSHTTPSConnectionPool(host='33.push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=116.00700&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61&klt=101&fqt=1&end=20500000&lmt=1000000 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='33.push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/app/app/data_sources/cn_stock.py", line 676, in _fetch_akshare + df = ak.stock_hk_hist( + ^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/akshare/stock_feature/stock_hist_em.py", line 1428, in stock_hk_hist + r = requests.get(url, timeout=15, params=params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/api.py", line 73, in get + return request("get", url, params=params, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/api.py", line 59, in request + return session.request(method=method, url=url, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request + resp = self.send(prep, **send_kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send + r = adapter.send(request, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 677, in send + raise ConnectionError(e, request=request) +requests.exceptions.ConnectionError: SOCKSHTTPSConnectionPool(host='33.push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=116.00700&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61&klt=101&fqt=1&end=20500000&lmt=1000000 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='33.push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +2026-01-13 17:32:42,229 - app.data_sources.cn_stock - WARNING - HK stock 00700: data fetch failed (timeframe: 1D) +2026-01-13 17:32:42,230 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:32:42] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-13 17:32:42,281 - urllib3.connectionpool - WARNING - Retrying (Retry(total=0, connect=0, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=116.00700&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:32:42,282 - app.data_sources.cn_stock - ERROR - Eastmoney HK stock fetch failed: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=116.00700&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:32:42,283 - app.data_sources.cn_stock - ERROR - Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/socks.py", line 787, in connect + super(socksocket, self).connect(proxy_addr) +ConnectionRefusedError: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 110, in _new_conn + conn = socks.create_connection( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 209, in create_connection + raise err + File "/usr/local/lib/python3.12/site-packages/socks.py", line 199, in create_connection + sock.connect((remote_host, remote_port)) + File "/usr/local/lib/python3.12/site-packages/socks.py", line 47, in wrapper + return function(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 800, in connect + raise ProxyConnectionError(msg, error) +socks.ProxyConnectionError: Error connecting to SOCKS5 proxy 127.0.0.1:10808: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen + response = self._make_request( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 488, in _make_request + raise new_e + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 464, in _make_request + self._validate_conn(conn) + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 1093, in _validate_conn + conn.connect() + File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 759, in connect + self.sock = sock = self._new_conn() + ^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 141, in _new_conn + raise NewConnectionError( +urllib3.exceptions.NewConnectionError: SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 644, in send + resp = conn.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 841, in urlopen + retries = retries.increment( + ^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/util/retry.py", line 535, in increment + raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +urllib3.exceptions.MaxRetryError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=116.00700&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/app/app/data_sources/cn_stock.py", line 605, in _fetch_eastmoney_kline + response = session.get(url, params=params, headers=headers, timeout=15) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 602, in get + return self.request("GET", url, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request + resp = self.send(prep, **send_kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send + r = adapter.send(request, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 677, in send + raise ConnectionError(e, request=request) +requests.exceptions.ConnectionError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=116.00700&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +2026-01-13 17:32:42,284 - yfinance - ERROR - Failed to get ticker '00700.HK' reason: Failed to perform, curl: (7) Failed to connect to 127.0.0.1 port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 17:32:42,284 - yfinance - ERROR - $00700.HK: possibly delisted; no timezone found +2026-01-13 17:32:42,285 - app.data_sources.us_stock - ERROR - Finnhub fetch failed: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//stock/candle?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=00700.HK&resolution=D&from=1768037562&to=1768296762 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:32:42,285 - app.data_sources.base - WARNING - USStock/yfinance: no data for 00700.HK +2026-01-13 17:32:42,286 - app.data_sources.cn_stock - ERROR - Akshare HK stock fetch failed: SOCKSHTTPSConnectionPool(host='33.push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=116.00700&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61&klt=101&fqt=1&end=20500000&lmt=1000000 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='33.push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:32:42,287 - app.data_sources.cn_stock - ERROR - Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/socks.py", line 787, in connect + super(socksocket, self).connect(proxy_addr) +ConnectionRefusedError: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 110, in _new_conn + conn = socks.create_connection( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 209, in create_connection + raise err + File "/usr/local/lib/python3.12/site-packages/socks.py", line 199, in create_connection + sock.connect((remote_host, remote_port)) + File "/usr/local/lib/python3.12/site-packages/socks.py", line 47, in wrapper + return function(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 800, in connect + raise ProxyConnectionError(msg, error) +socks.ProxyConnectionError: Error connecting to SOCKS5 proxy 127.0.0.1:10808: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen + response = self._make_request( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 488, in _make_request + raise new_e + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 464, in _make_request + self._validate_conn(conn) + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 1093, in _validate_conn + conn.connect() + File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 759, in connect + self.sock = sock = self._new_conn() + ^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 141, in _new_conn + raise NewConnectionError( +urllib3.exceptions.NewConnectionError: SOCKSHTTPSConnection(host='33.push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 644, in send + resp = conn.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 841, in urlopen + retries = retries.increment( + ^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/util/retry.py", line 535, in increment + raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +urllib3.exceptions.MaxRetryError: SOCKSHTTPSConnectionPool(host='33.push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=116.00700&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61&klt=101&fqt=1&end=20500000&lmt=1000000 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='33.push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/app/app/data_sources/cn_stock.py", line 676, in _fetch_akshare + df = ak.stock_hk_hist( + ^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/akshare/stock_feature/stock_hist_em.py", line 1428, in stock_hk_hist + r = requests.get(url, timeout=15, params=params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/api.py", line 73, in get + return request("get", url, params=params, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/api.py", line 59, in request + return session.request(method=method, url=url, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request + resp = self.send(prep, **send_kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send + r = adapter.send(request, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 677, in send + raise ConnectionError(e, request=request) +requests.exceptions.ConnectionError: SOCKSHTTPSConnectionPool(host='33.push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=116.00700&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61&klt=101&fqt=1&end=20500000&lmt=1000000 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='33.push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +2026-01-13 17:32:42,288 - app.data_sources.cn_stock - WARNING - HK stock 00700: data fetch failed (timeframe: 1D) +2026-01-13 17:32:42,288 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:32:42] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-13 17:32:45,020 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:32:45] "GET /api/settings/schema?_t=1768296765015 HTTP/1.1" 200 - +2026-01-13 17:32:45,024 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:32:45] "GET /api/settings/values?_t=1768296765015 HTTP/1.1" 200 - +2026-01-13 17:32:46,935 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:32:46] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:32:51,155 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:32:51] "GET /api/strategies/notifications?limit=50&_t=1768296771144 HTTP/1.1" 200 - +2026-01-13 17:33:16,992 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:33:16] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:33:21,170 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:33:21] "GET /api/strategies/notifications?limit=50&_t=1768296801142 HTTP/1.1" 200 - +2026-01-13 17:33:47,037 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:33:47] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:33:51,147 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:33:51] "GET /api/strategies/notifications?limit=50&_t=1768296831135 HTTP/1.1" 200 - +2026-01-13 17:34:17,090 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:34:17] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:34:21,154 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:34:21] "GET /api/strategies/notifications?limit=50&_t=1768296861140 HTTP/1.1" 200 - +2026-01-13 17:34:47,142 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:34:47] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:34:51,215 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:34:51] "GET /api/strategies/notifications?limit=50&_t=1768296891151 HTTP/1.1" 200 - +2026-01-13 17:35:00,263 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:00] "POST /api/settings/save HTTP/1.1" 200 - +2026-01-13 17:35:00,309 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:00] "GET /api/settings/schema?_t=1768296900305 HTTP/1.1" 200 - +2026-01-13 17:35:00,312 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:00] "GET /api/settings/values?_t=1768296900305 HTTP/1.1" 200 - +2026-01-13 17:35:01,732 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:01] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768296901703 HTTP/1.1" 200 - +2026-01-13 17:35:01,734 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:01] "GET /api/dashboard/summary?_t=1768296901703 HTTP/1.1" 200 - +2026-01-13 17:35:01,744 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:01] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768296901703 HTTP/1.1" 200 - +2026-01-13 17:35:02,513 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:02] "GET /api/user/info?_t=1768296902499 HTTP/1.1" 200 - +2026-01-13 17:35:02,514 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:02] "GET /api/market/config?_t=1768296902499 HTTP/1.1" 200 - +2026-01-13 17:35:02,525 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:02] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 17:35:02,554 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:02] "GET /api/market/types?_t=1768296902549 HTTP/1.1" 200 - +2026-01-13 17:35:02,561 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:02] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 17:35:02,615 - urllib3.connectionpool - WARNING - Retrying (Retry(total=2, connect=2, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSConnection(host='web.ifzq.gtimg.cn', port=80): Failed to establish a new connection: [Errno 111] Connection refused")': /appstock/app/fqkline/get?param=hk00700,day,,,2,qfq +2026-01-13 17:35:02,616 - app.data_sources.forex - ERROR - Tiingo API request failed: SOCKSHTTPSConnectionPool(host='api.tiingo.com', port=443): Max retries exceeded with url: /tiingo/fx/xauusd/prices?startDate=2026-01-10&endDate=2026-01-13&resampleFreq=1day&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.tiingo.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:35:02,616 - urllib3.connectionpool - WARNING - Retrying (Retry(total=2, connect=2, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=0.300475&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:35:02,617 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: okx GET https://www.okx.com/api/v5/public/instruments?instType=SPOT; trying fallback +2026-01-13 17:35:02,621 - yfinance - ERROR - Failed to get ticker 'SI=F' reason: Failed to perform, curl: (7) Failed to connect to 127.0.0.1 port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 17:35:02,622 - urllib3.connectionpool - WARNING - Retrying (Retry(total=2, connect=2, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=1.600519&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:35:02,622 - urllib3.connectionpool - WARNING - Retrying (Retry(total=2, connect=2, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=0.000858&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:35:02,623 - yfinance - ERROR - $SI=F: possibly delisted; no timezone found +2026-01-13 17:35:02,625 - yfinance - ERROR - Failed to get ticker 'AAPL' reason: Failed to perform, curl: (7) Failed to connect to 127.0.0.1 port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 17:35:02,628 - app.data_sources.futures - WARNING - No data: SI=F +2026-01-13 17:35:02,629 - yfinance - ERROR - $AAPL: possibly delisted; no timezone found +2026-01-13 17:35:02,630 - yfinance - ERROR - Failed to get ticker 'AVGO' reason: Failed to perform, curl: (7) Failed to connect to 127.0.0.1 port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 17:35:02,633 - yfinance - ERROR - $AVGO: possibly delisted; no timezone found +2026-01-13 17:35:02,633 - app.data_sources.us_stock - ERROR - Finnhub fetch failed: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//stock/candle?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=AAPL&resolution=D&from=1768037702&to=1768296902 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:35:02,634 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-13 17:35:02,635 - yfinance - ERROR - Failed to get ticker 'AVGO' reason: Failed to perform, curl: (7) Failed to connect to 127.0.0.1 port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 17:35:02,636 - yfinance - ERROR - $AVGO: possibly delisted; no timezone found +2026-01-13 17:35:02,636 - app.data_sources.us_stock - ERROR - Finnhub fetch failed: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//stock/candle?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=AVGO&resolution=D&from=1768037702&to=1768296902 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:35:02,638 - app.data_sources.base - WARNING - USStock/yfinance: no data for AVGO +2026-01-13 17:35:02,639 - app.data_sources.us_stock - ERROR - Finnhub fetch failed: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//stock/candle?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=AVGO&resolution=D&from=1768037702&to=1768296902 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:35:02,640 - app.data_sources.base - WARNING - USStock/yfinance: no data for AVGO +2026-01-13 17:35:02,642 - urllib3.connectionpool - WARNING - Retrying (Retry(total=2, connect=2, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=1.600519&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:35:02,720 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: okx GET https://www.okx.com/api/v5/public/instruments?instType=SPOT; trying fallback +2026-01-13 17:35:02,720 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: okx GET https://www.okx.com/api/v5/public/instruments?instType=SPOT; trying fallback +2026-01-13 17:35:02,721 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: okx GET https://www.okx.com/api/v5/public/instruments?instType=SPOT; trying fallback +2026-01-13 17:35:02,722 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: okx GET https://www.okx.com/api/v5/public/instruments?instType=SPOT; trying fallback +2026-01-13 17:35:02,722 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: okx GET https://www.okx.com/api/v5/public/instruments?instType=SPOT +2026-01-13 17:35:02,723 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2026-01-13 17:35:02,726 - yfinance - ERROR - Failed to get ticker 'SI=F' reason: Failed to perform, curl: (7) Failed to connect to 127.0.0.1 port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 17:35:02,728 - yfinance - ERROR - $SI=F: possibly delisted; no timezone found +2026-01-13 17:35:02,729 - app.data_sources.futures - WARNING - No data: SI=F +2026-01-13 17:35:02,731 - app.data_sources.forex - ERROR - Tiingo API request failed: SOCKSHTTPSConnectionPool(host='api.tiingo.com', port=443): Max retries exceeded with url: /tiingo/fx/xauusd/prices?startDate=2026-01-10&endDate=2026-01-13&resampleFreq=1day&token=99fc1113bd53c80ddcf66868043fdbc295364b0a&format=json (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.tiingo.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:35:02,831 - app.data_sources.crypto - WARNING - CCXT fetch_ohlcv failed: okx GET https://www.okx.com/api/v5/public/instruments?instType=SPOT; trying fallback +2026-01-13 17:35:02,832 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: okx GET https://www.okx.com/api/v5/public/instruments?instType=SPOT +2026-01-13 17:35:02,832 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: okx GET https://www.okx.com/api/v5/public/instruments?instType=SPOT +2026-01-13 17:35:02,832 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: okx GET https://www.okx.com/api/v5/public/instruments?instType=SPOT +2026-01-13 17:35:02,832 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: okx GET https://www.okx.com/api/v5/public/instruments?instType=SPOT +2026-01-13 17:35:02,832 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: ETH/USDT +2026-01-13 17:35:02,833 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2026-01-13 17:35:02,833 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BNB/USDT +2026-01-13 17:35:02,834 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BNB/USDT +2026-01-13 17:35:02,837 - urllib3.connectionpool - WARNING - Retrying (Retry(total=2, connect=2, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSConnection(host='web.ifzq.gtimg.cn', port=80): Failed to establish a new connection: [Errno 111] Connection refused")': /appstock/app/fqkline/get?param=hk00700,day,,,2,qfq +2026-01-13 17:35:02,843 - urllib3.connectionpool - WARNING - Retrying (Retry(total=2, connect=2, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=0.300475&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:35:02,843 - urllib3.connectionpool - WARNING - Retrying (Retry(total=2, connect=2, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=0.000858&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:35:02,844 - yfinance - ERROR - Failed to get ticker 'AAPL' reason: Failed to perform, curl: (7) Failed to connect to 127.0.0.1 port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 17:35:02,845 - yfinance - ERROR - $AAPL: possibly delisted; no timezone found +2026-01-13 17:35:02,847 - app.data_sources.us_stock - ERROR - Finnhub fetch failed: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//stock/candle?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=AAPL&resolution=D&from=1768037702&to=1768296902 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:35:02,847 - app.data_sources.base - WARNING - USStock/yfinance: no data for AAPL +2026-01-13 17:35:02,942 - app.data_sources.crypto - ERROR - CCXT fallback method also failed: okx GET https://www.okx.com/api/v5/public/instruments?instType=SPOT +2026-01-13 17:35:02,943 - app.data_sources.crypto - WARNING - CCXT returned no K-lines: BTC/USDT +2026-01-13 17:35:03,151 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:03] "GET /api/market/types?_t=1768296903136 HTTP/1.1" 200 - +2026-01-13 17:35:03,153 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:03] "GET /api/user/info?_t=1768296903136 HTTP/1.1" 200 - +2026-01-13 17:35:03,155 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:03] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 17:35:03,181 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=500 +2026-01-13 17:35:03,185 - yfinance - ERROR - Failed to get ticker 'AVGO' reason: Failed to perform, curl: (7) Failed to connect to 127.0.0.1 port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 17:35:03,186 - yfinance - ERROR - $AVGO: possibly delisted; no timezone found +2026-01-13 17:35:03,189 - app.data_sources.us_stock - ERROR - Finnhub fetch failed: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//stock/candle?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=AVGO&resolution=D&from=1725010503&to=1768296903 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:35:03,190 - app.data_sources.base - WARNING - USStock/yfinance: no data for AVGO +2026-01-13 17:35:03,190 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-13 17:35:03,191 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:03] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 17:35:03,192 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:03] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 17:35:03,192 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:03] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 17:35:03,620 - urllib3.connectionpool - WARNING - Retrying (Retry(total=1, connect=1, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSConnection(host='web.ifzq.gtimg.cn', port=80): Failed to establish a new connection: [Errno 111] Connection refused")': /appstock/app/fqkline/get?param=hk00700,day,,,2,qfq +2026-01-13 17:35:03,620 - urllib3.connectionpool - WARNING - Retrying (Retry(total=1, connect=1, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=0.300475&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:35:03,625 - urllib3.connectionpool - WARNING - Retrying (Retry(total=1, connect=1, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=1.600519&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:35:03,627 - urllib3.connectionpool - WARNING - Retrying (Retry(total=1, connect=1, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=0.000858&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:35:03,644 - urllib3.connectionpool - WARNING - Retrying (Retry(total=1, connect=1, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=1.600519&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:35:03,844 - urllib3.connectionpool - WARNING - Retrying (Retry(total=1, connect=1, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSConnection(host='web.ifzq.gtimg.cn', port=80): Failed to establish a new connection: [Errno 111] Connection refused")': /appstock/app/fqkline/get?param=hk00700,day,,,2,qfq +2026-01-13 17:35:03,844 - urllib3.connectionpool - WARNING - Retrying (Retry(total=1, connect=1, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=0.300475&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:35:03,845 - urllib3.connectionpool - WARNING - Retrying (Retry(total=1, connect=1, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=0.000858&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:35:04,577 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=500 +2026-01-13 17:35:04,579 - yfinance - ERROR - Failed to get ticker 'AVGO' reason: Failed to perform, curl: (7) Failed to connect to 127.0.0.1 port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 17:35:04,580 - yfinance - ERROR - $AVGO: possibly delisted; no timezone found +2026-01-13 17:35:04,581 - app.data_sources.us_stock - ERROR - Finnhub fetch failed: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//stock/candle?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=AVGO&resolution=D&from=1725010504&to=1768296904 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:35:04,581 - app.data_sources.base - WARNING - USStock/yfinance: no data for AVGO +2026-01-13 17:35:04,581 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:04] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-13 17:35:05,155 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=500 +2026-01-13 17:35:05,159 - yfinance - ERROR - Failed to get ticker 'AVGO' reason: Failed to perform, curl: (7) Failed to connect to 127.0.0.1 port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 17:35:05,160 - yfinance - ERROR - $AVGO: possibly delisted; no timezone found +2026-01-13 17:35:05,162 - app.data_sources.us_stock - ERROR - Finnhub fetch failed: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//stock/candle?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=AVGO&resolution=D&from=1725010505&to=1768296905 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:35:05,162 - app.data_sources.base - WARNING - USStock/yfinance: no data for AVGO +2026-01-13 17:35:05,163 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-13 17:35:05,622 - urllib3.connectionpool - WARNING - Retrying (Retry(total=0, connect=0, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSConnection(host='web.ifzq.gtimg.cn', port=80): Failed to establish a new connection: [Errno 111] Connection refused")': /appstock/app/fqkline/get?param=hk00700,day,,,2,qfq +2026-01-13 17:35:05,623 - urllib3.connectionpool - WARNING - Retrying (Retry(total=0, connect=0, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=0.300475&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:35:05,624 - app.data_sources.cn_stock - ERROR - Eastmoney A-share fetch failed: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=0.300475&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:35:05,626 - app.data_sources.cn_stock - ERROR - Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/socks.py", line 787, in connect + super(socksocket, self).connect(proxy_addr) +ConnectionRefusedError: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 110, in _new_conn + conn = socks.create_connection( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 209, in create_connection + raise err + File "/usr/local/lib/python3.12/site-packages/socks.py", line 199, in create_connection + sock.connect((remote_host, remote_port)) + File "/usr/local/lib/python3.12/site-packages/socks.py", line 47, in wrapper + return function(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 800, in connect + raise ProxyConnectionError(msg, error) +socks.ProxyConnectionError: Error connecting to SOCKS5 proxy 127.0.0.1:10808: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen + response = self._make_request( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 488, in _make_request + raise new_e + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 464, in _make_request + self._validate_conn(conn) + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 1093, in _validate_conn + conn.connect() + File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 759, in connect + self.sock = sock = self._new_conn() + ^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 141, in _new_conn + raise NewConnectionError( +urllib3.exceptions.NewConnectionError: SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 644, in send + resp = conn.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 841, in urlopen + retries = retries.increment( + ^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/util/retry.py", line 535, in increment + raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +urllib3.exceptions.MaxRetryError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=0.300475&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/app/app/data_sources/cn_stock.py", line 294, in _fetch_eastmoney_ashare + response = session.get(url, params=params, headers=headers, timeout=15) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 602, in get + return self.request("GET", url, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request + resp = self.send(prep, **send_kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send + r = adapter.send(request, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 677, in send + raise ConnectionError(e, request=request) +requests.exceptions.ConnectionError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=0.300475&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +2026-01-13 17:35:05,626 - app.data_sources.cn_stock - ERROR - Tencent quote fetch failed: SOCKSHTTPConnectionPool(host='web.ifzq.gtimg.cn', port=80): Max retries exceeded with url: /appstock/app/fqkline/get?param=hk00700,day,,,2,qfq (Caused by NewConnectionError("SOCKSConnection(host='web.ifzq.gtimg.cn', port=80): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:35:05,627 - urllib3.connectionpool - WARNING - Retrying (Retry(total=0, connect=0, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=1.600519&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:35:05,628 - urllib3.connectionpool - WARNING - Retrying (Retry(total=0, connect=0, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=0.000858&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:35:05,628 - yfinance - ERROR - Failed to get ticker '300475.SZ' reason: Failed to perform, curl: (7) Failed to connect to 127.0.0.1 port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 17:35:05,629 - app.data_sources.cn_stock - ERROR - Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/socks.py", line 787, in connect + super(socksocket, self).connect(proxy_addr) +ConnectionRefusedError: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 110, in _new_conn + conn = socks.create_connection( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 209, in create_connection + raise err + File "/usr/local/lib/python3.12/site-packages/socks.py", line 199, in create_connection + sock.connect((remote_host, remote_port)) + File "/usr/local/lib/python3.12/site-packages/socks.py", line 47, in wrapper + return function(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 800, in connect + raise ProxyConnectionError(msg, error) +socks.ProxyConnectionError: Error connecting to SOCKS5 proxy 127.0.0.1:10808: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen + response = self._make_request( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 493, in _make_request + conn.request( + File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 500, in request + self.endheaders() + File "/usr/local/lib/python3.12/http/client.py", line 1333, in endheaders + self._send_output(message_body, encode_chunked=encode_chunked) + File "/usr/local/lib/python3.12/http/client.py", line 1093, in _send_output + self.send(msg) + File "/usr/local/lib/python3.12/http/client.py", line 1037, in send + self.connect() + File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 331, in connect + self.sock = self._new_conn() + ^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 141, in _new_conn + raise NewConnectionError( +urllib3.exceptions.NewConnectionError: SOCKSConnection(host='web.ifzq.gtimg.cn', port=80): Failed to establish a new connection: [Errno 111] Connection refused + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 644, in send + resp = conn.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 841, in urlopen + retries = retries.increment( + ^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/util/retry.py", line 535, in increment + raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +urllib3.exceptions.MaxRetryError: SOCKSHTTPConnectionPool(host='web.ifzq.gtimg.cn', port=80): Max retries exceeded with url: /appstock/app/fqkline/get?param=hk00700,day,,,2,qfq (Caused by NewConnectionError("SOCKSConnection(host='web.ifzq.gtimg.cn', port=80): Failed to establish a new connection: [Errno 111] Connection refused")) + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/app/app/data_sources/cn_stock.py", line 83, in _fetch_tencent_kline + response = session.get(url, timeout=10) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 602, in get + return self.request("GET", url, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request + resp = self.send(prep, **send_kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send + r = adapter.send(request, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 677, in send + raise ConnectionError(e, request=request) +requests.exceptions.ConnectionError: SOCKSHTTPConnectionPool(host='web.ifzq.gtimg.cn', port=80): Max retries exceeded with url: /appstock/app/fqkline/get?param=hk00700,day,,,2,qfq (Caused by NewConnectionError("SOCKSConnection(host='web.ifzq.gtimg.cn', port=80): Failed to establish a new connection: [Errno 111] Connection refused")) + +2026-01-13 17:35:05,630 - app.data_sources.cn_stock - ERROR - Eastmoney A-share fetch failed: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=1.600519&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:35:05,630 - app.data_sources.cn_stock - ERROR - Eastmoney A-share fetch failed: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=0.000858&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:35:05,630 - yfinance - ERROR - $300475.SZ: possibly delisted; no timezone found +2026-01-13 17:35:05,631 - urllib3.connectionpool - WARNING - Retrying (Retry(total=2, connect=2, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=116.00700&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:35:05,632 - app.data_sources.cn_stock - ERROR - Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/socks.py", line 787, in connect + super(socksocket, self).connect(proxy_addr) +ConnectionRefusedError: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 110, in _new_conn + conn = socks.create_connection( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 209, in create_connection + raise err + File "/usr/local/lib/python3.12/site-packages/socks.py", line 199, in create_connection + sock.connect((remote_host, remote_port)) + File "/usr/local/lib/python3.12/site-packages/socks.py", line 47, in wrapper + return function(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 800, in connect + raise ProxyConnectionError(msg, error) +socks.ProxyConnectionError: Error connecting to SOCKS5 proxy 127.0.0.1:10808: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen + response = self._make_request( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 488, in _make_request + raise new_e + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 464, in _make_request + self._validate_conn(conn) + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 1093, in _validate_conn + conn.connect() + File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 759, in connect + self.sock = sock = self._new_conn() + ^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 141, in _new_conn + raise NewConnectionError( +urllib3.exceptions.NewConnectionError: SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 644, in send + resp = conn.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 841, in urlopen + retries = retries.increment( + ^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/util/retry.py", line 535, in increment + raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +urllib3.exceptions.MaxRetryError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=1.600519&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/app/app/data_sources/cn_stock.py", line 294, in _fetch_eastmoney_ashare + response = session.get(url, params=params, headers=headers, timeout=15) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 602, in get + return self.request("GET", url, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request + resp = self.send(prep, **send_kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send + r = adapter.send(request, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 677, in send + raise ConnectionError(e, request=request) +requests.exceptions.ConnectionError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=1.600519&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +2026-01-13 17:35:05,634 - app.data_sources.cn_stock - ERROR - Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/socks.py", line 787, in connect + super(socksocket, self).connect(proxy_addr) +ConnectionRefusedError: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 110, in _new_conn + conn = socks.create_connection( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 209, in create_connection + raise err + File "/usr/local/lib/python3.12/site-packages/socks.py", line 199, in create_connection + sock.connect((remote_host, remote_port)) + File "/usr/local/lib/python3.12/site-packages/socks.py", line 47, in wrapper + return function(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 800, in connect + raise ProxyConnectionError(msg, error) +socks.ProxyConnectionError: Error connecting to SOCKS5 proxy 127.0.0.1:10808: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen + response = self._make_request( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 488, in _make_request + raise new_e + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 464, in _make_request + self._validate_conn(conn) + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 1093, in _validate_conn + conn.connect() + File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 759, in connect + self.sock = sock = self._new_conn() + ^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 141, in _new_conn + raise NewConnectionError( +urllib3.exceptions.NewConnectionError: SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 644, in send + resp = conn.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 841, in urlopen + retries = retries.increment( + ^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/util/retry.py", line 535, in increment + raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +urllib3.exceptions.MaxRetryError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=0.000858&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/app/app/data_sources/cn_stock.py", line 294, in _fetch_eastmoney_ashare + response = session.get(url, params=params, headers=headers, timeout=15) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 602, in get + return self.request("GET", url, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request + resp = self.send(prep, **send_kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send + r = adapter.send(request, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 677, in send + raise ConnectionError(e, request=request) +requests.exceptions.ConnectionError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=0.000858&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +2026-01-13 17:35:05,636 - app.data_sources.us_stock - ERROR - Finnhub fetch failed: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//stock/candle?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=300475.SZ&resolution=D&from=1768037705&to=1768296905 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:35:05,636 - app.data_sources.base - WARNING - USStock/yfinance: no data for 300475.SZ +2026-01-13 17:35:05,637 - yfinance - ERROR - Failed to get ticker '600519.SS' reason: Failed to perform, curl: (7) Failed to connect to 127.0.0.1 port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 17:35:05,638 - yfinance - ERROR - $600519.SS: possibly delisted; no timezone found +2026-01-13 17:35:05,641 - app.data_sources.us_stock - ERROR - Finnhub fetch failed: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//stock/candle?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=600519.SS&resolution=D&from=1768037705&to=1768296905 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:35:05,641 - yfinance - ERROR - Failed to get ticker '000858.SZ' reason: Failed to perform, curl: (7) Failed to connect to 127.0.0.1 port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 17:35:05,642 - app.data_sources.base - WARNING - USStock/yfinance: no data for 600519.SS +2026-01-13 17:35:05,642 - app.data_sources.cn_stock - ERROR - Akshare A-share fetch failed: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61%2Cf116&ut=7eea3edcaed734bea9cbfc24409ed989&klt=101&fqt=1&secid=0.300475&beg=20260109&end=20260113 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:35:05,642 - yfinance - ERROR - $000858.SZ: possibly delisted; no timezone found +2026-01-13 17:35:05,643 - app.data_sources.cn_stock - ERROR - Akshare A-share fetch failed: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61%2Cf116&ut=7eea3edcaed734bea9cbfc24409ed989&klt=101&fqt=1&secid=1.600519&beg=20260109&end=20260113 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:35:05,644 - app.data_sources.cn_stock - ERROR - Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/socks.py", line 787, in connect + super(socksocket, self).connect(proxy_addr) +ConnectionRefusedError: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 110, in _new_conn + conn = socks.create_connection( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 209, in create_connection + raise err + File "/usr/local/lib/python3.12/site-packages/socks.py", line 199, in create_connection + sock.connect((remote_host, remote_port)) + File "/usr/local/lib/python3.12/site-packages/socks.py", line 47, in wrapper + return function(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 800, in connect + raise ProxyConnectionError(msg, error) +socks.ProxyConnectionError: Error connecting to SOCKS5 proxy 127.0.0.1:10808: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen + response = self._make_request( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 488, in _make_request + raise new_e + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 464, in _make_request + self._validate_conn(conn) + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 1093, in _validate_conn + conn.connect() + File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 759, in connect + self.sock = sock = self._new_conn() + ^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 141, in _new_conn + raise NewConnectionError( +urllib3.exceptions.NewConnectionError: SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 644, in send + resp = conn.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 841, in urlopen + retries = retries.increment( + ^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/util/retry.py", line 535, in increment + raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +urllib3.exceptions.MaxRetryError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61%2Cf116&ut=7eea3edcaed734bea9cbfc24409ed989&klt=101&fqt=1&secid=0.300475&beg=20260109&end=20260113 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/app/app/data_sources/cn_stock.py", line 361, in _fetch_akshare + df = ak.stock_zh_a_hist( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/akshare/stock_feature/stock_hist_em.py", line 990, in stock_zh_a_hist + r = requests.get(url, params=params, timeout=timeout) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/api.py", line 73, in get + return request("get", url, params=params, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/api.py", line 59, in request + return session.request(method=method, url=url, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request + resp = self.send(prep, **send_kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send + r = adapter.send(request, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 677, in send + raise ConnectionError(e, request=request) +requests.exceptions.ConnectionError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61%2Cf116&ut=7eea3edcaed734bea9cbfc24409ed989&klt=101&fqt=1&secid=0.300475&beg=20260109&end=20260113 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +2026-01-13 17:35:05,645 - app.data_sources.us_stock - ERROR - Finnhub fetch failed: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//stock/candle?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=000858.SZ&resolution=D&from=1768037705&to=1768296905 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:35:05,645 - urllib3.connectionpool - WARNING - Retrying (Retry(total=0, connect=0, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=1.600519&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:35:05,645 - app.data_sources.cn_stock - WARNING - AShare 300475 data fetch failed +2026-01-13 17:35:05,646 - app.data_sources.base - WARNING - USStock/yfinance: no data for 000858.SZ +2026-01-13 17:35:05,646 - app.data_sources.cn_stock - ERROR - Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/socks.py", line 787, in connect + super(socksocket, self).connect(proxy_addr) +ConnectionRefusedError: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 110, in _new_conn + conn = socks.create_connection( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 209, in create_connection + raise err + File "/usr/local/lib/python3.12/site-packages/socks.py", line 199, in create_connection + sock.connect((remote_host, remote_port)) + File "/usr/local/lib/python3.12/site-packages/socks.py", line 47, in wrapper + return function(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 800, in connect + raise ProxyConnectionError(msg, error) +socks.ProxyConnectionError: Error connecting to SOCKS5 proxy 127.0.0.1:10808: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen + response = self._make_request( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 488, in _make_request + raise new_e + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 464, in _make_request + self._validate_conn(conn) + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 1093, in _validate_conn + conn.connect() + File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 759, in connect + self.sock = sock = self._new_conn() + ^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 141, in _new_conn + raise NewConnectionError( +urllib3.exceptions.NewConnectionError: SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 644, in send + resp = conn.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 841, in urlopen + retries = retries.increment( + ^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/util/retry.py", line 535, in increment + raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +urllib3.exceptions.MaxRetryError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61%2Cf116&ut=7eea3edcaed734bea9cbfc24409ed989&klt=101&fqt=1&secid=1.600519&beg=20260109&end=20260113 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/app/app/data_sources/cn_stock.py", line 361, in _fetch_akshare + df = ak.stock_zh_a_hist( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/akshare/stock_feature/stock_hist_em.py", line 990, in stock_zh_a_hist + r = requests.get(url, params=params, timeout=timeout) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/api.py", line 73, in get + return request("get", url, params=params, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/api.py", line 59, in request + return session.request(method=method, url=url, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request + resp = self.send(prep, **send_kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send + r = adapter.send(request, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 677, in send + raise ConnectionError(e, request=request) +requests.exceptions.ConnectionError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61%2Cf116&ut=7eea3edcaed734bea9cbfc24409ed989&klt=101&fqt=1&secid=1.600519&beg=20260109&end=20260113 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +2026-01-13 17:35:05,647 - app.data_sources.cn_stock - ERROR - Eastmoney A-share fetch failed: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=1.600519&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:35:05,647 - app.data_sources.cn_stock - WARNING - AShare 600519 data fetch failed +2026-01-13 17:35:05,648 - app.data_sources.cn_stock - ERROR - Akshare A-share fetch failed: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61%2Cf116&ut=7eea3edcaed734bea9cbfc24409ed989&klt=101&fqt=1&secid=0.000858&beg=20260109&end=20260113 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:35:05,649 - app.data_sources.cn_stock - ERROR - Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/socks.py", line 787, in connect + super(socksocket, self).connect(proxy_addr) +ConnectionRefusedError: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 110, in _new_conn + conn = socks.create_connection( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 209, in create_connection + raise err + File "/usr/local/lib/python3.12/site-packages/socks.py", line 199, in create_connection + sock.connect((remote_host, remote_port)) + File "/usr/local/lib/python3.12/site-packages/socks.py", line 47, in wrapper + return function(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 800, in connect + raise ProxyConnectionError(msg, error) +socks.ProxyConnectionError: Error connecting to SOCKS5 proxy 127.0.0.1:10808: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen + response = self._make_request( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 488, in _make_request + raise new_e + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 464, in _make_request + self._validate_conn(conn) + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 1093, in _validate_conn + conn.connect() + File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 759, in connect + self.sock = sock = self._new_conn() + ^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 141, in _new_conn + raise NewConnectionError( +urllib3.exceptions.NewConnectionError: SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 644, in send + resp = conn.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 841, in urlopen + retries = retries.increment( + ^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/util/retry.py", line 535, in increment + raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +urllib3.exceptions.MaxRetryError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=1.600519&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/app/app/data_sources/cn_stock.py", line 294, in _fetch_eastmoney_ashare + response = session.get(url, params=params, headers=headers, timeout=15) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 602, in get + return self.request("GET", url, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request + resp = self.send(prep, **send_kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send + r = adapter.send(request, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 677, in send + raise ConnectionError(e, request=request) +requests.exceptions.ConnectionError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=1.600519&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +2026-01-13 17:35:05,651 - app.data_sources.cn_stock - ERROR - Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/socks.py", line 787, in connect + super(socksocket, self).connect(proxy_addr) +ConnectionRefusedError: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 110, in _new_conn + conn = socks.create_connection( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 209, in create_connection + raise err + File "/usr/local/lib/python3.12/site-packages/socks.py", line 199, in create_connection + sock.connect((remote_host, remote_port)) + File "/usr/local/lib/python3.12/site-packages/socks.py", line 47, in wrapper + return function(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 800, in connect + raise ProxyConnectionError(msg, error) +socks.ProxyConnectionError: Error connecting to SOCKS5 proxy 127.0.0.1:10808: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen + response = self._make_request( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 488, in _make_request + raise new_e + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 464, in _make_request + self._validate_conn(conn) + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 1093, in _validate_conn + conn.connect() + File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 759, in connect + self.sock = sock = self._new_conn() + ^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 141, in _new_conn + raise NewConnectionError( +urllib3.exceptions.NewConnectionError: SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 644, in send + resp = conn.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 841, in urlopen + retries = retries.increment( + ^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/util/retry.py", line 535, in increment + raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +urllib3.exceptions.MaxRetryError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61%2Cf116&ut=7eea3edcaed734bea9cbfc24409ed989&klt=101&fqt=1&secid=0.000858&beg=20260109&end=20260113 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/app/app/data_sources/cn_stock.py", line 361, in _fetch_akshare + df = ak.stock_zh_a_hist( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/akshare/stock_feature/stock_hist_em.py", line 990, in stock_zh_a_hist + r = requests.get(url, params=params, timeout=timeout) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/api.py", line 73, in get + return request("get", url, params=params, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/api.py", line 59, in request + return session.request(method=method, url=url, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request + resp = self.send(prep, **send_kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send + r = adapter.send(request, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 677, in send + raise ConnectionError(e, request=request) +requests.exceptions.ConnectionError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61%2Cf116&ut=7eea3edcaed734bea9cbfc24409ed989&klt=101&fqt=1&secid=0.000858&beg=20260109&end=20260113 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +2026-01-13 17:35:05,652 - app.data_sources.cn_stock - WARNING - AShare 000858 data fetch failed +2026-01-13 17:35:05,652 - yfinance - ERROR - Failed to get ticker '600519.SS' reason: Failed to perform, curl: (7) Failed to connect to 127.0.0.1 port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 17:35:05,653 - yfinance - ERROR - $600519.SS: possibly delisted; no timezone found +2026-01-13 17:35:05,655 - app.data_sources.us_stock - ERROR - Finnhub fetch failed: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//stock/candle?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=600519.SS&resolution=D&from=1768037705&to=1768296905 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:35:05,655 - app.data_sources.base - WARNING - USStock/yfinance: no data for 600519.SS +2026-01-13 17:35:05,656 - app.data_sources.cn_stock - ERROR - Akshare A-share fetch failed: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61%2Cf116&ut=7eea3edcaed734bea9cbfc24409ed989&klt=101&fqt=1&secid=1.600519&beg=20260109&end=20260113 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:35:05,657 - app.data_sources.cn_stock - ERROR - Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/socks.py", line 787, in connect + super(socksocket, self).connect(proxy_addr) +ConnectionRefusedError: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 110, in _new_conn + conn = socks.create_connection( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 209, in create_connection + raise err + File "/usr/local/lib/python3.12/site-packages/socks.py", line 199, in create_connection + sock.connect((remote_host, remote_port)) + File "/usr/local/lib/python3.12/site-packages/socks.py", line 47, in wrapper + return function(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 800, in connect + raise ProxyConnectionError(msg, error) +socks.ProxyConnectionError: Error connecting to SOCKS5 proxy 127.0.0.1:10808: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen + response = self._make_request( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 488, in _make_request + raise new_e + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 464, in _make_request + self._validate_conn(conn) + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 1093, in _validate_conn + conn.connect() + File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 759, in connect + self.sock = sock = self._new_conn() + ^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 141, in _new_conn + raise NewConnectionError( +urllib3.exceptions.NewConnectionError: SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 644, in send + resp = conn.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 841, in urlopen + retries = retries.increment( + ^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/util/retry.py", line 535, in increment + raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +urllib3.exceptions.MaxRetryError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61%2Cf116&ut=7eea3edcaed734bea9cbfc24409ed989&klt=101&fqt=1&secid=1.600519&beg=20260109&end=20260113 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/app/app/data_sources/cn_stock.py", line 361, in _fetch_akshare + df = ak.stock_zh_a_hist( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/akshare/stock_feature/stock_hist_em.py", line 990, in stock_zh_a_hist + r = requests.get(url, params=params, timeout=timeout) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/api.py", line 73, in get + return request("get", url, params=params, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/api.py", line 59, in request + return session.request(method=method, url=url, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request + resp = self.send(prep, **send_kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send + r = adapter.send(request, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 677, in send + raise ConnectionError(e, request=request) +requests.exceptions.ConnectionError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61%2Cf116&ut=7eea3edcaed734bea9cbfc24409ed989&klt=101&fqt=1&secid=1.600519&beg=20260109&end=20260113 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +2026-01-13 17:35:05,657 - app.data_sources.cn_stock - WARNING - AShare 600519 data fetch failed +2026-01-13 17:35:05,696 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=500 +2026-01-13 17:35:05,697 - yfinance - ERROR - Failed to get ticker 'AVGO' reason: Failed to perform, curl: (7) Failed to connect to 127.0.0.1 port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 17:35:05,698 - yfinance - ERROR - $AVGO: possibly delisted; no timezone found +2026-01-13 17:35:05,700 - app.data_sources.us_stock - ERROR - Finnhub fetch failed: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//stock/candle?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=AVGO&resolution=D&from=1725010505&to=1768296905 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:35:05,700 - app.data_sources.base - WARNING - USStock/yfinance: no data for AVGO +2026-01-13 17:35:05,701 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:05] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-13 17:35:05,846 - urllib3.connectionpool - WARNING - Retrying (Retry(total=0, connect=0, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSConnection(host='web.ifzq.gtimg.cn', port=80): Failed to establish a new connection: [Errno 111] Connection refused")': /appstock/app/fqkline/get?param=hk00700,day,,,2,qfq +2026-01-13 17:35:05,846 - urllib3.connectionpool - WARNING - Retrying (Retry(total=0, connect=0, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=0.300475&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:35:05,847 - urllib3.connectionpool - WARNING - Retrying (Retry(total=0, connect=0, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=0.000858&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:35:05,847 - app.data_sources.cn_stock - ERROR - Tencent quote fetch failed: SOCKSHTTPConnectionPool(host='web.ifzq.gtimg.cn', port=80): Max retries exceeded with url: /appstock/app/fqkline/get?param=hk00700,day,,,2,qfq (Caused by NewConnectionError("SOCKSConnection(host='web.ifzq.gtimg.cn', port=80): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:35:05,849 - app.data_sources.cn_stock - ERROR - Eastmoney A-share fetch failed: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=0.000858&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:35:05,850 - app.data_sources.cn_stock - ERROR - Eastmoney A-share fetch failed: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=0.300475&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:35:05,852 - app.data_sources.cn_stock - ERROR - Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/socks.py", line 787, in connect + super(socksocket, self).connect(proxy_addr) +ConnectionRefusedError: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 110, in _new_conn + conn = socks.create_connection( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 209, in create_connection + raise err + File "/usr/local/lib/python3.12/site-packages/socks.py", line 199, in create_connection + sock.connect((remote_host, remote_port)) + File "/usr/local/lib/python3.12/site-packages/socks.py", line 47, in wrapper + return function(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 800, in connect + raise ProxyConnectionError(msg, error) +socks.ProxyConnectionError: Error connecting to SOCKS5 proxy 127.0.0.1:10808: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen + response = self._make_request( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 493, in _make_request + conn.request( + File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 500, in request + self.endheaders() + File "/usr/local/lib/python3.12/http/client.py", line 1333, in endheaders + self._send_output(message_body, encode_chunked=encode_chunked) + File "/usr/local/lib/python3.12/http/client.py", line 1093, in _send_output + self.send(msg) + File "/usr/local/lib/python3.12/http/client.py", line 1037, in send + self.connect() + File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 331, in connect + self.sock = self._new_conn() + ^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 141, in _new_conn + raise NewConnectionError( +urllib3.exceptions.NewConnectionError: SOCKSConnection(host='web.ifzq.gtimg.cn', port=80): Failed to establish a new connection: [Errno 111] Connection refused + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 644, in send + resp = conn.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 841, in urlopen + retries = retries.increment( + ^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/util/retry.py", line 535, in increment + raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +urllib3.exceptions.MaxRetryError: SOCKSHTTPConnectionPool(host='web.ifzq.gtimg.cn', port=80): Max retries exceeded with url: /appstock/app/fqkline/get?param=hk00700,day,,,2,qfq (Caused by NewConnectionError("SOCKSConnection(host='web.ifzq.gtimg.cn', port=80): Failed to establish a new connection: [Errno 111] Connection refused")) + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/app/app/data_sources/cn_stock.py", line 83, in _fetch_tencent_kline + response = session.get(url, timeout=10) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 602, in get + return self.request("GET", url, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request + resp = self.send(prep, **send_kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send + r = adapter.send(request, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 677, in send + raise ConnectionError(e, request=request) +requests.exceptions.ConnectionError: SOCKSHTTPConnectionPool(host='web.ifzq.gtimg.cn', port=80): Max retries exceeded with url: /appstock/app/fqkline/get?param=hk00700,day,,,2,qfq (Caused by NewConnectionError("SOCKSConnection(host='web.ifzq.gtimg.cn', port=80): Failed to establish a new connection: [Errno 111] Connection refused")) + +2026-01-13 17:35:05,853 - app.data_sources.cn_stock - ERROR - Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/socks.py", line 787, in connect + super(socksocket, self).connect(proxy_addr) +ConnectionRefusedError: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 110, in _new_conn + conn = socks.create_connection( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 209, in create_connection + raise err + File "/usr/local/lib/python3.12/site-packages/socks.py", line 199, in create_connection + sock.connect((remote_host, remote_port)) + File "/usr/local/lib/python3.12/site-packages/socks.py", line 47, in wrapper + return function(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 800, in connect + raise ProxyConnectionError(msg, error) +socks.ProxyConnectionError: Error connecting to SOCKS5 proxy 127.0.0.1:10808: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen + response = self._make_request( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 488, in _make_request + raise new_e + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 464, in _make_request + self._validate_conn(conn) + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 1093, in _validate_conn + conn.connect() + File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 759, in connect + self.sock = sock = self._new_conn() + ^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 141, in _new_conn + raise NewConnectionError( +urllib3.exceptions.NewConnectionError: SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 644, in send + resp = conn.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 841, in urlopen + retries = retries.increment( + ^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/util/retry.py", line 535, in increment + raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +urllib3.exceptions.MaxRetryError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=0.000858&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/app/app/data_sources/cn_stock.py", line 294, in _fetch_eastmoney_ashare + response = session.get(url, params=params, headers=headers, timeout=15) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 602, in get + return self.request("GET", url, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request + resp = self.send(prep, **send_kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send + r = adapter.send(request, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 677, in send + raise ConnectionError(e, request=request) +requests.exceptions.ConnectionError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=0.000858&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +2026-01-13 17:35:05,854 - app.data_sources.cn_stock - ERROR - Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/socks.py", line 787, in connect + super(socksocket, self).connect(proxy_addr) +ConnectionRefusedError: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 110, in _new_conn + conn = socks.create_connection( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 209, in create_connection + raise err + File "/usr/local/lib/python3.12/site-packages/socks.py", line 199, in create_connection + sock.connect((remote_host, remote_port)) + File "/usr/local/lib/python3.12/site-packages/socks.py", line 47, in wrapper + return function(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 800, in connect + raise ProxyConnectionError(msg, error) +socks.ProxyConnectionError: Error connecting to SOCKS5 proxy 127.0.0.1:10808: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen + response = self._make_request( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 488, in _make_request + raise new_e + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 464, in _make_request + self._validate_conn(conn) + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 1093, in _validate_conn + conn.connect() + File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 759, in connect + self.sock = sock = self._new_conn() + ^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 141, in _new_conn + raise NewConnectionError( +urllib3.exceptions.NewConnectionError: SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 644, in send + resp = conn.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 841, in urlopen + retries = retries.increment( + ^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/util/retry.py", line 535, in increment + raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +urllib3.exceptions.MaxRetryError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=0.300475&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/app/app/data_sources/cn_stock.py", line 294, in _fetch_eastmoney_ashare + response = session.get(url, params=params, headers=headers, timeout=15) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 602, in get + return self.request("GET", url, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request + resp = self.send(prep, **send_kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send + r = adapter.send(request, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 677, in send + raise ConnectionError(e, request=request) +requests.exceptions.ConnectionError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=0.300475&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +2026-01-13 17:35:05,857 - urllib3.connectionpool - WARNING - Retrying (Retry(total=2, connect=2, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=116.00700&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:35:05,858 - yfinance - ERROR - Failed to get ticker '300475.SZ' reason: Failed to perform, curl: (7) Failed to connect to 127.0.0.1 port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 17:35:05,858 - yfinance - ERROR - $300475.SZ: possibly delisted; no timezone found +2026-01-13 17:35:05,860 - yfinance - ERROR - Failed to get ticker '000858.SZ' reason: Failed to perform, curl: (7) Failed to connect to 127.0.0.1 port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 17:35:05,860 - app.data_sources.us_stock - ERROR - Finnhub fetch failed: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//stock/candle?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=300475.SZ&resolution=D&from=1768037705&to=1768296905 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:35:05,860 - yfinance - ERROR - $000858.SZ: possibly delisted; no timezone found +2026-01-13 17:35:05,861 - app.data_sources.base - WARNING - USStock/yfinance: no data for 300475.SZ +2026-01-13 17:35:05,861 - app.data_sources.us_stock - ERROR - Finnhub fetch failed: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//stock/candle?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=000858.SZ&resolution=D&from=1768037705&to=1768296905 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:35:05,862 - app.data_sources.base - WARNING - USStock/yfinance: no data for 000858.SZ +2026-01-13 17:35:05,863 - app.data_sources.cn_stock - ERROR - Akshare A-share fetch failed: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61%2Cf116&ut=7eea3edcaed734bea9cbfc24409ed989&klt=101&fqt=1&secid=0.300475&beg=20260109&end=20260113 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:35:05,863 - app.data_sources.cn_stock - ERROR - Akshare A-share fetch failed: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61%2Cf116&ut=7eea3edcaed734bea9cbfc24409ed989&klt=101&fqt=1&secid=0.000858&beg=20260109&end=20260113 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:35:05,864 - app.data_sources.cn_stock - ERROR - Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/socks.py", line 787, in connect + super(socksocket, self).connect(proxy_addr) +ConnectionRefusedError: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 110, in _new_conn + conn = socks.create_connection( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 209, in create_connection + raise err + File "/usr/local/lib/python3.12/site-packages/socks.py", line 199, in create_connection + sock.connect((remote_host, remote_port)) + File "/usr/local/lib/python3.12/site-packages/socks.py", line 47, in wrapper + return function(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 800, in connect + raise ProxyConnectionError(msg, error) +socks.ProxyConnectionError: Error connecting to SOCKS5 proxy 127.0.0.1:10808: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen + response = self._make_request( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 488, in _make_request + raise new_e + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 464, in _make_request + self._validate_conn(conn) + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 1093, in _validate_conn + conn.connect() + File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 759, in connect + self.sock = sock = self._new_conn() + ^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 141, in _new_conn + raise NewConnectionError( +urllib3.exceptions.NewConnectionError: SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 644, in send + resp = conn.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 841, in urlopen + retries = retries.increment( + ^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/util/retry.py", line 535, in increment + raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +urllib3.exceptions.MaxRetryError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61%2Cf116&ut=7eea3edcaed734bea9cbfc24409ed989&klt=101&fqt=1&secid=0.300475&beg=20260109&end=20260113 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/app/app/data_sources/cn_stock.py", line 361, in _fetch_akshare + df = ak.stock_zh_a_hist( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/akshare/stock_feature/stock_hist_em.py", line 990, in stock_zh_a_hist + r = requests.get(url, params=params, timeout=timeout) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/api.py", line 73, in get + return request("get", url, params=params, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/api.py", line 59, in request + return session.request(method=method, url=url, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request + resp = self.send(prep, **send_kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send + r = adapter.send(request, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 677, in send + raise ConnectionError(e, request=request) +requests.exceptions.ConnectionError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61%2Cf116&ut=7eea3edcaed734bea9cbfc24409ed989&klt=101&fqt=1&secid=0.300475&beg=20260109&end=20260113 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +2026-01-13 17:35:05,865 - app.data_sources.cn_stock - ERROR - Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/socks.py", line 787, in connect + super(socksocket, self).connect(proxy_addr) +ConnectionRefusedError: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 110, in _new_conn + conn = socks.create_connection( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 209, in create_connection + raise err + File "/usr/local/lib/python3.12/site-packages/socks.py", line 199, in create_connection + sock.connect((remote_host, remote_port)) + File "/usr/local/lib/python3.12/site-packages/socks.py", line 47, in wrapper + return function(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 800, in connect + raise ProxyConnectionError(msg, error) +socks.ProxyConnectionError: Error connecting to SOCKS5 proxy 127.0.0.1:10808: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen + response = self._make_request( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 488, in _make_request + raise new_e + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 464, in _make_request + self._validate_conn(conn) + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 1093, in _validate_conn + conn.connect() + File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 759, in connect + self.sock = sock = self._new_conn() + ^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 141, in _new_conn + raise NewConnectionError( +urllib3.exceptions.NewConnectionError: SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 644, in send + resp = conn.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 841, in urlopen + retries = retries.increment( + ^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/util/retry.py", line 535, in increment + raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +urllib3.exceptions.MaxRetryError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61%2Cf116&ut=7eea3edcaed734bea9cbfc24409ed989&klt=101&fqt=1&secid=0.000858&beg=20260109&end=20260113 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/app/app/data_sources/cn_stock.py", line 361, in _fetch_akshare + df = ak.stock_zh_a_hist( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/akshare/stock_feature/stock_hist_em.py", line 990, in stock_zh_a_hist + r = requests.get(url, params=params, timeout=timeout) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/api.py", line 73, in get + return request("get", url, params=params, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/api.py", line 59, in request + return session.request(method=method, url=url, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request + resp = self.send(prep, **send_kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send + r = adapter.send(request, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 677, in send + raise ConnectionError(e, request=request) +requests.exceptions.ConnectionError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61%2Cf116&ut=7eea3edcaed734bea9cbfc24409ed989&klt=101&fqt=1&secid=0.000858&beg=20260109&end=20260113 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +2026-01-13 17:35:05,865 - app.data_sources.cn_stock - WARNING - AShare 300475 data fetch failed +2026-01-13 17:35:05,866 - app.data_sources.cn_stock - WARNING - AShare 000858 data fetch failed +2026-01-13 17:35:06,636 - urllib3.connectionpool - WARNING - Retrying (Retry(total=1, connect=1, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=116.00700&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:35:06,858 - urllib3.connectionpool - WARNING - Retrying (Retry(total=1, connect=1, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=116.00700&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:35:08,638 - urllib3.connectionpool - WARNING - Retrying (Retry(total=0, connect=0, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=116.00700&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:35:08,639 - app.data_sources.cn_stock - ERROR - Eastmoney HK stock fetch failed: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=116.00700&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:35:08,640 - app.data_sources.cn_stock - ERROR - Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/socks.py", line 787, in connect + super(socksocket, self).connect(proxy_addr) +ConnectionRefusedError: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 110, in _new_conn + conn = socks.create_connection( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 209, in create_connection + raise err + File "/usr/local/lib/python3.12/site-packages/socks.py", line 199, in create_connection + sock.connect((remote_host, remote_port)) + File "/usr/local/lib/python3.12/site-packages/socks.py", line 47, in wrapper + return function(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 800, in connect + raise ProxyConnectionError(msg, error) +socks.ProxyConnectionError: Error connecting to SOCKS5 proxy 127.0.0.1:10808: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen + response = self._make_request( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 488, in _make_request + raise new_e + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 464, in _make_request + self._validate_conn(conn) + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 1093, in _validate_conn + conn.connect() + File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 759, in connect + self.sock = sock = self._new_conn() + ^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 141, in _new_conn + raise NewConnectionError( +urllib3.exceptions.NewConnectionError: SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 644, in send + resp = conn.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 841, in urlopen + retries = retries.increment( + ^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/util/retry.py", line 535, in increment + raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +urllib3.exceptions.MaxRetryError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=116.00700&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/app/app/data_sources/cn_stock.py", line 605, in _fetch_eastmoney_kline + response = session.get(url, params=params, headers=headers, timeout=15) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 602, in get + return self.request("GET", url, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request + resp = self.send(prep, **send_kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send + r = adapter.send(request, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 677, in send + raise ConnectionError(e, request=request) +requests.exceptions.ConnectionError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=116.00700&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +2026-01-13 17:35:08,641 - yfinance - ERROR - Failed to get ticker '00700.HK' reason: Failed to perform, curl: (7) Failed to connect to 127.0.0.1 port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 17:35:08,642 - yfinance - ERROR - $00700.HK: possibly delisted; no timezone found +2026-01-13 17:35:08,643 - app.data_sources.us_stock - ERROR - Finnhub fetch failed: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//stock/candle?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=00700.HK&resolution=D&from=1768037708&to=1768296908 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:35:08,643 - app.data_sources.base - WARNING - USStock/yfinance: no data for 00700.HK +2026-01-13 17:35:08,644 - app.data_sources.cn_stock - ERROR - Akshare HK stock fetch failed: SOCKSHTTPSConnectionPool(host='33.push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=116.00700&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61&klt=101&fqt=1&end=20500000&lmt=1000000 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='33.push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:35:08,646 - app.data_sources.cn_stock - ERROR - Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/socks.py", line 787, in connect + super(socksocket, self).connect(proxy_addr) +ConnectionRefusedError: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 110, in _new_conn + conn = socks.create_connection( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 209, in create_connection + raise err + File "/usr/local/lib/python3.12/site-packages/socks.py", line 199, in create_connection + sock.connect((remote_host, remote_port)) + File "/usr/local/lib/python3.12/site-packages/socks.py", line 47, in wrapper + return function(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 800, in connect + raise ProxyConnectionError(msg, error) +socks.ProxyConnectionError: Error connecting to SOCKS5 proxy 127.0.0.1:10808: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen + response = self._make_request( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 488, in _make_request + raise new_e + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 464, in _make_request + self._validate_conn(conn) + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 1093, in _validate_conn + conn.connect() + File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 759, in connect + self.sock = sock = self._new_conn() + ^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 141, in _new_conn + raise NewConnectionError( +urllib3.exceptions.NewConnectionError: SOCKSHTTPSConnection(host='33.push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 644, in send + resp = conn.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 841, in urlopen + retries = retries.increment( + ^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/util/retry.py", line 535, in increment + raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +urllib3.exceptions.MaxRetryError: SOCKSHTTPSConnectionPool(host='33.push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=116.00700&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61&klt=101&fqt=1&end=20500000&lmt=1000000 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='33.push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/app/app/data_sources/cn_stock.py", line 676, in _fetch_akshare + df = ak.stock_hk_hist( + ^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/akshare/stock_feature/stock_hist_em.py", line 1428, in stock_hk_hist + r = requests.get(url, timeout=15, params=params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/api.py", line 73, in get + return request("get", url, params=params, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/api.py", line 59, in request + return session.request(method=method, url=url, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request + resp = self.send(prep, **send_kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send + r = adapter.send(request, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 677, in send + raise ConnectionError(e, request=request) +requests.exceptions.ConnectionError: SOCKSHTTPSConnectionPool(host='33.push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=116.00700&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61&klt=101&fqt=1&end=20500000&lmt=1000000 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='33.push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +2026-01-13 17:35:08,646 - app.data_sources.cn_stock - WARNING - HK stock 00700: data fetch failed (timeframe: 1D) +2026-01-13 17:35:08,647 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:08] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-13 17:35:08,859 - urllib3.connectionpool - WARNING - Retrying (Retry(total=0, connect=0, read=3, redirect=None, status=None)) after connection broken by 'NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")': /api/qt/stock/kline/get?secid=116.00700&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 +2026-01-13 17:35:08,860 - app.data_sources.cn_stock - ERROR - Eastmoney HK stock fetch failed: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=116.00700&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:35:08,862 - app.data_sources.cn_stock - ERROR - Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/socks.py", line 787, in connect + super(socksocket, self).connect(proxy_addr) +ConnectionRefusedError: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 110, in _new_conn + conn = socks.create_connection( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 209, in create_connection + raise err + File "/usr/local/lib/python3.12/site-packages/socks.py", line 199, in create_connection + sock.connect((remote_host, remote_port)) + File "/usr/local/lib/python3.12/site-packages/socks.py", line 47, in wrapper + return function(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 800, in connect + raise ProxyConnectionError(msg, error) +socks.ProxyConnectionError: Error connecting to SOCKS5 proxy 127.0.0.1:10808: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen + response = self._make_request( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 488, in _make_request + raise new_e + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 464, in _make_request + self._validate_conn(conn) + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 1093, in _validate_conn + conn.connect() + File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 759, in connect + self.sock = sock = self._new_conn() + ^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 141, in _new_conn + raise NewConnectionError( +urllib3.exceptions.NewConnectionError: SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 644, in send + resp = conn.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 871, in urlopen + return self.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 841, in urlopen + retries = retries.increment( + ^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/util/retry.py", line 535, in increment + raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +urllib3.exceptions.MaxRetryError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=116.00700&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/app/app/data_sources/cn_stock.py", line 605, in _fetch_eastmoney_kline + response = session.get(url, params=params, headers=headers, timeout=15) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 602, in get + return self.request("GET", url, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request + resp = self.send(prep, **send_kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send + r = adapter.send(request, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 677, in send + raise ConnectionError(e, request=request) +requests.exceptions.ConnectionError: SOCKSHTTPSConnectionPool(host='push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=116.00700&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57&klt=101&fqt=1&end=20500101&lmt=2 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +2026-01-13 17:35:08,864 - yfinance - ERROR - Failed to get ticker '00700.HK' reason: Failed to perform, curl: (7) Failed to connect to 127.0.0.1 port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 17:35:08,864 - yfinance - ERROR - $00700.HK: possibly delisted; no timezone found +2026-01-13 17:35:08,866 - app.data_sources.us_stock - ERROR - Finnhub fetch failed: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//stock/candle?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=00700.HK&resolution=D&from=1768037708&to=1768296908 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:35:08,866 - app.data_sources.base - WARNING - USStock/yfinance: no data for 00700.HK +2026-01-13 17:35:08,867 - app.data_sources.cn_stock - ERROR - Akshare HK stock fetch failed: SOCKSHTTPSConnectionPool(host='33.push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=116.00700&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61&klt=101&fqt=1&end=20500000&lmt=1000000 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='33.push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) +2026-01-13 17:35:08,868 - app.data_sources.cn_stock - ERROR - Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/socks.py", line 787, in connect + super(socksocket, self).connect(proxy_addr) +ConnectionRefusedError: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 110, in _new_conn + conn = socks.create_connection( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 209, in create_connection + raise err + File "/usr/local/lib/python3.12/site-packages/socks.py", line 199, in create_connection + sock.connect((remote_host, remote_port)) + File "/usr/local/lib/python3.12/site-packages/socks.py", line 47, in wrapper + return function(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/socks.py", line 800, in connect + raise ProxyConnectionError(msg, error) +socks.ProxyConnectionError: Error connecting to SOCKS5 proxy 127.0.0.1:10808: [Errno 111] Connection refused + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen + response = self._make_request( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 488, in _make_request + raise new_e + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 464, in _make_request + self._validate_conn(conn) + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 1093, in _validate_conn + conn.connect() + File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 759, in connect + self.sock = sock = self._new_conn() + ^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/contrib/socks.py", line 141, in _new_conn + raise NewConnectionError( +urllib3.exceptions.NewConnectionError: SOCKSHTTPSConnection(host='33.push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 644, in send + resp = conn.urlopen( + ^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 841, in urlopen + retries = retries.increment( + ^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/urllib3/util/retry.py", line 535, in increment + raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +urllib3.exceptions.MaxRetryError: SOCKSHTTPSConnectionPool(host='33.push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=116.00700&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61&klt=101&fqt=1&end=20500000&lmt=1000000 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='33.push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/app/app/data_sources/cn_stock.py", line 676, in _fetch_akshare + df = ak.stock_hk_hist( + ^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/akshare/stock_feature/stock_hist_em.py", line 1428, in stock_hk_hist + r = requests.get(url, timeout=15, params=params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/api.py", line 73, in get + return request("get", url, params=params, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/api.py", line 59, in request + return session.request(method=method, url=url, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request + resp = self.send(prep, **send_kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send + r = adapter.send(request, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 677, in send + raise ConnectionError(e, request=request) +requests.exceptions.ConnectionError: SOCKSHTTPSConnectionPool(host='33.push2his.eastmoney.com', port=443): Max retries exceeded with url: /api/qt/stock/kline/get?secid=116.00700&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61&klt=101&fqt=1&end=20500000&lmt=1000000 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='33.push2his.eastmoney.com', port=443): Failed to establish a new connection: [Errno 111] Connection refused")) + +2026-01-13 17:35:08,869 - app.data_sources.cn_stock - WARNING - HK stock 00700: data fetch failed (timeframe: 1D) +2026-01-13 17:35:08,869 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:08] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-13 17:35:12,905 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-13 17:35:12,906 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-13 17:35:12,906 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-13 17:35:12,906 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-13 17:35:12,963 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-13 17:35:12,968 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-13 17:35:13,098 - app.services.strategy - INFO - Found 1 running strategies: [{'id': 14, 'strategy_type': 'IndicatorStrategy'}] +2026-01-13 17:35:13,099 - app - INFO - Restoring 1 running strategies... +2026-01-13 17:35:13,100 - app.services.trading_executor - INFO - Strategy 14 loop starting +2026-01-13 17:35:13,100 - app.services.trading_executor - INFO - Strategy 14 started +2026-01-13 17:35:13,101 - app - INFO - [OK] IndicatorStrategy 14 restored +2026-01-13 17:35:13,101 - app - INFO - Strategy restore completed: 1/1 restored +2026-01-13 17:35:13,108 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://172.18.0.2:5000 +2026-01-13 17:35:13,108 - werkzeug - INFO - Press CTRL+C to quit +2026-01-13 17:35:13,109 - app.services.trading_executor - INFO - Strategy 14 derivatives trading; normalize market_type to: swap +2026-01-13 17:35:14,613 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:14] "GET /api/user/info?_t=1768296914557 HTTP/1.1" 200 - +2026-01-13 17:35:14,636 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:14] "GET /api/market/types?_t=1768296914557 HTTP/1.1" 200 - +2026-01-13 17:35:14,670 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:14] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 17:35:14,672 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:14] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 17:35:14,674 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:14] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 17:35:14,675 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:14] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 17:35:14,684 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=500 +2026-01-13 17:35:14,737 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 17:35:14,799 - app.services.trading_executor - INFO - ็ญ–็•ฅ 14 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-13 17:35:14,814 - app.services.trading_executor - INFO - Strategy 14 initialized; pending_signals=0 +2026-01-13 17:35:16,309 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:16] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-13 17:35:18,793 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:18] "GET /api/market/types?_t=1768296918786 HTTP/1.1" 200 - +2026-01-13 17:35:18,813 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:18] "GET /api/portfolio/alerts?_t=1768296918786 HTTP/1.1" 200 - +2026-01-13 17:35:18,823 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:18] "GET /api/portfolio/groups?_t=1768296918786 HTTP/1.1" 200 - +2026-01-13 17:35:18,825 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:18] "GET /api/portfolio/monitors?_t=1768296918786 HTTP/1.1" 200 - +2026-01-13 17:35:21,146 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:21] "GET /api/strategies/notifications?limit=50&_t=1768296921136 HTTP/1.1" 200 - +2026-01-13 17:35:22,362 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:22] "GET /api/portfolio/summary?_t=1768296918786 HTTP/1.1" 200 - +2026-01-13 17:35:24,163 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:24] "GET /api/portfolio/positions?_t=1768296918786 HTTP/1.1" 200 - +2026-01-13 17:35:42,400 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:35:42] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:35:44,321 - app.services.portfolio_monitor - INFO - Running multi-agent analysis for USStock:GD +2026-01-13 17:35:44,388 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-13 17:35:44,388 - app.services.analysis - INFO - Starting analysis USStock:GD, language=zh-CN, mode=multi-agent +2026-01-13 17:35:44,389 - app.services.analysis - INFO - Run coordinator: USStock:GD +2026-01-13 17:35:44,389 - app.services.agents.coordinator - INFO - Multi-agent analysis start: USStock:GD, model=None, language=zh-CN +2026-01-13 17:35:49,472 - app.services.agents.tools - INFO - Running news search: "General Dynamics Corp" GD stock news +2026-01-13 17:35:50,065 - app.services.agents.tools - INFO - Deep reading: GD: General Dynamics Corp - Stock Price, Quote and News - CNBC +2026-01-13 17:35:50,654 - app.services.agents.tools - INFO - Deep reading: GD Stock Price | General Dynamics Corp. Stock Quote (U.S.: NYSE ... +2026-01-13 17:35:51,157 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:51] "GET /api/strategies/notifications?limit=50&_t=1768296951146 HTTP/1.1" 200 - +2026-01-13 17:35:51,477 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:51] "GET /api/portfolio/positions?refresh=1&_t=1768296948787 HTTP/1.1" 200 - +2026-01-13 17:35:53,134 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768296953102 HTTP/1.1" 200 - +2026-01-13 17:35:53,136 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:53] "GET /api/dashboard/summary?_t=1768296953102 HTTP/1.1" 200 - +2026-01-13 17:35:53,145 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768296953102 HTTP/1.1" 200 - +2026-01-13 17:35:53,626 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-13 17:35:54,208 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:54] "GET /api/portfolio/summary?refresh=1&_t=1768296948787 HTTP/1.1" 200 - +2026-01-13 17:35:56,998 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:56] "GET /api/user/info?_t=1768296956979 HTTP/1.1" 200 - +2026-01-13 17:35:57,000 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:57] "GET /api/market/config?_t=1768296956979 HTTP/1.1" 200 - +2026-01-13 17:35:57,022 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:57] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 17:35:57,046 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:57] "GET /api/market/types?_t=1768296957041 HTTP/1.1" 200 - +2026-01-13 17:35:57,058 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:57] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 17:35:57,128 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 17:35:57,135 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 17:35:57,141 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 17:35:58,500 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:58] "POST /api/analysis/getHistoryList HTTP/1.1" 200 - +2026-01-13 17:35:58,640 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:58] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-13 17:35:59,705 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:35:59] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-13 17:36:00,029 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:36:00] "POST /api/analysis/getTaskStatus HTTP/1.1" 200 - +2026-01-13 17:36:03,212 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:36:03] "GET /api/user/info?_t=1768296963204 HTTP/1.1" 200 - +2026-01-13 17:36:03,213 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:36:03] "GET /api/market/types?_t=1768296963204 HTTP/1.1" 200 - +2026-01-13 17:36:03,226 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:36:03] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 17:36:03,228 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:36:03] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 17:36:03,230 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:36:03] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 17:36:03,233 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:36:03] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 17:36:03,244 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=500 +2026-01-13 17:36:03,247 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:36:03] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-13 17:36:04,034 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:36:04] "GET /api/strategies?_t=1768296964008 HTTP/1.1" 200 - +2026-01-13 17:36:04,281 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-13 17:36:04,839 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:36:04] "GET /api/market/types?_t=1768296964829 HTTP/1.1" 200 - +2026-01-13 17:36:04,856 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:36:04] "GET /api/portfolio/groups?_t=1768296964829 HTTP/1.1" 200 - +2026-01-13 17:36:04,859 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:36:04] "GET /api/portfolio/monitors?_t=1768296964829 HTTP/1.1" 200 - +2026-01-13 17:36:04,860 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:36:04] "GET /api/portfolio/alerts?_t=1768296964829 HTTP/1.1" 200 - +2026-01-13 17:36:06,914 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:36:06] "GET /api/settings/schema?_t=1768296966904 HTTP/1.1" 200 - +2026-01-13 17:36:06,927 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:36:06] "GET /api/settings/values?_t=1768296966904 HTTP/1.1" 200 - +2026-01-13 17:36:07,256 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:36:07] "GET /api/portfolio/positions?_t=1768296964829 HTTP/1.1" 200 - +2026-01-13 17:36:09,609 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:36:09] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768296969578 HTTP/1.1" 200 - +2026-01-13 17:36:09,611 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:36:09] "GET /api/dashboard/summary?_t=1768296969578 HTTP/1.1" 200 - +2026-01-13 17:36:09,616 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:36:09] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768296969578 HTTP/1.1" 200 - +2026-01-13 17:36:09,956 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:36:09] "GET /api/portfolio/summary?_t=1768296964829 HTTP/1.1" 200 - +2026-01-13 17:36:12,458 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:36:12] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:36:14,618 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:36:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768296974573 HTTP/1.1" 200 - +2026-01-13 17:36:16,580 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-13 17:36:19,585 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:36:19] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768296979569 HTTP/1.1" 200 - +2026-01-13 17:36:21,156 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:36:21] "GET /api/strategies/notifications?limit=50&_t=1768296981145 HTTP/1.1" 200 - +2026-01-13 17:36:22,378 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-13 17:36:24,586 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:36:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768296984567 HTTP/1.1" 200 - +2026-01-13 17:36:27,973 - app.services.agents.reflection - INFO - Recorded analysis for reflection: USStock:GD, will verify after 7 day(s) +2026-01-13 17:36:27,973 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: USStock:GD +2026-01-13 17:36:27,973 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-13 17:36:27,974 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-13 17:36:27,975 - app.services.portfolio_monitor - INFO - Analysis completed for USStock:GD: BUY +2026-01-13 17:36:27,975 - app.services.portfolio_monitor - INFO - Running multi-agent analysis for USStock:OMDA +2026-01-13 17:36:28,052 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-13 17:36:28,052 - app.services.analysis - INFO - Starting analysis USStock:OMDA, language=zh-CN, mode=multi-agent +2026-01-13 17:36:28,053 - app.services.analysis - INFO - Run coordinator: USStock:OMDA +2026-01-13 17:36:28,053 - app.services.agents.coordinator - INFO - Multi-agent analysis start: USStock:OMDA, model=None, language=zh-CN +2026-01-13 17:36:29,584 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:36:29] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768296989569 HTTP/1.1" 200 - +2026-01-13 17:36:30,397 - app.services.agents.tools - INFO - Running news search: "Omada Health Inc" OMDA stock news +2026-01-13 17:36:31,005 - app.services.agents.tools - INFO - Deep reading: Omada Health, Inc. Common Stock (OMDA) Stock Price, Quote ... +2026-01-13 17:36:34,681 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:36:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768296994579 HTTP/1.1" 200 - +2026-01-13 17:36:39,585 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:36:39] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768296999570 HTTP/1.1" 200 - +2026-01-13 17:36:39,710 - app.services.agents.tools - INFO - Deep reading: Stock Quote & Chart | Omada Health, Inc. +2026-01-13 17:36:41,358 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-13 17:36:42,517 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:36:42] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:36:44,586 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:36:44] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297004571 HTTP/1.1" 200 - +2026-01-13 17:36:48,356 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-13 17:36:49,599 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:36:49] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297009578 HTTP/1.1" 200 - +2026-01-13 17:36:51,171 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:36:51] "GET /api/strategies/notifications?limit=50&_t=1768297011144 HTTP/1.1" 200 - +2026-01-13 17:36:54,590 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:36:54] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297014573 HTTP/1.1" 200 - +2026-01-13 17:36:54,680 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-13 17:36:59,391 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-13 17:36:59,595 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:36:59] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297019572 HTTP/1.1" 200 - +2026-01-13 17:37:02,190 - app.services.agents.reflection - INFO - Recorded analysis for reflection: USStock:OMDA, will verify after 7 day(s) +2026-01-13 17:37:02,190 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: USStock:OMDA +2026-01-13 17:37:02,191 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-13 17:37:02,191 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-13 17:37:02,192 - app.services.portfolio_monitor - INFO - Analysis completed for USStock:OMDA: HOLD +2026-01-13 17:37:02,192 - app.services.portfolio_monitor - INFO - Running multi-agent analysis for USStock:SPCE +2026-01-13 17:37:02,241 - app.services.analysis - INFO - Multi-agent coordinator initialized +2026-01-13 17:37:02,241 - app.services.analysis - INFO - Starting analysis USStock:SPCE, language=zh-CN, mode=multi-agent +2026-01-13 17:37:02,241 - app.services.analysis - INFO - Run coordinator: USStock:SPCE +2026-01-13 17:37:02,241 - app.services.agents.coordinator - INFO - Multi-agent analysis start: USStock:SPCE, model=None, language=zh-CN +2026-01-13 17:37:04,589 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:37:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297024572 HTTP/1.1" 200 - +2026-01-13 17:37:05,590 - app.services.agents.tools - INFO - Running news search: "Virgin Galactic Holdings Inc" SPCE stock news +2026-01-13 17:37:06,024 - app.services.agents.tools - INFO - Deep reading: Virgin Galactic Holdings, Inc. (SPCE) Analyst Ratings, Estimates ... +2026-01-13 17:37:06,494 - app.services.agents.tools - INFO - Deep reading: Virgin Galactic (SPCE) Stock Price, News & Analysis +2026-01-13 17:37:09,596 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:37:09] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297029580 HTTP/1.1" 200 - +2026-01-13 17:37:09,827 - app.services.agents.coordinator - INFO - Phase 1: Analyst team (parallel) +2026-01-13 17:37:12,571 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:37:12] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:37:14,584 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:37:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297034567 HTTP/1.1" 200 - +2026-01-13 17:37:19,589 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:37:19] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297039574 HTTP/1.1" 200 - +2026-01-13 17:37:20,200 - app.services.agents.coordinator - INFO - Phase 2: Research debate (parallel) +2026-01-13 17:37:21,148 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:37:21] "GET /api/strategies/notifications?limit=50&_t=1768297041139 HTTP/1.1" 200 - +2026-01-13 17:37:24,599 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:37:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297044580 HTTP/1.1" 200 - +2026-01-13 17:37:29,587 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:37:29] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297049571 HTTP/1.1" 200 - +2026-01-13 17:37:30,560 - app.services.agents.coordinator - INFO - Phase 3: Trader decision +2026-01-13 17:37:34,588 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:37:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297054572 HTTP/1.1" 200 - +2026-01-13 17:37:36,815 - app.services.agents.coordinator - INFO - Phase 4: Risk debate (parallel) +2026-01-13 17:37:39,582 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:37:39] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297059567 HTTP/1.1" 200 - +2026-01-13 17:37:40,395 - app.services.agents.reflection - INFO - Recorded analysis for reflection: USStock:SPCE, will verify after 7 day(s) +2026-01-13 17:37:40,395 - app.services.agents.coordinator - INFO - Multi-agent analysis completed: USStock:SPCE +2026-01-13 17:37:40,395 - app.services.agents.coordinator - INFO - Result fields - debate=True, trader_decision=True, risk_debate=True, final_decision=True +2026-01-13 17:37:40,396 - app.services.analysis - INFO - Coordinator result keys: ['overview', 'fundamental', 'technical', 'news', 'sentiment', 'risk', 'debate', 'trader_decision', 'risk_debate', 'final_decision', 'error'] +2026-01-13 17:37:40,397 - app.services.portfolio_monitor - INFO - Analysis completed for USStock:SPCE: HOLD +2026-01-13 17:37:42,634 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:37:42] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:37:44,390 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:37:44] "POST /api/portfolio/monitors/1/run HTTP/1.1" 200 - +2026-01-13 17:37:44,592 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:37:44] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297064576 HTTP/1.1" 200 - +2026-01-13 17:37:49,602 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:37:49] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297069581 HTTP/1.1" 200 - +2026-01-13 17:37:51,160 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:37:51] "GET /api/strategies/notifications?limit=50&_t=1768297071148 HTTP/1.1" 200 - +2026-01-13 17:37:54,597 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:37:54] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297074579 HTTP/1.1" 200 - +2026-01-13 17:37:59,591 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:37:59] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297079577 HTTP/1.1" 200 - +2026-01-13 17:38:04,588 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:38:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297084572 HTTP/1.1" 200 - +2026-01-13 17:38:09,598 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:38:09] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297089579 HTTP/1.1" 200 - +2026-01-13 17:38:12,693 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:38:12] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:38:14,593 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:38:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297094576 HTTP/1.1" 200 - +2026-01-13 17:38:19,585 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:38:19] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297099565 HTTP/1.1" 200 - +2026-01-13 17:38:21,157 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:38:21] "GET /api/strategies/notifications?limit=50&_t=1768297101147 HTTP/1.1" 200 - +2026-01-13 17:38:24,592 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:38:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297104568 HTTP/1.1" 200 - +2026-01-13 17:38:27,561 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:38:27] "GET /api/strategies/notifications?limit=50&_t=1768297107531 HTTP/1.1" 200 - +2026-01-13 17:38:29,591 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:38:29] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297109567 HTTP/1.1" 200 - +2026-01-13 17:38:30,031 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:38:30] "GET /api/strategies/notifications?limit=50&_t=1768297110008 HTTP/1.1" 200 - +2026-01-13 17:38:31,234 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:38:31] "POST /api/strategies/notifications/read-all HTTP/1.1" 200 - +2026-01-13 17:38:32,710 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:38:32] "GET /api/user/info?_t=1768297112683 HTTP/1.1" 200 - +2026-01-13 17:38:32,713 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:38:32] "GET /api/market/config?_t=1768297112683 HTTP/1.1" 200 - +2026-01-13 17:38:32,726 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:38:32] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 17:38:32,752 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:38:32] "GET /api/market/types?_t=1768297112747 HTTP/1.1" 200 - +2026-01-13 17:38:32,755 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:38:32] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 17:38:32,825 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:38:32] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-13 17:38:32,838 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:38:32] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-13 17:38:33,794 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:38:33] "GET /api/market/types?_t=1768297113788 HTTP/1.1" 200 - +2026-01-13 17:38:33,796 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:38:33] "GET /api/user/info?_t=1768297113788 HTTP/1.1" 200 - +2026-01-13 17:38:33,809 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:38:33] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 17:38:33,810 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:38:33] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 17:38:33,812 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:38:33] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 17:38:33,817 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:38:33] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 17:38:33,830 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=500 +2026-01-13 17:38:33,833 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:38:33] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-13 17:38:34,627 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:38:34] "GET /api/strategies?_t=1768297114610 HTTP/1.1" 200 - +2026-01-13 17:38:35,542 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:38:35] "GET /api/market/types?_t=1768297115533 HTTP/1.1" 200 - +2026-01-13 17:38:35,555 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:38:35] "GET /api/portfolio/alerts?_t=1768297115533 HTTP/1.1" 200 - +2026-01-13 17:38:35,557 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:38:35] "GET /api/portfolio/groups?_t=1768297115533 HTTP/1.1" 200 - +2026-01-13 17:38:35,562 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:38:35] "GET /api/portfolio/monitors?_t=1768297115533 HTTP/1.1" 200 - +2026-01-13 17:38:38,543 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:38:38] "GET /api/portfolio/positions?_t=1768297115533 HTTP/1.1" 200 - +2026-01-13 17:38:40,933 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:38:40] "GET /api/portfolio/summary?_t=1768297115533 HTTP/1.1" 200 - +2026-01-13 17:38:42,740 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:38:42] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:38:44,151 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:38:44] "GET /api/settings/schema?_t=1768297124145 HTTP/1.1" 200 - +2026-01-13 17:38:44,157 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:38:44] "GET /api/settings/values?_t=1768297124145 HTTP/1.1" 200 - +2026-01-13 17:38:48,845 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:38:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768297128814 HTTP/1.1" 200 - +2026-01-13 17:38:48,847 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:38:48] "GET /api/dashboard/summary?_t=1768297128814 HTTP/1.1" 200 - +2026-01-13 17:38:48,851 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:38:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768297128814 HTTP/1.1" 200 - +2026-01-13 17:38:51,151 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:38:51] "GET /api/strategies/notifications?limit=50&_t=1768297131140 HTTP/1.1" 200 - +2026-01-13 17:38:53,829 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:38:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297133802 HTTP/1.1" 200 - +2026-01-13 17:38:58,824 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:38:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297138805 HTTP/1.1" 200 - +2026-01-13 17:39:03,814 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:39:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297143796 HTTP/1.1" 200 - +2026-01-13 17:39:08,824 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:39:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297148803 HTTP/1.1" 200 - +2026-01-13 17:39:12,807 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:39:12] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:39:13,836 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:39:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297153808 HTTP/1.1" 200 - +2026-01-13 17:39:18,840 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:39:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297158811 HTTP/1.1" 200 - +2026-01-13 17:39:21,161 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:39:21] "GET /api/strategies/notifications?limit=50&_t=1768297161143 HTTP/1.1" 200 - +2026-01-13 17:39:23,815 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:39:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297163799 HTTP/1.1" 200 - +2026-01-13 17:39:28,813 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:39:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297168797 HTTP/1.1" 200 - +2026-01-13 17:39:33,817 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:39:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297173800 HTTP/1.1" 200 - +2026-01-13 17:39:38,827 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:39:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297178808 HTTP/1.1" 200 - +2026-01-13 17:39:42,853 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:39:42] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:39:43,830 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:39:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297183812 HTTP/1.1" 200 - +2026-01-13 17:39:48,820 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:39:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297188805 HTTP/1.1" 200 - +2026-01-13 17:39:51,149 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:39:51] "GET /api/strategies/notifications?limit=50&_t=1768297191137 HTTP/1.1" 200 - +2026-01-13 17:39:53,817 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:39:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297193803 HTTP/1.1" 200 - +2026-01-13 17:39:58,824 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:39:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297198802 HTTP/1.1" 200 - +2026-01-13 17:40:03,812 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:40:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297203796 HTTP/1.1" 200 - +2026-01-13 17:40:08,830 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:40:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297208812 HTTP/1.1" 200 - +2026-01-13 17:40:12,904 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:40:12] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:40:13,816 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:40:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297213799 HTTP/1.1" 200 - +2026-01-13 17:40:18,813 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:40:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297218797 HTTP/1.1" 200 - +2026-01-13 17:40:21,246 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:40:21] "GET /api/strategies/notifications?limit=50&_t=1768297221137 HTTP/1.1" 200 - +2026-01-13 17:40:23,813 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:40:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297223796 HTTP/1.1" 200 - +2026-01-13 17:40:28,824 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:40:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297228810 HTTP/1.1" 200 - +2026-01-13 17:40:33,831 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:40:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297233807 HTTP/1.1" 200 - +2026-01-13 17:40:38,827 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:40:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297238811 HTTP/1.1" 200 - +2026-01-13 17:40:43,173 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:40:43] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:40:43,826 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:40:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297243799 HTTP/1.1" 200 - +2026-01-13 17:40:48,828 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:40:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297248807 HTTP/1.1" 200 - +2026-01-13 17:40:51,154 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:40:51] "GET /api/strategies/notifications?limit=50&_t=1768297251140 HTTP/1.1" 200 - +2026-01-13 17:40:53,826 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:40:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297253808 HTTP/1.1" 200 - +2026-01-13 17:40:58,835 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:40:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297258811 HTTP/1.1" 200 - +2026-01-13 17:41:03,832 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:41:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297263804 HTTP/1.1" 200 - +2026-01-13 17:41:08,822 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:41:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297268805 HTTP/1.1" 200 - +2026-01-13 17:41:13,225 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:41:13] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:41:13,828 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:41:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297273812 HTTP/1.1" 200 - +2026-01-13 17:41:18,825 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:41:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297278809 HTTP/1.1" 200 - +2026-01-13 17:41:21,158 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:41:21] "GET /api/strategies/notifications?limit=50&_t=1768297281147 HTTP/1.1" 200 - +2026-01-13 17:41:24,281 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:41:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297284261 HTTP/1.1" 200 - +2026-01-13 17:41:28,827 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:41:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297288809 HTTP/1.1" 200 - +2026-01-13 17:41:34,280 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:41:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297294254 HTTP/1.1" 200 - +2026-01-13 17:41:39,279 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:41:39] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297299261 HTTP/1.1" 200 - +2026-01-13 17:41:43,285 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:41:43] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:41:44,274 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:41:44] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297304254 HTTP/1.1" 200 - +2026-01-13 17:41:49,278 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:41:49] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297309253 HTTP/1.1" 200 - +2026-01-13 17:41:51,268 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:41:51] "GET /api/strategies/notifications?limit=50&_t=1768297311256 HTTP/1.1" 200 - +2026-01-13 17:41:54,283 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:41:54] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297314259 HTTP/1.1" 200 - +2026-01-13 17:41:59,283 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:41:59] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297319266 HTTP/1.1" 200 - +2026-01-13 17:42:04,283 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:42:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297324264 HTTP/1.1" 200 - +2026-01-13 17:42:09,273 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:42:09] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297329253 HTTP/1.1" 200 - +2026-01-13 17:42:13,337 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:42:13] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:42:14,280 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:42:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297334262 HTTP/1.1" 200 - +2026-01-13 17:42:19,279 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:42:19] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297339255 HTTP/1.1" 200 - +2026-01-13 17:42:21,269 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:42:21] "GET /api/strategies/notifications?limit=50&_t=1768297341252 HTTP/1.1" 200 - +2026-01-13 17:42:24,281 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:42:24] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297344266 HTTP/1.1" 200 - +2026-01-13 17:42:29,281 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:42:29] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297349259 HTTP/1.1" 200 - +2026-01-13 17:42:43,386 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:42:43] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:42:48,290 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:42:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297368264 HTTP/1.1" 200 - +2026-01-13 17:43:13,434 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:43:13] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:43:43,489 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:43:43] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:43:48,282 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:43:48] "GET /api/strategies/notifications?limit=50&_t=1768297428261 HTTP/1.1" 200 - +2026-01-13 17:43:48,286 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:43:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297428260 HTTP/1.1" 200 - +2026-01-13 17:44:13,548 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:44:13] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:44:43,602 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:44:43] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:44:48,273 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:44:48] "GET /api/strategies/notifications?limit=50&_t=1768297488252 HTTP/1.1" 200 - +2026-01-13 17:44:48,279 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:44:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297488252 HTTP/1.1" 200 - +2026-01-13 17:45:13,661 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:45:13] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:45:43,710 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:45:43] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:45:48,276 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:45:48] "GET /api/strategies/notifications?limit=50&_t=1768297548256 HTTP/1.1" 200 - +2026-01-13 17:45:48,281 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:45:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297548255 HTTP/1.1" 200 - +2026-01-13 17:46:13,781 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:46:13] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:46:43,830 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:46:43] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:46:48,277 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:46:48] "GET /api/strategies/notifications?limit=50&_t=1768297608254 HTTP/1.1" 200 - +2026-01-13 17:46:48,282 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:46:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297608254 HTTP/1.1" 200 - +2026-01-13 17:47:13,881 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:47:13] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:47:43,934 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:47:43] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:47:48,277 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:47:48] "GET /api/strategies/notifications?limit=50&_t=1768297668259 HTTP/1.1" 200 - +2026-01-13 17:47:48,282 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:47:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297668258 HTTP/1.1" 200 - +2026-01-13 17:48:13,987 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:48:13] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:48:44,054 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:48:44] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:48:48,271 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:48:48] "GET /api/strategies/notifications?limit=50&_t=1768297728257 HTTP/1.1" 200 - +2026-01-13 17:48:48,274 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:48:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297728256 HTTP/1.1" 200 - +2026-01-13 17:49:14,108 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:49:14] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:49:44,159 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:49:44] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:49:48,283 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:49:48] "GET /api/strategies/notifications?limit=50&_t=1768297788261 HTTP/1.1" 200 - +2026-01-13 17:49:48,289 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:49:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297788260 HTTP/1.1" 200 - +2026-01-13 17:50:14,212 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:50:14] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:50:44,272 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:50:44] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:50:48,277 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:50:48] "GET /api/strategies/notifications?limit=50&_t=1768297848263 HTTP/1.1" 200 - +2026-01-13 17:50:48,281 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:50:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297848262 HTTP/1.1" 200 - +2026-01-13 17:51:14,335 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:51:14] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:51:44,380 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:51:44] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:51:48,284 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:51:48] "GET /api/strategies/notifications?limit=50&_t=1768297908265 HTTP/1.1" 200 - +2026-01-13 17:51:48,289 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:51:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297908265 HTTP/1.1" 200 - +2026-01-13 17:52:14,423 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:52:14] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:52:44,478 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:52:44] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:52:48,274 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:52:48] "GET /api/strategies/notifications?limit=50&_t=1768297968257 HTTP/1.1" 200 - +2026-01-13 17:52:48,280 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:52:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768297968255 HTTP/1.1" 200 - +2026-01-13 17:53:14,525 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:53:14] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:53:44,582 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:53:44] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:53:48,282 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:53:48] "GET /api/strategies/notifications?limit=50&_t=1768298028261 HTTP/1.1" 200 - +2026-01-13 17:53:48,288 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:53:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768298028260 HTTP/1.1" 200 - +2026-01-13 17:54:14,629 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:54:14] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:54:44,675 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:54:44] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:54:48,284 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:54:48] "GET /api/strategies/notifications?limit=50&_t=1768298088259 HTTP/1.1" 200 - +2026-01-13 17:54:48,290 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:54:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768298088257 HTTP/1.1" 200 - +2026-01-13 17:55:14,743 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:55:14] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:55:44,797 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:55:44] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:55:48,284 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:55:48] "GET /api/strategies/notifications?limit=50&_t=1768298148261 HTTP/1.1" 200 - +2026-01-13 17:55:48,290 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:55:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768298148260 HTTP/1.1" 200 - +2026-01-13 17:56:14,856 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:56:14] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:56:44,908 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:56:44] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:56:48,279 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:56:48] "GET /api/strategies/notifications?limit=50&_t=1768298208260 HTTP/1.1" 200 - +2026-01-13 17:56:48,286 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:56:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768298208259 HTTP/1.1" 200 - +2026-01-13 17:57:14,960 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:57:14] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:57:45,007 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:57:45] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:57:48,276 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:57:48] "GET /api/strategies/notifications?limit=50&_t=1768298268252 HTTP/1.1" 200 - +2026-01-13 17:57:48,282 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:57:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768298268251 HTTP/1.1" 200 - +2026-01-13 17:58:15,070 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:58:15] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:58:45,128 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:58:45] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:58:48,301 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:58:48] "GET /api/strategies/notifications?limit=50&_t=1768298328259 HTTP/1.1" 200 - +2026-01-13 17:58:48,306 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:58:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768298328258 HTTP/1.1" 200 - +2026-01-13 17:59:15,188 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:59:15] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:59:45,246 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 17:59:45] "GET /api/health HTTP/1.1" 200 - +2026-01-13 17:59:48,279 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:59:48] "GET /api/strategies/notifications?limit=50&_t=1768298388258 HTTP/1.1" 200 - +2026-01-13 17:59:48,284 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 17:59:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768298388257 HTTP/1.1" 200 - +2026-01-13 18:00:15,301 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:00:15] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:00:45,359 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:00:45] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:00:48,285 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:00:48] "GET /api/strategies/notifications?limit=50&_t=1768298448262 HTTP/1.1" 200 - +2026-01-13 18:00:48,290 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:00:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768298448261 HTTP/1.1" 200 - +2026-01-13 18:01:15,414 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:01:15] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:01:45,485 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:01:45] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:01:48,298 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:01:48] "GET /api/strategies/notifications?limit=50&_t=1768298508266 HTTP/1.1" 200 - +2026-01-13 18:01:48,301 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:01:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768298508266 HTTP/1.1" 200 - +2026-01-13 18:02:15,533 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:02:15] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:02:45,598 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:02:45] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:02:48,270 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:02:48] "GET /api/strategies/notifications?limit=50&_t=1768298568254 HTTP/1.1" 200 - +2026-01-13 18:02:48,276 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:02:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768298568252 HTTP/1.1" 200 - +2026-01-13 18:03:15,636 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:03:15] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:03:45,694 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:03:45] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:03:48,277 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:03:48] "GET /api/strategies/notifications?limit=50&_t=1768298628258 HTTP/1.1" 200 - +2026-01-13 18:03:48,285 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:03:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768298628258 HTTP/1.1" 200 - +2026-01-13 18:04:15,741 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:04:15] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:04:45,808 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:04:45] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:04:48,281 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:04:48] "GET /api/strategies/notifications?limit=50&_t=1768298688262 HTTP/1.1" 200 - +2026-01-13 18:04:48,288 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:04:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768298688261 HTTP/1.1" 200 - +2026-01-13 18:05:15,855 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:05:15] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:05:45,897 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:05:45] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:05:48,284 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:05:48] "GET /api/strategies/notifications?limit=50&_t=1768298748266 HTTP/1.1" 200 - +2026-01-13 18:05:48,289 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:05:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768298748265 HTTP/1.1" 200 - +2026-01-13 18:06:15,952 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:06:15] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:06:46,002 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:06:46] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:06:48,272 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:06:48] "GET /api/strategies/notifications?limit=50&_t=1768298808255 HTTP/1.1" 200 - +2026-01-13 18:06:48,277 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:06:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768298808254 HTTP/1.1" 200 - +2026-01-13 18:07:16,062 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:07:16] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:07:46,115 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:07:46] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:07:48,275 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:07:48] "GET /api/strategies/notifications?limit=50&_t=1768298868252 HTTP/1.1" 200 - +2026-01-13 18:07:48,280 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:07:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768298868251 HTTP/1.1" 200 - +2026-01-13 18:08:16,166 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:08:16] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:08:46,218 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:08:46] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:08:48,272 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:08:48] "GET /api/strategies/notifications?limit=50&_t=1768298928256 HTTP/1.1" 200 - +2026-01-13 18:08:48,276 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:08:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768298928255 HTTP/1.1" 200 - +2026-01-13 18:09:16,272 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:09:16] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:09:46,338 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:09:46] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:09:48,278 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:09:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768298988252 HTTP/1.1" 200 - +2026-01-13 18:09:48,283 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:09:48] "GET /api/strategies/notifications?limit=50&_t=1768298988252 HTTP/1.1" 200 - +2026-01-13 18:10:16,402 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:10:16] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:10:46,448 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:10:46] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:10:48,272 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:10:48] "GET /api/strategies/notifications?limit=50&_t=1768299048254 HTTP/1.1" 200 - +2026-01-13 18:10:48,277 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:10:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768299048253 HTTP/1.1" 200 - +2026-01-13 18:11:16,506 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:11:16] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:11:46,553 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:11:46] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:11:48,279 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:11:48] "GET /api/strategies/notifications?limit=50&_t=1768299108261 HTTP/1.1" 200 - +2026-01-13 18:11:48,286 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:11:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768299108260 HTTP/1.1" 200 - +2026-01-13 18:12:16,597 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:12:16] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:12:46,654 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:12:46] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:12:48,279 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:12:48] "GET /api/strategies/notifications?limit=50&_t=1768299168264 HTTP/1.1" 200 - +2026-01-13 18:12:48,283 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:12:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768299168263 HTTP/1.1" 200 - +2026-01-13 18:13:16,705 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:13:16] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:13:46,759 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:13:46] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:13:48,273 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:13:48] "GET /api/strategies/notifications?limit=50&_t=1768299228255 HTTP/1.1" 200 - +2026-01-13 18:13:48,277 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:13:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768299228255 HTTP/1.1" 200 - +2026-01-13 18:14:16,814 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:14:16] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:14:46,857 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:14:46] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:14:48,278 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:14:48] "GET /api/strategies/notifications?limit=50&_t=1768299288259 HTTP/1.1" 200 - +2026-01-13 18:14:48,284 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:14:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768299288257 HTTP/1.1" 200 - +2026-01-13 18:15:16,918 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:15:16] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:15:46,963 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:15:46] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:15:48,280 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:15:48] "GET /api/strategies/notifications?limit=50&_t=1768299348261 HTTP/1.1" 200 - +2026-01-13 18:15:48,284 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:15:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768299348261 HTTP/1.1" 200 - +2026-01-13 18:16:17,020 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:16:17] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:16:47,062 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:16:47] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:16:48,272 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:16:48] "GET /api/strategies/notifications?limit=50&_t=1768299408259 HTTP/1.1" 200 - +2026-01-13 18:16:48,277 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:16:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768299408258 HTTP/1.1" 200 - +2026-01-13 18:17:17,119 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:17:17] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:17:47,186 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:17:47] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:17:48,277 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:17:48] "GET /api/strategies/notifications?limit=50&_t=1768299468259 HTTP/1.1" 200 - +2026-01-13 18:17:48,283 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:17:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768299468259 HTTP/1.1" 200 - +2026-01-13 18:18:17,251 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:18:17] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:18:47,294 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:18:47] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:18:48,274 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:18:48] "GET /api/strategies/notifications?limit=50&_t=1768299528255 HTTP/1.1" 200 - +2026-01-13 18:18:48,279 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:18:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768299528254 HTTP/1.1" 200 - +2026-01-13 18:19:17,349 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:19:17] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:19:47,392 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:19:47] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:19:48,272 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:19:48] "GET /api/strategies/notifications?limit=50&_t=1768299588254 HTTP/1.1" 200 - +2026-01-13 18:19:48,280 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:19:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768299588254 HTTP/1.1" 200 - +2026-01-13 18:20:17,465 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:20:17] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:20:47,536 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:20:47] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:20:48,272 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:20:48] "GET /api/strategies/notifications?limit=50&_t=1768299648252 HTTP/1.1" 200 - +2026-01-13 18:20:48,278 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:20:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768299648251 HTTP/1.1" 200 - +2026-01-13 18:21:17,608 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:21:17] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:21:47,675 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:21:47] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:21:48,272 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:21:48] "GET /api/strategies/notifications?limit=50&_t=1768299708255 HTTP/1.1" 200 - +2026-01-13 18:21:48,276 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:21:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768299708254 HTTP/1.1" 200 - +2026-01-13 18:22:17,725 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:22:17] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:22:47,767 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:22:47] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:22:48,281 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:22:48] "GET /api/strategies/notifications?limit=50&_t=1768299768264 HTTP/1.1" 200 - +2026-01-13 18:22:48,285 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:22:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768299768264 HTTP/1.1" 200 - +2026-01-13 18:23:17,822 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:23:17] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:23:47,874 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:23:47] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:23:48,274 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:23:48] "GET /api/strategies/notifications?limit=50&_t=1768299828255 HTTP/1.1" 200 - +2026-01-13 18:23:48,280 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:23:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768299828255 HTTP/1.1" 200 - +2026-01-13 18:24:17,923 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:24:17] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:24:47,986 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:24:47] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:24:48,273 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:24:48] "GET /api/strategies/notifications?limit=50&_t=1768299888254 HTTP/1.1" 200 - +2026-01-13 18:24:48,280 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:24:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768299888253 HTTP/1.1" 200 - +2026-01-13 18:25:18,025 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:25:18] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:25:48,076 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:25:48] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:25:48,282 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:25:48] "GET /api/strategies/notifications?limit=50&_t=1768299948263 HTTP/1.1" 200 - +2026-01-13 18:25:48,289 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:25:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768299948262 HTTP/1.1" 200 - +2026-01-13 18:26:18,118 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:26:18] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:26:48,169 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:26:48] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:26:48,285 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:26:48] "GET /api/strategies/notifications?limit=50&_t=1768300008266 HTTP/1.1" 200 - +2026-01-13 18:26:48,290 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:26:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768300008265 HTTP/1.1" 200 - +2026-01-13 18:27:18,224 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:27:18] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:27:48,270 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:27:48] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:27:48,272 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:27:48] "GET /api/strategies/notifications?limit=50&_t=1768300068258 HTTP/1.1" 200 - +2026-01-13 18:27:48,278 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:27:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768300068256 HTTP/1.1" 200 - +2026-01-13 18:28:18,322 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:28:18] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:28:48,280 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:28:48] "GET /api/strategies/notifications?limit=50&_t=1768300128264 HTTP/1.1" 200 - +2026-01-13 18:28:48,284 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:28:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768300128264 HTTP/1.1" 200 - +2026-01-13 18:28:48,380 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:28:48] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:29:18,427 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:29:18] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:29:48,281 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:29:48] "GET /api/strategies/notifications?limit=50&_t=1768300188262 HTTP/1.1" 200 - +2026-01-13 18:29:48,286 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:29:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768300188260 HTTP/1.1" 200 - +2026-01-13 18:29:48,481 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:29:48] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:30:18,539 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:30:18] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:30:48,281 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:30:48] "GET /api/strategies/notifications?limit=50&_t=1768300248261 HTTP/1.1" 200 - +2026-01-13 18:30:48,286 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:30:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768300248261 HTTP/1.1" 200 - +2026-01-13 18:30:48,580 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:30:48] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:31:18,622 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:31:18] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:31:48,279 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:31:48] "GET /api/strategies/notifications?limit=50&_t=1768300308261 HTTP/1.1" 200 - +2026-01-13 18:31:48,283 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:31:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768300308260 HTTP/1.1" 200 - +2026-01-13 18:31:48,671 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:31:48] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:32:18,726 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:32:18] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:32:48,269 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:32:48] "GET /api/strategies/notifications?limit=50&_t=1768300368252 HTTP/1.1" 200 - +2026-01-13 18:32:48,274 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:32:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768300368250 HTTP/1.1" 200 - +2026-01-13 18:32:48,773 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:32:48] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:33:18,836 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:33:18] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:33:48,286 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:33:48] "GET /api/strategies/notifications?limit=50&_t=1768300428261 HTTP/1.1" 200 - +2026-01-13 18:33:48,291 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:33:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768300428260 HTTP/1.1" 200 - +2026-01-13 18:33:48,883 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:33:48] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:34:18,930 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:34:18] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:34:48,280 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:34:48] "GET /api/strategies/notifications?limit=50&_t=1768300488259 HTTP/1.1" 200 - +2026-01-13 18:34:48,286 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:34:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768300488258 HTTP/1.1" 200 - +2026-01-13 18:34:48,975 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:34:48] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:35:19,017 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:35:19] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:35:48,280 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:35:48] "GET /api/strategies/notifications?limit=50&_t=1768300548258 HTTP/1.1" 200 - +2026-01-13 18:35:48,286 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:35:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768300548257 HTTP/1.1" 200 - +2026-01-13 18:35:49,060 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:35:49] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:36:19,104 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:36:19] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:36:48,280 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:36:48] "GET /api/strategies/notifications?limit=50&_t=1768300608255 HTTP/1.1" 200 - +2026-01-13 18:36:48,285 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:36:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768300608254 HTTP/1.1" 200 - +2026-01-13 18:36:49,161 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:36:49] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:37:19,201 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:37:19] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:37:48,272 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:37:48] "GET /api/strategies/notifications?limit=50&_t=1768300668254 HTTP/1.1" 200 - +2026-01-13 18:37:48,278 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:37:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768300668253 HTTP/1.1" 200 - +2026-01-13 18:37:49,252 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:37:49] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:38:19,312 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:38:19] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:38:48,276 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:38:48] "GET /api/strategies/notifications?limit=50&_t=1768300728258 HTTP/1.1" 200 - +2026-01-13 18:38:48,280 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:38:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768300728258 HTTP/1.1" 200 - +2026-01-13 18:38:49,358 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:38:49] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:39:19,410 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:39:19] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:39:48,281 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:39:48] "GET /api/strategies/notifications?limit=50&_t=1768300788262 HTTP/1.1" 200 - +2026-01-13 18:39:48,288 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:39:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768300788261 HTTP/1.1" 200 - +2026-01-13 18:39:49,460 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:39:49] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:40:19,518 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:40:19] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:40:48,271 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:40:48] "GET /api/strategies/notifications?limit=50&_t=1768300848255 HTTP/1.1" 200 - +2026-01-13 18:40:48,275 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 18:40:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768300848254 HTTP/1.1" 200 - +2026-01-13 18:40:49,581 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:40:49] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:41:19,652 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:41:19] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:41:49,722 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:41:49] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:42:19,770 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:42:19] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:42:49,825 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:42:49] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:43:19,863 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:43:19] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:43:49,913 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:43:49] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:44:19,977 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:44:19] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:44:50,026 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:44:50] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:45:20,067 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:45:20] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:45:50,121 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:45:50] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:46:20,167 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:46:20] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:46:50,218 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:46:50] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:47:20,264 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:47:20] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:47:50,318 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:47:50] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:48:20,368 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:48:20] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:48:50,423 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:48:50] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:49:20,475 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:49:20] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:49:50,524 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:49:50] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:50:20,591 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:50:20] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:50:50,646 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:50:50] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:51:20,703 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:51:20] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:51:50,765 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:51:50] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:52:20,809 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:52:20] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:52:50,864 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:52:50] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:53:20,911 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:53:20] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:53:50,962 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:53:50] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:54:21,030 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:54:21] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:54:51,098 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:54:51] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:55:21,139 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:55:21] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:55:51,194 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:55:51] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:56:21,256 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:56:21] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:56:51,299 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:56:51] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:57:21,372 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:57:21] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:57:51,421 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:57:51] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:58:21,488 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:58:21] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:58:51,545 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:58:51] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:59:21,596 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:59:21] "GET /api/health HTTP/1.1" 200 - +2026-01-13 18:59:51,650 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 18:59:51] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:00:21,705 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:00:21] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:00:51,770 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:00:51] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:01:21,827 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:01:21] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:01:51,869 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:01:51] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:02:21,932 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:02:21] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:02:51,990 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:02:51] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:03:22,036 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:03:22] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:03:52,088 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:03:52] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:04:22,130 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:04:22] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:04:52,172 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:04:52] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:05:22,221 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:05:22] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:05:52,275 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:05:52] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:06:22,345 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:06:22] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:06:52,408 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:06:52] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:07:22,476 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:07:22] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:07:52,522 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:07:52] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:08:22,579 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:08:22] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:08:52,622 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:08:52] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:09:22,698 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:09:22] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:09:52,739 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:09:52] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:10:22,796 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:10:22] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:10:52,836 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:10:52] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:11:22,883 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:11:22] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:11:32,920 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-13 19:11:32,920 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-13 19:11:32,924 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-13 19:11:32,924 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-13 19:11:32,981 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-13 19:11:32,981 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-13 19:11:33,282 - app.services.strategy - INFO - Found 1 running strategies: [{'id': 14, 'strategy_type': 'IndicatorStrategy'}] +2026-01-13 19:11:33,283 - app - INFO - Restoring 1 running strategies... +2026-01-13 19:11:33,283 - app.services.trading_executor - INFO - Strategy 14 loop starting +2026-01-13 19:11:33,283 - app.services.trading_executor - INFO - Strategy 14 started +2026-01-13 19:11:33,283 - app - INFO - [OK] IndicatorStrategy 14 restored +2026-01-13 19:11:33,284 - app - INFO - Strategy restore completed: 1/1 restored +2026-01-13 19:11:33,290 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://172.18.0.2:5000 +2026-01-13 19:11:33,290 - werkzeug - INFO - Press CTRL+C to quit +2026-01-13 19:11:33,292 - app.services.trading_executor - INFO - Strategy 14 derivatives trading; normalize market_type to: swap +2026-01-13 19:11:33,837 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:11:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768302693798 HTTP/1.1" 200 - +2026-01-13 19:11:34,544 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:11:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768302694521 HTTP/1.1" 200 - +2026-01-13 19:11:34,545 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:11:34] "GET /api/dashboard/summary?_t=1768302694521 HTTP/1.1" 200 - +2026-01-13 19:11:34,549 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:11:34] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768302694521 HTTP/1.1" 200 - +2026-01-13 19:11:35,017 - app.services.trading_executor - INFO - ็ญ–็•ฅ 14 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-13 19:11:35,031 - app.services.trading_executor - INFO - Strategy 14 initialized; pending_signals=0 +2026-01-13 19:11:35,990 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:11:35] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768302695969 HTTP/1.1" 200 - +2026-01-13 19:11:35,992 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:11:35] "GET /api/dashboard/summary?_t=1768302695969 HTTP/1.1" 200 - +2026-01-13 19:11:35,995 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:11:35] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768302695969 HTTP/1.1" 200 - +2026-01-13 19:11:37,810 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:11:37] "GET /api/market/config?_t=1768302697797 HTTP/1.1" 200 - +2026-01-13 19:11:37,812 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:11:37] "GET /api/user/info?_t=1768302697797 HTTP/1.1" 200 - +2026-01-13 19:11:37,823 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:11:37] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 19:11:37,837 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:11:37] "GET /api/market/types?_t=1768302697831 HTTP/1.1" 200 - +2026-01-13 19:11:37,851 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:11:37] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 19:11:38,012 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 19:11:38,012 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 19:11:38,012 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 19:11:38,013 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 19:11:38,013 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 19:11:38,923 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:11:38] "GET /api/market/types?_t=1768302698919 HTTP/1.1" 200 - +2026-01-13 19:11:38,929 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:11:38] "GET /api/user/info?_t=1768302698919 HTTP/1.1" 200 - +2026-01-13 19:11:38,941 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:11:38] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 19:11:38,942 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:11:38] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 19:11:38,944 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:11:38] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 19:11:38,946 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:11:38] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 19:11:38,959 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=500 +2026-01-13 19:11:39,404 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:11:39] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-13 19:11:39,446 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:11:39] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-13 19:11:39,634 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:11:39] "POST /api/market/watchlist/prices HTTP/1.1" 200 - +2026-01-13 19:11:50,379 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:11:50] "POST /api/indicator/saveIndicator HTTP/1.1" 200 - +2026-01-13 19:11:50,454 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:11:50] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 19:11:51,149 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:11:51] "GET /api/strategies/notifications?limit=50&_t=1768302711136 HTTP/1.1" 200 - +2026-01-13 19:12:01,798 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:12:01] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:12:18,730 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-13 19:12:18,730 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-13 19:12:18,732 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-13 19:12:18,732 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-13 19:12:18,794 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-13 19:12:18,796 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-13 19:12:19,028 - app.services.strategy - INFO - Found 1 running strategies: [{'id': 14, 'strategy_type': 'IndicatorStrategy'}] +2026-01-13 19:12:19,029 - app - INFO - Restoring 1 running strategies... +2026-01-13 19:12:19,030 - app.services.trading_executor - INFO - Strategy 14 loop starting +2026-01-13 19:12:19,030 - app.services.trading_executor - INFO - Strategy 14 started +2026-01-13 19:12:19,031 - app - INFO - [OK] IndicatorStrategy 14 restored +2026-01-13 19:12:19,031 - app - INFO - Strategy restore completed: 1/1 restored +2026-01-13 19:12:19,039 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://172.18.0.2:5000 +2026-01-13 19:12:19,040 - werkzeug - INFO - Press CTRL+C to quit +2026-01-13 19:12:19,041 - app.services.trading_executor - INFO - Strategy 14 derivatives trading; normalize market_type to: swap +2026-01-13 19:12:21,018 - app.services.trading_executor - INFO - ็ญ–็•ฅ 14 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-13 19:12:21,035 - app.services.trading_executor - INFO - Strategy 14 initialized; pending_signals=0 +2026-01-13 19:12:21,342 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:12:21] "GET /api/market/types?_t=1768302741334 HTTP/1.1" 200 - +2026-01-13 19:12:21,344 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:12:21] "GET /api/user/info?_t=1768302741334 HTTP/1.1" 200 - +2026-01-13 19:12:21,357 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:12:21] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 19:12:21,357 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:12:21] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 19:12:21,377 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:12:21] "GET /api/strategies/notifications?limit=50&_t=1768302741334 HTTP/1.1" 200 - +2026-01-13 19:12:21,388 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:12:21] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 19:12:21,389 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:12:21] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 19:12:21,399 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=500 +2026-01-13 19:12:21,519 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 19:12:22,793 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:12:22] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-13 19:12:30,172 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:12:30] "POST /api/indicator/saveIndicator HTTP/1.1" 200 - +2026-01-13 19:12:30,211 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:12:30] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 19:12:47,447 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:12:47] "GET /api/market/types?_t=1768302767438 HTTP/1.1" 200 - +2026-01-13 19:12:47,449 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:12:47] "GET /api/user/info?_t=1768302767438 HTTP/1.1" 200 - +2026-01-13 19:12:47,458 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:12:47] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 19:12:47,459 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:12:47] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 19:12:47,467 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:12:47] "GET /api/strategies/notifications?limit=50&_t=1768302767438 HTTP/1.1" 200 - +2026-01-13 19:12:47,505 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:12:47] "POST /api/market/watchlist/get HTTP/1.1" 200 - +2026-01-13 19:12:47,505 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:12:47] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 19:12:47,507 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=500 +2026-01-13 19:12:47,508 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:12:47] "POST /api/indicator/kline HTTP/1.1" 200 - +2026-01-13 19:12:47,856 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:12:47] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:12:58,780 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:12:58] "POST /api/indicator/saveIndicator HTTP/1.1" 200 - +2026-01-13 19:12:58,825 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:12:58] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 19:13:13,040 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:13:13] "POST /api/indicator/saveIndicator HTTP/1.1" 200 - +2026-01-13 19:13:13,080 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:13:13] "POST /api/indicator/getIndicators HTTP/1.1" 200 - +2026-01-13 19:13:17,451 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:13:17] "GET /api/strategies/notifications?limit=50&_t=1768302797418 HTTP/1.1" 200 - +2026-01-13 19:13:17,899 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:13:17] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:13:47,437 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:13:47] "GET /api/strategies/notifications?limit=50&_t=1768302827423 HTTP/1.1" 200 - +2026-01-13 19:13:47,950 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:13:47] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:14:17,445 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:14:17] "GET /api/strategies/notifications?limit=50&_t=1768302857426 HTTP/1.1" 200 - +2026-01-13 19:14:17,996 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:14:17] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:14:47,437 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:14:47] "GET /api/strategies/notifications?limit=50&_t=1768302887414 HTTP/1.1" 200 - +2026-01-13 19:14:48,055 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:14:48] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:15:17,443 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:15:17] "GET /api/strategies/notifications?limit=50&_t=1768302917421 HTTP/1.1" 200 - +2026-01-13 19:15:18,098 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:15:18] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:15:47,444 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:15:47] "GET /api/strategies/notifications?limit=50&_t=1768302947412 HTTP/1.1" 200 - +2026-01-13 19:15:48,140 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:15:48] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:16:17,464 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:16:17] "GET /api/strategies/notifications?limit=50&_t=1768302977416 HTTP/1.1" 200 - +2026-01-13 19:16:18,183 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:16:18] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:16:46,259 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-13 19:16:46,259 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-13 19:16:46,260 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-13 19:16:46,260 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-13 19:16:46,315 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-13 19:16:46,315 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-13 19:16:46,456 - app.services.strategy - INFO - Found 1 running strategies: [{'id': 14, 'strategy_type': 'IndicatorStrategy'}] +2026-01-13 19:16:46,457 - app - INFO - Restoring 1 running strategies... +2026-01-13 19:16:46,458 - app.services.trading_executor - INFO - Strategy 14 loop starting +2026-01-13 19:16:46,458 - app.services.trading_executor - INFO - Strategy 14 started +2026-01-13 19:16:46,458 - app - INFO - [OK] IndicatorStrategy 14 restored +2026-01-13 19:16:46,459 - app - INFO - Strategy restore completed: 1/1 restored +2026-01-13 19:16:46,474 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://172.18.0.2:5000 +2026-01-13 19:16:46,474 - werkzeug - INFO - Press CTRL+C to quit +2026-01-13 19:16:46,476 - app.services.trading_executor - INFO - Strategy 14 derivatives trading; normalize market_type to: swap +2026-01-13 19:16:47,463 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:16:47] "GET /api/strategies/notifications?limit=50&_t=1768303007423 HTTP/1.1" 200 - +2026-01-13 19:16:48,041 - app.services.trading_executor - INFO - ็ญ–็•ฅ 14 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-13 19:16:48,055 - app.services.trading_executor - INFO - Strategy 14 initialized; pending_signals=0 +2026-01-13 19:17:15,728 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:17:15] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:17:17,435 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:17:17] "GET /api/strategies/notifications?limit=50&_t=1768303037415 HTTP/1.1" 200 - +2026-01-13 19:17:45,779 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:17:45] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:17:47,438 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:17:47] "GET /api/strategies/notifications?limit=50&_t=1768303067412 HTTP/1.1" 200 - +2026-01-13 19:17:49,362 - app - INFO - !!! SYSTEM STARTING IN DEMO MODE (READ-ONLY) !!! +2026-01-13 19:17:49,992 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-13 19:17:49,992 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-13 19:17:49,997 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-13 19:17:49,997 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-13 19:17:50,054 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-13 19:17:50,057 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-13 19:17:50,193 - app.services.strategy - INFO - Found 1 running strategies: [{'id': 14, 'strategy_type': 'IndicatorStrategy'}] +2026-01-13 19:17:50,194 - app - INFO - Restoring 1 running strategies... +2026-01-13 19:17:50,194 - app.services.trading_executor - INFO - Strategy 14 loop starting +2026-01-13 19:17:50,194 - app.services.trading_executor - INFO - Strategy 14 started +2026-01-13 19:17:50,195 - app - INFO - [OK] IndicatorStrategy 14 restored +2026-01-13 19:17:50,195 - app - INFO - Strategy restore completed: 1/1 restored +2026-01-13 19:17:50,202 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://172.18.0.2:5000 +2026-01-13 19:17:50,202 - werkzeug - INFO - Press CTRL+C to quit +2026-01-13 19:17:50,203 - app.services.trading_executor - INFO - Strategy 14 derivatives trading; normalize market_type to: swap +2026-01-13 19:17:52,245 - app.services.trading_executor - INFO - ็ญ–็•ฅ 14 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-13 19:17:52,258 - app.services.trading_executor - INFO - Strategy 14 initialized; pending_signals=0 +2026-01-13 19:18:10,080 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:18:10] "POST /api/indicator/saveIndicator HTTP/1.1" 403 - +2026-01-13 19:18:17,434 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:18:17] "GET /api/strategies/notifications?limit=50&_t=1768303097412 HTTP/1.1" 200 - +2026-01-13 19:18:19,267 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:18:19] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:18:24,536 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:18:24] "POST /api/indicator/saveIndicator HTTP/1.1" 403 - +2026-01-13 19:18:47,451 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:18:47] "GET /api/strategies/notifications?limit=50&_t=1768303127421 HTTP/1.1" 200 - +2026-01-13 19:18:49,369 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:18:49] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:19:17,440 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:19:17] "GET /api/strategies/notifications?limit=50&_t=1768303157415 HTTP/1.1" 200 - +2026-01-13 19:19:19,420 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:19:19] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:19:47,443 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:19:47] "GET /api/strategies/notifications?limit=50&_t=1768303187418 HTTP/1.1" 200 - +2026-01-13 19:19:49,462 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:19:49] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:20:17,442 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:20:17] "GET /api/strategies/notifications?limit=50&_t=1768303217414 HTTP/1.1" 200 - +2026-01-13 19:20:19,516 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:20:19] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:20:42,415 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:20:42] "POST /api/indicator/deleteIndicator HTTP/1.1" 403 - +2026-01-13 19:20:45,706 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:20:45] "GET /api/strategies?_t=1768303245691 HTTP/1.1" 200 - +2026-01-13 19:20:47,156 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:20:47] "GET /api/strategies/positions?id=14&_t=1768303247136 HTTP/1.1" 200 - +2026-01-13 19:20:47,159 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:20:47] "GET /api/strategies/equityCurve?id=14&_t=1768303247131 HTTP/1.1" 200 - +2026-01-13 19:20:47,160 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:20:47] "GET /api/strategies/equityCurve?id=14&_t=1768303247131 HTTP/1.1" 200 - +2026-01-13 19:20:47,440 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:20:47] "GET /api/strategies/notifications?limit=50&_t=1768303247413 HTTP/1.1" 200 - +2026-01-13 19:20:48,356 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:20:48] "GET /api/strategies/trades?id=14&_t=1768303248342 HTTP/1.1" 200 - +2026-01-13 19:20:49,590 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:20:49] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:20:49,970 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:20:49] "GET /api/strategies/trades?id=12&_t=1768303249947 HTTP/1.1" 200 - +2026-01-13 19:20:49,974 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:20:49] "GET /api/strategies/positions?id=12&_t=1768303249947 HTTP/1.1" 200 - +2026-01-13 19:20:49,979 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:20:49] "GET /api/strategies/equityCurve?id=12&_t=1768303249946 HTTP/1.1" 200 - +2026-01-13 19:20:49,980 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:20:49] "GET /api/strategies/equityCurve?id=12&_t=1768303249946 HTTP/1.1" 200 - +2026-01-13 19:20:50,887 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:20:50] "GET /api/strategies/trades?id=13&_t=1768303250873 HTTP/1.1" 200 - +2026-01-13 19:20:50,891 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:20:50] "GET /api/strategies/positions?id=13&_t=1768303250873 HTTP/1.1" 200 - +2026-01-13 19:20:50,897 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:20:50] "GET /api/strategies/equityCurve?id=13&_t=1768303250872 HTTP/1.1" 200 - +2026-01-13 19:20:50,898 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:20:50] "GET /api/strategies/equityCurve?id=13&_t=1768303250872 HTTP/1.1" 200 - +2026-01-13 19:20:52,174 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:20:52] "POST /api/strategies/start?id=13 HTTP/1.1" 403 - +2026-01-13 19:20:56,082 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:20:56] "GET /api/settings/schema?_t=1768303256075 HTTP/1.1" 200 - +2026-01-13 19:20:56,091 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:20:56] "GET /api/settings/values?_t=1768303256075 HTTP/1.1" 200 - +2026-01-13 19:21:17,449 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:21:17] "GET /api/strategies/notifications?limit=50&_t=1768303277419 HTTP/1.1" 200 - +2026-01-13 19:21:19,645 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:21:19] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:21:32,439 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:21:32] "POST /api/market/watchlist/get HTTP/1.1" 403 - +2026-01-13 19:21:32,442 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:21:32] "GET /api/user/info?_t=1768303292422 HTTP/1.1" 200 - +2026-01-13 19:21:32,444 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:21:32] "GET /api/market/config?_t=1768303292422 HTTP/1.1" 200 - +2026-01-13 19:21:32,567 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:21:32] "POST /api/market/watchlist/get HTTP/1.1" 403 - +2026-01-13 19:21:32,575 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:21:32] "GET /api/market/types?_t=1768303292568 HTTP/1.1" 200 - +2026-01-13 19:21:36,191 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:21:36] "GET /api/user/info?_t=1768303296181 HTTP/1.1" 200 - +2026-01-13 19:21:36,192 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:21:36] "GET /api/market/config?_t=1768303296181 HTTP/1.1" 200 - +2026-01-13 19:21:36,193 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:21:36] "POST /api/market/watchlist/get HTTP/1.1" 403 - +2026-01-13 19:21:36,211 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:21:36] "POST /api/market/watchlist/get HTTP/1.1" 403 - +2026-01-13 19:21:36,215 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:21:36] "GET /api/market/types?_t=1768303296212 HTTP/1.1" 200 - +2026-01-13 19:21:47,434 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:21:47] "GET /api/strategies/notifications?limit=50&_t=1768303307420 HTTP/1.1" 200 - +2026-01-13 19:21:48,494 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:21:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768303308456 HTTP/1.1" 200 - +2026-01-13 19:21:48,495 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:21:48] "GET /api/dashboard/summary?_t=1768303308456 HTTP/1.1" 200 - +2026-01-13 19:21:48,501 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:21:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768303308456 HTTP/1.1" 200 - +2026-01-13 19:21:49,708 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:21:49] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:21:49,904 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:21:49] "GET /api/user/info?_t=1768303309899 HTTP/1.1" 200 - +2026-01-13 19:21:49,905 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:21:49] "GET /api/market/config?_t=1768303309899 HTTP/1.1" 200 - +2026-01-13 19:21:49,906 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:21:49] "POST /api/market/watchlist/get HTTP/1.1" 403 - +2026-01-13 19:21:49,933 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:21:49] "POST /api/market/watchlist/get HTTP/1.1" 403 - +2026-01-13 19:21:49,937 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:21:49] "GET /api/market/types?_t=1768303309932 HTTP/1.1" 200 - +2026-01-13 19:21:51,120 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:21:51] "POST /api/market/watchlist/get HTTP/1.1" 403 - +2026-01-13 19:21:51,122 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:21:51] "GET /api/market/types?_t=1768303311113 HTTP/1.1" 200 - +2026-01-13 19:21:51,124 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:21:51] "POST /api/indicator/getIndicators HTTP/1.1" 403 - +2026-01-13 19:21:51,125 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:21:51] "GET /api/user/info?_t=1768303311113 HTTP/1.1" 200 - +2026-01-13 19:21:51,163 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:21:51] "POST /api/indicator/getIndicators HTTP/1.1" 403 - +2026-01-13 19:21:51,166 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:21:51] "POST /api/market/watchlist/get HTTP/1.1" 403 - +2026-01-13 19:22:02,654 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:22:02] "GET /api/strategies?_t=1768303322626 HTTP/1.1" 200 - +2026-01-13 19:22:04,205 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:22:04] "GET /api/market/types?_t=1768303324197 HTTP/1.1" 200 - +2026-01-13 19:22:04,228 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:22:04] "GET /api/portfolio/alerts?_t=1768303324197 HTTP/1.1" 200 - +2026-01-13 19:22:04,229 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:22:04] "GET /api/portfolio/monitors?_t=1768303324197 HTTP/1.1" 200 - +2026-01-13 19:22:04,235 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:22:04] "GET /api/portfolio/groups?_t=1768303324197 HTTP/1.1" 200 - +2026-01-13 19:22:04,399 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 19:22:06,166 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:22:06] "GET /api/market/types?_t=1768303326157 HTTP/1.1" 200 - +2026-01-13 19:22:06,183 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:22:06] "GET /api/portfolio/monitors?_t=1768303326157 HTTP/1.1" 200 - +2026-01-13 19:22:06,195 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:22:06] "GET /api/portfolio/groups?_t=1768303326157 HTTP/1.1" 200 - +2026-01-13 19:22:06,203 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:22:06] "GET /api/portfolio/alerts?_t=1768303326157 HTTP/1.1" 200 - +2026-01-13 19:22:07,699 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:22:07] "GET /api/portfolio/summary?_t=1768303324197 HTTP/1.1" 200 - +2026-01-13 19:22:10,078 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:22:10] "GET /api/portfolio/positions?_t=1768303324197 HTTP/1.1" 200 - +2026-01-13 19:22:12,780 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:22:12] "GET /api/portfolio/positions?_t=1768303326157 HTTP/1.1" 200 - +2026-01-13 19:22:15,481 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:22:15] "GET /api/portfolio/summary?_t=1768303326157 HTTP/1.1" 200 - +2026-01-13 19:22:17,437 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:22:17] "GET /api/strategies/notifications?limit=50&_t=1768303337424 HTTP/1.1" 200 - +2026-01-13 19:22:19,752 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:22:19] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:22:33,146 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:22:33] "GET /api/settings/schema?_t=1768303353139 HTTP/1.1" 200 - +2026-01-13 19:22:33,150 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:22:33] "GET /api/settings/values?_t=1768303353139 HTTP/1.1" 200 - +2026-01-13 19:22:37,411 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:22:37] "GET /api/settings/schema?_t=1768303357405 HTTP/1.1" 200 - +2026-01-13 19:22:37,419 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:22:37] "GET /api/settings/values?_t=1768303357405 HTTP/1.1" 200 - +2026-01-13 19:22:37,438 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:22:37] "GET /api/strategies/notifications?limit=50&_t=1768303357405 HTTP/1.1" 200 - +2026-01-13 19:22:40,048 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:22:40] "GET /api/market/types?_t=1768303360039 HTTP/1.1" 200 - +2026-01-13 19:22:40,049 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:22:40] "POST /api/market/watchlist/get HTTP/1.1" 403 - +2026-01-13 19:22:40,050 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:22:40] "GET /api/user/info?_t=1768303360039 HTTP/1.1" 200 - +2026-01-13 19:22:40,051 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:22:40] "POST /api/indicator/getIndicators HTTP/1.1" 403 - +2026-01-13 19:22:40,074 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:22:40] "POST /api/market/watchlist/get HTTP/1.1" 403 - +2026-01-13 19:22:40,075 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:22:40] "POST /api/indicator/getIndicators HTTP/1.1" 403 - +2026-01-13 19:22:49,842 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:22:49] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:22:53,876 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:22:53] "POST /api/market/watchlist/get HTTP/1.1" 403 - +2026-01-13 19:22:53,878 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:22:53] "GET /api/user/info?_t=1768303373854 HTTP/1.1" 200 - +2026-01-13 19:22:53,880 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:22:53] "GET /api/market/config?_t=1768303373854 HTTP/1.1" 200 - +2026-01-13 19:22:53,917 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:22:53] "POST /api/market/watchlist/get HTTP/1.1" 403 - +2026-01-13 19:22:53,922 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:22:53] "GET /api/market/types?_t=1768303373917 HTTP/1.1" 200 - +2026-01-13 19:23:07,400 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:23:07] "GET /api/strategies/notifications?limit=50&_t=1768303387384 HTTP/1.1" 200 - +2026-01-13 19:23:19,902 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:23:19] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:23:37,400 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:23:37] "GET /api/strategies/notifications?limit=50&_t=1768303417385 HTTP/1.1" 200 - +2026-01-13 19:23:49,953 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:23:49] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:24:07,408 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:24:07] "GET /api/strategies/notifications?limit=50&_t=1768303447391 HTTP/1.1" 200 - +2026-01-13 19:24:20,024 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:24:20] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:24:36,082 - app - INFO - !!! SYSTEM STARTING IN DEMO MODE (READ-ONLY) !!! +2026-01-13 19:24:37,021 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-13 19:24:37,021 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-13 19:24:37,022 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-13 19:24:37,023 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-13 19:24:37,072 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-13 19:24:37,073 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-13 19:24:37,469 - app.services.strategy - INFO - Found 1 running strategies: [{'id': 14, 'strategy_type': 'IndicatorStrategy'}] +2026-01-13 19:24:37,470 - app - INFO - Restoring 1 running strategies... +2026-01-13 19:24:37,470 - app.services.trading_executor - INFO - Strategy 14 loop starting +2026-01-13 19:24:37,470 - app.services.trading_executor - INFO - Strategy 14 started +2026-01-13 19:24:37,471 - app - INFO - [OK] IndicatorStrategy 14 restored +2026-01-13 19:24:37,471 - app - INFO - Strategy restore completed: 1/1 restored +2026-01-13 19:24:37,488 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://172.18.0.2:5000 +2026-01-13 19:24:37,491 - werkzeug - INFO - Press CTRL+C to quit +2026-01-13 19:24:37,500 - app.services.trading_executor - INFO - Strategy 14 derivatives trading; normalize market_type to: swap +2026-01-13 19:24:38,301 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:24:38] "POST /api/market/watchlist/get HTTP/1.1" 403 - +2026-01-13 19:24:38,303 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:24:38] "GET /api/user/info?_t=1768303478292 HTTP/1.1" 200 - +2026-01-13 19:24:38,304 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:24:38] "GET /api/market/config?_t=1768303478292 HTTP/1.1" 200 - +2026-01-13 19:24:38,318 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:24:38] "POST /api/market/watchlist/get HTTP/1.1" 403 - +2026-01-13 19:24:38,324 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:24:38] "GET /api/market/types?_t=1768303478321 HTTP/1.1" 200 - +2026-01-13 19:24:38,691 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:24:38] "GET /api/user/info?_t=1768303478658 HTTP/1.1" 200 - +2026-01-13 19:24:38,692 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:24:38] "GET /api/market/config?_t=1768303478658 HTTP/1.1" 200 - +2026-01-13 19:24:38,725 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:24:38] "POST /api/market/watchlist/get HTTP/1.1" 403 - +2026-01-13 19:24:38,737 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:24:38] "POST /api/market/watchlist/get HTTP/1.1" 403 - +2026-01-13 19:24:38,756 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:24:38] "GET /api/market/types?_t=1768303478735 HTTP/1.1" 200 - +2026-01-13 19:24:39,060 - app.services.trading_executor - INFO - ็ญ–็•ฅ 14 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-13 19:24:39,080 - app.services.trading_executor - INFO - Strategy 14 initialized; pending_signals=0 +2026-01-13 19:24:40,725 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:24:40] "GET /api/market/config?_t=1768303480715 HTTP/1.1" 200 - +2026-01-13 19:24:40,728 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:24:40] "GET /api/user/info?_t=1768303480715 HTTP/1.1" 200 - +2026-01-13 19:24:40,730 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:24:40] "POST /api/market/watchlist/get HTTP/1.1" 403 - +2026-01-13 19:24:40,764 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:24:40] "GET /api/strategies/notifications?limit=50&_t=1768303480715 HTTP/1.1" 200 - +2026-01-13 19:24:40,776 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:24:40] "POST /api/market/watchlist/get HTTP/1.1" 403 - +2026-01-13 19:24:40,777 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:24:40] "GET /api/market/types?_t=1768303480767 HTTP/1.1" 200 - +2026-01-13 19:24:45,457 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:24:45] "GET /api/market/types?_t=1768303485449 HTTP/1.1" 200 - +2026-01-13 19:24:45,458 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:24:45] "POST /api/market/watchlist/get HTTP/1.1" 403 - +2026-01-13 19:24:45,459 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:24:45] "POST /api/indicator/getIndicators HTTP/1.1" 403 - +2026-01-13 19:24:45,460 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:24:45] "GET /api/user/info?_t=1768303485449 HTTP/1.1" 200 - +2026-01-13 19:24:45,506 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:24:45] "POST /api/indicator/getIndicators HTTP/1.1" 403 - +2026-01-13 19:24:45,507 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:24:45] "POST /api/market/watchlist/get HTTP/1.1" 403 - +2026-01-13 19:25:05,840 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:25:05] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:25:10,720 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:25:10] "GET /api/strategies/notifications?limit=50&_t=1768303510682 HTTP/1.1" 200 - +2026-01-13 19:25:31,611 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:25:31] "GET /api/strategies?_t=1768303531589 HTTP/1.1" 200 - +2026-01-13 19:25:32,541 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:25:32] "POST /api/market/watchlist/get HTTP/1.1" 403 - +2026-01-13 19:25:32,542 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:25:32] "GET /api/market/config?_t=1768303532525 HTTP/1.1" 200 - +2026-01-13 19:25:32,544 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:25:32] "GET /api/user/info?_t=1768303532525 HTTP/1.1" 200 - +2026-01-13 19:25:32,596 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:25:32] "GET /api/market/types?_t=1768303532591 HTTP/1.1" 200 - +2026-01-13 19:25:32,599 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:25:32] "POST /api/market/watchlist/get HTTP/1.1" 403 - +2026-01-13 19:25:33,811 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:25:33] "POST /api/analysis/getHistoryList HTTP/1.1" 403 - +2026-01-13 19:25:35,943 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:25:35] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:25:40,717 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:25:40] "GET /api/strategies/notifications?limit=50&_t=1768303540687 HTTP/1.1" 200 - +2026-01-13 19:26:05,991 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:26:05] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:26:10,708 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:26:10] "GET /api/strategies/notifications?limit=50&_t=1768303570690 HTTP/1.1" 200 - +2026-01-13 19:26:36,082 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:26:36] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:26:40,700 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:26:40] "GET /api/strategies/notifications?limit=50&_t=1768303600686 HTTP/1.1" 200 - +2026-01-13 19:27:06,144 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:27:06] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:27:10,700 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:27:10] "GET /api/strategies/notifications?limit=50&_t=1768303630682 HTTP/1.1" 200 - +2026-01-13 19:27:36,194 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:27:36] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:27:40,701 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:27:40] "GET /api/strategies/notifications?limit=50&_t=1768303660682 HTTP/1.1" 200 - +2026-01-13 19:28:06,245 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:28:06] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:28:10,706 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:28:10] "GET /api/strategies/notifications?limit=50&_t=1768303690684 HTTP/1.1" 200 - +2026-01-13 19:28:36,311 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:28:36] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:28:40,703 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:28:40] "GET /api/strategies/notifications?limit=50&_t=1768303720685 HTTP/1.1" 200 - +2026-01-13 19:29:06,363 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:29:06] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:29:10,709 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:29:10] "GET /api/strategies/notifications?limit=50&_t=1768303750686 HTTP/1.1" 200 - +2026-01-13 19:29:16,995 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:29:16] "POST /api/market/symbols/hot HTTP/1.1" 403 - +2026-01-13 19:29:36,430 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:29:36] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:29:40,704 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:29:40] "GET /api/strategies/notifications?limit=50&_t=1768303780687 HTTP/1.1" 200 - +2026-01-13 19:30:06,496 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:30:06] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:30:10,708 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:30:10] "GET /api/strategies/notifications?limit=50&_t=1768303810688 HTTP/1.1" 200 - +2026-01-13 19:30:36,547 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:30:36] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:30:40,710 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:30:40] "GET /api/strategies/notifications?limit=50&_t=1768303840690 HTTP/1.1" 200 - +2026-01-13 19:31:06,607 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:31:06] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:31:10,710 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:31:10] "GET /api/strategies/notifications?limit=50&_t=1768303870690 HTTP/1.1" 200 - +2026-01-13 19:31:36,669 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:31:36] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:31:40,705 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:31:40] "GET /api/strategies/notifications?limit=50&_t=1768303900681 HTTP/1.1" 200 - +2026-01-13 19:32:06,733 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:32:06] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:32:10,700 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:32:10] "GET /api/strategies/notifications?limit=50&_t=1768303930682 HTTP/1.1" 200 - +2026-01-13 19:32:36,780 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:32:36] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:32:40,704 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:32:40] "GET /api/strategies/notifications?limit=50&_t=1768303960685 HTTP/1.1" 200 - +2026-01-13 19:33:06,841 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:33:06] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:33:10,704 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:33:10] "GET /api/strategies/notifications?limit=50&_t=1768303990690 HTTP/1.1" 200 - +2026-01-13 19:33:36,892 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:33:36] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:33:40,700 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:33:40] "GET /api/strategies/notifications?limit=50&_t=1768304020682 HTTP/1.1" 200 - +2026-01-13 19:34:06,947 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:34:06] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:34:10,705 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:34:10] "GET /api/strategies/notifications?limit=50&_t=1768304050680 HTTP/1.1" 200 - +2026-01-13 19:34:37,010 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:34:37] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:34:40,699 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:34:40] "GET /api/strategies/notifications?limit=50&_t=1768304080681 HTTP/1.1" 200 - +2026-01-13 19:35:07,063 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:35:07] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:35:10,700 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:35:10] "GET /api/strategies/notifications?limit=50&_t=1768304110682 HTTP/1.1" 200 - +2026-01-13 19:35:37,130 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:35:37] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:35:40,706 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:35:40] "GET /api/strategies/notifications?limit=50&_t=1768304140684 HTTP/1.1" 200 - +2026-01-13 19:36:07,203 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:36:07] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:36:10,712 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:36:10] "GET /api/strategies/notifications?limit=50&_t=1768304170684 HTTP/1.1" 200 - +2026-01-13 19:36:37,256 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:36:37] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:36:40,708 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:36:40] "GET /api/strategies/notifications?limit=50&_t=1768304200688 HTTP/1.1" 200 - +2026-01-13 19:37:07,313 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:37:07] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:37:10,707 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:37:10] "GET /api/strategies/notifications?limit=50&_t=1768304230684 HTTP/1.1" 200 - +2026-01-13 19:37:37,366 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:37:37] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:37:40,700 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:37:40] "GET /api/strategies/notifications?limit=50&_t=1768304260680 HTTP/1.1" 200 - +2026-01-13 19:38:07,425 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:38:07] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:38:10,721 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:38:10] "GET /api/strategies/notifications?limit=50&_t=1768304290686 HTTP/1.1" 200 - +2026-01-13 19:38:27,894 - app - INFO - !!! SYSTEM STARTING IN DEMO MODE (READ-ONLY) !!! +2026-01-13 19:38:28,873 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-13 19:38:28,874 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-13 19:38:28,875 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-13 19:38:28,875 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-13 19:38:28,926 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-13 19:38:28,929 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-13 19:38:29,239 - app.services.strategy - INFO - Found 1 running strategies: [{'id': 14, 'strategy_type': 'IndicatorStrategy'}] +2026-01-13 19:38:29,240 - app - INFO - Restoring 1 running strategies... +2026-01-13 19:38:29,241 - app.services.trading_executor - INFO - Strategy 14 loop starting +2026-01-13 19:38:29,241 - app.services.trading_executor - INFO - Strategy 14 started +2026-01-13 19:38:29,242 - app - INFO - [OK] IndicatorStrategy 14 restored +2026-01-13 19:38:29,242 - app - INFO - Strategy restore completed: 1/1 restored +2026-01-13 19:38:29,251 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://172.18.0.2:5000 +2026-01-13 19:38:29,251 - werkzeug - INFO - Press CTRL+C to quit +2026-01-13 19:38:29,252 - app.services.trading_executor - INFO - Strategy 14 derivatives trading; normalize market_type to: swap +2026-01-13 19:38:30,143 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:38:30] "GET /api/user/info?_t=1768304310137 HTTP/1.1" 200 - +2026-01-13 19:38:30,145 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:38:30] "POST /api/market/watchlist/get HTTP/1.1" 403 - +2026-01-13 19:38:30,145 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:38:30] "GET /api/market/config?_t=1768304310137 HTTP/1.1" 200 - +2026-01-13 19:38:30,170 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:38:30] "GET /api/strategies/notifications?limit=50&_t=1768304310137 HTTP/1.1" 200 - +2026-01-13 19:38:30,176 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:38:30] "POST /api/market/watchlist/get HTTP/1.1" 403 - +2026-01-13 19:38:30,181 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:38:30] "GET /api/market/types?_t=1768304310176 HTTP/1.1" 200 - +2026-01-13 19:38:31,068 - app.services.trading_executor - INFO - ็ญ–็•ฅ 14 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-13 19:38:31,092 - app.services.trading_executor - INFO - Strategy 14 initialized; pending_signals=0 +2026-01-13 19:38:53,232 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:38:53] "GET /api/user/info?_t=1768304333220 HTTP/1.1" 200 - +2026-01-13 19:38:53,233 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:38:53] "GET /api/market/config?_t=1768304333220 HTTP/1.1" 200 - +2026-01-13 19:38:53,234 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:38:53] "POST /api/market/watchlist/get HTTP/1.1" 403 - +2026-01-13 19:38:53,253 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:38:53] "GET /api/strategies/notifications?limit=50&_t=1768304333220 HTTP/1.1" 200 - +2026-01-13 19:38:53,263 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:38:53] "POST /api/market/watchlist/get HTTP/1.1" 403 - +2026-01-13 19:38:53,264 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:38:53] "GET /api/market/types?_t=1768304333258 HTTP/1.1" 200 - +2026-01-13 19:38:57,700 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:38:57] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:39:23,208 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:39:23] "GET /api/strategies/notifications?limit=50&_t=1768304363191 HTTP/1.1" 200 - +2026-01-13 19:39:27,777 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:39:27] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:39:53,200 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:39:53] "GET /api/strategies/notifications?limit=50&_t=1768304393188 HTTP/1.1" 200 - +2026-01-13 19:39:57,823 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:39:57] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:40:23,800 - app - INFO - !!! SYSTEM STARTING IN DEMO MODE (READ-ONLY) !!! +2026-01-13 19:40:24,616 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-13 19:40:24,617 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-13 19:40:24,621 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-13 19:40:24,621 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-13 19:40:24,687 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-13 19:40:24,687 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-13 19:40:24,877 - app.services.strategy - INFO - Found 1 running strategies: [{'id': 14, 'strategy_type': 'IndicatorStrategy'}] +2026-01-13 19:40:24,879 - app - INFO - Restoring 1 running strategies... +2026-01-13 19:40:24,880 - app.services.trading_executor - INFO - Strategy 14 loop starting +2026-01-13 19:40:24,880 - app.services.trading_executor - INFO - Strategy 14 started +2026-01-13 19:40:24,881 - app - INFO - [OK] IndicatorStrategy 14 restored +2026-01-13 19:40:24,881 - app - INFO - Strategy restore completed: 1/1 restored +2026-01-13 19:40:24,887 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://172.18.0.2:5000 +2026-01-13 19:40:24,888 - werkzeug - INFO - Press CTRL+C to quit +2026-01-13 19:40:24,889 - app.services.trading_executor - INFO - Strategy 14 derivatives trading; normalize market_type to: swap +2026-01-13 19:40:26,538 - app.services.trading_executor - INFO - ็ญ–็•ฅ 14 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-13 19:40:26,552 - app.services.trading_executor - INFO - Strategy 14 initialized; pending_signals=0 +2026-01-13 19:40:37,498 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:40:37] "GET /api/market/config?_t=1768304437487 HTTP/1.1" 200 - +2026-01-13 19:40:37,500 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:40:37] "GET /api/user/info?_t=1768304437487 HTTP/1.1" 200 - +2026-01-13 19:40:37,513 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:40:37] "GET /api/market/watchlist/get?userid=1&_t=1768304437487 HTTP/1.1" 200 - +2026-01-13 19:40:37,519 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:40:37] "GET /api/strategies/notifications?limit=50&_t=1768304437487 HTTP/1.1" 200 - +2026-01-13 19:40:37,537 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:40:37] "GET /api/market/types?_t=1768304437529 HTTP/1.1" 200 - +2026-01-13 19:40:37,548 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:40:37] "GET /api/market/watchlist/get?userid=1&_t=1768304437531 HTTP/1.1" 200 - +2026-01-13 19:40:37,590 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:40:37] "POST /api/market/watchlist/prices HTTP/1.1" 403 - +2026-01-13 19:40:37,671 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:40:37] "POST /api/market/watchlist/prices HTTP/1.1" 403 - +2026-01-13 19:40:53,685 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:40:53] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:40:56,953 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:40:56] "GET /api/analysis/getHistoryList?userid=1&page=1&pagesize=20&_t=1768304456915 HTTP/1.1" 200 - +2026-01-13 19:40:57,928 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:40:57] "GET /api/analysis/getTaskStatus?task_id=12&_t=1768304457914 HTTP/1.1" 200 - +2026-01-13 19:40:59,885 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:40:59] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768304459850 HTTP/1.1" 200 - +2026-01-13 19:40:59,887 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:40:59] "GET /api/dashboard/summary?_t=1768304459850 HTTP/1.1" 200 - +2026-01-13 19:40:59,894 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:40:59] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768304459850 HTTP/1.1" 200 - +2026-01-13 19:41:04,862 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:41:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768304464833 HTTP/1.1" 200 - +2026-01-13 19:41:05,529 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:41:05] "GET /api/dashboard/pendingOrders?page=2&pageSize=20&_t=1768304465504 HTTP/1.1" 200 - +2026-01-13 19:41:07,480 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:41:07] "GET /api/strategies/notifications?limit=50&_t=1768304467461 HTTP/1.1" 200 - +2026-01-13 19:41:09,857 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:41:09] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768304469832 HTTP/1.1" 200 - +2026-01-13 19:41:14,861 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:41:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768304474832 HTTP/1.1" 200 - +2026-01-13 19:41:16,563 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:41:16] "GET /api/strategies?_t=1768304476537 HTTP/1.1" 200 - +2026-01-13 19:41:18,418 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:41:18] "GET /api/user/info?_t=1768304478338 HTTP/1.1" 200 - +2026-01-13 19:41:18,422 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:41:18] "GET /api/market/config?_t=1768304478338 HTTP/1.1" 200 - +2026-01-13 19:41:18,443 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:41:18] "GET /api/market/watchlist/get?userid=1&_t=1768304478338 HTTP/1.1" 200 - +2026-01-13 19:41:18,480 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:41:18] "GET /api/market/types?_t=1768304478470 HTTP/1.1" 200 - +2026-01-13 19:41:18,488 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:41:18] "GET /api/market/watchlist/get?userid=1&_t=1768304478465 HTTP/1.1" 200 - +2026-01-13 19:41:18,544 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:41:18] "POST /api/market/watchlist/prices HTTP/1.1" 403 - +2026-01-13 19:41:18,580 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:41:18] "POST /api/market/watchlist/prices HTTP/1.1" 403 - +2026-01-13 19:41:19,055 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:41:19] "GET /api/user/info?_t=1768304479044 HTTP/1.1" 200 - +2026-01-13 19:41:19,057 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:41:19] "GET /api/market/types?_t=1768304479044 HTTP/1.1" 200 - +2026-01-13 19:41:19,066 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:41:19] "GET /api/market/watchlist/get?userid=1&_t=1768304479044 HTTP/1.1" 200 - +2026-01-13 19:41:19,068 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:41:19] "GET /api/indicator/getIndicators?userid=1&_t=1768304479044 HTTP/1.1" 200 - +2026-01-13 19:41:19,095 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:41:19] "GET /api/market/watchlist/get?userid=1&_t=1768304479076 HTTP/1.1" 200 - +2026-01-13 19:41:19,096 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:41:19] "GET /api/indicator/getIndicators?userid=1&_t=1768304479076 HTTP/1.1" 200 - +2026-01-13 19:41:19,099 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:41:19] "POST /api/indicator/kline HTTP/1.1" 403 - +2026-01-13 19:41:20,936 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:41:20] "GET /api/user/info?_t=1768304480915 HTTP/1.1" 200 - +2026-01-13 19:41:20,937 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:41:20] "GET /api/market/config?_t=1768304480915 HTTP/1.1" 200 - +2026-01-13 19:41:20,958 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:41:20] "GET /api/market/watchlist/get?userid=1&_t=1768304480915 HTTP/1.1" 200 - +2026-01-13 19:41:21,051 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:41:21] "GET /api/market/types?_t=1768304481046 HTTP/1.1" 200 - +2026-01-13 19:41:21,062 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:41:21] "GET /api/market/watchlist/get?userid=1&_t=1768304481042 HTTP/1.1" 200 - +2026-01-13 19:41:21,105 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:41:21] "POST /api/market/watchlist/prices HTTP/1.1" 403 - +2026-01-13 19:41:21,345 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:41:21] "POST /api/market/watchlist/prices HTTP/1.1" 403 - +2026-01-13 19:41:23,745 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:41:23] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:41:26,300 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:41:26] "POST /api/market/symbols/hot HTTP/1.1" 403 - +2026-01-13 19:41:37,490 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:41:37] "GET /api/strategies/notifications?limit=50&_t=1768304497463 HTTP/1.1" 200 - +2026-01-13 19:41:39,074 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:41:39] "POST /api/market/symbols/hot HTTP/1.1" 403 - +2026-01-13 19:41:40,545 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:41:40] "POST /api/market/symbols/hot HTTP/1.1" 403 - +2026-01-13 19:41:48,637 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:41:48] "GET /api/user/info?_t=1768304508627 HTTP/1.1" 200 - +2026-01-13 19:41:48,639 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:41:48] "GET /api/market/types?_t=1768304508627 HTTP/1.1" 200 - +2026-01-13 19:41:48,652 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:41:48] "GET /api/market/watchlist/get?userid=1&_t=1768304508627 HTTP/1.1" 200 - +2026-01-13 19:41:48,655 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:41:48] "GET /api/indicator/getIndicators?userid=1&_t=1768304508627 HTTP/1.1" 200 - +2026-01-13 19:41:48,674 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:41:48] "GET /api/market/watchlist/get?userid=1&_t=1768304508655 HTTP/1.1" 200 - +2026-01-13 19:41:48,675 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:41:48] "GET /api/indicator/getIndicators?userid=1&_t=1768304508655 HTTP/1.1" 200 - +2026-01-13 19:41:48,687 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:41:48] "POST /api/indicator/kline HTTP/1.1" 403 - +2026-01-13 19:41:53,790 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:41:53] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:41:59,047 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:41:59] "POST /api/indicator/kline HTTP/1.1" 403 - +2026-01-13 19:42:04,546 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:42:04] "POST /api/indicator/verifyCode HTTP/1.1" 403 - +2026-01-13 19:42:07,481 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:42:07] "GET /api/strategies/notifications?limit=50&_t=1768304527468 HTTP/1.1" 200 - +2026-01-13 19:42:14,259 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:42:14] "POST /api/indicator/saveIndicator HTTP/1.1" 403 - +2026-01-13 19:42:18,558 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:42:18] "POST /api/indicator/aiGenerate HTTP/1.1" 403 - +2026-01-13 19:42:23,829 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:42:23] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:42:27,361 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:42:27] "POST /api/indicator/aiGenerate HTTP/1.1" 403 - +2026-01-13 19:42:37,083 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:42:37] "POST /api/indicator/backtest/history HTTP/1.1" 403 - +2026-01-13 19:42:37,470 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:42:37] "GET /api/strategies/notifications?limit=50&_t=1768304557460 HTTP/1.1" 200 - +2026-01-13 19:42:53,884 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:42:53] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:42:56,056 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:42:56] "POST /api/indicator/backtest HTTP/1.1" 403 - +2026-01-13 19:43:02,515 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:43:02] "POST /api/indicator/backtest HTTP/1.1" 403 - +2026-01-13 19:43:07,480 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:43:07] "GET /api/strategies/notifications?limit=50&_t=1768304587464 HTTP/1.1" 200 - +2026-01-13 19:43:08,749 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:43:08] "GET /api/strategies?_t=1768304588725 HTTP/1.1" 200 - +2026-01-13 19:43:09,948 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:43:09] "GET /api/strategies/positions?id=14&_t=1768304589906 HTTP/1.1" 200 - +2026-01-13 19:43:09,958 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:43:09] "GET /api/strategies/equityCurve?id=14&_t=1768304589903 HTTP/1.1" 200 - +2026-01-13 19:43:09,959 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:43:09] "GET /api/strategies/equityCurve?id=14&_t=1768304589903 HTTP/1.1" 200 - +2026-01-13 19:43:11,816 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:43:11] "POST /api/strategies/stop?id=14 HTTP/1.1" 403 - +2026-01-13 19:43:14,931 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:43:14] "GET /api/strategies/positions?id=14&_t=1768304594906 HTTP/1.1" 200 - +2026-01-13 19:43:17,232 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:43:17] "DELETE /api/strategies/delete?id=14 HTTP/1.1" 403 - +2026-01-13 19:43:18,810 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:43:18] "GET /api/strategies/positions?id=13&_t=1768304598793 HTTP/1.1" 200 - +2026-01-13 19:43:18,814 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:43:18] "GET /api/strategies/equityCurve?id=13&_t=1768304598789 HTTP/1.1" 200 - +2026-01-13 19:43:18,814 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:43:18] "GET /api/strategies/equityCurve?id=13&_t=1768304598789 HTTP/1.1" 200 - +2026-01-13 19:43:20,346 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:43:20] "POST /api/strategies/start?id=13 HTTP/1.1" 403 - +2026-01-13 19:43:22,733 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:43:22] "GET /api/credentials/list?user_id=1&_t=1768304602712 HTTP/1.1" 200 - +2026-01-13 19:43:22,733 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:43:22] "GET /api/market/watchlist/get?userid=1&_t=1768304602712 HTTP/1.1" 200 - +2026-01-13 19:43:22,734 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:43:22] "GET /api/indicator/getIndicators?userid=1&_t=1768304602712 HTTP/1.1" 200 - +2026-01-13 19:43:23,825 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:43:23] "GET /api/strategies/positions?id=13&_t=1768304603803 HTTP/1.1" 200 - +2026-01-13 19:43:23,931 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:43:23] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:43:28,498 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:43:28] "PUT /api/strategies/update?id=13 HTTP/1.1" 403 - +2026-01-13 19:43:28,806 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:43:28] "GET /api/strategies/positions?id=13&_t=1768304608792 HTTP/1.1" 200 - +2026-01-13 19:43:33,808 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:43:33] "GET /api/strategies/positions?id=13&_t=1768304613789 HTTP/1.1" 200 - +2026-01-13 19:43:37,483 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:43:37] "GET /api/strategies/notifications?limit=50&_t=1768304617460 HTTP/1.1" 200 - +2026-01-13 19:43:38,809 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:43:38] "GET /api/strategies/positions?id=13&_t=1768304618790 HTTP/1.1" 200 - +2026-01-13 19:43:38,974 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:43:38] "GET /api/strategies/positions?id=12&_t=1768304618962 HTTP/1.1" 200 - +2026-01-13 19:43:38,977 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:43:38] "GET /api/strategies/equityCurve?id=12&_t=1768304618959 HTTP/1.1" 200 - +2026-01-13 19:43:38,977 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:43:38] "GET /api/strategies/equityCurve?id=12&_t=1768304618959 HTTP/1.1" 200 - +2026-01-13 19:43:41,421 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:43:41] "GET /api/credentials/list?user_id=1&_t=1768304621402 HTTP/1.1" 200 - +2026-01-13 19:43:41,422 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:43:41] "GET /api/market/watchlist/get?userid=1&_t=1768304621402 HTTP/1.1" 200 - +2026-01-13 19:43:41,424 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:43:41] "GET /api/indicator/getIndicators?userid=1&_t=1768304621402 HTTP/1.1" 200 - +2026-01-13 19:43:43,967 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:43:43] "GET /api/strategies/positions?id=12&_t=1768304623941 HTTP/1.1" 200 - +2026-01-13 19:43:48,959 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:43:48] "GET /api/strategies/positions?id=12&_t=1768304628942 HTTP/1.1" 200 - +2026-01-13 19:43:49,972 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:43:49] "GET /api/credentials/list?user_id=1&_t=1768304629955 HTTP/1.1" 200 - +2026-01-13 19:43:49,973 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:43:49] "GET /api/market/watchlist/get?userid=1&_t=1768304629955 HTTP/1.1" 200 - +2026-01-13 19:43:49,974 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:43:49] "GET /api/indicator/getIndicators?userid=1&_t=1768304629955 HTTP/1.1" 200 - +2026-01-13 19:43:53,974 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:43:53] "GET /api/strategies/positions?id=12&_t=1768304633950 HTTP/1.1" 200 - +2026-01-13 19:43:53,999 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:43:53] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:43:58,960 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:43:58] "GET /api/strategies/positions?id=12&_t=1768304638944 HTTP/1.1" 200 - +2026-01-13 19:44:03,429 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:44:03] "PUT /api/strategies/update?id=11 HTTP/1.1" 403 - +2026-01-13 19:44:03,953 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:44:03] "GET /api/strategies/positions?id=12&_t=1768304643942 HTTP/1.1" 200 - +2026-01-13 19:44:07,482 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:44:07] "GET /api/strategies/notifications?limit=50&_t=1768304647467 HTTP/1.1" 200 - +2026-01-13 19:44:08,600 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:44:08] "GET /api/market/types?_t=1768304648592 HTTP/1.1" 200 - +2026-01-13 19:44:08,615 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:44:08] "GET /api/portfolio/monitors?_t=1768304648592 HTTP/1.1" 200 - +2026-01-13 19:44:08,622 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:44:08] "GET /api/portfolio/alerts?_t=1768304648592 HTTP/1.1" 200 - +2026-01-13 19:44:08,627 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:44:08] "GET /api/portfolio/groups?_t=1768304648592 HTTP/1.1" 200 - +2026-01-13 19:44:08,748 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 19:44:11,599 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:44:11] "GET /api/portfolio/summary?_t=1768304648592 HTTP/1.1" 200 - +2026-01-13 19:44:13,784 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:44:13] "GET /api/portfolio/positions?_t=1768304648592 HTTP/1.1" 200 - +2026-01-13 19:44:16,628 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:44:16] "POST /api/portfolio/monitors/1/run HTTP/1.1" 403 - +2026-01-13 19:44:22,621 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:44:22] "PUT /api/portfolio/monitors/1 HTTP/1.1" 403 - +2026-01-13 19:44:24,055 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:44:24] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:44:32,168 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:44:32] "POST /api/portfolio/monitors HTTP/1.1" 403 - +2026-01-13 19:44:37,481 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:44:37] "GET /api/strategies/notifications?limit=50&_t=1768304677462 HTTP/1.1" 200 - +2026-01-13 19:44:41,312 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:44:41] "GET /api/portfolio/positions?refresh=1&_t=1768304678593 HTTP/1.1" 200 - +2026-01-13 19:44:43,985 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:44:43] "GET /api/portfolio/summary?refresh=1&_t=1768304678593 HTTP/1.1" 200 - +2026-01-13 19:44:47,441 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:44:47] "PUT /api/portfolio/positions/9 HTTP/1.1" 403 - +2026-01-13 19:44:54,109 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:44:54] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:44:56,035 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:44:56] "POST /api/portfolio/alerts HTTP/1.1" 403 - +2026-01-13 19:45:06,727 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:45:06] "PUT /api/portfolio/positions/9 HTTP/1.1" 403 - +2026-01-13 19:45:07,478 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:45:07] "GET /api/strategies/notifications?limit=50&_t=1768304707460 HTTP/1.1" 200 - +2026-01-13 19:45:11,320 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:45:11] "GET /api/portfolio/summary?refresh=1&_t=1768304708605 HTTP/1.1" 200 - +2026-01-13 19:45:14,015 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:45:14] "GET /api/portfolio/positions?refresh=1&_t=1768304708605 HTTP/1.1" 200 - +2026-01-13 19:45:15,171 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:45:15] "GET /api/settings/schema?_t=1768304715152 HTTP/1.1" 200 - +2026-01-13 19:45:15,178 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:45:15] "GET /api/settings/values?_t=1768304715152 HTTP/1.1" 200 - +2026-01-13 19:45:23,847 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:45:23] "GET /api/settings/values?_t=1768304723834 HTTP/1.1" 200 - +2026-01-13 19:45:23,872 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:45:23] "GET /api/settings/schema?_t=1768304723834 HTTP/1.1" 200 - +2026-01-13 19:45:24,255 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:45:24] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:45:29,654 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:45:29] "POST /api/settings/save HTTP/1.1" 403 - +2026-01-13 19:45:37,480 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:45:37] "GET /api/strategies/notifications?limit=50&_t=1768304737460 HTTP/1.1" 200 - +2026-01-13 19:45:38,042 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:45:38] "GET /api/dashboard/summary?_t=1768304738010 HTTP/1.1" 200 - +2026-01-13 19:45:38,043 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:45:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768304738010 HTTP/1.1" 200 - +2026-01-13 19:45:38,049 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:45:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768304738010 HTTP/1.1" 200 - +2026-01-13 19:45:43,020 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:45:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768304742997 HTTP/1.1" 200 - +2026-01-13 19:45:48,012 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:45:48] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768304747993 HTTP/1.1" 200 - +2026-01-13 19:45:53,017 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:45:53] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768304752997 HTTP/1.1" 200 - +2026-01-13 19:45:54,325 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:45:54] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:45:58,016 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:45:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768304757997 HTTP/1.1" 200 - +2026-01-13 19:46:03,036 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:46:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768304762992 HTTP/1.1" 200 - +2026-01-13 19:46:07,487 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:46:07] "GET /api/strategies/notifications?limit=50&_t=1768304767470 HTTP/1.1" 200 - +2026-01-13 19:46:08,023 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:46:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768304767999 HTTP/1.1" 200 - +2026-01-13 19:46:13,025 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:46:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768304772985 HTTP/1.1" 200 - +2026-01-13 19:46:18,015 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:46:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768304777990 HTTP/1.1" 200 - +2026-01-13 19:46:23,017 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:46:23] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768304782989 HTTP/1.1" 200 - +2026-01-13 19:46:24,376 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:46:24] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:46:28,017 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:46:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768304787996 HTTP/1.1" 200 - +2026-01-13 19:46:31,262 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:46:31] "GET /api/market/types?_t=1768304791257 HTTP/1.1" 200 - +2026-01-13 19:46:31,264 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:46:31] "GET /api/user/info?_t=1768304791257 HTTP/1.1" 200 - +2026-01-13 19:46:31,287 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:46:31] "GET /api/market/watchlist/get?userid=1&_t=1768304791257 HTTP/1.1" 200 - +2026-01-13 19:46:31,313 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:46:31] "GET /api/indicator/getIndicators?userid=1&_t=1768304791257 HTTP/1.1" 200 - +2026-01-13 19:46:31,333 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:46:31] "GET /api/market/watchlist/get?userid=1&_t=1768304791304 HTTP/1.1" 200 - +2026-01-13 19:46:31,335 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:46:31] "GET /api/indicator/getIndicators?userid=1&_t=1768304791304 HTTP/1.1" 200 - +2026-01-13 19:46:31,346 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:46:31] "POST /api/indicator/kline HTTP/1.1" 403 - +2026-01-13 19:46:36,677 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:46:36] "POST /api/indicator/backtest/history HTTP/1.1" 403 - +2026-01-13 19:46:37,475 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:46:37] "GET /api/strategies/notifications?limit=50&_t=1768304797459 HTTP/1.1" 200 - +2026-01-13 19:46:54,422 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:46:54] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:47:07,475 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:47:07] "GET /api/strategies/notifications?limit=50&_t=1768304827460 HTTP/1.1" 200 - +2026-01-13 19:47:24,472 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:47:24] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:47:37,484 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:47:37] "GET /api/strategies/notifications?limit=50&_t=1768304857467 HTTP/1.1" 200 - +2026-01-13 19:47:54,516 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:47:54] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:48:07,519 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:48:07] "GET /api/strategies/notifications?limit=50&_t=1768304887465 HTTP/1.1" 200 - +2026-01-13 19:48:24,577 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:48:24] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:48:37,482 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:48:37] "GET /api/strategies/notifications?limit=50&_t=1768304917468 HTTP/1.1" 200 - +2026-01-13 19:48:54,646 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:48:54] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:49:07,493 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:49:07] "GET /api/strategies/notifications?limit=50&_t=1768304947476 HTTP/1.1" 200 - +2026-01-13 19:49:24,694 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:49:24] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:49:37,503 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:49:37] "GET /api/strategies/notifications?limit=50&_t=1768304977473 HTTP/1.1" 200 - +2026-01-13 19:49:45,121 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:49:45] "GET /api/dashboard/summary?_t=1768304985084 HTTP/1.1" 200 - +2026-01-13 19:49:45,123 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:49:45] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768304985084 HTTP/1.1" 200 - +2026-01-13 19:49:45,130 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:49:45] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768304985084 HTTP/1.1" 200 - +2026-01-13 19:49:46,620 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:49:46] "GET /api/user/info?_t=1768304986383 HTTP/1.1" 200 - +2026-01-13 19:49:46,621 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:49:46] "GET /api/market/config?_t=1768304986383 HTTP/1.1" 200 - +2026-01-13 19:49:46,638 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:49:46] "GET /api/market/watchlist/get?userid=1&_t=1768304986383 HTTP/1.1" 200 - +2026-01-13 19:49:46,698 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:49:46] "GET /api/market/types?_t=1768304986691 HTTP/1.1" 200 - +2026-01-13 19:49:46,701 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:49:46] "GET /api/market/watchlist/get?userid=1&_t=1768304986680 HTTP/1.1" 200 - +2026-01-13 19:49:46,755 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:49:46] "POST /api/market/watchlist/prices HTTP/1.1" 403 - +2026-01-13 19:49:46,801 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:49:46] "POST /api/market/watchlist/prices HTTP/1.1" 403 - +2026-01-13 19:49:51,754 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:49:51] "POST /api/analysis/multiAnalysis HTTP/1.1" 403 - +2026-01-13 19:49:54,820 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:49:54] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:50:07,483 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:50:07] "GET /api/strategies/notifications?limit=50&_t=1768305007461 HTTP/1.1" 200 - +2026-01-13 19:50:16,415 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:50:16] "POST /api/market/watchlist/prices HTTP/1.1" 403 - +2026-01-13 19:50:24,884 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:50:24] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:50:37,520 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:50:37] "GET /api/strategies/notifications?limit=50&_t=1768305037467 HTTP/1.1" 200 - +2026-01-13 19:50:46,370 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:50:46] "POST /api/market/watchlist/prices HTTP/1.1" 403 - +2026-01-13 19:50:54,940 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:50:54] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:51:07,477 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:51:07] "GET /api/strategies/notifications?limit=50&_t=1768305067462 HTTP/1.1" 200 - +2026-01-13 19:51:16,411 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:51:16] "POST /api/market/watchlist/prices HTTP/1.1" 403 - +2026-01-13 19:51:25,026 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:51:25] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:51:37,499 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:51:37] "GET /api/strategies/notifications?limit=50&_t=1768305097464 HTTP/1.1" 200 - +2026-01-13 19:51:46,403 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:51:46] "POST /api/market/watchlist/prices HTTP/1.1" 403 - +2026-01-13 19:51:55,095 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:51:55] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:52:07,494 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:52:07] "GET /api/strategies/notifications?limit=50&_t=1768305127469 HTTP/1.1" 200 - +2026-01-13 19:52:16,461 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:52:16] "POST /api/market/watchlist/prices HTTP/1.1" 403 - +2026-01-13 19:52:25,162 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:52:25] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:52:37,488 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:52:37] "GET /api/strategies/notifications?limit=50&_t=1768305157470 HTTP/1.1" 200 - +2026-01-13 19:52:46,405 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:52:46] "POST /api/market/watchlist/prices HTTP/1.1" 403 - +2026-01-13 19:52:55,233 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:52:55] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:53:07,481 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:53:07] "GET /api/strategies/notifications?limit=50&_t=1768305187463 HTTP/1.1" 200 - +2026-01-13 19:53:16,408 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:53:16] "POST /api/market/watchlist/prices HTTP/1.1" 403 - +2026-01-13 19:53:25,317 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:53:25] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:53:37,497 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:53:37] "GET /api/strategies/notifications?limit=50&_t=1768305217467 HTTP/1.1" 200 - +2026-01-13 19:53:46,406 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:53:46] "POST /api/market/watchlist/prices HTTP/1.1" 403 - +2026-01-13 19:53:55,393 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:53:55] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:54:07,486 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:54:07] "GET /api/strategies/notifications?limit=50&_t=1768305247470 HTTP/1.1" 200 - +2026-01-13 19:54:16,404 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:54:16] "POST /api/market/watchlist/prices HTTP/1.1" 403 - +2026-01-13 19:54:25,467 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:54:25] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:54:37,489 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:54:37] "GET /api/strategies/notifications?limit=50&_t=1768305277472 HTTP/1.1" 200 - +2026-01-13 19:54:46,407 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:54:46] "POST /api/market/watchlist/prices HTTP/1.1" 403 - +2026-01-13 19:54:55,520 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:54:55] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:55:07,478 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:55:07] "GET /api/strategies/notifications?limit=50&_t=1768305307459 HTTP/1.1" 200 - +2026-01-13 19:55:16,402 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:55:16] "POST /api/market/watchlist/prices HTTP/1.1" 403 - +2026-01-13 19:55:25,575 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:55:25] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:55:37,484 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:55:37] "GET /api/strategies/notifications?limit=50&_t=1768305337462 HTTP/1.1" 200 - +2026-01-13 19:55:46,401 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:55:46] "POST /api/market/watchlist/prices HTTP/1.1" 403 - +2026-01-13 19:55:55,627 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:55:55] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:56:07,490 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:56:07] "GET /api/strategies/notifications?limit=50&_t=1768305367461 HTTP/1.1" 200 - +2026-01-13 19:56:16,406 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:56:16] "POST /api/market/watchlist/prices HTTP/1.1" 403 - +2026-01-13 19:56:25,706 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:56:25] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:56:37,481 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:56:37] "GET /api/strategies/notifications?limit=50&_t=1768305397462 HTTP/1.1" 200 - +2026-01-13 19:56:42,121 - app - INFO - !!! SYSTEM STARTING IN DEMO MODE (READ-ONLY) !!! +2026-01-13 19:56:43,253 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-13 19:56:43,254 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-13 19:56:43,259 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-13 19:56:43,259 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-13 19:56:43,321 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-13 19:56:43,323 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-13 19:56:43,639 - app.services.strategy - INFO - Found 1 running strategies: [{'id': 14, 'strategy_type': 'IndicatorStrategy'}] +2026-01-13 19:56:43,639 - app - INFO - Restoring 1 running strategies... +2026-01-13 19:56:43,640 - app.services.trading_executor - INFO - Strategy 14 loop starting +2026-01-13 19:56:43,640 - app.services.trading_executor - INFO - Strategy 14 started +2026-01-13 19:56:43,640 - app - INFO - [OK] IndicatorStrategy 14 restored +2026-01-13 19:56:43,641 - app - INFO - Strategy restore completed: 1/1 restored +2026-01-13 19:56:43,650 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://172.18.0.2:5000 +2026-01-13 19:56:43,651 - werkzeug - INFO - Press CTRL+C to quit +2026-01-13 19:56:43,651 - app.services.trading_executor - INFO - Strategy 14 derivatives trading; normalize market_type to: swap +2026-01-13 19:56:45,356 - app.services.trading_executor - INFO - ็ญ–็•ฅ 14 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-13 19:56:45,370 - app.services.trading_executor - INFO - Strategy 14 initialized; pending_signals=0 +2026-01-13 19:56:46,366 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:56:46] "POST /api/market/watchlist/prices HTTP/1.1" 403 - +2026-01-13 19:57:02,483 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:57:02] "GET /api/user/info?_t=1768305422478 HTTP/1.1" 200 - +2026-01-13 19:57:02,485 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:57:02] "GET /api/market/config?_t=1768305422478 HTTP/1.1" 200 - +2026-01-13 19:57:02,498 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:57:02] "GET /api/market/watchlist/get?userid=1&_t=1768305422478 HTTP/1.1" 200 - +2026-01-13 19:57:02,507 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:57:02] "GET /api/strategies/notifications?limit=50&_t=1768305422478 HTTP/1.1" 200 - +2026-01-13 19:57:02,551 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:57:02] "GET /api/market/types?_t=1768305422534 HTTP/1.1" 200 - +2026-01-13 19:57:02,587 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:57:02] "GET /api/market/watchlist/get?userid=1&_t=1768305422521 HTTP/1.1" 200 - +2026-01-13 19:57:02,768 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 19:57:02,769 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 19:57:02,769 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 19:57:02,770 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 19:57:02,770 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 19:57:02,771 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 19:57:02,772 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 19:57:04,050 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:57:04] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AVGO"},{"market":"Crypto","symbol":"ETH/USDT"},{"market":"Crypto","symbol":"BNB/USDT"},{"market":"AShare","symbol":"600519"},{"market":"Futures","symbol":"SI"},{"market":"Forex","symbol":"XAUUSD"},{"market":"Crypto","symbol":"BTC/USDT"},{"market":"HShare","symbol":"00700"},{"market":"AShare","symbol":"300475"},{"market":"USStock","symbol":"AAPL"},{"market":"AShare","symbol":"000858"}]&_t=1768305422554 HTTP/1.1" 200 - +2026-01-13 19:57:05,410 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:57:05] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AVGO"},{"market":"Crypto","symbol":"ETH/USDT"},{"market":"Crypto","symbol":"BNB/USDT"},{"market":"AShare","symbol":"600519"},{"market":"Futures","symbol":"SI"},{"market":"Forex","symbol":"XAUUSD"},{"market":"Crypto","symbol":"BTC/USDT"},{"market":"HShare","symbol":"00700"},{"market":"AShare","symbol":"300475"},{"market":"USStock","symbol":"AAPL"},{"market":"AShare","symbol":"000858"}]&_t=1768305422608 HTTP/1.1" 200 - +2026-01-13 19:57:06,754 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:57:06] "GET /api/analysis/getHistoryList?userid=1&page=1&pagesize=20&_t=1768305426724 HTTP/1.1" 200 - +2026-01-13 19:57:07,832 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:57:07] "GET /api/analysis/getTaskStatus?task_id=12&_t=1768305427815 HTTP/1.1" 200 - +2026-01-13 19:57:09,112 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:57:09] "GET /api/market/types?_t=1768305429102 HTTP/1.1" 200 - +2026-01-13 19:57:09,113 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:57:09] "GET /api/user/info?_t=1768305429102 HTTP/1.1" 200 - +2026-01-13 19:57:09,125 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:57:09] "GET /api/market/watchlist/get?userid=1&_t=1768305429102 HTTP/1.1" 200 - +2026-01-13 19:57:09,126 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:57:09] "GET /api/indicator/getIndicators?userid=1&_t=1768305429102 HTTP/1.1" 200 - +2026-01-13 19:57:09,158 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:57:09] "GET /api/market/watchlist/get?userid=1&_t=1768305429130 HTTP/1.1" 200 - +2026-01-13 19:57:09,160 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:57:09] "GET /api/indicator/getIndicators?userid=1&_t=1768305429130 HTTP/1.1" 200 - +2026-01-13 19:57:09,176 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=500 +2026-01-13 19:57:09,623 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:57:09] "GET /api/indicator/kline?market=USStock&symbol=AVGO&timeframe=1D&limit=500&_t=1768305429157 HTTP/1.1" 200 - +2026-01-13 19:57:11,839 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:57:11] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:57:12,821 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=30m, limit=500 +2026-01-13 19:57:13,461 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (55633s) +2026-01-13 19:57:13,463 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:57:13] "GET /api/indicator/kline?market=USStock&symbol=AVGO&timeframe=30m&limit=500&_t=1768305432816 HTTP/1.1" 200 - +2026-01-13 19:57:14,766 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=15m, limit=500 +2026-01-13 19:57:15,153 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (54735s) +2026-01-13 19:57:15,155 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:57:15] "GET /api/indicator/kline?market=USStock&symbol=AVGO&timeframe=15m&limit=500&_t=1768305434760 HTTP/1.1" 200 - +2026-01-13 19:57:16,088 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=5m, limit=500 +2026-01-13 19:57:16,537 - app.data_sources.base - WARNING - Warning: AVGO data is delayed (54137s) +2026-01-13 19:57:16,539 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:57:16] "GET /api/indicator/kline?market=USStock&symbol=AVGO&timeframe=5m&limit=500&_t=1768305436082 HTTP/1.1" 200 - +2026-01-13 19:57:32,470 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:57:32] "GET /api/strategies/notifications?limit=50&_t=1768305452458 HTTP/1.1" 200 - +2026-01-13 19:57:41,882 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:57:41] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:58:02,472 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:58:02] "GET /api/strategies/notifications?limit=50&_t=1768305482459 HTTP/1.1" 200 - +2026-01-13 19:58:11,947 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:58:11] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:58:32,469 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:58:32] "GET /api/strategies/notifications?limit=50&_t=1768305512456 HTTP/1.1" 200 - +2026-01-13 19:58:41,993 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:58:41] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:59:02,472 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:59:02] "GET /api/strategies/notifications?limit=50&_t=1768305542458 HTTP/1.1" 200 - +2026-01-13 19:59:12,040 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:59:12] "GET /api/health HTTP/1.1" 200 - +2026-01-13 19:59:32,470 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 19:59:32] "GET /api/strategies/notifications?limit=50&_t=1768305572457 HTTP/1.1" 200 - +2026-01-13 19:59:42,099 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 19:59:42] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:00:02,474 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:00:02] "GET /api/strategies/notifications?limit=50&_t=1768305602462 HTTP/1.1" 200 - +2026-01-13 20:00:12,141 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:00:12] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:00:32,471 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:00:32] "GET /api/strategies/notifications?limit=50&_t=1768305632457 HTTP/1.1" 200 - +2026-01-13 20:00:42,189 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:00:42] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:01:02,467 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:01:02] "GET /api/strategies/notifications?limit=50&_t=1768305662455 HTTP/1.1" 200 - +2026-01-13 20:01:12,232 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:01:12] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:01:32,467 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:01:32] "GET /api/strategies/notifications?limit=50&_t=1768305692452 HTTP/1.1" 200 - +2026-01-13 20:01:42,280 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:01:42] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:02:02,459 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:02:02] "GET /api/strategies/notifications?limit=50&_t=1768305722448 HTTP/1.1" 200 - +2026-01-13 20:02:12,331 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:02:12] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:02:32,467 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:02:32] "GET /api/strategies/notifications?limit=50&_t=1768305752449 HTTP/1.1" 200 - +2026-01-13 20:02:42,412 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:02:42] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:03:02,461 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:03:02] "GET /api/strategies/notifications?limit=50&_t=1768305782448 HTTP/1.1" 200 - +2026-01-13 20:03:12,471 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:03:12] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:03:32,470 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:03:32] "GET /api/strategies/notifications?limit=50&_t=1768305812455 HTTP/1.1" 200 - +2026-01-13 20:03:42,523 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:03:42] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:04:02,469 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:04:02] "GET /api/strategies/notifications?limit=50&_t=1768305842451 HTTP/1.1" 200 - +2026-01-13 20:04:12,573 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:04:12] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:04:32,469 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:04:32] "GET /api/strategies/notifications?limit=50&_t=1768305872454 HTTP/1.1" 200 - +2026-01-13 20:04:42,626 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:04:42] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:05:02,479 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:05:02] "GET /api/strategies/notifications?limit=50&_t=1768305902459 HTTP/1.1" 200 - +2026-01-13 20:05:12,679 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:05:12] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:05:32,492 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:05:32] "GET /api/strategies/notifications?limit=50&_t=1768305932462 HTTP/1.1" 200 - +2026-01-13 20:05:42,738 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:05:42] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:06:02,513 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:06:02] "GET /api/strategies/notifications?limit=50&_t=1768305962457 HTTP/1.1" 200 - +2026-01-13 20:06:12,870 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:06:12] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:06:32,469 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:06:32] "GET /api/strategies/notifications?limit=50&_t=1768305992457 HTTP/1.1" 200 - +2026-01-13 20:06:42,920 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:06:42] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:07:02,466 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:07:02] "GET /api/strategies/notifications?limit=50&_t=1768306022452 HTTP/1.1" 200 - +2026-01-13 20:07:12,980 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:07:12] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:07:32,474 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:07:32] "GET /api/strategies/notifications?limit=50&_t=1768306052462 HTTP/1.1" 200 - +2026-01-13 20:07:43,026 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:07:43] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:08:02,487 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:08:02] "GET /api/strategies/notifications?limit=50&_t=1768306082454 HTTP/1.1" 200 - +2026-01-13 20:08:13,086 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:08:13] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:08:32,476 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:08:32] "GET /api/strategies/notifications?limit=50&_t=1768306112463 HTTP/1.1" 200 - +2026-01-13 20:08:43,149 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:08:43] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:09:02,481 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:09:02] "GET /api/strategies/notifications?limit=50&_t=1768306142460 HTTP/1.1" 200 - +2026-01-13 20:09:13,195 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:09:13] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:09:32,472 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:09:32] "GET /api/strategies/notifications?limit=50&_t=1768306172459 HTTP/1.1" 200 - +2026-01-13 20:09:43,239 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:09:43] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:10:02,463 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:10:02] "GET /api/strategies/notifications?limit=50&_t=1768306202453 HTTP/1.1" 200 - +2026-01-13 20:10:13,295 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:10:13] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:10:32,461 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:10:32] "GET /api/strategies/notifications?limit=50&_t=1768306232448 HTTP/1.1" 200 - +2026-01-13 20:10:43,359 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:10:43] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:11:02,465 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:11:02] "GET /api/strategies/notifications?limit=50&_t=1768306262451 HTTP/1.1" 200 - +2026-01-13 20:11:13,403 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:11:13] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:11:32,466 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:11:32] "GET /api/strategies/notifications?limit=50&_t=1768306292454 HTTP/1.1" 200 - +2026-01-13 20:11:43,454 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:11:43] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:12:02,473 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:12:02] "GET /api/strategies/notifications?limit=50&_t=1768306322458 HTTP/1.1" 200 - +2026-01-13 20:12:13,509 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:12:13] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:12:32,472 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:12:32] "GET /api/strategies/notifications?limit=50&_t=1768306352460 HTTP/1.1" 200 - +2026-01-13 20:12:43,548 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:12:43] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:13:02,473 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:13:02] "GET /api/strategies/notifications?limit=50&_t=1768306382462 HTTP/1.1" 200 - +2026-01-13 20:13:13,603 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:13:13] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:13:32,463 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:13:32] "GET /api/strategies/notifications?limit=50&_t=1768306412452 HTTP/1.1" 200 - +2026-01-13 20:13:43,654 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:13:43] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:14:02,469 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:14:02] "GET /api/strategies/notifications?limit=50&_t=1768306442458 HTTP/1.1" 200 - +2026-01-13 20:14:13,713 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:14:13] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:14:32,472 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:14:32] "GET /api/strategies/notifications?limit=50&_t=1768306472460 HTTP/1.1" 200 - +2026-01-13 20:14:43,764 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:14:43] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:15:02,471 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:15:02] "GET /api/strategies/notifications?limit=50&_t=1768306502459 HTTP/1.1" 200 - +2026-01-13 20:15:13,806 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:15:13] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:15:32,492 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:15:32] "GET /api/strategies/notifications?limit=50&_t=1768306532463 HTTP/1.1" 200 - +2026-01-13 20:15:43,855 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:15:43] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:16:02,472 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:16:02] "GET /api/strategies/notifications?limit=50&_t=1768306562460 HTTP/1.1" 200 - +2026-01-13 20:16:13,906 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:16:13] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:16:32,459 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:16:32] "GET /api/strategies/notifications?limit=50&_t=1768306592447 HTTP/1.1" 200 - +2026-01-13 20:16:43,952 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:16:43] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:17:02,465 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:17:02] "GET /api/strategies/notifications?limit=50&_t=1768306622452 HTTP/1.1" 200 - +2026-01-13 20:17:14,007 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:17:14] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:17:32,469 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:17:32] "GET /api/strategies/notifications?limit=50&_t=1768306652458 HTTP/1.1" 200 - +2026-01-13 20:17:44,050 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:17:44] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:18:02,467 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:18:02] "GET /api/strategies/notifications?limit=50&_t=1768306682448 HTTP/1.1" 200 - +2026-01-13 20:18:14,109 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:18:14] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:18:32,472 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:18:32] "GET /api/strategies/notifications?limit=50&_t=1768306712460 HTTP/1.1" 200 - +2026-01-13 20:18:44,171 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:18:44] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:19:02,463 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:19:02] "GET /api/strategies/notifications?limit=50&_t=1768306742451 HTTP/1.1" 200 - +2026-01-13 20:19:14,215 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:19:14] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:19:32,464 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:19:32] "GET /api/strategies/notifications?limit=50&_t=1768306772451 HTTP/1.1" 200 - +2026-01-13 20:19:44,270 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:19:44] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:20:02,470 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:20:02] "GET /api/strategies/notifications?limit=50&_t=1768306802457 HTTP/1.1" 200 - +2026-01-13 20:20:14,318 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:20:14] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:20:32,484 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:20:32] "GET /api/strategies/notifications?limit=50&_t=1768306832463 HTTP/1.1" 200 - +2026-01-13 20:20:44,372 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:20:44] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:21:02,469 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:21:02] "GET /api/strategies/notifications?limit=50&_t=1768306862457 HTTP/1.1" 200 - +2026-01-13 20:21:14,423 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:21:14] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:21:32,480 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:21:32] "GET /api/strategies/notifications?limit=50&_t=1768306892462 HTTP/1.1" 200 - +2026-01-13 20:21:44,469 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:21:44] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:22:02,473 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:22:02] "GET /api/strategies/notifications?limit=50&_t=1768306922460 HTTP/1.1" 200 - +2026-01-13 20:22:14,512 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:22:14] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:22:32,467 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:22:32] "GET /api/strategies/notifications?limit=50&_t=1768306952456 HTTP/1.1" 200 - +2026-01-13 20:22:44,563 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:22:44] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:23:02,474 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:23:02] "GET /api/strategies/notifications?limit=50&_t=1768306982459 HTTP/1.1" 200 - +2026-01-13 20:23:14,625 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:23:14] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:23:32,472 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:23:32] "GET /api/strategies/notifications?limit=50&_t=1768307012460 HTTP/1.1" 200 - +2026-01-13 20:23:44,668 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:23:44] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:24:02,461 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:24:02] "GET /api/strategies/notifications?limit=50&_t=1768307042449 HTTP/1.1" 200 - +2026-01-13 20:24:14,717 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:24:14] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:24:32,467 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:24:32] "GET /api/strategies/notifications?limit=50&_t=1768307072455 HTTP/1.1" 200 - +2026-01-13 20:24:44,755 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:24:44] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:25:02,475 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:25:02] "GET /api/strategies/notifications?limit=50&_t=1768307102460 HTTP/1.1" 200 - +2026-01-13 20:25:14,804 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:25:14] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:25:32,460 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:25:32] "GET /api/strategies/notifications?limit=50&_t=1768307132448 HTTP/1.1" 200 - +2026-01-13 20:25:44,851 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:25:44] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:26:02,477 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:26:02] "GET /api/strategies/notifications?limit=50&_t=1768307162460 HTTP/1.1" 200 - +2026-01-13 20:26:14,890 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:26:14] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:26:32,470 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:26:32] "GET /api/strategies/notifications?limit=50&_t=1768307192460 HTTP/1.1" 200 - +2026-01-13 20:26:44,938 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:26:44] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:27:02,495 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:27:02] "GET /api/strategies/notifications?limit=50&_t=1768307222458 HTTP/1.1" 200 - +2026-01-13 20:27:14,984 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:27:14] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:27:32,492 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:27:32] "GET /api/strategies/notifications?limit=50&_t=1768307252463 HTTP/1.1" 200 - +2026-01-13 20:27:45,031 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:27:45] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:28:02,471 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:28:02] "GET /api/strategies/notifications?limit=50&_t=1768307282461 HTTP/1.1" 200 - +2026-01-13 20:28:15,076 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:28:15] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:28:32,468 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:28:32] "GET /api/strategies/notifications?limit=50&_t=1768307312453 HTTP/1.1" 200 - +2026-01-13 20:28:45,128 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:28:45] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:29:02,461 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:29:02] "GET /api/strategies/notifications?limit=50&_t=1768307342450 HTTP/1.1" 200 - +2026-01-13 20:29:15,173 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:29:15] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:29:32,468 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:29:32] "GET /api/strategies/notifications?limit=50&_t=1768307372455 HTTP/1.1" 200 - +2026-01-13 20:29:45,228 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:29:45] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:30:02,489 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:30:02] "GET /api/strategies/notifications?limit=50&_t=1768307402452 HTTP/1.1" 200 - +2026-01-13 20:30:15,275 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:30:15] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:30:32,473 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:30:32] "GET /api/strategies/notifications?limit=50&_t=1768307432461 HTTP/1.1" 200 - +2026-01-13 20:30:45,322 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:30:45] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:31:02,484 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:31:02] "GET /api/strategies/notifications?limit=50&_t=1768307462463 HTTP/1.1" 200 - +2026-01-13 20:31:15,377 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:31:15] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:31:32,472 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:31:32] "GET /api/strategies/notifications?limit=50&_t=1768307492460 HTTP/1.1" 200 - +2026-01-13 20:31:45,420 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:31:45] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:32:02,470 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:32:02] "GET /api/strategies/notifications?limit=50&_t=1768307522459 HTTP/1.1" 200 - +2026-01-13 20:32:15,471 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:32:15] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:32:32,460 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:32:32] "GET /api/strategies/notifications?limit=50&_t=1768307552449 HTTP/1.1" 200 - +2026-01-13 20:32:45,521 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:32:45] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:33:02,475 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:33:02] "GET /api/strategies/notifications?limit=50&_t=1768307582461 HTTP/1.1" 200 - +2026-01-13 20:33:15,560 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:33:15] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:33:32,462 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:33:32] "GET /api/strategies/notifications?limit=50&_t=1768307612451 HTTP/1.1" 200 - +2026-01-13 20:33:45,597 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:33:45] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:34:02,464 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:34:02] "GET /api/strategies/notifications?limit=50&_t=1768307642452 HTTP/1.1" 200 - +2026-01-13 20:34:15,668 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:34:15] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:34:32,472 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:34:32] "GET /api/strategies/notifications?limit=50&_t=1768307672458 HTTP/1.1" 200 - +2026-01-13 20:34:45,716 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:34:45] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:35:02,469 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:35:02] "GET /api/strategies/notifications?limit=50&_t=1768307702458 HTTP/1.1" 200 - +2026-01-13 20:35:15,775 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:35:15] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:35:32,474 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:35:32] "GET /api/strategies/notifications?limit=50&_t=1768307732462 HTTP/1.1" 200 - +2026-01-13 20:35:45,822 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:35:45] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:36:02,474 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:36:02] "GET /api/strategies/notifications?limit=50&_t=1768307762460 HTTP/1.1" 200 - +2026-01-13 20:36:15,860 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:36:15] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:36:32,480 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:36:32] "GET /api/strategies/notifications?limit=50&_t=1768307792457 HTTP/1.1" 200 - +2026-01-13 20:36:45,911 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:36:45] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:37:02,472 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:37:02] "GET /api/strategies/notifications?limit=50&_t=1768307822459 HTTP/1.1" 200 - +2026-01-13 20:37:15,977 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:37:15] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:37:32,494 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:37:32] "GET /api/strategies/notifications?limit=50&_t=1768307852463 HTTP/1.1" 200 - +2026-01-13 20:37:46,033 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:37:46] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:38:02,475 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:38:02] "GET /api/strategies/notifications?limit=50&_t=1768307882462 HTTP/1.1" 200 - +2026-01-13 20:38:16,076 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:38:16] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:38:32,461 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:38:32] "GET /api/strategies/notifications?limit=50&_t=1768307912448 HTTP/1.1" 200 - +2026-01-13 20:38:46,123 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:38:46] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:39:02,461 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:39:02] "GET /api/strategies/notifications?limit=50&_t=1768307942450 HTTP/1.1" 200 - +2026-01-13 20:39:16,167 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:39:16] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:39:32,468 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:39:32] "GET /api/strategies/notifications?limit=50&_t=1768307972457 HTTP/1.1" 200 - +2026-01-13 20:39:46,224 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:39:46] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:40:02,466 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:40:02] "GET /api/strategies/notifications?limit=50&_t=1768308002455 HTTP/1.1" 200 - +2026-01-13 20:40:16,273 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:40:16] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:40:32,475 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:40:32] "GET /api/strategies/notifications?limit=50&_t=1768308032460 HTTP/1.1" 200 - +2026-01-13 20:40:46,314 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:40:46] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:41:02,475 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:41:02] "GET /api/strategies/notifications?limit=50&_t=1768308062462 HTTP/1.1" 200 - +2026-01-13 20:41:16,356 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:41:16] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:41:32,463 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:41:32] "GET /api/strategies/notifications?limit=50&_t=1768308092450 HTTP/1.1" 200 - +2026-01-13 20:41:46,419 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:41:46] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:42:02,464 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:42:02] "GET /api/strategies/notifications?limit=50&_t=1768308122449 HTTP/1.1" 200 - +2026-01-13 20:42:16,457 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:42:16] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:42:32,463 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:42:32] "GET /api/strategies/notifications?limit=50&_t=1768308152449 HTTP/1.1" 200 - +2026-01-13 20:42:46,500 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:42:46] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:43:02,463 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:43:02] "GET /api/strategies/notifications?limit=50&_t=1768308182450 HTTP/1.1" 200 - +2026-01-13 20:43:16,551 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:43:16] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:43:32,468 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:43:32] "GET /api/strategies/notifications?limit=50&_t=1768308212456 HTTP/1.1" 200 - +2026-01-13 20:43:46,604 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:43:46] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:44:02,464 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:44:02] "GET /api/strategies/notifications?limit=50&_t=1768308242450 HTTP/1.1" 200 - +2026-01-13 20:44:16,648 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:44:16] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:44:32,473 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:44:32] "GET /api/strategies/notifications?limit=50&_t=1768308272460 HTTP/1.1" 200 - +2026-01-13 20:44:46,694 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:44:46] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:45:02,467 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:45:02] "GET /api/strategies/notifications?limit=50&_t=1768308302455 HTTP/1.1" 200 - +2026-01-13 20:45:16,753 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:45:16] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:45:32,460 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:45:32] "GET /api/strategies/notifications?limit=50&_t=1768308332448 HTTP/1.1" 200 - +2026-01-13 20:45:46,809 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:45:46] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:46:02,472 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:46:02] "GET /api/strategies/notifications?limit=50&_t=1768308362455 HTTP/1.1" 200 - +2026-01-13 20:46:16,856 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:46:16] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:46:32,463 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:46:32] "GET /api/strategies/notifications?limit=50&_t=1768308392448 HTTP/1.1" 200 - +2026-01-13 20:46:46,902 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:46:46] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:47:02,470 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:47:02] "GET /api/strategies/notifications?limit=50&_t=1768308422456 HTTP/1.1" 200 - +2026-01-13 20:47:16,949 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:47:16] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:47:32,543 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:47:32] "GET /api/strategies/notifications?limit=50&_t=1768308452459 HTTP/1.1" 200 - +2026-01-13 20:47:46,996 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:47:46] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:48:02,475 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:48:02] "GET /api/strategies/notifications?limit=50&_t=1768308482461 HTTP/1.1" 200 - +2026-01-13 20:48:17,060 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:48:17] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:48:32,473 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:48:32] "GET /api/strategies/notifications?limit=50&_t=1768308512460 HTTP/1.1" 200 - +2026-01-13 20:48:47,103 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:48:47] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:49:02,470 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:49:02] "GET /api/strategies/notifications?limit=50&_t=1768308542456 HTTP/1.1" 200 - +2026-01-13 20:49:17,148 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:49:17] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:49:32,474 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:49:32] "GET /api/strategies/notifications?limit=50&_t=1768308572461 HTTP/1.1" 200 - +2026-01-13 20:49:47,212 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:49:47] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:50:02,470 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:50:02] "GET /api/strategies/notifications?limit=50&_t=1768308602456 HTTP/1.1" 200 - +2026-01-13 20:50:17,258 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:50:17] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:50:32,469 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:50:32] "GET /api/strategies/notifications?limit=50&_t=1768308632458 HTTP/1.1" 200 - +2026-01-13 20:50:47,312 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:50:47] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:51:02,483 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:51:02] "GET /api/strategies/notifications?limit=50&_t=1768308662448 HTTP/1.1" 200 - +2026-01-13 20:51:17,361 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:51:17] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:51:32,461 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:51:32] "GET /api/strategies/notifications?limit=50&_t=1768308692449 HTTP/1.1" 200 - +2026-01-13 20:51:47,410 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:51:47] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:52:02,461 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:52:02] "GET /api/strategies/notifications?limit=50&_t=1768308722448 HTTP/1.1" 200 - +2026-01-13 20:52:17,481 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:52:17] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:52:32,469 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:52:32] "GET /api/strategies/notifications?limit=50&_t=1768308752457 HTTP/1.1" 200 - +2026-01-13 20:52:47,532 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:52:47] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:53:02,470 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:53:02] "GET /api/strategies/notifications?limit=50&_t=1768308782457 HTTP/1.1" 200 - +2026-01-13 20:53:17,575 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:53:17] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:53:32,470 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:53:32] "GET /api/strategies/notifications?limit=50&_t=1768308812459 HTTP/1.1" 200 - +2026-01-13 20:53:47,630 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:53:47] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:54:02,484 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:54:02] "GET /api/strategies/notifications?limit=50&_t=1768308842464 HTTP/1.1" 200 - +2026-01-13 20:54:17,674 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:54:17] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:54:32,466 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:54:32] "GET /api/strategies/notifications?limit=50&_t=1768308872456 HTTP/1.1" 200 - +2026-01-13 20:54:47,716 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:54:47] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:55:02,462 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:55:02] "GET /api/strategies/notifications?limit=50&_t=1768308902449 HTTP/1.1" 200 - +2026-01-13 20:55:17,758 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:55:17] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:55:32,471 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:55:32] "GET /api/strategies/notifications?limit=50&_t=1768308932459 HTTP/1.1" 200 - +2026-01-13 20:55:47,797 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:55:47] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:56:02,467 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:56:02] "GET /api/strategies/notifications?limit=50&_t=1768308962452 HTTP/1.1" 200 - +2026-01-13 20:56:17,844 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:56:17] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:56:32,473 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:56:32] "GET /api/strategies/notifications?limit=50&_t=1768308992462 HTTP/1.1" 200 - +2026-01-13 20:56:47,903 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:56:47] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:57:02,465 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:57:02] "GET /api/strategies/notifications?limit=50&_t=1768309022453 HTTP/1.1" 200 - +2026-01-13 20:57:17,959 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:57:17] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:57:32,471 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:57:32] "GET /api/strategies/notifications?limit=50&_t=1768309052457 HTTP/1.1" 200 - +2026-01-13 20:57:48,009 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:57:48] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:58:02,465 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:58:02] "GET /api/strategies/notifications?limit=50&_t=1768309082449 HTTP/1.1" 200 - +2026-01-13 20:58:18,059 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:58:18] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:58:32,465 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:58:32] "GET /api/strategies/notifications?limit=50&_t=1768309112454 HTTP/1.1" 200 - +2026-01-13 20:58:48,110 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:58:48] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:59:02,473 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:59:02] "GET /api/strategies/notifications?limit=50&_t=1768309142459 HTTP/1.1" 200 - +2026-01-13 20:59:18,170 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:59:18] "GET /api/health HTTP/1.1" 200 - +2026-01-13 20:59:32,484 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 20:59:32] "GET /api/strategies/notifications?limit=50&_t=1768309172453 HTTP/1.1" 200 - +2026-01-13 20:59:48,208 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 20:59:48] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:00:02,468 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:00:02] "GET /api/strategies/notifications?limit=50&_t=1768309202454 HTTP/1.1" 200 - +2026-01-13 21:00:18,256 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:00:18] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:00:32,492 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:00:32] "GET /api/strategies/notifications?limit=50&_t=1768309232460 HTTP/1.1" 200 - +2026-01-13 21:00:48,298 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:00:48] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:01:02,474 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:01:02] "GET /api/strategies/notifications?limit=50&_t=1768309262462 HTTP/1.1" 200 - +2026-01-13 21:01:18,348 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:01:18] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:01:32,472 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:01:32] "GET /api/strategies/notifications?limit=50&_t=1768309292460 HTTP/1.1" 200 - +2026-01-13 21:01:48,400 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:01:48] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:02:02,488 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:02:02] "GET /api/strategies/notifications?limit=50&_t=1768309322449 HTTP/1.1" 200 - +2026-01-13 21:02:18,465 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:02:18] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:02:32,467 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:02:32] "GET /api/strategies/notifications?limit=50&_t=1768309352448 HTTP/1.1" 200 - +2026-01-13 21:02:48,510 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:02:48] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:03:02,469 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:03:02] "GET /api/strategies/notifications?limit=50&_t=1768309382456 HTTP/1.1" 200 - +2026-01-13 21:03:18,551 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:03:18] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:03:32,463 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:03:32] "GET /api/strategies/notifications?limit=50&_t=1768309412451 HTTP/1.1" 200 - +2026-01-13 21:03:48,607 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:03:48] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:04:02,468 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:04:02] "GET /api/strategies/notifications?limit=50&_t=1768309442457 HTTP/1.1" 200 - +2026-01-13 21:04:18,667 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:04:18] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:04:32,469 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:04:32] "GET /api/strategies/notifications?limit=50&_t=1768309472452 HTTP/1.1" 200 - +2026-01-13 21:04:48,727 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:04:48] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:05:02,473 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:05:02] "GET /api/strategies/notifications?limit=50&_t=1768309502460 HTTP/1.1" 200 - +2026-01-13 21:05:18,769 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:05:18] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:05:32,465 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:05:32] "GET /api/strategies/notifications?limit=50&_t=1768309532450 HTTP/1.1" 200 - +2026-01-13 21:05:48,825 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:05:48] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:06:02,471 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:06:02] "GET /api/strategies/notifications?limit=50&_t=1768309562457 HTTP/1.1" 200 - +2026-01-13 21:06:18,875 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:06:18] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:06:32,481 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:06:32] "GET /api/strategies/notifications?limit=50&_t=1768309592462 HTTP/1.1" 200 - +2026-01-13 21:06:48,915 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:06:48] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:07:02,467 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:07:02] "GET /api/strategies/notifications?limit=50&_t=1768309622456 HTTP/1.1" 200 - +2026-01-13 21:07:18,966 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:07:18] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:07:32,466 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:07:32] "GET /api/strategies/notifications?limit=50&_t=1768309652454 HTTP/1.1" 200 - +2026-01-13 21:07:49,040 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:07:49] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:08:02,467 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:08:02] "GET /api/strategies/notifications?limit=50&_t=1768309682453 HTTP/1.1" 200 - +2026-01-13 21:08:19,092 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:08:19] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:08:32,466 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:08:32] "GET /api/strategies/notifications?limit=50&_t=1768309712454 HTTP/1.1" 200 - +2026-01-13 21:08:49,141 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:08:49] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:09:02,469 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:09:02] "GET /api/strategies/notifications?limit=50&_t=1768309742457 HTTP/1.1" 200 - +2026-01-13 21:09:19,193 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:09:19] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:09:32,473 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:09:32] "GET /api/strategies/notifications?limit=50&_t=1768309772458 HTTP/1.1" 200 - +2026-01-13 21:09:49,244 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:09:49] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:10:02,469 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:10:02] "GET /api/strategies/notifications?limit=50&_t=1768309802449 HTTP/1.1" 200 - +2026-01-13 21:10:19,284 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:10:19] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:10:32,471 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:10:32] "GET /api/strategies/notifications?limit=50&_t=1768309832458 HTTP/1.1" 200 - +2026-01-13 21:10:49,322 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:10:49] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:11:02,519 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:11:02] "GET /api/strategies/notifications?limit=50&_t=1768309862455 HTTP/1.1" 200 - +2026-01-13 21:11:19,370 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:11:19] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:11:32,465 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:11:32] "GET /api/strategies/notifications?limit=50&_t=1768309892451 HTTP/1.1" 200 - +2026-01-13 21:11:49,431 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:11:49] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:12:02,468 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:12:02] "GET /api/strategies/notifications?limit=50&_t=1768309922455 HTTP/1.1" 200 - +2026-01-13 21:12:19,472 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:12:19] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:12:32,472 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:12:32] "GET /api/strategies/notifications?limit=50&_t=1768309952461 HTTP/1.1" 200 - +2026-01-13 21:12:49,518 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:12:49] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:13:02,471 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:13:02] "GET /api/strategies/notifications?limit=50&_t=1768309982457 HTTP/1.1" 200 - +2026-01-13 21:13:19,572 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:13:19] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:13:32,463 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:13:32] "GET /api/strategies/notifications?limit=50&_t=1768310012451 HTTP/1.1" 200 - +2026-01-13 21:13:49,638 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:13:49] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:14:02,461 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:14:02] "GET /api/strategies/notifications?limit=50&_t=1768310042448 HTTP/1.1" 200 - +2026-01-13 21:14:19,683 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:14:19] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:14:32,469 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:14:32] "GET /api/strategies/notifications?limit=50&_t=1768310072456 HTTP/1.1" 200 - +2026-01-13 21:14:49,734 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:14:49] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:15:02,468 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:15:02] "GET /api/strategies/notifications?limit=50&_t=1768310102450 HTTP/1.1" 200 - +2026-01-13 21:15:19,772 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:15:19] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:15:32,467 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:15:32] "GET /api/strategies/notifications?limit=50&_t=1768310132454 HTTP/1.1" 200 - +2026-01-13 21:15:49,816 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:15:49] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:16:02,464 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:16:02] "GET /api/strategies/notifications?limit=50&_t=1768310162452 HTTP/1.1" 200 - +2026-01-13 21:16:19,863 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:16:19] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:16:32,472 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:16:32] "GET /api/strategies/notifications?limit=50&_t=1768310192462 HTTP/1.1" 200 - +2026-01-13 21:16:49,910 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:16:49] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:17:02,464 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:17:02] "GET /api/strategies/notifications?limit=50&_t=1768310222453 HTTP/1.1" 200 - +2026-01-13 21:17:19,974 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:17:19] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:17:32,469 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:17:32] "GET /api/strategies/notifications?limit=50&_t=1768310252453 HTTP/1.1" 200 - +2026-01-13 21:17:50,025 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:17:50] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:18:02,475 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:18:02] "GET /api/strategies/notifications?limit=50&_t=1768310282463 HTTP/1.1" 200 - +2026-01-13 21:18:20,067 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:18:20] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:18:32,463 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:18:32] "GET /api/strategies/notifications?limit=50&_t=1768310312449 HTTP/1.1" 200 - +2026-01-13 21:18:50,106 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:18:50] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:19:02,475 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:19:02] "GET /api/strategies/notifications?limit=50&_t=1768310342458 HTTP/1.1" 200 - +2026-01-13 21:19:20,160 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:19:20] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:19:32,474 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:19:32] "GET /api/strategies/notifications?limit=50&_t=1768310372448 HTTP/1.1" 200 - +2026-01-13 21:19:50,209 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:19:50] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:20:02,466 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:20:02] "GET /api/strategies/notifications?limit=50&_t=1768310402451 HTTP/1.1" 200 - +2026-01-13 21:20:20,254 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:20:20] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:20:32,476 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:20:32] "GET /api/strategies/notifications?limit=50&_t=1768310432461 HTTP/1.1" 200 - +2026-01-13 21:20:50,310 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:20:50] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:21:02,466 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:21:02] "GET /api/strategies/notifications?limit=50&_t=1768310462454 HTTP/1.1" 200 - +2026-01-13 21:21:20,362 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:21:20] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:21:32,492 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:21:32] "GET /api/strategies/notifications?limit=50&_t=1768310492454 HTTP/1.1" 200 - +2026-01-13 21:21:50,399 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:21:50] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:22:02,459 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:22:02] "GET /api/strategies/notifications?limit=50&_t=1768310522447 HTTP/1.1" 200 - +2026-01-13 21:22:20,438 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:22:20] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:22:32,464 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:22:32] "GET /api/strategies/notifications?limit=50&_t=1768310552453 HTTP/1.1" 200 - +2026-01-13 21:22:50,487 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:22:50] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:23:02,472 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:23:02] "GET /api/strategies/notifications?limit=50&_t=1768310582460 HTTP/1.1" 200 - +2026-01-13 21:23:20,541 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:23:20] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:23:32,469 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:23:32] "GET /api/strategies/notifications?limit=50&_t=1768310612458 HTTP/1.1" 200 - +2026-01-13 21:23:50,589 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:23:50] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:24:02,463 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:24:02] "GET /api/strategies/notifications?limit=50&_t=1768310642450 HTTP/1.1" 200 - +2026-01-13 21:24:20,646 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:24:20] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:24:32,462 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:24:32] "GET /api/strategies/notifications?limit=50&_t=1768310672451 HTTP/1.1" 200 - +2026-01-13 21:24:50,710 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:24:50] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:25:02,474 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:25:02] "GET /api/strategies/notifications?limit=50&_t=1768310702462 HTTP/1.1" 200 - +2026-01-13 21:25:20,748 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:25:20] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:25:32,463 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:25:32] "GET /api/strategies/notifications?limit=50&_t=1768310732451 HTTP/1.1" 200 - +2026-01-13 21:25:50,786 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:25:50] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:26:02,467 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:26:02] "GET /api/strategies/notifications?limit=50&_t=1768310762455 HTTP/1.1" 200 - +2026-01-13 21:26:20,826 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:26:20] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:26:32,464 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:26:32] "GET /api/strategies/notifications?limit=50&_t=1768310792450 HTTP/1.1" 200 - +2026-01-13 21:26:50,880 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:26:50] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:27:02,471 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:27:02] "GET /api/strategies/notifications?limit=50&_t=1768310822452 HTTP/1.1" 200 - +2026-01-13 21:27:20,937 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:27:20] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:27:32,469 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:27:32] "GET /api/strategies/notifications?limit=50&_t=1768310852457 HTTP/1.1" 200 - +2026-01-13 21:27:50,996 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:27:50] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:28:03,282 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:28:03] "GET /api/strategies/notifications?limit=50&_t=1768310883264 HTTP/1.1" 200 - +2026-01-13 21:28:21,036 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:28:21] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:28:33,266 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:28:33] "GET /api/strategies/notifications?limit=50&_t=1768310913254 HTTP/1.1" 200 - +2026-01-13 21:28:51,108 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:28:51] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:29:21,147 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:29:21] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:29:48,270 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:29:48] "GET /api/strategies/notifications?limit=50&_t=1768310988253 HTTP/1.1" 200 - +2026-01-13 21:29:51,186 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:29:51] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:30:21,229 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:30:21] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:30:48,267 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:30:48] "GET /api/strategies/notifications?limit=50&_t=1768311048253 HTTP/1.1" 200 - +2026-01-13 21:30:51,304 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:30:51] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:31:21,356 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:31:21] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:31:48,282 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:31:48] "GET /api/strategies/notifications?limit=50&_t=1768311108264 HTTP/1.1" 200 - +2026-01-13 21:31:51,414 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:31:51] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:32:21,481 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:32:21] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:32:48,277 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:32:48] "GET /api/strategies/notifications?limit=50&_t=1768311168263 HTTP/1.1" 200 - +2026-01-13 21:32:51,547 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:32:51] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:33:21,629 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:33:21] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:33:48,281 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:33:48] "GET /api/strategies/notifications?limit=50&_t=1768311228262 HTTP/1.1" 200 - +2026-01-13 21:33:51,694 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:33:51] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:34:21,736 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:34:21] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:34:48,279 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:34:48] "GET /api/strategies/notifications?limit=50&_t=1768311288262 HTTP/1.1" 200 - +2026-01-13 21:34:51,776 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:34:51] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:35:21,822 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:35:21] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:35:48,274 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:35:48] "GET /api/strategies/notifications?limit=50&_t=1768311348259 HTTP/1.1" 200 - +2026-01-13 21:35:51,861 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:35:51] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:36:21,908 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:36:21] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:36:48,274 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:36:48] "GET /api/strategies/notifications?limit=50&_t=1768311408259 HTTP/1.1" 200 - +2026-01-13 21:36:51,952 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:36:51] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:37:22,003 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:37:22] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:37:48,281 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:37:48] "GET /api/strategies/notifications?limit=50&_t=1768311468261 HTTP/1.1" 200 - +2026-01-13 21:37:52,047 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:37:52] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:38:22,116 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:38:22] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:38:48,266 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:38:48] "GET /api/strategies/notifications?limit=50&_t=1768311528251 HTTP/1.1" 200 - +2026-01-13 21:38:52,168 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:38:52] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:39:22,232 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:39:22] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:39:48,279 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:39:48] "GET /api/strategies/notifications?limit=50&_t=1768311588261 HTTP/1.1" 200 - +2026-01-13 21:39:52,298 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:39:52] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:40:22,345 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:40:22] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:40:48,275 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:40:48] "GET /api/strategies/notifications?limit=50&_t=1768311648260 HTTP/1.1" 200 - +2026-01-13 21:40:52,396 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:40:52] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:41:22,459 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:41:22] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:41:48,276 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:41:48] "GET /api/strategies/notifications?limit=50&_t=1768311708263 HTTP/1.1" 200 - +2026-01-13 21:41:52,510 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:41:52] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:42:22,564 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:42:22] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:42:48,281 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:42:48] "GET /api/strategies/notifications?limit=50&_t=1768311768264 HTTP/1.1" 200 - +2026-01-13 21:42:52,633 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:42:52] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:43:22,673 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:43:22] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:43:48,279 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:43:48] "GET /api/strategies/notifications?limit=50&_t=1768311828260 HTTP/1.1" 200 - +2026-01-13 21:43:52,718 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:43:52] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:44:22,770 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:44:22] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:44:48,279 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:44:48] "GET /api/strategies/notifications?limit=50&_t=1768311888258 HTTP/1.1" 200 - +2026-01-13 21:44:52,824 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:44:52] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:45:22,875 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:45:22] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:45:48,277 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:45:48] "GET /api/strategies/notifications?limit=50&_t=1768311948265 HTTP/1.1" 200 - +2026-01-13 21:45:52,918 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:45:52] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:46:22,985 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:46:22] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:46:48,347 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:46:48] "GET /api/strategies/notifications?limit=50&_t=1768312008265 HTTP/1.1" 200 - +2026-01-13 21:46:53,043 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:46:53] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:47:23,087 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:47:23] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:47:48,268 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:47:48] "GET /api/strategies/notifications?limit=50&_t=1768312068255 HTTP/1.1" 200 - +2026-01-13 21:47:53,137 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:47:53] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:48:23,187 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:48:23] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:48:48,271 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:48:48] "GET /api/strategies/notifications?limit=50&_t=1768312128259 HTTP/1.1" 200 - +2026-01-13 21:48:53,249 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:48:53] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:49:23,292 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:49:23] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:49:48,276 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:49:48] "GET /api/strategies/notifications?limit=50&_t=1768312188255 HTTP/1.1" 200 - +2026-01-13 21:49:53,349 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:49:53] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:50:23,388 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:50:23] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:50:48,273 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:50:48] "GET /api/strategies/notifications?limit=50&_t=1768312248257 HTTP/1.1" 200 - +2026-01-13 21:50:53,436 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:50:53] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:51:23,479 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:51:23] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:51:48,274 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:51:48] "GET /api/strategies/notifications?limit=50&_t=1768312308258 HTTP/1.1" 200 - +2026-01-13 21:51:53,525 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:51:53] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:52:23,564 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:52:23] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:52:48,279 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:52:48] "GET /api/strategies/notifications?limit=50&_t=1768312368264 HTTP/1.1" 200 - +2026-01-13 21:52:53,599 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:52:53] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:53:23,656 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:53:23] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:53:48,275 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:53:48] "GET /api/strategies/notifications?limit=50&_t=1768312428259 HTTP/1.1" 200 - +2026-01-13 21:53:53,710 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:53:53] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:54:23,757 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:54:23] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:54:48,280 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:54:48] "GET /api/strategies/notifications?limit=50&_t=1768312488261 HTTP/1.1" 200 - +2026-01-13 21:54:53,797 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:54:53] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:55:23,843 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:55:23] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:55:48,295 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:55:48] "GET /api/strategies/notifications?limit=50&_t=1768312548268 HTTP/1.1" 200 - +2026-01-13 21:55:53,893 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:55:53] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:56:23,940 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:56:23] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:56:48,280 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:56:48] "GET /api/strategies/notifications?limit=50&_t=1768312608262 HTTP/1.1" 200 - +2026-01-13 21:56:53,987 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:56:53] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:57:24,046 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:57:24] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:57:48,270 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:57:48] "GET /api/strategies/notifications?limit=50&_t=1768312668253 HTTP/1.1" 200 - +2026-01-13 21:57:54,088 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:57:54] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:58:24,127 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:58:24] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:58:48,273 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:58:48] "GET /api/strategies/notifications?limit=50&_t=1768312728253 HTTP/1.1" 200 - +2026-01-13 21:58:54,173 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:58:54] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:59:24,217 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:59:24] "GET /api/health HTTP/1.1" 200 - +2026-01-13 21:59:48,282 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 21:59:48] "GET /api/strategies/notifications?limit=50&_t=1768312788264 HTTP/1.1" 200 - +2026-01-13 21:59:54,264 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 21:59:54] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:00:24,304 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:00:24] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:00:48,284 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:00:48] "GET /api/strategies/notifications?limit=50&_t=1768312848270 HTTP/1.1" 200 - +2026-01-13 22:00:54,358 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:00:54] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:01:24,394 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:01:24] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:01:48,279 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:01:48] "GET /api/strategies/notifications?limit=50&_t=1768312908266 HTTP/1.1" 200 - +2026-01-13 22:01:54,433 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:01:54] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:02:24,471 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:02:24] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:02:48,280 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:02:48] "GET /api/strategies/notifications?limit=50&_t=1768312968260 HTTP/1.1" 200 - +2026-01-13 22:02:54,545 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:02:54] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:03:24,600 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:03:24] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:03:48,282 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:03:48] "GET /api/strategies/notifications?limit=50&_t=1768313028262 HTTP/1.1" 200 - +2026-01-13 22:03:54,639 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:03:54] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:04:24,680 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:04:24] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:04:48,286 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:04:48] "GET /api/strategies/notifications?limit=50&_t=1768313088264 HTTP/1.1" 200 - +2026-01-13 22:04:54,730 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:04:54] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:05:24,797 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:05:24] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:05:48,274 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:05:48] "GET /api/strategies/notifications?limit=50&_t=1768313148255 HTTP/1.1" 200 - +2026-01-13 22:05:54,850 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:05:54] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:06:24,895 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:06:24] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:06:48,301 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:06:48] "GET /api/strategies/notifications?limit=50&_t=1768313208259 HTTP/1.1" 200 - +2026-01-13 22:06:54,941 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:06:54] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:07:25,006 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:07:25] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:07:48,289 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:07:48] "GET /api/strategies/notifications?limit=50&_t=1768313268260 HTTP/1.1" 200 - +2026-01-13 22:07:55,057 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:07:55] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:08:25,105 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:08:25] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:08:48,271 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:08:48] "GET /api/strategies/notifications?limit=50&_t=1768313328253 HTTP/1.1" 200 - +2026-01-13 22:08:55,145 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:08:55] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:09:25,192 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:09:25] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:09:48,284 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:09:48] "GET /api/strategies/notifications?limit=50&_t=1768313388260 HTTP/1.1" 200 - +2026-01-13 22:09:55,235 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:09:55] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:10:25,288 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:10:25] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:10:48,267 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:10:48] "GET /api/strategies/notifications?limit=50&_t=1768313448251 HTTP/1.1" 200 - +2026-01-13 22:10:55,331 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:10:55] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:11:25,374 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:11:25] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:11:48,277 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:11:48] "GET /api/strategies/notifications?limit=50&_t=1768313508257 HTTP/1.1" 200 - +2026-01-13 22:11:55,416 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:11:55] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:12:25,475 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:12:25] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:12:48,284 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:12:48] "GET /api/strategies/notifications?limit=50&_t=1768313568266 HTTP/1.1" 200 - +2026-01-13 22:12:55,547 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:12:55] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:13:25,588 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:13:25] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:13:48,277 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:13:48] "GET /api/strategies/notifications?limit=50&_t=1768313628258 HTTP/1.1" 200 - +2026-01-13 22:13:55,653 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:13:55] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:14:25,713 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:14:25] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:14:48,277 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:14:48] "GET /api/strategies/notifications?limit=50&_t=1768313688252 HTTP/1.1" 200 - +2026-01-13 22:14:55,754 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:14:55] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:15:25,810 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:15:25] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:15:48,278 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:15:48] "GET /api/strategies/notifications?limit=50&_t=1768313748257 HTTP/1.1" 200 - +2026-01-13 22:15:55,850 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:15:55] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:16:25,889 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:16:25] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:16:48,265 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:16:48] "GET /api/strategies/notifications?limit=50&_t=1768313808252 HTTP/1.1" 200 - +2026-01-13 22:16:55,940 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:16:55] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:17:25,991 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:17:25] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:17:48,275 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:17:48] "GET /api/strategies/notifications?limit=50&_t=1768313868255 HTTP/1.1" 200 - +2026-01-13 22:17:56,039 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:17:56] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:18:26,095 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:18:26] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:18:48,270 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:18:48] "GET /api/strategies/notifications?limit=50&_t=1768313928258 HTTP/1.1" 200 - +2026-01-13 22:18:56,148 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:18:56] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:19:26,196 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:19:26] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:19:48,282 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:19:48] "GET /api/strategies/notifications?limit=50&_t=1768313988259 HTTP/1.1" 200 - +2026-01-13 22:19:56,234 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:19:56] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:20:26,286 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:20:26] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:20:48,274 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:20:48] "GET /api/strategies/notifications?limit=50&_t=1768314048260 HTTP/1.1" 200 - +2026-01-13 22:20:56,345 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:20:56] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:21:26,406 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:21:26] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:21:48,308 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:21:48] "GET /api/strategies/notifications?limit=50&_t=1768314108268 HTTP/1.1" 200 - +2026-01-13 22:21:56,454 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:21:56] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:22:26,493 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:22:26] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:22:48,267 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:22:48] "GET /api/strategies/notifications?limit=50&_t=1768314168253 HTTP/1.1" 200 - +2026-01-13 22:22:56,543 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:22:56] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:23:26,593 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:23:26] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:23:48,272 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:23:48] "GET /api/strategies/notifications?limit=50&_t=1768314228252 HTTP/1.1" 200 - +2026-01-13 22:23:56,649 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:23:56] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:24:26,699 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:24:26] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:24:48,288 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:24:48] "GET /api/strategies/notifications?limit=50&_t=1768314288264 HTTP/1.1" 200 - +2026-01-13 22:24:56,738 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:24:56] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:25:26,793 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:25:26] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:25:48,277 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:25:48] "GET /api/strategies/notifications?limit=50&_t=1768314348263 HTTP/1.1" 200 - +2026-01-13 22:25:56,835 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:25:56] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:26:26,887 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:26:26] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:26:48,278 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:26:48] "GET /api/strategies/notifications?limit=50&_t=1768314408258 HTTP/1.1" 200 - +2026-01-13 22:26:56,959 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:26:56] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:27:27,026 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:27:27] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:27:57,075 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:27:57] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:28:27,120 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:28:27] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:28:57,167 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:28:57] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:29:27,205 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:29:27] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:29:57,266 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:29:57] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:30:15,658 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:30:15] "GET /api/strategies/notifications?limit=50&_t=1768314615629 HTTP/1.1" 200 - +2026-01-13 22:30:17,472 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:30:17] "GET /api/market/types?_t=1768314617461 HTTP/1.1" 200 - +2026-01-13 22:30:17,478 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:30:17] "GET /api/user/info?_t=1768314617461 HTTP/1.1" 200 - +2026-01-13 22:30:17,486 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:30:17] "GET /api/market/watchlist/get?userid=1&_t=1768314617461 HTTP/1.1" 200 - +2026-01-13 22:30:17,488 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:30:17] "GET /api/indicator/getIndicators?userid=1&_t=1768314617461 HTTP/1.1" 200 - +2026-01-13 22:30:17,492 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:30:17] "GET /api/strategies/notifications?limit=50&_t=1768314617461 HTTP/1.1" 200 - +2026-01-13 22:30:17,509 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:30:17] "GET /api/market/watchlist/get?userid=1&_t=1768314617496 HTTP/1.1" 200 - +2026-01-13 22:30:17,511 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:30:17] "GET /api/indicator/getIndicators?userid=1&_t=1768314617496 HTTP/1.1" 200 - +2026-01-13 22:30:17,515 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=500 +2026-01-13 22:30:18,858 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:30:18] "GET /api/market/types?_t=1768314618853 HTTP/1.1" 200 - +2026-01-13 22:30:18,873 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:30:18] "GET /api/portfolio/alerts?_t=1768314618853 HTTP/1.1" 200 - +2026-01-13 22:30:18,878 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:30:18] "GET /api/portfolio/groups?_t=1768314618853 HTTP/1.1" 200 - +2026-01-13 22:30:18,883 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:30:18] "GET /api/portfolio/monitors?_t=1768314618853 HTTP/1.1" 200 - +2026-01-13 22:30:19,557 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:30:19] "GET /api/indicator/kline?market=USStock&symbol=AVGO&timeframe=1D&limit=500&_t=1768314617507 HTTP/1.1" 200 - +2026-01-13 22:30:24,337 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:30:24] "GET /api/portfolio/summary?_t=1768314618853 HTTP/1.1" 200 - +2026-01-13 22:30:25,750 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:30:25] "GET /api/portfolio/positions?_t=1768314618853 HTTP/1.1" 200 - +2026-01-13 22:30:27,307 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:30:27] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:30:30,722 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:30:30] "GET /api/market/types?_t=1768314630714 HTTP/1.1" 200 - +2026-01-13 22:30:30,744 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:30:30] "GET /api/portfolio/alerts?_t=1768314630714 HTTP/1.1" 200 - +2026-01-13 22:30:30,750 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:30:30] "GET /api/portfolio/monitors?_t=1768314630714 HTTP/1.1" 200 - +2026-01-13 22:30:30,750 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:30:30] "GET /api/portfolio/groups?_t=1768314630714 HTTP/1.1" 200 - +2026-01-13 22:30:30,767 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:30:30] "GET /api/strategies/notifications?limit=50&_t=1768314630714 HTTP/1.1" 200 - +2026-01-13 22:30:33,144 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:30:33] "GET /api/portfolio/positions?_t=1768314630714 HTTP/1.1" 200 - +2026-01-13 22:30:35,845 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:30:35] "GET /api/portfolio/summary?_t=1768314630714 HTTP/1.1" 200 - +2026-01-13 22:30:57,354 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:30:57] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:31:00,726 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:31:00] "GET /api/strategies/notifications?limit=50&_t=1768314660710 HTTP/1.1" 200 - +2026-01-13 22:31:03,356 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:31:03] "GET /api/portfolio/summary?refresh=1&_t=1768314660723 HTTP/1.1" 200 - +2026-01-13 22:31:06,181 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:31:06] "GET /api/portfolio/positions?refresh=1&_t=1768314660723 HTTP/1.1" 200 - +2026-01-13 22:31:27,405 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:31:27] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:31:30,726 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:31:30] "GET /api/strategies/notifications?limit=50&_t=1768314690709 HTTP/1.1" 200 - +2026-01-13 22:31:33,425 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:31:33] "GET /api/portfolio/summary?refresh=1&_t=1768314690722 HTTP/1.1" 200 - +2026-01-13 22:31:36,076 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:31:36] "GET /api/portfolio/positions?refresh=1&_t=1768314690722 HTTP/1.1" 200 - +2026-01-13 22:31:57,461 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:31:57] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:32:00,742 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:32:00] "GET /api/strategies/notifications?limit=50&_t=1768314720699 HTTP/1.1" 200 - +2026-01-13 22:32:03,401 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:32:03] "GET /api/portfolio/summary?refresh=1&_t=1768314720712 HTTP/1.1" 200 - +2026-01-13 22:32:06,136 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:32:06] "GET /api/portfolio/positions?refresh=1&_t=1768314720712 HTTP/1.1" 200 - +2026-01-13 22:32:27,543 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:32:27] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:32:30,725 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:32:30] "GET /api/strategies/notifications?limit=50&_t=1768314750700 HTTP/1.1" 200 - +2026-01-13 22:32:33,530 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:32:33] "GET /api/portfolio/positions?refresh=1&_t=1768314750713 HTTP/1.1" 200 - +2026-01-13 22:32:34,771 - app.data_sources.us_stock - WARNING - Finnhub quote failed for INTC: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response')) +2026-01-13 22:32:34,778 - yfinance - ERROR - Failed to get ticker 'INTC' reason: Failed to perform, curl: (7) Failed to connect to host.docker.internal port 10808 after 4 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 22:32:34,782 - yfinance - ERROR - Failed to get ticker 'INTC' reason: Failed to perform, curl: (7) Failed to connect to host.docker.internal port 10808 after 1 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 22:32:34,784 - yfinance - ERROR - Failed to get ticker 'INTC' reason: Failed to perform, curl: (7) Failed to connect to host.docker.internal port 10808 after 1 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 22:32:34,787 - yfinance - ERROR - $INTC: possibly delisted; no timezone found +2026-01-13 22:32:34,788 - app.data_sources.base - WARNING - USStock/yfinance: no data for INTC +2026-01-13 22:32:34,791 - yfinance - ERROR - Failed to get ticker 'INTC' reason: Failed to perform, curl: (7) Failed to connect to host.docker.internal port 10808 after 1 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 22:32:34,791 - yfinance - ERROR - $INTC: possibly delisted; no timezone found +2026-01-13 22:32:34,797 - app.data_sources.us_stock - ERROR - Finnhub fetch failed: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//stock/candle?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=INTC&resolution=D&from=1768055554&to=1768314754 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [Errno 101] Network is unreachable")) +2026-01-13 22:32:34,797 - app.data_sources.base - WARNING - USStock/yfinance: no data for INTC +2026-01-13 22:32:34,932 - app.data_sources.us_stock - WARNING - Finnhub quote failed for MSFT: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//quote?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=MSFT (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [Errno 101] Network is unreachable")) +2026-01-13 22:32:34,936 - yfinance - ERROR - Failed to get ticker 'MSFT' reason: Failed to perform, curl: (7) Failed to connect to host.docker.internal port 10808 after 2 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 22:32:34,942 - yfinance - ERROR - Failed to get ticker 'MSFT' reason: Failed to perform, curl: (7) Failed to connect to host.docker.internal port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 22:32:34,942 - yfinance - ERROR - $MSFT: possibly delisted; no timezone found +2026-01-13 22:32:34,943 - app.data_sources.base - WARNING - USStock/yfinance: no data for MSFT +2026-01-13 22:32:34,944 - yfinance - ERROR - Failed to get ticker 'MSFT' reason: Failed to perform, curl: (7) Failed to connect to host.docker.internal port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 22:32:34,945 - yfinance - ERROR - $MSFT: possibly delisted; no timezone found +2026-01-13 22:32:34,961 - app.data_sources.us_stock - ERROR - Finnhub fetch failed: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//stock/candle?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=MSFT&resolution=D&from=1768055554&to=1768314754 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [Errno 101] Network is unreachable")) +2026-01-13 22:32:34,962 - app.data_sources.base - WARNING - USStock/yfinance: no data for MSFT +2026-01-13 22:32:35,232 - app.data_sources.us_stock - WARNING - Finnhub quote failed for OMDA: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//quote?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=OMDA (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [Errno 101] Network is unreachable")) +2026-01-13 22:32:35,237 - yfinance - ERROR - Failed to get ticker 'OMDA' reason: Failed to perform, curl: (7) Failed to connect to host.docker.internal port 10808 after 4 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 22:32:35,245 - yfinance - ERROR - Failed to get ticker 'OMDA' reason: Failed to perform, curl: (7) Failed to connect to host.docker.internal port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 22:32:35,246 - yfinance - ERROR - $OMDA: possibly delisted; no timezone found +2026-01-13 22:32:35,246 - app.data_sources.base - WARNING - USStock/yfinance: no data for OMDA +2026-01-13 22:32:35,247 - yfinance - ERROR - Failed to get ticker 'OMDA' reason: Failed to perform, curl: (7) Failed to connect to host.docker.internal port 10808 after 0 ms: Could not connect to server. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. +2026-01-13 22:32:35,248 - yfinance - ERROR - $OMDA: possibly delisted; no timezone found +2026-01-13 22:32:35,253 - app.data_sources.us_stock - ERROR - Finnhub fetch failed: SOCKSHTTPSConnectionPool(host='api.finnhub.io', port=443): Max retries exceeded with url: /api/v1//stock/candle?token=d50lta1r01qm94qmpnn0d50lta1r01qm94qmpnng&symbol=OMDA&resolution=D&from=1768055555&to=1768314755 (Caused by NewConnectionError("SOCKSHTTPSConnection(host='api.finnhub.io', port=443): Failed to establish a new connection: [Errno 101] Network is unreachable")) +2026-01-13 22:32:35,253 - app.data_sources.base - WARNING - USStock/yfinance: no data for OMDA +2026-01-13 22:32:36,986 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:32:36] "GET /api/portfolio/summary?refresh=1&_t=1768314750713 HTTP/1.1" 200 - +2026-01-13 22:32:57,591 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:32:57] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:33:00,729 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:33:00] "GET /api/strategies/notifications?limit=50&_t=1768314780698 HTTP/1.1" 200 - +2026-01-13 22:33:03,455 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:33:03] "GET /api/portfolio/summary?refresh=1&_t=1768314780712 HTTP/1.1" 200 - +2026-01-13 22:33:06,122 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:33:06] "GET /api/portfolio/positions?refresh=1&_t=1768314780712 HTTP/1.1" 200 - +2026-01-13 22:33:27,631 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:33:27] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:33:30,727 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:33:30] "GET /api/strategies/notifications?limit=50&_t=1768314810706 HTTP/1.1" 200 - +2026-01-13 22:33:33,937 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:33:33] "GET /api/portfolio/summary?refresh=1&_t=1768314810717 HTTP/1.1" 200 - +2026-01-13 22:33:36,224 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:33:36] "GET /api/portfolio/positions?refresh=1&_t=1768314810717 HTTP/1.1" 200 - +2026-01-13 22:33:57,665 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:33:57] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:34:00,734 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:34:00] "GET /api/strategies/notifications?limit=50&_t=1768314840709 HTTP/1.1" 200 - +2026-01-13 22:34:03,424 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:34:03] "GET /api/portfolio/summary?refresh=1&_t=1768314840720 HTTP/1.1" 200 - +2026-01-13 22:34:06,121 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:34:06] "GET /api/portfolio/positions?refresh=1&_t=1768314840720 HTTP/1.1" 200 - +2026-01-13 22:34:27,709 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:34:27] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:34:30,730 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:34:30] "GET /api/strategies/notifications?limit=50&_t=1768314870700 HTTP/1.1" 200 - +2026-01-13 22:34:33,406 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:34:33] "GET /api/portfolio/summary?refresh=1&_t=1768314870711 HTTP/1.1" 200 - +2026-01-13 22:34:36,232 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:34:36] "GET /api/portfolio/positions?refresh=1&_t=1768314870711 HTTP/1.1" 200 - +2026-01-13 22:34:57,751 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:34:57] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:35:00,730 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:35:00] "GET /api/strategies/notifications?limit=50&_t=1768314900696 HTTP/1.1" 200 - +2026-01-13 22:35:04,102 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:35:04] "GET /api/portfolio/summary?refresh=1&_t=1768314900709 HTTP/1.1" 200 - +2026-01-13 22:35:06,222 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:35:06] "GET /api/portfolio/positions?refresh=1&_t=1768314900709 HTTP/1.1" 200 - +2026-01-13 22:35:27,792 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:35:27] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:35:30,733 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:35:30] "GET /api/strategies/notifications?limit=50&_t=1768314930705 HTTP/1.1" 200 - +2026-01-13 22:35:33,535 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:35:33] "GET /api/portfolio/summary?refresh=1&_t=1768314930718 HTTP/1.1" 200 - +2026-01-13 22:35:36,260 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:35:36] "GET /api/portfolio/positions?refresh=1&_t=1768314930718 HTTP/1.1" 200 - +2026-01-13 22:35:57,852 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:35:57] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:36:00,735 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:36:00] "GET /api/strategies/notifications?limit=50&_t=1768314960701 HTTP/1.1" 200 - +2026-01-13 22:36:03,406 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:36:03] "GET /api/portfolio/positions?refresh=1&_t=1768314960715 HTTP/1.1" 200 - +2026-01-13 22:36:06,108 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:36:06] "GET /api/portfolio/summary?refresh=1&_t=1768314960715 HTTP/1.1" 200 - +2026-01-13 22:36:27,912 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:36:27] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:36:30,736 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:36:30] "GET /api/strategies/notifications?limit=50&_t=1768314990713 HTTP/1.1" 200 - +2026-01-13 22:36:33,415 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:36:33] "GET /api/portfolio/summary?refresh=1&_t=1768314990726 HTTP/1.1" 200 - +2026-01-13 22:36:36,132 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:36:36] "GET /api/portfolio/positions?refresh=1&_t=1768314990726 HTTP/1.1" 200 - +2026-01-13 22:36:57,978 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:36:57] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:37:00,732 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:37:00] "GET /api/strategies/notifications?limit=50&_t=1768315020704 HTTP/1.1" 200 - +2026-01-13 22:37:03,404 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:37:03] "GET /api/portfolio/positions?refresh=1&_t=1768315020714 HTTP/1.1" 200 - +2026-01-13 22:37:06,131 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:37:06] "GET /api/portfolio/summary?refresh=1&_t=1768315020714 HTTP/1.1" 200 - +2026-01-13 22:37:28,027 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:37:28] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:37:30,730 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:37:30] "GET /api/strategies/notifications?limit=50&_t=1768315050695 HTTP/1.1" 200 - +2026-01-13 22:37:33,426 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:37:33] "GET /api/portfolio/summary?refresh=1&_t=1768315050707 HTTP/1.1" 200 - +2026-01-13 22:37:36,180 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:37:36] "GET /api/portfolio/positions?refresh=1&_t=1768315050707 HTTP/1.1" 200 - +2026-01-13 22:37:58,095 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:37:58] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:38:00,730 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:38:00] "GET /api/strategies/notifications?limit=50&_t=1768315080699 HTTP/1.1" 200 - +2026-01-13 22:38:03,949 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:38:03] "GET /api/portfolio/summary?refresh=1&_t=1768315080711 HTTP/1.1" 200 - +2026-01-13 22:38:06,142 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:38:06] "GET /api/portfolio/positions?refresh=1&_t=1768315080711 HTTP/1.1" 200 - +2026-01-13 22:38:19,200 - app - INFO - !!! SYSTEM STARTING IN DEMO MODE (READ-ONLY) !!! +2026-01-13 22:38:20,196 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-13 22:38:20,197 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-13 22:38:20,202 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-13 22:38:20,203 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-13 22:38:20,253 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-13 22:38:20,256 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-13 22:38:20,571 - app.services.strategy - INFO - Found 1 running strategies: [{'id': 14, 'strategy_type': 'IndicatorStrategy'}] +2026-01-13 22:38:20,581 - app - INFO - Restoring 1 running strategies... +2026-01-13 22:38:20,584 - app.services.trading_executor - INFO - Strategy 14 loop starting +2026-01-13 22:38:20,584 - app.services.trading_executor - INFO - Strategy 14 started +2026-01-13 22:38:20,586 - app - INFO - [OK] IndicatorStrategy 14 restored +2026-01-13 22:38:20,588 - app - INFO - Strategy restore completed: 1/1 restored +2026-01-13 22:38:20,600 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://172.18.0.2:5000 +2026-01-13 22:38:20,601 - werkzeug - INFO - Press CTRL+C to quit +2026-01-13 22:38:20,602 - app.services.trading_executor - INFO - Strategy 14 derivatives trading; normalize market_type to: swap +2026-01-13 22:38:21,934 - app.services.trading_executor - INFO - ็ญ–็•ฅ 14 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-13 22:38:21,948 - app.services.trading_executor - INFO - Strategy 14 initialized; pending_signals=0 +2026-01-13 22:38:30,723 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:38:30] "GET /api/strategies/notifications?limit=50&_t=1768315110695 HTTP/1.1" 200 - +2026-01-13 22:38:30,803 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 22:38:34,461 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:38:34] "GET /api/portfolio/summary?refresh=1&_t=1768315110709 HTTP/1.1" 200 - +2026-01-13 22:38:36,217 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:38:36] "GET /api/portfolio/positions?refresh=1&_t=1768315110709 HTTP/1.1" 200 - +2026-01-13 22:38:48,981 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:38:48] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:39:00,744 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:39:00] "GET /api/strategies/notifications?limit=50&_t=1768315140700 HTTP/1.1" 200 - +2026-01-13 22:39:03,663 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:39:03] "GET /api/portfolio/summary?refresh=1&_t=1768315140713 HTTP/1.1" 200 - +2026-01-13 22:39:06,153 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:39:06] "GET /api/portfolio/positions?refresh=1&_t=1768315140713 HTTP/1.1" 200 - +2026-01-13 22:39:19,107 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:39:19] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:39:30,739 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:39:30] "GET /api/strategies/notifications?limit=50&_t=1768315170709 HTTP/1.1" 200 - +2026-01-13 22:39:33,479 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:39:33] "GET /api/portfolio/summary?refresh=1&_t=1768315170722 HTTP/1.1" 200 - +2026-01-13 22:39:36,374 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:39:36] "GET /api/portfolio/positions?refresh=1&_t=1768315170722 HTTP/1.1" 200 - +2026-01-13 22:39:43,822 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:39:43] "GET /api/market/types?_t=1768315183813 HTTP/1.1" 200 - +2026-01-13 22:39:43,836 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:39:43] "GET /api/portfolio/alerts?_t=1768315183813 HTTP/1.1" 200 - +2026-01-13 22:39:43,836 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:39:43] "GET /api/portfolio/monitors?_t=1768315183813 HTTP/1.1" 200 - +2026-01-13 22:39:43,837 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:39:43] "GET /api/portfolio/groups?_t=1768315183813 HTTP/1.1" 200 - +2026-01-13 22:39:43,845 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:39:43] "GET /api/strategies/notifications?limit=50&_t=1768315183813 HTTP/1.1" 200 - +2026-01-13 22:39:46,236 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:39:46] "GET /api/portfolio/summary?_t=1768315183813 HTTP/1.1" 200 - +2026-01-13 22:39:48,938 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:39:48] "GET /api/portfolio/positions?_t=1768315183813 HTTP/1.1" 200 - +2026-01-13 22:39:49,155 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:39:49] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:40:03,334 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:40:03] "GET /api/market/config?_t=1768315203315 HTTP/1.1" 200 - +2026-01-13 22:40:03,336 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:40:03] "GET /api/user/info?_t=1768315203315 HTTP/1.1" 200 - +2026-01-13 22:40:03,354 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:40:03] "GET /api/market/watchlist/get?userid=1&_t=1768315203315 HTTP/1.1" 200 - +2026-01-13 22:40:03,385 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:40:03] "GET /api/market/types?_t=1768315203372 HTTP/1.1" 200 - +2026-01-13 22:40:03,417 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 22:40:03,418 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 22:40:03,429 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 22:40:03,430 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 22:40:03,438 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:40:03] "GET /api/market/watchlist/get?userid=1&_t=1768315203375 HTTP/1.1" 200 - +2026-01-13 22:40:07,146 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:40:07] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AVGO"},{"market":"Crypto","symbol":"ETH/USDT"},{"market":"Crypto","symbol":"BNB/USDT"},{"market":"AShare","symbol":"600519"},{"market":"Futures","symbol":"SI"},{"market":"Forex","symbol":"XAUUSD"},{"market":"Crypto","symbol":"BTC/USDT"},{"market":"HShare","symbol":"00700"},{"market":"AShare","symbol":"300475"},{"market":"USStock","symbol":"AAPL"},{"market":"AShare","symbol":"000858"}]&_t=1768315203393 HTTP/1.1" 200 - +2026-01-13 22:40:07,995 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:40:07] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AVGO"},{"market":"Crypto","symbol":"ETH/USDT"},{"market":"Crypto","symbol":"BNB/USDT"},{"market":"AShare","symbol":"600519"},{"market":"Futures","symbol":"SI"},{"market":"Forex","symbol":"XAUUSD"},{"market":"Crypto","symbol":"BTC/USDT"},{"market":"HShare","symbol":"00700"},{"market":"AShare","symbol":"300475"},{"market":"USStock","symbol":"AAPL"},{"market":"AShare","symbol":"000858"}]&_t=1768315203460 HTTP/1.1" 200 - +2026-01-13 22:40:09,880 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:40:09] "GET /api/market/types?_t=1768315209870 HTTP/1.1" 200 - +2026-01-13 22:40:09,881 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:40:09] "GET /api/user/info?_t=1768315209870 HTTP/1.1" 200 - +2026-01-13 22:40:09,913 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:40:09] "GET /api/market/watchlist/get?userid=1&_t=1768315209870 HTTP/1.1" 200 - +2026-01-13 22:40:09,916 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:40:09] "GET /api/indicator/getIndicators?userid=1&_t=1768315209870 HTTP/1.1" 200 - +2026-01-13 22:40:09,931 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:40:09] "GET /api/market/watchlist/get?userid=1&_t=1768315209908 HTTP/1.1" 200 - +2026-01-13 22:40:09,933 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:40:09] "GET /api/indicator/getIndicators?userid=1&_t=1768315209908 HTTP/1.1" 200 - +2026-01-13 22:40:09,941 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=500 +2026-01-13 22:40:10,534 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:40:10] "GET /api/indicator/kline?market=USStock&symbol=AVGO&timeframe=1D&limit=500&_t=1768315209932 HTTP/1.1" 200 - +2026-01-13 22:40:13,815 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:40:13] "GET /api/strategies/notifications?limit=50&_t=1768315213799 HTTP/1.1" 200 - +2026-01-13 22:40:15,860 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1D, limit=500 +2026-01-13 22:40:15,983 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:40:15] "GET /api/indicator/kline?market=Crypto&symbol=ETH/USDT&timeframe=1D&limit=500&_t=1768315215854 HTTP/1.1" 200 - +2026-01-13 22:40:17,526 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=500 +2026-01-13 22:40:17,667 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:40:17] "GET /api/indicator/kline?market=Crypto&symbol=ETH/USDT&timeframe=1m&limit=500&_t=1768315217517 HTTP/1.1" 200 - +2026-01-13 22:40:18,919 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=5m, limit=500 +2026-01-13 22:40:19,139 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:40:19] "GET /api/indicator/kline?market=Crypto&symbol=ETH/USDT&timeframe=5m&limit=500&_t=1768315218912 HTTP/1.1" 200 - +2026-01-13 22:40:19,210 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:40:19] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:40:19,781 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=500 +2026-01-13 22:40:19,783 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:40:19] "GET /api/indicator/kline?market=Crypto&symbol=ETH/USDT&timeframe=1m&limit=500&_t=1768315219774 HTTP/1.1" 200 - +2026-01-13 22:40:20,706 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=15m, limit=500 +2026-01-13 22:40:20,708 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:40:20] "GET /api/indicator/kline?market=Crypto&symbol=ETH/USDT&timeframe=15m&limit=500&_t=1768315220698 HTTP/1.1" 200 - +2026-01-13 22:40:21,989 - app.routes.kline - INFO - Requesting K-lines: Crypto:ETH/USDT, timeframe=1m, limit=500 +2026-01-13 22:40:21,991 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:40:21] "GET /api/indicator/kline?market=Crypto&symbol=ETH/USDT&timeframe=1m&limit=500&_t=1768315221984 HTTP/1.1" 200 - +2026-01-13 22:40:23,672 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1m, limit=500 +2026-01-13 22:40:23,796 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:40:23] "GET /api/indicator/kline?market=Crypto&symbol=BNB/USDT&timeframe=1m&limit=500&_t=1768315223667 HTTP/1.1" 200 - +2026-01-13 22:40:25,239 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=5m, limit=500 +2026-01-13 22:40:25,409 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:40:25] "GET /api/indicator/kline?market=Crypto&symbol=BNB/USDT&timeframe=5m&limit=500&_t=1768315225234 HTTP/1.1" 200 - +2026-01-13 22:40:26,101 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1m, limit=500 +2026-01-13 22:40:26,103 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:40:26] "GET /api/indicator/kline?market=Crypto&symbol=BNB/USDT&timeframe=1m&limit=500&_t=1768315226095 HTTP/1.1" 200 - +2026-01-13 22:40:40,391 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1m, limit=5 +2026-01-13 22:40:40,461 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:40:40] "GET /api/indicator/kline?market=Crypto&symbol=BNB/USDT&timeframe=1m&limit=5&_t=1768315240386 HTTP/1.1" 200 - +2026-01-13 22:40:41,390 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1m, limit=5 +2026-01-13 22:40:41,391 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:40:41] "GET /api/indicator/kline?market=Crypto&symbol=BNB/USDT&timeframe=1m&limit=5&_t=1768315241387 HTTP/1.1" 200 - +2026-01-13 22:40:42,390 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1m, limit=5 +2026-01-13 22:40:42,390 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:40:42] "GET /api/indicator/kline?market=Crypto&symbol=BNB/USDT&timeframe=1m&limit=5&_t=1768315242386 HTTP/1.1" 200 - +2026-01-13 22:40:43,391 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1m, limit=5 +2026-01-13 22:40:43,393 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:40:43] "GET /api/indicator/kline?market=Crypto&symbol=BNB/USDT&timeframe=1m&limit=5&_t=1768315243387 HTTP/1.1" 200 - +2026-01-13 22:40:43,814 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:40:43] "GET /api/strategies/notifications?limit=50&_t=1768315243801 HTTP/1.1" 200 - +2026-01-13 22:40:44,391 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1m, limit=5 +2026-01-13 22:40:44,392 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:40:44] "GET /api/indicator/kline?market=Crypto&symbol=BNB/USDT&timeframe=1m&limit=5&_t=1768315244387 HTTP/1.1" 200 - +2026-01-13 22:40:45,390 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1m, limit=5 +2026-01-13 22:40:45,390 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:40:45] "GET /api/indicator/kline?market=Crypto&symbol=BNB/USDT&timeframe=1m&limit=5&_t=1768315245386 HTTP/1.1" 200 - +2026-01-13 22:40:46,391 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1m, limit=5 +2026-01-13 22:40:46,452 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:40:46] "GET /api/indicator/kline?market=Crypto&symbol=BNB/USDT&timeframe=1m&limit=5&_t=1768315246386 HTTP/1.1" 200 - +2026-01-13 22:40:47,391 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1m, limit=5 +2026-01-13 22:40:47,392 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:40:47] "GET /api/indicator/kline?market=Crypto&symbol=BNB/USDT&timeframe=1m&limit=5&_t=1768315247386 HTTP/1.1" 200 - +2026-01-13 22:40:48,390 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1m, limit=5 +2026-01-13 22:40:48,391 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:40:48] "GET /api/indicator/kline?market=Crypto&symbol=BNB/USDT&timeframe=1m&limit=5&_t=1768315248386 HTTP/1.1" 200 - +2026-01-13 22:40:49,260 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:40:49] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:41:13,819 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:41:13] "GET /api/strategies/notifications?limit=50&_t=1768315273807 HTTP/1.1" 200 - +2026-01-13 22:41:19,318 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:41:19] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:41:43,810 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:41:43] "GET /api/strategies/notifications?limit=50&_t=1768315303797 HTTP/1.1" 200 - +2026-01-13 22:41:49,358 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:41:49] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:42:13,815 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:42:13] "GET /api/strategies/notifications?limit=50&_t=1768315333802 HTTP/1.1" 200 - +2026-01-13 22:42:19,400 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:42:19] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:42:43,821 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:42:43] "GET /api/strategies/notifications?limit=50&_t=1768315363806 HTTP/1.1" 200 - +2026-01-13 22:42:49,446 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:42:49] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:43:13,821 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:43:13] "GET /api/strategies/notifications?limit=50&_t=1768315393807 HTTP/1.1" 200 - +2026-01-13 22:43:19,497 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:43:19] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:43:43,821 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:43:43] "GET /api/strategies/notifications?limit=50&_t=1768315423806 HTTP/1.1" 200 - +2026-01-13 22:43:49,544 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:43:49] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:44:13,811 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:44:13] "GET /api/strategies/notifications?limit=50&_t=1768315453797 HTTP/1.1" 200 - +2026-01-13 22:44:19,594 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:44:19] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:44:43,815 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:44:43] "GET /api/strategies/notifications?limit=50&_t=1768315483801 HTTP/1.1" 200 - +2026-01-13 22:44:49,633 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:44:49] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:45:13,810 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:45:13] "GET /api/strategies/notifications?limit=50&_t=1768315513796 HTTP/1.1" 200 - +2026-01-13 22:45:19,684 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:45:19] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:45:43,818 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:45:43] "GET /api/strategies/notifications?limit=50&_t=1768315543804 HTTP/1.1" 200 - +2026-01-13 22:45:49,741 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:45:49] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:46:13,816 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:46:13] "GET /api/strategies/notifications?limit=50&_t=1768315573803 HTTP/1.1" 200 - +2026-01-13 22:46:19,790 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:46:19] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:46:43,879 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:46:43] "GET /api/strategies/notifications?limit=50&_t=1768315603801 HTTP/1.1" 200 - +2026-01-13 22:46:49,845 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:46:49] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:47:13,807 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:47:13] "GET /api/strategies/notifications?limit=50&_t=1768315633794 HTTP/1.1" 200 - +2026-01-13 22:47:19,910 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:47:19] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:47:43,822 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:47:43] "GET /api/strategies/notifications?limit=50&_t=1768315663806 HTTP/1.1" 200 - +2026-01-13 22:47:49,962 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:47:49] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:48:13,808 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:48:13] "GET /api/strategies/notifications?limit=50&_t=1768315693794 HTTP/1.1" 200 - +2026-01-13 22:48:20,015 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:48:20] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:48:44,274 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:48:44] "GET /api/strategies/notifications?limit=50&_t=1768315724257 HTTP/1.1" 200 - +2026-01-13 22:48:50,083 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:48:50] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:49:14,267 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:49:14] "GET /api/strategies/notifications?limit=50&_t=1768315754253 HTTP/1.1" 200 - +2026-01-13 22:49:20,131 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:49:20] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:49:48,286 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:49:48] "GET /api/strategies/notifications?limit=50&_t=1768315788263 HTTP/1.1" 200 - +2026-01-13 22:49:50,174 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:49:50] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:50:20,228 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:50:20] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:50:48,272 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:50:48] "GET /api/strategies/notifications?limit=50&_t=1768315848253 HTTP/1.1" 200 - +2026-01-13 22:50:50,263 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:50:50] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:51:20,312 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:51:20] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:51:48,274 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:51:48] "GET /api/strategies/notifications?limit=50&_t=1768315908254 HTTP/1.1" 200 - +2026-01-13 22:51:50,356 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:51:50] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:52:20,418 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:52:20] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:52:48,278 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:52:48] "GET /api/strategies/notifications?limit=50&_t=1768315968264 HTTP/1.1" 200 - +2026-01-13 22:52:50,462 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:52:50] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:53:20,513 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:53:20] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:53:48,280 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:53:48] "GET /api/strategies/notifications?limit=50&_t=1768316028263 HTTP/1.1" 200 - +2026-01-13 22:53:50,550 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:53:50] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:54:20,594 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:54:20] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:54:48,284 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:54:48] "GET /api/strategies/notifications?limit=50&_t=1768316088266 HTTP/1.1" 200 - +2026-01-13 22:54:50,644 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:54:50] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:55:20,691 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:55:20] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:55:48,281 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:55:48] "GET /api/strategies/notifications?limit=50&_t=1768316148263 HTTP/1.1" 200 - +2026-01-13 22:55:50,742 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:55:50] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:56:20,797 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:56:20] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:56:48,271 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:56:48] "GET /api/strategies/notifications?limit=50&_t=1768316208258 HTTP/1.1" 200 - +2026-01-13 22:56:50,862 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:56:50] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:57:20,902 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:57:20] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:57:48,269 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:57:48] "GET /api/strategies/notifications?limit=50&_t=1768316268252 HTTP/1.1" 200 - +2026-01-13 22:57:50,945 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:57:50] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:58:20,992 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:58:20] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:58:48,271 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:58:48] "GET /api/strategies/notifications?limit=50&_t=1768316328259 HTTP/1.1" 200 - +2026-01-13 22:58:51,043 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:58:51] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:59:21,094 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:59:21] "GET /api/health HTTP/1.1" 200 - +2026-01-13 22:59:48,278 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 22:59:48] "GET /api/strategies/notifications?limit=50&_t=1768316388259 HTTP/1.1" 200 - +2026-01-13 22:59:51,136 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 22:59:51] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:00:21,192 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:00:21] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:00:46,384 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:00:46] "GET /api/strategies/notifications?limit=50&_t=1768316446340 HTTP/1.1" 200 - +2026-01-13 23:00:47,777 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:00:47] "GET /api/market/types?_t=1768316447771 HTTP/1.1" 200 - +2026-01-13 23:00:47,796 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:00:47] "GET /api/portfolio/alerts?_t=1768316447771 HTTP/1.1" 200 - +2026-01-13 23:00:47,798 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:00:47] "GET /api/portfolio/monitors?_t=1768316447771 HTTP/1.1" 200 - +2026-01-13 23:00:47,801 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:00:47] "GET /api/portfolio/groups?_t=1768316447771 HTTP/1.1" 200 - +2026-01-13 23:00:50,865 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:00:50] "GET /api/portfolio/positions?_t=1768316447771 HTTP/1.1" 200 - +2026-01-13 23:00:51,245 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:00:51] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:00:53,227 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:00:53] "GET /api/portfolio/summary?_t=1768316447771 HTTP/1.1" 200 - +2026-01-13 23:01:13,810 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:01:13] "GET /api/strategies/notifications?limit=50&_t=1768316473796 HTTP/1.1" 200 - +2026-01-13 23:01:14,725 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:01:14] "PUT /api/portfolio/monitors/1 HTTP/1.1" 403 - +2026-01-13 23:01:20,526 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:01:20] "GET /api/portfolio/positions?refresh=1&_t=1768316477774 HTTP/1.1" 200 - +2026-01-13 23:01:21,296 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:01:21] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:01:23,334 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:01:23] "GET /api/portfolio/summary?refresh=1&_t=1768316477774 HTTP/1.1" 200 - +2026-01-13 23:01:43,821 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:01:43] "GET /api/strategies/notifications?limit=50&_t=1768316503808 HTTP/1.1" 200 - +2026-01-13 23:01:50,577 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:01:50] "GET /api/portfolio/summary?refresh=1&_t=1768316507775 HTTP/1.1" 200 - +2026-01-13 23:01:51,359 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:01:51] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:01:53,294 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:01:53] "GET /api/portfolio/positions?refresh=1&_t=1768316507775 HTTP/1.1" 200 - +2026-01-13 23:02:13,816 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:02:13] "GET /api/strategies/notifications?limit=50&_t=1768316533797 HTTP/1.1" 200 - +2026-01-13 23:02:20,541 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:02:20] "GET /api/portfolio/summary?refresh=1&_t=1768316537767 HTTP/1.1" 200 - +2026-01-13 23:02:21,397 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:02:21] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:02:23,186 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:02:23] "GET /api/portfolio/positions?refresh=1&_t=1768316537767 HTTP/1.1" 200 - +2026-01-13 23:02:43,822 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:02:43] "GET /api/strategies/notifications?limit=50&_t=1768316563797 HTTP/1.1" 200 - +2026-01-13 23:02:50,482 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:02:50] "GET /api/portfolio/summary?refresh=1&_t=1768316567779 HTTP/1.1" 200 - +2026-01-13 23:02:51,452 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:02:51] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:02:53,193 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:02:53] "GET /api/portfolio/positions?refresh=1&_t=1768316567779 HTTP/1.1" 200 - +2026-01-13 23:03:13,833 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:03:13] "GET /api/strategies/notifications?limit=50&_t=1768316593808 HTTP/1.1" 200 - +2026-01-13 23:03:20,503 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:03:20] "GET /api/portfolio/positions?refresh=1&_t=1768316597767 HTTP/1.1" 200 - +2026-01-13 23:03:21,515 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:03:21] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:03:23,262 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:03:23] "GET /api/portfolio/summary?refresh=1&_t=1768316597767 HTTP/1.1" 200 - +2026-01-13 23:03:26,088 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:03:26] "GET /api/strategies?_t=1768316606062 HTTP/1.1" 200 - +2026-01-13 23:03:27,552 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:03:27] "GET /api/market/types?_t=1768316607314 HTTP/1.1" 200 - +2026-01-13 23:03:27,553 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:03:27] "GET /api/user/info?_t=1768316607314 HTTP/1.1" 200 - +2026-01-13 23:03:27,574 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:03:27] "GET /api/market/watchlist/get?userid=1&_t=1768316607314 HTTP/1.1" 200 - +2026-01-13 23:03:27,575 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:03:27] "GET /api/indicator/getIndicators?userid=1&_t=1768316607314 HTTP/1.1" 200 - +2026-01-13 23:03:27,578 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:03:27] "GET /api/market/watchlist/get?userid=1&_t=1768316607564 HTTP/1.1" 200 - +2026-01-13 23:03:27,581 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:03:27] "GET /api/indicator/getIndicators?userid=1&_t=1768316607564 HTTP/1.1" 200 - +2026-01-13 23:03:27,593 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=500 +2026-01-13 23:03:28,045 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:03:28] "GET /api/indicator/kline?market=USStock&symbol=AVGO&timeframe=1D&limit=500&_t=1768316607586 HTTP/1.1" 200 - +2026-01-13 23:03:29,647 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1m, limit=500 +2026-01-13 23:03:30,049 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:03:30] "GET /api/indicator/kline?market=USStock&symbol=AVGO&timeframe=1m&limit=500&_t=1768316609639 HTTP/1.1" 200 - +2026-01-13 23:03:32,974 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1m, limit=500 +2026-01-13 23:03:33,045 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:03:33] "GET /api/indicator/kline?market=Crypto&symbol=BNB/USDT&timeframe=1m&limit=500&_t=1768316612968 HTTP/1.1" 200 - +2026-01-13 23:03:34,634 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=5m, limit=500 +2026-01-13 23:03:34,802 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:03:34] "GET /api/indicator/kline?market=Crypto&symbol=BNB/USDT&timeframe=5m&limit=500&_t=1768316614627 HTTP/1.1" 200 - +2026-01-13 23:03:35,292 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1m, limit=500 +2026-01-13 23:03:35,294 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:03:35] "GET /api/indicator/kline?market=Crypto&symbol=BNB/USDT&timeframe=1m&limit=500&_t=1768316615286 HTTP/1.1" 200 - +2026-01-13 23:03:36,303 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=30m, limit=500 +2026-01-13 23:03:36,476 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:03:36] "GET /api/indicator/kline?market=Crypto&symbol=BNB/USDT&timeframe=30m&limit=500&_t=1768316616296 HTTP/1.1" 200 - +2026-01-13 23:03:36,957 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1H, limit=500 +2026-01-13 23:03:37,077 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:03:37] "GET /api/indicator/kline?market=Crypto&symbol=BNB/USDT&timeframe=1H&limit=500&_t=1768316616951 HTTP/1.1" 200 - +2026-01-13 23:03:37,889 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1W, limit=500 +2026-01-13 23:03:37,961 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:03:37] "GET /api/indicator/kline?market=Crypto&symbol=BNB/USDT&timeframe=1W&limit=500&_t=1768316617881 HTTP/1.1" 200 - +2026-01-13 23:03:38,490 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1D, limit=500 +2026-01-13 23:03:38,613 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:03:38] "GET /api/indicator/kline?market=Crypto&symbol=BNB/USDT&timeframe=1D&limit=500&_t=1768316618483 HTTP/1.1" 200 - +2026-01-13 23:03:39,727 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=4H, limit=500 +2026-01-13 23:03:39,959 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:03:39] "GET /api/indicator/kline?market=Crypto&symbol=BNB/USDT&timeframe=4H&limit=500&_t=1768316619720 HTTP/1.1" 200 - +2026-01-13 23:03:40,381 - app.routes.kline - INFO - Requesting K-lines: Crypto:BNB/USDT, timeframe=1H, limit=500 +2026-01-13 23:03:40,382 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:03:40] "GET /api/indicator/kline?market=Crypto&symbol=BNB/USDT&timeframe=1H&limit=500&_t=1768316620374 HTTP/1.1" 200 - +2026-01-13 23:03:43,808 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:03:43] "GET /api/strategies/notifications?limit=50&_t=1768316623793 HTTP/1.1" 200 - +2026-01-13 23:03:46,235 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1H, limit=500 +2026-01-13 23:03:46,352 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:03:46] "GET /api/indicator/kline?market=Crypto&symbol=BTC/USDT&timeframe=1H&limit=500&_t=1768316626228 HTTP/1.1" 200 - +2026-01-13 23:03:47,970 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=4H, limit=500 +2026-01-13 23:03:48,092 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:03:48] "GET /api/indicator/kline?market=Crypto&symbol=BTC/USDT&timeframe=4H&limit=500&_t=1768316627963 HTTP/1.1" 200 - +2026-01-13 23:03:48,549 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1D, limit=500 +2026-01-13 23:03:48,721 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:03:48] "GET /api/indicator/kline?market=Crypto&symbol=BTC/USDT&timeframe=1D&limit=500&_t=1768316628543 HTTP/1.1" 200 - +2026-01-13 23:03:49,588 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1W, limit=500 +2026-01-13 23:03:49,782 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:03:49] "GET /api/indicator/kline?market=Crypto&symbol=BTC/USDT&timeframe=1W&limit=500&_t=1768316629581 HTTP/1.1" 200 - +2026-01-13 23:03:50,603 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=15m, limit=500 +2026-01-13 23:03:50,717 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:03:50] "GET /api/indicator/kline?market=Crypto&symbol=BTC/USDT&timeframe=15m&limit=500&_t=1768316630596 HTTP/1.1" 200 - +2026-01-13 23:03:51,411 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=5m, limit=500 +2026-01-13 23:03:51,534 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:03:51] "GET /api/indicator/kline?market=Crypto&symbol=BTC/USDT&timeframe=5m&limit=500&_t=1768316631406 HTTP/1.1" 200 - +2026-01-13 23:03:51,565 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:03:51] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:03:52,629 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=15m, limit=500 +2026-01-13 23:03:52,632 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:03:52] "GET /api/indicator/kline?market=Crypto&symbol=BTC/USDT&timeframe=15m&limit=500&_t=1768316632623 HTTP/1.1" 200 - +2026-01-13 23:03:53,375 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=5m, limit=500 +2026-01-13 23:03:53,377 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:03:53] "GET /api/indicator/kline?market=Crypto&symbol=BTC/USDT&timeframe=5m&limit=500&_t=1768316633370 HTTP/1.1" 200 - +2026-01-13 23:03:55,274 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=500 +2026-01-13 23:03:55,445 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:03:55] "GET /api/indicator/kline?market=Crypto&symbol=BTC/USDT&timeframe=1m&limit=500&_t=1768316635268 HTTP/1.1" 200 - +2026-01-13 23:03:57,215 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=5m, limit=500 +2026-01-13 23:03:57,217 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:03:57] "GET /api/indicator/kline?market=Crypto&symbol=BTC/USDT&timeframe=5m&limit=500&_t=1768316637210 HTTP/1.1" 200 - +2026-01-13 23:04:00,930 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=5m, limit=5 +2026-01-13 23:04:01,000 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:01] "GET /api/indicator/kline?market=Crypto&symbol=BTC/USDT&timeframe=5m&limit=5&_t=1768316640923 HTTP/1.1" 200 - +2026-01-13 23:04:01,920 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=5m, limit=5 +2026-01-13 23:04:01,921 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:01] "GET /api/indicator/kline?market=Crypto&symbol=BTC/USDT&timeframe=5m&limit=5&_t=1768316641917 HTTP/1.1" 200 - +2026-01-13 23:04:02,636 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=500 +2026-01-13 23:04:02,831 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:02] "GET /api/indicator/kline?market=Crypto&symbol=BTC/USDT&timeframe=1m&limit=500&_t=1768316642629 HTTP/1.1" 200 - +2026-01-13 23:04:03,861 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2026-01-13 23:04:03,987 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:03] "GET /api/indicator/kline?market=Crypto&symbol=BTC/USDT&timeframe=1m&limit=5&_t=1768316643857 HTTP/1.1" 200 - +2026-01-13 23:04:04,851 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2026-01-13 23:04:04,853 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:04] "GET /api/indicator/kline?market=Crypto&symbol=BTC/USDT&timeframe=1m&limit=5&_t=1768316644848 HTTP/1.1" 200 - +2026-01-13 23:04:05,814 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=5m, limit=500 +2026-01-13 23:04:05,815 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:05] "GET /api/indicator/kline?market=Crypto&symbol=BTC/USDT&timeframe=5m&limit=500&_t=1768316645808 HTTP/1.1" 200 - +2026-01-13 23:04:06,842 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=5m, limit=5 +2026-01-13 23:04:06,843 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:06] "GET /api/indicator/kline?market=Crypto&symbol=BTC/USDT&timeframe=5m&limit=5&_t=1768316646838 HTTP/1.1" 200 - +2026-01-13 23:04:07,836 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=5m, limit=5 +2026-01-13 23:04:07,836 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:07] "GET /api/indicator/kline?market=Crypto&symbol=BTC/USDT&timeframe=5m&limit=5&_t=1768316647833 HTTP/1.1" 200 - +2026-01-13 23:04:08,836 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=5m, limit=5 +2026-01-13 23:04:08,836 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:08] "GET /api/indicator/kline?market=Crypto&symbol=BTC/USDT&timeframe=5m&limit=5&_t=1768316648832 HTTP/1.1" 200 - +2026-01-13 23:04:09,841 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=5m, limit=5 +2026-01-13 23:04:09,842 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:09] "GET /api/indicator/kline?market=Crypto&symbol=BTC/USDT&timeframe=5m&limit=5&_t=1768316649836 HTTP/1.1" 200 - +2026-01-13 23:04:10,708 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=15m, limit=500 +2026-01-13 23:04:10,710 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:10] "GET /api/indicator/kline?market=Crypto&symbol=BTC/USDT&timeframe=15m&limit=500&_t=1768316650703 HTTP/1.1" 200 - +2026-01-13 23:04:11,726 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=15m, limit=5 +2026-01-13 23:04:11,846 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:11] "GET /api/indicator/kline?market=Crypto&symbol=BTC/USDT&timeframe=15m&limit=5&_t=1768316651722 HTTP/1.1" 200 - +2026-01-13 23:04:12,726 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=15m, limit=5 +2026-01-13 23:04:12,726 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:12] "GET /api/indicator/kline?market=Crypto&symbol=BTC/USDT&timeframe=15m&limit=5&_t=1768316652722 HTTP/1.1" 200 - +2026-01-13 23:04:13,725 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=15m, limit=5 +2026-01-13 23:04:13,726 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:13] "GET /api/indicator/kline?market=Crypto&symbol=BTC/USDT&timeframe=15m&limit=5&_t=1768316653721 HTTP/1.1" 200 - +2026-01-13 23:04:13,817 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:13] "GET /api/strategies/notifications?limit=50&_t=1768316653805 HTTP/1.1" 200 - +2026-01-13 23:04:14,727 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=15m, limit=5 +2026-01-13 23:04:14,728 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:14] "GET /api/indicator/kline?market=Crypto&symbol=BTC/USDT&timeframe=15m&limit=5&_t=1768316654723 HTTP/1.1" 200 - +2026-01-13 23:04:15,728 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=15m, limit=5 +2026-01-13 23:04:15,729 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:15] "GET /api/indicator/kline?market=Crypto&symbol=BTC/USDT&timeframe=15m&limit=5&_t=1768316655722 HTTP/1.1" 200 - +2026-01-13 23:04:16,384 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=500 +2026-01-13 23:04:16,505 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:16] "GET /api/indicator/kline?market=Crypto&symbol=BTC/USDT&timeframe=1m&limit=500&_t=1768316656378 HTTP/1.1" 200 - +2026-01-13 23:04:17,526 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2026-01-13 23:04:17,644 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:17] "GET /api/indicator/kline?market=Crypto&symbol=BTC/USDT&timeframe=1m&limit=5&_t=1768316657521 HTTP/1.1" 200 - +2026-01-13 23:04:18,526 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2026-01-13 23:04:18,527 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:18] "GET /api/indicator/kline?market=Crypto&symbol=BTC/USDT&timeframe=1m&limit=5&_t=1768316658522 HTTP/1.1" 200 - +2026-01-13 23:04:19,525 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2026-01-13 23:04:19,527 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:19] "GET /api/indicator/kline?market=Crypto&symbol=BTC/USDT&timeframe=1m&limit=5&_t=1768316659522 HTTP/1.1" 200 - +2026-01-13 23:04:20,526 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2026-01-13 23:04:20,527 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:20] "GET /api/indicator/kline?market=Crypto&symbol=BTC/USDT&timeframe=1m&limit=5&_t=1768316660522 HTTP/1.1" 200 - +2026-01-13 23:04:21,525 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2026-01-13 23:04:21,526 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:21] "GET /api/indicator/kline?market=Crypto&symbol=BTC/USDT&timeframe=1m&limit=5&_t=1768316661522 HTTP/1.1" 200 - +2026-01-13 23:04:21,621 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:04:21] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:04:22,526 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2026-01-13 23:04:22,527 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:22] "GET /api/indicator/kline?market=Crypto&symbol=BTC/USDT&timeframe=1m&limit=5&_t=1768316662523 HTTP/1.1" 200 - +2026-01-13 23:04:23,527 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2026-01-13 23:04:23,649 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:23] "GET /api/indicator/kline?market=Crypto&symbol=BTC/USDT&timeframe=1m&limit=5&_t=1768316663522 HTTP/1.1" 200 - +2026-01-13 23:04:24,531 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2026-01-13 23:04:24,532 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:24] "GET /api/indicator/kline?market=Crypto&symbol=BTC/USDT&timeframe=1m&limit=5&_t=1768316664527 HTTP/1.1" 200 - +2026-01-13 23:04:25,526 - app.routes.kline - INFO - Requesting K-lines: Crypto:BTC/USDT, timeframe=1m, limit=5 +2026-01-13 23:04:25,526 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:25] "GET /api/indicator/kline?market=Crypto&symbol=BTC/USDT&timeframe=1m&limit=5&_t=1768316665522 HTTP/1.1" 200 - +2026-01-13 23:04:25,827 - app.routes.kline - INFO - Requesting K-lines: HShare:00700, timeframe=1m, limit=500 +2026-01-13 23:04:26,325 - app.data_sources.base - WARNING - Warning: 00700 data is delayed (25466s) +2026-01-13 23:04:26,336 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:26] "GET /api/indicator/kline?market=HShare&symbol=00700&timeframe=1m&limit=500&_t=1768316665819 HTTP/1.1" 200 - +2026-01-13 23:04:27,360 - app.routes.kline - INFO - Requesting K-lines: HShare:00700, timeframe=1m, limit=5 +2026-01-13 23:04:27,597 - app.data_sources.base - WARNING - Warning: 00700 data is delayed (25468s) +2026-01-13 23:04:27,598 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:27] "GET /api/indicator/kline?market=HShare&symbol=00700&timeframe=1m&limit=5&_t=1768316667355 HTTP/1.1" 200 - +2026-01-13 23:04:27,899 - app.routes.kline - INFO - Requesting K-lines: HShare:00700, timeframe=5m, limit=500 +2026-01-13 23:04:28,258 - app.data_sources.base - WARNING - Warning: 00700 data is delayed (25468s) +2026-01-13 23:04:28,261 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:28] "GET /api/indicator/kline?market=HShare&symbol=00700&timeframe=5m&limit=500&_t=1768316667892 HTTP/1.1" 200 - +2026-01-13 23:04:29,283 - app.routes.kline - INFO - Requesting K-lines: HShare:00700, timeframe=5m, limit=5 +2026-01-13 23:04:29,513 - app.data_sources.base - WARNING - Warning: 00700 data is delayed (25470s) +2026-01-13 23:04:29,514 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:29] "GET /api/indicator/kline?market=HShare&symbol=00700&timeframe=5m&limit=5&_t=1768316669279 HTTP/1.1" 200 - +2026-01-13 23:04:30,280 - app.routes.kline - INFO - Requesting K-lines: HShare:00700, timeframe=5m, limit=5 +2026-01-13 23:04:30,281 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:30] "GET /api/indicator/kline?market=HShare&symbol=00700&timeframe=5m&limit=5&_t=1768316670277 HTTP/1.1" 200 - +2026-01-13 23:04:30,358 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=5m, limit=500 +2026-01-13 23:04:30,896 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:30] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=5m&limit=500&_t=1768316670350 HTTP/1.1" 200 - +2026-01-13 23:04:31,923 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=5m, limit=5 +2026-01-13 23:04:32,397 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:32] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=5m&limit=5&_t=1768316671918 HTTP/1.1" 200 - +2026-01-13 23:04:32,925 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=5m, limit=5 +2026-01-13 23:04:32,926 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:32] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=5m&limit=5&_t=1768316672919 HTTP/1.1" 200 - +2026-01-13 23:04:33,735 - app.routes.kline - INFO - Requesting K-lines: AShare:000858, timeframe=5m, limit=500 +2026-01-13 23:04:34,062 - app.data_sources.base - WARNING - Warning: 000858 data is delayed (29074s) +2026-01-13 23:04:34,065 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:34] "GET /api/indicator/kline?market=AShare&symbol=000858&timeframe=5m&limit=500&_t=1768316673729 HTTP/1.1" 200 - +2026-01-13 23:04:35,092 - app.routes.kline - INFO - Requesting K-lines: AShare:000858, timeframe=5m, limit=5 +2026-01-13 23:04:35,295 - app.data_sources.base - WARNING - Warning: 000858 data is delayed (29075s) +2026-01-13 23:04:35,295 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:35] "GET /api/indicator/kline?market=AShare&symbol=000858&timeframe=5m&limit=5&_t=1768316675086 HTTP/1.1" 200 - +2026-01-13 23:04:35,605 - app.routes.kline - INFO - Requesting K-lines: AShare:000858, timeframe=1m, limit=500 +2026-01-13 23:04:36,033 - app.data_sources.base - WARNING - Warning: 000858 data is delayed (29076s) +2026-01-13 23:04:36,035 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:36] "GET /api/indicator/kline?market=AShare&symbol=000858&timeframe=1m&limit=500&_t=1768316675597 HTTP/1.1" 200 - +2026-01-13 23:04:37,060 - app.routes.kline - INFO - Requesting K-lines: AShare:000858, timeframe=1m, limit=5 +2026-01-13 23:04:37,571 - app.data_sources.base - WARNING - Warning: 000858 data is delayed (29078s) +2026-01-13 23:04:37,572 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:37] "GET /api/indicator/kline?market=AShare&symbol=000858&timeframe=1m&limit=5&_t=1768316677056 HTTP/1.1" 200 - +2026-01-13 23:04:38,054 - app.routes.kline - INFO - Requesting K-lines: AShare:000858, timeframe=1m, limit=5 +2026-01-13 23:04:38,055 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:38] "GET /api/indicator/kline?market=AShare&symbol=000858&timeframe=1m&limit=5&_t=1768316678050 HTTP/1.1" 200 - +2026-01-13 23:04:39,061 - app.routes.kline - INFO - Requesting K-lines: AShare:000858, timeframe=1m, limit=5 +2026-01-13 23:04:39,061 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:39] "GET /api/indicator/kline?market=AShare&symbol=000858&timeframe=1m&limit=5&_t=1768316679056 HTTP/1.1" 200 - +2026-01-13 23:04:40,054 - app.routes.kline - INFO - Requesting K-lines: AShare:000858, timeframe=1m, limit=5 +2026-01-13 23:04:40,055 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:40] "GET /api/indicator/kline?market=AShare&symbol=000858&timeframe=1m&limit=5&_t=1768316680050 HTTP/1.1" 200 - +2026-01-13 23:04:41,061 - app.routes.kline - INFO - Requesting K-lines: AShare:000858, timeframe=1m, limit=5 +2026-01-13 23:04:41,061 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:41] "GET /api/indicator/kline?market=AShare&symbol=000858&timeframe=1m&limit=5&_t=1768316681056 HTTP/1.1" 200 - +2026-01-13 23:04:42,061 - app.routes.kline - INFO - Requesting K-lines: AShare:000858, timeframe=1m, limit=5 +2026-01-13 23:04:42,061 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:42] "GET /api/indicator/kline?market=AShare&symbol=000858&timeframe=1m&limit=5&_t=1768316682056 HTTP/1.1" 200 - +2026-01-13 23:04:43,065 - app.routes.kline - INFO - Requesting K-lines: AShare:000858, timeframe=1m, limit=5 +2026-01-13 23:04:43,199 - app.routes.kline - INFO - Requesting K-lines: AShare:300475, timeframe=1m, limit=500 +2026-01-13 23:04:43,300 - app.data_sources.base - WARNING - Warning: 000858 data is delayed (29083s) +2026-01-13 23:04:43,300 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:43] "GET /api/indicator/kline?market=AShare&symbol=000858&timeframe=1m&limit=5&_t=1768316683059 HTTP/1.1" 200 - +2026-01-13 23:04:43,535 - app.data_sources.base - WARNING - Warning: 300475 data is delayed (29084s) +2026-01-13 23:04:43,536 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:43] "GET /api/indicator/kline?market=AShare&symbol=300475&timeframe=1m&limit=500&_t=1768316683190 HTTP/1.1" 200 - +2026-01-13 23:04:43,811 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:43] "GET /api/strategies/notifications?limit=50&_t=1768316683800 HTTP/1.1" 200 - +2026-01-13 23:04:44,561 - app.routes.kline - INFO - Requesting K-lines: AShare:300475, timeframe=1m, limit=5 +2026-01-13 23:04:44,835 - app.data_sources.base - WARNING - Warning: 300475 data is delayed (29085s) +2026-01-13 23:04:44,836 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:44] "GET /api/indicator/kline?market=AShare&symbol=300475&timeframe=1m&limit=5&_t=1768316684556 HTTP/1.1" 200 - +2026-01-13 23:04:45,565 - app.routes.kline - INFO - Requesting K-lines: AShare:300475, timeframe=1m, limit=5 +2026-01-13 23:04:45,566 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:45] "GET /api/indicator/kline?market=AShare&symbol=300475&timeframe=1m&limit=5&_t=1768316685559 HTTP/1.1" 200 - +2026-01-13 23:04:46,560 - app.routes.kline - INFO - Requesting K-lines: AShare:300475, timeframe=1m, limit=5 +2026-01-13 23:04:46,561 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:46] "GET /api/indicator/kline?market=AShare&symbol=300475&timeframe=1m&limit=5&_t=1768316686555 HTTP/1.1" 200 - +2026-01-13 23:04:47,562 - app.routes.kline - INFO - Requesting K-lines: AShare:300475, timeframe=1m, limit=5 +2026-01-13 23:04:47,563 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:47] "GET /api/indicator/kline?market=AShare&symbol=300475&timeframe=1m&limit=5&_t=1768316687556 HTTP/1.1" 200 - +2026-01-13 23:04:48,172 - app.routes.kline - INFO - Requesting K-lines: AShare:300475, timeframe=1D, limit=500 +2026-01-13 23:04:48,491 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:48] "GET /api/indicator/kline?market=AShare&symbol=300475&timeframe=1D&limit=500&_t=1768316688165 HTTP/1.1" 200 - +2026-01-13 23:04:49,517 - app.routes.kline - INFO - Requesting K-lines: AShare:300475, timeframe=1D, limit=5 +2026-01-13 23:04:49,808 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:49] "GET /api/indicator/kline?market=AShare&symbol=300475&timeframe=1D&limit=5&_t=1768316689512 HTTP/1.1" 200 - +2026-01-13 23:04:50,516 - app.routes.kline - INFO - Requesting K-lines: AShare:300475, timeframe=1D, limit=5 +2026-01-13 23:04:50,517 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:50] "GET /api/indicator/kline?market=AShare&symbol=300475&timeframe=1D&limit=5&_t=1768316690509 HTTP/1.1" 200 - +2026-01-13 23:04:51,509 - app.routes.kline - INFO - Requesting K-lines: AShare:300475, timeframe=1D, limit=5 +2026-01-13 23:04:51,510 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:51] "GET /api/indicator/kline?market=AShare&symbol=300475&timeframe=1D&limit=5&_t=1768316691506 HTTP/1.1" 200 - +2026-01-13 23:04:51,667 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:04:51] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:04:52,510 - app.routes.kline - INFO - Requesting K-lines: AShare:300475, timeframe=1D, limit=5 +2026-01-13 23:04:52,510 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:52] "GET /api/indicator/kline?market=AShare&symbol=300475&timeframe=1D&limit=5&_t=1768316692506 HTTP/1.1" 200 - +2026-01-13 23:04:53,510 - app.routes.kline - INFO - Requesting K-lines: AShare:300475, timeframe=1D, limit=5 +2026-01-13 23:04:53,510 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:53] "GET /api/indicator/kline?market=AShare&symbol=300475&timeframe=1D&limit=5&_t=1768316693506 HTTP/1.1" 200 - +2026-01-13 23:04:54,605 - app.routes.kline - INFO - Requesting K-lines: AShare:300475, timeframe=1D, limit=5 +2026-01-13 23:04:54,606 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:54] "GET /api/indicator/kline?market=AShare&symbol=300475&timeframe=1D&limit=5&_t=1768316694506 HTTP/1.1" 200 - +2026-01-13 23:04:55,510 - app.routes.kline - INFO - Requesting K-lines: AShare:300475, timeframe=1D, limit=5 +2026-01-13 23:04:55,511 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:55] "GET /api/indicator/kline?market=AShare&symbol=300475&timeframe=1D&limit=5&_t=1768316695507 HTTP/1.1" 200 - +2026-01-13 23:04:56,510 - app.routes.kline - INFO - Requesting K-lines: AShare:300475, timeframe=1D, limit=5 +2026-01-13 23:04:56,511 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:56] "GET /api/indicator/kline?market=AShare&symbol=300475&timeframe=1D&limit=5&_t=1768316696506 HTTP/1.1" 200 - +2026-01-13 23:04:57,510 - app.routes.kline - INFO - Requesting K-lines: AShare:300475, timeframe=1D, limit=5 +2026-01-13 23:04:57,511 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:57] "GET /api/indicator/kline?market=AShare&symbol=300475&timeframe=1D&limit=5&_t=1768316697507 HTTP/1.1" 200 - +2026-01-13 23:04:58,513 - app.routes.kline - INFO - Requesting K-lines: AShare:300475, timeframe=1D, limit=5 +2026-01-13 23:04:58,514 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:58] "GET /api/indicator/kline?market=AShare&symbol=300475&timeframe=1D&limit=5&_t=1768316698508 HTTP/1.1" 200 - +2026-01-13 23:04:59,225 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=500 +2026-01-13 23:04:59,227 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:04:59] "GET /api/indicator/kline?market=USStock&symbol=AVGO&timeframe=1D&limit=500&_t=1768316699219 HTTP/1.1" 200 - +2026-01-13 23:05:00,244 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=5 +2026-01-13 23:05:00,542 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:05:00] "GET /api/indicator/kline?market=USStock&symbol=AVGO&timeframe=1D&limit=5&_t=1768316700240 HTTP/1.1" 200 - +2026-01-13 23:05:01,244 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=5 +2026-01-13 23:05:01,245 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:05:01] "GET /api/indicator/kline?market=USStock&symbol=AVGO&timeframe=1D&limit=5&_t=1768316701240 HTTP/1.1" 200 - +2026-01-13 23:05:02,245 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=5 +2026-01-13 23:05:02,245 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:05:02] "GET /api/indicator/kline?market=USStock&symbol=AVGO&timeframe=1D&limit=5&_t=1768316702241 HTTP/1.1" 200 - +2026-01-13 23:05:03,245 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=5 +2026-01-13 23:05:03,246 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:05:03] "GET /api/indicator/kline?market=USStock&symbol=AVGO&timeframe=1D&limit=5&_t=1768316703240 HTTP/1.1" 200 - +2026-01-13 23:05:03,683 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:05:03] "GET /api/dashboard/summary?_t=1768316703653 HTTP/1.1" 200 - +2026-01-13 23:05:03,684 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:05:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768316703653 HTTP/1.1" 200 - +2026-01-13 23:05:03,690 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:05:03] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768316703653 HTTP/1.1" 200 - +2026-01-13 23:05:08,648 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:05:08] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768316708629 HTTP/1.1" 200 - +2026-01-13 23:05:13,269 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:05:13] "GET /api/market/config?_t=1768316713247 HTTP/1.1" 200 - +2026-01-13 23:05:13,270 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:05:13] "GET /api/user/info?_t=1768316713247 HTTP/1.1" 200 - +2026-01-13 23:05:13,280 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:05:13] "GET /api/market/watchlist/get?userid=1&_t=1768316713247 HTTP/1.1" 200 - +2026-01-13 23:05:13,303 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:05:13] "GET /api/market/types?_t=1768316713296 HTTP/1.1" 200 - +2026-01-13 23:05:13,320 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:05:13] "GET /api/market/watchlist/get?userid=1&_t=1768316713305 HTTP/1.1" 200 - +2026-01-13 23:05:13,816 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:05:13] "GET /api/strategies/notifications?limit=50&_t=1768316713799 HTTP/1.1" 200 - +2026-01-13 23:05:17,974 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:05:17] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AVGO"},{"market":"Crypto","symbol":"ETH/USDT"},{"market":"Crypto","symbol":"BNB/USDT"},{"market":"AShare","symbol":"600519"},{"market":"Futures","symbol":"SI"},{"market":"Forex","symbol":"XAUUSD"},{"market":"Crypto","symbol":"BTC/USDT"},{"market":"HShare","symbol":"00700"},{"market":"AShare","symbol":"300475"},{"market":"USStock","symbol":"AAPL"},{"market":"AShare","symbol":"000858"}]&_t=1768316713344 HTTP/1.1" 200 - +2026-01-13 23:05:18,387 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:05:18] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AVGO"},{"market":"Crypto","symbol":"ETH/USDT"},{"market":"Crypto","symbol":"BNB/USDT"},{"market":"AShare","symbol":"600519"},{"market":"Futures","symbol":"SI"},{"market":"Forex","symbol":"XAUUSD"},{"market":"Crypto","symbol":"BTC/USDT"},{"market":"HShare","symbol":"00700"},{"market":"AShare","symbol":"300475"},{"market":"USStock","symbol":"AAPL"},{"market":"AShare","symbol":"000858"}]&_t=1768316713314 HTTP/1.1" 200 - +2026-01-13 23:05:21,738 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:05:21] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:05:23,891 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:05:23] "GET /api/analysis/getHistoryList?userid=1&page=1&pagesize=20&_t=1768316723853 HTTP/1.1" 200 - +2026-01-13 23:05:24,631 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:05:24] "GET /api/analysis/getTaskStatus?task_id=12&_t=1768316724617 HTTP/1.1" 200 - +2026-01-13 23:05:29,377 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:05:29] "GET /api/user/info?_t=1768316729371 HTTP/1.1" 200 - +2026-01-13 23:05:29,378 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:05:29] "GET /api/market/types?_t=1768316729371 HTTP/1.1" 200 - +2026-01-13 23:05:29,388 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:05:29] "GET /api/market/watchlist/get?userid=1&_t=1768316729371 HTTP/1.1" 200 - +2026-01-13 23:05:29,389 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:05:29] "GET /api/indicator/getIndicators?userid=1&_t=1768316729371 HTTP/1.1" 200 - +2026-01-13 23:05:29,394 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:05:29] "GET /api/market/watchlist/get?userid=1&_t=1768316729382 HTTP/1.1" 200 - +2026-01-13 23:05:29,395 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:05:29] "GET /api/indicator/getIndicators?userid=1&_t=1768316729382 HTTP/1.1" 200 - +2026-01-13 23:05:29,407 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=500 +2026-01-13 23:05:29,409 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:05:29] "GET /api/indicator/kline?market=USStock&symbol=AVGO&timeframe=1D&limit=500&_t=1768316729401 HTTP/1.1" 200 - +2026-01-13 23:05:30,502 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=5 +2026-01-13 23:05:30,503 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:05:30] "GET /api/indicator/kline?market=USStock&symbol=AVGO&timeframe=1D&limit=5&_t=1768316730497 HTTP/1.1" 200 - +2026-01-13 23:05:30,968 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:05:30] "GET /api/strategies?_t=1768316730948 HTTP/1.1" 200 - +2026-01-13 23:05:32,045 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:05:32] "GET /api/market/types?_t=1768316732036 HTTP/1.1" 200 - +2026-01-13 23:05:32,069 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:05:32] "GET /api/portfolio/monitors?_t=1768316732036 HTTP/1.1" 200 - +2026-01-13 23:05:32,071 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:05:32] "GET /api/portfolio/alerts?_t=1768316732036 HTTP/1.1" 200 - +2026-01-13 23:05:32,076 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:05:32] "GET /api/portfolio/groups?_t=1768316732036 HTTP/1.1" 200 - +2026-01-13 23:05:34,813 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:05:34] "GET /api/portfolio/summary?_t=1768316732036 HTTP/1.1" 200 - +2026-01-13 23:05:37,169 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:05:37] "GET /api/portfolio/positions?_t=1768316732036 HTTP/1.1" 200 - +2026-01-13 23:05:43,808 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:05:43] "GET /api/strategies/notifications?limit=50&_t=1768316743794 HTTP/1.1" 200 - +2026-01-13 23:05:47,166 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:05:47] "PUT /api/portfolio/monitors/1 HTTP/1.1" 403 - +2026-01-13 23:05:51,785 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:05:51] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:05:54,373 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:05:54] "GET /api/settings/schema?_t=1768316754369 HTTP/1.1" 200 - +2026-01-13 23:05:54,382 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:05:54] "GET /api/settings/values?_t=1768316754369 HTTP/1.1" 200 - +2026-01-13 23:06:13,818 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:06:13] "GET /api/strategies/notifications?limit=50&_t=1768316773806 HTTP/1.1" 200 - +2026-01-13 23:06:21,843 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:06:21] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:06:43,816 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:06:43] "GET /api/strategies/notifications?limit=50&_t=1768316803805 HTTP/1.1" 200 - +2026-01-13 23:06:45,609 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:06:45] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768316805564 HTTP/1.1" 200 - +2026-01-13 23:06:45,612 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:06:45] "GET /api/dashboard/summary?_t=1768316805564 HTTP/1.1" 200 - +2026-01-13 23:06:45,617 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:06:45] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768316805564 HTTP/1.1" 200 - +2026-01-13 23:06:50,560 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:06:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768316810544 HTTP/1.1" 200 - +2026-01-13 23:06:51,891 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:06:51] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:06:55,563 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:06:55] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768316815544 HTTP/1.1" 200 - +2026-01-13 23:07:00,571 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:07:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768316820546 HTTP/1.1" 200 - +2026-01-13 23:07:05,068 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:07:05] "GET /api/user/info?_t=1768316825051 HTTP/1.1" 200 - +2026-01-13 23:07:05,071 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:07:05] "GET /api/market/config?_t=1768316825051 HTTP/1.1" 200 - +2026-01-13 23:07:05,087 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:07:05] "GET /api/market/watchlist/get?userid=1&_t=1768316825051 HTTP/1.1" 200 - +2026-01-13 23:07:05,103 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:07:05] "GET /api/market/types?_t=1768316825093 HTTP/1.1" 200 - +2026-01-13 23:07:05,113 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:07:05] "GET /api/market/watchlist/get?userid=1&_t=1768316825088 HTTP/1.1" 200 - +2026-01-13 23:07:05,800 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:07:05] "GET /api/market/types?_t=1768316825788 HTTP/1.1" 200 - +2026-01-13 23:07:05,823 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:07:05] "GET /api/portfolio/groups?_t=1768316825788 HTTP/1.1" 200 - +2026-01-13 23:07:05,825 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:07:05] "GET /api/portfolio/monitors?_t=1768316825788 HTTP/1.1" 200 - +2026-01-13 23:07:05,840 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:07:05] "GET /api/portfolio/alerts?_t=1768316825788 HTTP/1.1" 200 - +2026-01-13 23:07:08,527 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:07:08] "GET /api/portfolio/summary?_t=1768316825788 HTTP/1.1" 200 - +2026-01-13 23:07:10,268 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:07:10] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AVGO"},{"market":"Crypto","symbol":"ETH/USDT"},{"market":"Crypto","symbol":"BNB/USDT"},{"market":"AShare","symbol":"600519"},{"market":"Futures","symbol":"SI"},{"market":"Forex","symbol":"XAUUSD"},{"market":"Crypto","symbol":"BTC/USDT"},{"market":"HShare","symbol":"00700"},{"market":"AShare","symbol":"300475"},{"market":"USStock","symbol":"AAPL"},{"market":"AShare","symbol":"000858"}]&_t=1768316825133 HTTP/1.1" 200 - +2026-01-13 23:07:10,923 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:07:10] "GET /api/portfolio/positions?_t=1768316825788 HTTP/1.1" 200 - +2026-01-13 23:07:12,316 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:07:12] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AVGO"},{"market":"Crypto","symbol":"ETH/USDT"},{"market":"Crypto","symbol":"BNB/USDT"},{"market":"AShare","symbol":"600519"},{"market":"Futures","symbol":"SI"},{"market":"Forex","symbol":"XAUUSD"},{"market":"Crypto","symbol":"BTC/USDT"},{"market":"HShare","symbol":"00700"},{"market":"AShare","symbol":"300475"},{"market":"USStock","symbol":"AAPL"},{"market":"AShare","symbol":"000858"}]&_t=1768316825115 HTTP/1.1" 200 - +2026-01-13 23:07:13,806 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:07:13] "GET /api/strategies/notifications?limit=50&_t=1768316833793 HTTP/1.1" 200 - +2026-01-13 23:07:21,947 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:07:21] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:07:44,270 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:07:44] "GET /api/strategies/notifications?limit=50&_t=1768316864255 HTTP/1.1" 200 - +2026-01-13 23:07:51,996 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:07:51] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:08:14,278 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:08:14] "GET /api/strategies/notifications?limit=50&_t=1768316894260 HTTP/1.1" 200 - +2026-01-13 23:08:22,059 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:08:22] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:08:27,302 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:08:27] "GET /api/market/types?_t=1768316907294 HTTP/1.1" 200 - +2026-01-13 23:08:27,342 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:08:27] "GET /api/portfolio/alerts?_t=1768316907294 HTTP/1.1" 200 - +2026-01-13 23:08:27,344 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:08:27] "GET /api/portfolio/monitors?_t=1768316907294 HTTP/1.1" 200 - +2026-01-13 23:08:27,356 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:08:27] "GET /api/portfolio/groups?_t=1768316907294 HTTP/1.1" 200 - +2026-01-13 23:08:32,282 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:08:32] "GET /api/portfolio/summary?_t=1768316907294 HTTP/1.1" 200 - +2026-01-13 23:08:34,216 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:08:34] "GET /api/portfolio/positions?_t=1768316907294 HTTP/1.1" 200 - +2026-01-13 23:08:43,813 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:08:43] "GET /api/strategies/notifications?limit=50&_t=1768316923801 HTTP/1.1" 200 - +2026-01-13 23:08:49,332 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:08:49] "GET /api/market/types?_t=1768316929325 HTTP/1.1" 200 - +2026-01-13 23:08:49,344 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:08:49] "GET /api/portfolio/alerts?_t=1768316929325 HTTP/1.1" 200 - +2026-01-13 23:08:49,346 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:08:49] "GET /api/portfolio/groups?_t=1768316929325 HTTP/1.1" 200 - +2026-01-13 23:08:49,346 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:08:49] "GET /api/portfolio/monitors?_t=1768316929325 HTTP/1.1" 200 - +2026-01-13 23:08:51,745 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:08:51] "GET /api/portfolio/summary?_t=1768316929325 HTTP/1.1" 200 - +2026-01-13 23:08:52,131 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:08:52] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:08:54,446 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:08:54] "GET /api/portfolio/positions?_t=1768316929325 HTTP/1.1" 200 - +2026-01-13 23:09:01,785 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:09:01] "GET /api/strategies?_t=1768316941768 HTTP/1.1" 200 - +2026-01-13 23:09:03,213 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:09:03] "GET /api/market/types?_t=1768316943207 HTTP/1.1" 200 - +2026-01-13 23:09:03,213 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:09:03] "GET /api/user/info?_t=1768316943207 HTTP/1.1" 200 - +2026-01-13 23:09:03,228 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:09:03] "GET /api/market/watchlist/get?userid=1&_t=1768316943207 HTTP/1.1" 200 - +2026-01-13 23:09:03,237 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:09:03] "GET /api/indicator/getIndicators?userid=1&_t=1768316943207 HTTP/1.1" 200 - +2026-01-13 23:09:03,246 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:09:03] "GET /api/market/watchlist/get?userid=1&_t=1768316943223 HTTP/1.1" 200 - +2026-01-13 23:09:03,249 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:09:03] "GET /api/indicator/getIndicators?userid=1&_t=1768316943223 HTTP/1.1" 200 - +2026-01-13 23:09:03,274 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=500 +2026-01-13 23:09:03,644 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:09:03] "GET /api/indicator/kline?market=USStock&symbol=AVGO&timeframe=1D&limit=500&_t=1768316943268 HTTP/1.1" 200 - +2026-01-13 23:09:04,670 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=5 +2026-01-13 23:09:04,671 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:09:04] "GET /api/indicator/kline?market=USStock&symbol=AVGO&timeframe=1D&limit=5&_t=1768316944668 HTTP/1.1" 200 - +2026-01-13 23:09:05,608 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:09:05] "GET /api/user/info?_t=1768316945592 HTTP/1.1" 200 - +2026-01-13 23:09:05,610 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:09:05] "GET /api/market/config?_t=1768316945592 HTTP/1.1" 200 - +2026-01-13 23:09:05,650 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:09:05] "GET /api/market/watchlist/get?userid=1&_t=1768316945592 HTTP/1.1" 200 - +2026-01-13 23:09:05,671 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:09:05] "GET /api/market/watchlist/get?userid=1&_t=1768316945655 HTTP/1.1" 200 - +2026-01-13 23:09:05,676 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:09:05] "GET /api/market/types?_t=1768316945668 HTTP/1.1" 200 - +2026-01-13 23:09:09,166 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:09:09] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768316949136 HTTP/1.1" 200 - +2026-01-13 23:09:09,168 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:09:09] "GET /api/dashboard/summary?_t=1768316949136 HTTP/1.1" 200 - +2026-01-13 23:09:09,174 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:09:09] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768316949136 HTTP/1.1" 200 - +2026-01-13 23:09:10,405 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:09:10] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AVGO"},{"market":"Crypto","symbol":"ETH/USDT"},{"market":"Crypto","symbol":"BNB/USDT"},{"market":"AShare","symbol":"600519"},{"market":"Futures","symbol":"SI"},{"market":"Forex","symbol":"XAUUSD"},{"market":"Crypto","symbol":"BTC/USDT"},{"market":"HShare","symbol":"00700"},{"market":"AShare","symbol":"300475"},{"market":"USStock","symbol":"AAPL"},{"market":"AShare","symbol":"000858"}]&_t=1768316945695 HTTP/1.1" 200 - +2026-01-13 23:09:10,818 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:09:10] "GET /api/user/info?_t=1768316950812 HTTP/1.1" 200 - +2026-01-13 23:09:10,820 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:09:10] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AVGO"},{"market":"Crypto","symbol":"ETH/USDT"},{"market":"Crypto","symbol":"BNB/USDT"},{"market":"AShare","symbol":"600519"},{"market":"Futures","symbol":"SI"},{"market":"Forex","symbol":"XAUUSD"},{"market":"Crypto","symbol":"BTC/USDT"},{"market":"HShare","symbol":"00700"},{"market":"AShare","symbol":"300475"},{"market":"USStock","symbol":"AAPL"},{"market":"AShare","symbol":"000858"}]&_t=1768316945682 HTTP/1.1" 200 - +2026-01-13 23:09:10,821 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:09:10] "GET /api/market/config?_t=1768316950812 HTTP/1.1" 200 - +2026-01-13 23:09:10,836 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:09:10] "GET /api/market/types?_t=1768316950831 HTTP/1.1" 200 - +2026-01-13 23:09:10,838 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:09:10] "GET /api/market/watchlist/get?userid=1&_t=1768316950812 HTTP/1.1" 200 - +2026-01-13 23:09:10,844 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:09:10] "GET /api/market/watchlist/get?userid=1&_t=1768316950826 HTTP/1.1" 200 - +2026-01-13 23:09:10,927 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:09:10] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AVGO"},{"market":"Crypto","symbol":"ETH/USDT"},{"market":"Crypto","symbol":"BNB/USDT"},{"market":"AShare","symbol":"600519"},{"market":"Futures","symbol":"SI"},{"market":"Forex","symbol":"XAUUSD"},{"market":"Crypto","symbol":"BTC/USDT"},{"market":"HShare","symbol":"00700"},{"market":"AShare","symbol":"300475"},{"market":"USStock","symbol":"AAPL"},{"market":"AShare","symbol":"000858"}]&_t=1768316950874 HTTP/1.1" 200 - +2026-01-13 23:09:10,927 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:09:10] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AVGO"},{"market":"Crypto","symbol":"ETH/USDT"},{"market":"Crypto","symbol":"BNB/USDT"},{"market":"AShare","symbol":"600519"},{"market":"Futures","symbol":"SI"},{"market":"Forex","symbol":"XAUUSD"},{"market":"Crypto","symbol":"BTC/USDT"},{"market":"HShare","symbol":"00700"},{"market":"AShare","symbol":"300475"},{"market":"USStock","symbol":"AAPL"},{"market":"AShare","symbol":"000858"}]&_t=1768316950857 HTTP/1.1" 200 - +2026-01-13 23:09:12,497 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:09:12] "GET /api/settings/schema?_t=1768316952490 HTTP/1.1" 200 - +2026-01-13 23:09:12,502 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:09:12] "GET /api/settings/values?_t=1768316952490 HTTP/1.1" 200 - +2026-01-13 23:09:13,932 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:09:13] "GET /api/strategies/notifications?limit=50&_t=1768316953799 HTTP/1.1" 200 - +2026-01-13 23:09:22,193 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:09:22] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:09:43,809 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:09:43] "GET /api/strategies/notifications?limit=50&_t=1768316983797 HTTP/1.1" 200 - +2026-01-13 23:09:52,239 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:09:52] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:10:13,807 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:10:13] "GET /api/strategies/notifications?limit=50&_t=1768317013794 HTTP/1.1" 200 - +2026-01-13 23:10:22,286 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:10:22] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:10:43,817 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:10:43] "GET /api/strategies/notifications?limit=50&_t=1768317043803 HTTP/1.1" 200 - +2026-01-13 23:10:52,345 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:10:52] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:11:13,812 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:11:13] "GET /api/strategies/notifications?limit=50&_t=1768317073798 HTTP/1.1" 200 - +2026-01-13 23:11:22,394 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:11:22] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:11:43,817 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:11:43] "GET /api/strategies/notifications?limit=50&_t=1768317103795 HTTP/1.1" 200 - +2026-01-13 23:11:52,456 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:11:52] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:12:13,809 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:12:13] "GET /api/strategies/notifications?limit=50&_t=1768317133796 HTTP/1.1" 200 - +2026-01-13 23:12:22,498 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:12:22] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:12:43,812 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:12:43] "GET /api/strategies/notifications?limit=50&_t=1768317163799 HTTP/1.1" 200 - +2026-01-13 23:12:52,538 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:12:52] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:13:13,818 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:13:13] "GET /api/strategies/notifications?limit=50&_t=1768317193803 HTTP/1.1" 200 - +2026-01-13 23:13:22,585 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:13:22] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:13:43,819 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:13:43] "GET /api/strategies/notifications?limit=50&_t=1768317223805 HTTP/1.1" 200 - +2026-01-13 23:13:52,627 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:13:52] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:14:13,815 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:14:13] "GET /api/strategies/notifications?limit=50&_t=1768317253802 HTTP/1.1" 200 - +2026-01-13 23:14:22,676 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:14:22] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:14:43,819 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:14:43] "GET /api/strategies/notifications?limit=50&_t=1768317283805 HTTP/1.1" 200 - +2026-01-13 23:14:52,744 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:14:52] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:15:13,811 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:15:13] "GET /api/strategies/notifications?limit=50&_t=1768317313798 HTTP/1.1" 200 - +2026-01-13 23:15:22,797 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:15:22] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:15:43,823 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:15:43] "GET /api/strategies/notifications?limit=50&_t=1768317343808 HTTP/1.1" 200 - +2026-01-13 23:15:52,847 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:15:52] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:16:13,808 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:16:13] "GET /api/strategies/notifications?limit=50&_t=1768317373796 HTTP/1.1" 200 - +2026-01-13 23:16:22,893 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:16:22] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:16:43,831 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:16:43] "GET /api/strategies/notifications?limit=50&_t=1768317403804 HTTP/1.1" 200 - +2026-01-13 23:16:52,960 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:16:52] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:17:13,815 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:17:13] "GET /api/strategies/notifications?limit=50&_t=1768317433804 HTTP/1.1" 200 - +2026-01-13 23:17:23,004 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:17:23] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:17:43,814 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:17:43] "GET /api/strategies/notifications?limit=50&_t=1768317463797 HTTP/1.1" 200 - +2026-01-13 23:17:53,061 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:17:53] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:18:13,845 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:18:13] "GET /api/strategies/notifications?limit=50&_t=1768317493804 HTTP/1.1" 200 - +2026-01-13 23:18:23,098 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:18:23] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:18:43,808 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:18:43] "GET /api/strategies/notifications?limit=50&_t=1768317523796 HTTP/1.1" 200 - +2026-01-13 23:18:53,149 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:18:53] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:19:13,808 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:19:13] "GET /api/strategies/notifications?limit=50&_t=1768317553796 HTTP/1.1" 200 - +2026-01-13 23:19:23,187 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:19:23] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:19:43,809 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:19:43] "GET /api/strategies/notifications?limit=50&_t=1768317583797 HTTP/1.1" 200 - +2026-01-13 23:19:53,231 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:19:53] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:20:14,271 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:20:14] "GET /api/strategies/notifications?limit=50&_t=1768317614259 HTTP/1.1" 200 - +2026-01-13 23:20:23,268 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:20:23] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:20:44,268 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:20:44] "GET /api/strategies/notifications?limit=50&_t=1768317644256 HTTP/1.1" 200 - +2026-01-13 23:20:53,306 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:20:53] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:21:23,366 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:21:23] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:21:48,278 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:21:48] "GET /api/strategies/notifications?limit=50&_t=1768317708257 HTTP/1.1" 200 - +2026-01-13 23:21:53,434 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:21:53] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:22:23,486 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:22:23] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:22:48,279 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:22:48] "GET /api/strategies/notifications?limit=50&_t=1768317768264 HTTP/1.1" 200 - +2026-01-13 23:22:53,551 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:22:53] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:23:23,591 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:23:23] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:23:48,280 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:23:48] "GET /api/strategies/notifications?limit=50&_t=1768317828261 HTTP/1.1" 200 - +2026-01-13 23:23:53,629 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:23:53] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:24:23,671 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:24:23] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:24:48,277 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:24:48] "GET /api/strategies/notifications?limit=50&_t=1768317888257 HTTP/1.1" 200 - +2026-01-13 23:24:53,728 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:24:53] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:25:23,789 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:25:23] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:25:48,282 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:25:48] "GET /api/strategies/notifications?limit=50&_t=1768317948251 HTTP/1.1" 200 - +2026-01-13 23:25:53,842 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:25:53] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:26:23,896 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:26:23] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:26:48,283 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:26:48] "GET /api/strategies/notifications?limit=50&_t=1768318008266 HTTP/1.1" 200 - +2026-01-13 23:26:53,944 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:26:53] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:27:24,000 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:27:24] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:27:48,276 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:27:48] "GET /api/strategies/notifications?limit=50&_t=1768318068258 HTTP/1.1" 200 - +2026-01-13 23:27:54,047 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:27:54] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:28:24,107 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:28:24] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:28:48,269 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:28:48] "GET /api/strategies/notifications?limit=50&_t=1768318128253 HTTP/1.1" 200 - +2026-01-13 23:28:54,156 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:28:54] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:29:23,861 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:29:23] "GET /api/strategies/notifications?limit=50&_t=1768318163814 HTTP/1.1" 200 - +2026-01-13 23:29:24,200 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:29:24] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:29:26,205 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:29:26] "GET /api/settings/schema?_t=1768318166196 HTTP/1.1" 200 - +2026-01-13 23:29:26,210 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:29:26] "GET /api/settings/values?_t=1768318166196 HTTP/1.1" 200 - +2026-01-13 23:29:26,222 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:29:26] "GET /api/strategies/notifications?limit=50&_t=1768318166196 HTTP/1.1" 200 - +2026-01-13 23:29:54,240 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:29:54] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:29:56,184 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:29:56] "GET /api/strategies/notifications?limit=50&_t=1768318196172 HTTP/1.1" 200 - +2026-01-13 23:30:24,296 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:30:24] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:30:26,196 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:30:26] "GET /api/strategies/notifications?limit=50&_t=1768318226184 HTTP/1.1" 200 - +2026-01-13 23:30:54,336 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:30:54] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:30:56,204 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:30:56] "GET /api/strategies/notifications?limit=50&_t=1768318256187 HTTP/1.1" 200 - +2026-01-13 23:31:05,663 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:31:05] "GET /api/settings/schema?_t=1768318265654 HTTP/1.1" 200 - +2026-01-13 23:31:05,668 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:31:05] "GET /api/settings/values?_t=1768318265654 HTTP/1.1" 200 - +2026-01-13 23:31:05,686 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:31:05] "GET /api/strategies/notifications?limit=50&_t=1768318265654 HTTP/1.1" 200 - +2026-01-13 23:31:10,984 - app - INFO - !!! SYSTEM STARTING IN DEMO MODE (READ-ONLY) !!! +2026-01-13 23:31:11,922 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-13 23:31:11,922 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-13 23:31:11,927 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-13 23:31:11,927 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-13 23:31:12,005 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-13 23:31:12,006 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-13 23:31:12,248 - app.services.strategy - INFO - Found 1 running strategies: [{'id': 14, 'strategy_type': 'IndicatorStrategy'}] +2026-01-13 23:31:12,249 - app - INFO - Restoring 1 running strategies... +2026-01-13 23:31:12,250 - app.services.trading_executor - INFO - Strategy 14 loop starting +2026-01-13 23:31:12,250 - app.services.trading_executor - INFO - Strategy 14 started +2026-01-13 23:31:12,250 - app - INFO - [OK] IndicatorStrategy 14 restored +2026-01-13 23:31:12,251 - app - INFO - Strategy restore completed: 1/1 restored +2026-01-13 23:31:12,258 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://172.18.0.2:5000 +2026-01-13 23:31:12,258 - werkzeug - INFO - Press CTRL+C to quit +2026-01-13 23:31:12,260 - app.services.trading_executor - INFO - Strategy 14 derivatives trading; normalize market_type to: swap +2026-01-13 23:31:13,587 - app.services.trading_executor - INFO - ็ญ–็•ฅ 14 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-13 23:31:13,601 - app.services.trading_executor - INFO - Strategy 14 initialized; pending_signals=0 +2026-01-13 23:31:16,342 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:31:16] "GET /api/settings/schema?_t=1768318276322 HTTP/1.1" 200 - +2026-01-13 23:31:16,347 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:31:16] "GET /api/settings/values?_t=1768318276322 HTTP/1.1" 200 - +2026-01-13 23:31:17,916 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:31:17] "GET /api/user/info?_t=1768318277909 HTTP/1.1" 200 - +2026-01-13 23:31:18,017 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:31:18] "GET /api/settings/schema?_t=1768318278008 HTTP/1.1" 200 - +2026-01-13 23:31:18,022 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:31:18] "GET /api/settings/values?_t=1768318278008 HTTP/1.1" 200 - +2026-01-13 23:31:18,042 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:31:18] "GET /api/strategies/notifications?limit=50&_t=1768318278008 HTTP/1.1" 200 - +2026-01-13 23:31:40,808 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:31:40] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:31:48,013 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:31:48] "GET /api/strategies/notifications?limit=50&_t=1768318307998 HTTP/1.1" 200 - +2026-01-13 23:31:53,899 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:31:53] "GET /api/strategies/notifications?limit=50&_t=1768318313859 HTTP/1.1" 200 - +2026-01-13 23:31:57,301 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:31:57] "GET /api/strategies/notifications?limit=50&_t=1768318317273 HTTP/1.1" 200 - +2026-01-13 23:32:00,132 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:32:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768318320096 HTTP/1.1" 200 - +2026-01-13 23:32:00,138 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:32:00] "GET /api/dashboard/summary?_t=1768318320096 HTTP/1.1" 200 - +2026-01-13 23:32:00,141 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:32:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768318320096 HTTP/1.1" 200 - +2026-01-13 23:32:03,311 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:32:03] "GET /api/settings/schema?_t=1768318323306 HTTP/1.1" 200 - +2026-01-13 23:32:03,319 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:32:03] "GET /api/settings/values?_t=1768318323306 HTTP/1.1" 200 - +2026-01-13 23:32:10,850 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:32:10] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:32:18,021 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:32:18] "GET /api/strategies/notifications?limit=50&_t=1768318337996 HTTP/1.1" 200 - +2026-01-13 23:32:40,913 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:32:40] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:32:48,005 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:32:48] "GET /api/strategies/notifications?limit=50&_t=1768318367992 HTTP/1.1" 200 - +2026-01-13 23:33:10,964 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:33:10] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:33:18,010 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:33:18] "GET /api/strategies/notifications?limit=50&_t=1768318397998 HTTP/1.1" 200 - +2026-01-13 23:33:41,041 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:33:41] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:33:42,435 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:33:42] "POST /api/user/login HTTP/1.1" 200 - +2026-01-13 23:33:42,756 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:33:42] "GET /api/strategies/notifications?limit=50&_t=1768318422676 HTTP/1.1" 200 - +2026-01-13 23:33:42,767 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:33:42] "GET /api/dashboard/summary?_t=1768318422676 HTTP/1.1" 200 - +2026-01-13 23:33:42,768 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:33:42] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768318422676 HTTP/1.1" 200 - +2026-01-13 23:33:42,779 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:33:42] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768318422676 HTTP/1.1" 200 - +2026-01-13 23:33:47,661 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:33:47] "GET /api/strategies/notifications?limit=50&_t=1768318427609 HTTP/1.1" 200 - +2026-01-13 23:33:47,667 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:33:47] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768318427650 HTTP/1.1" 200 - +2026-01-13 23:33:48,013 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:33:48] "GET /api/strategies/notifications?limit=50&_t=1768318427994 HTTP/1.1" 200 - +2026-01-13 23:33:49,976 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:33:49] "GET /api/strategies/notifications?limit=50&_t=1768318429948 HTTP/1.1" 200 - +2026-01-13 23:33:50,518 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:33:50] "POST /api/strategies/notifications/read HTTP/1.1" 403 - +2026-01-13 23:33:52,621 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:33:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768318432607 HTTP/1.1" 200 - +2026-01-13 23:33:57,625 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:33:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768318437604 HTTP/1.1" 200 - +2026-01-13 23:34:02,248 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:34:02] "GET /api/user/info?_t=1768318442240 HTTP/1.1" 200 - +2026-01-13 23:34:02,249 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:34:02] "GET /api/market/config?_t=1768318442240 HTTP/1.1" 200 - +2026-01-13 23:34:02,257 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:34:02] "GET /api/market/watchlist/get?userid=1&_t=1768318442240 HTTP/1.1" 200 - +2026-01-13 23:34:02,257 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:34:02] "GET /api/market/types?_t=1768318442255 HTTP/1.1" 200 - +2026-01-13 23:34:02,261 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:34:02] "GET /api/market/watchlist/get?userid=1&_t=1768318442251 HTTP/1.1" 200 - +2026-01-13 23:34:02,415 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 23:34:02,416 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 23:34:02,416 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 23:34:02,416 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 23:34:02,416 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 23:34:02,417 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-13 23:34:03,895 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:34:03] "GET /api/market/types?_t=1768318443620 HTTP/1.1" 200 - +2026-01-13 23:34:03,903 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:34:03] "GET /api/user/info?_t=1768318443620 HTTP/1.1" 200 - +2026-01-13 23:34:03,915 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:34:03] "GET /api/market/watchlist/get?userid=1&_t=1768318443620 HTTP/1.1" 200 - +2026-01-13 23:34:03,918 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:34:03] "GET /api/indicator/getIndicators?userid=1&_t=1768318443620 HTTP/1.1" 200 - +2026-01-13 23:34:03,927 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:34:03] "GET /api/market/watchlist/get?userid=1&_t=1768318443910 HTTP/1.1" 200 - +2026-01-13 23:34:03,928 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:34:03] "GET /api/indicator/getIndicators?userid=1&_t=1768318443910 HTTP/1.1" 200 - +2026-01-13 23:34:03,944 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=500 +2026-01-13 23:34:04,419 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:34:04] "GET /api/indicator/kline?market=USStock&symbol=AVGO&timeframe=1D&limit=500&_t=1768318443940 HTTP/1.1" 200 - +2026-01-13 23:34:06,343 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:34:06] "GET /api/strategies?_t=1768318446328 HTTP/1.1" 200 - +2026-01-13 23:34:07,077 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:34:07] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AVGO"},{"market":"Crypto","symbol":"ETH/USDT"},{"market":"Crypto","symbol":"BNB/USDT"},{"market":"AShare","symbol":"600519"},{"market":"Futures","symbol":"SI"},{"market":"Forex","symbol":"XAUUSD"},{"market":"Crypto","symbol":"BTC/USDT"},{"market":"HShare","symbol":"00700"},{"market":"AShare","symbol":"300475"},{"market":"USStock","symbol":"AAPL"},{"market":"AShare","symbol":"000858"}]&_t=1768318442266 HTTP/1.1" 200 - +2026-01-13 23:34:07,822 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:34:07] "GET /api/market/types?_t=1768318447818 HTTP/1.1" 200 - +2026-01-13 23:34:07,835 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:34:07] "GET /api/portfolio/alerts?_t=1768318447818 HTTP/1.1" 200 - +2026-01-13 23:34:07,838 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:34:07] "GET /api/portfolio/monitors?_t=1768318447818 HTTP/1.1" 200 - +2026-01-13 23:34:07,839 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:34:07] "GET /api/portfolio/groups?_t=1768318447818 HTTP/1.1" 200 - +2026-01-13 23:34:07,937 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:34:07] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AVGO"},{"market":"Crypto","symbol":"ETH/USDT"},{"market":"Crypto","symbol":"BNB/USDT"},{"market":"AShare","symbol":"600519"},{"market":"Futures","symbol":"SI"},{"market":"Forex","symbol":"XAUUSD"},{"market":"Crypto","symbol":"BTC/USDT"},{"market":"HShare","symbol":"00700"},{"market":"AShare","symbol":"300475"},{"market":"USStock","symbol":"AAPL"},{"market":"AShare","symbol":"000858"}]&_t=1768318442271 HTTP/1.1" 200 - +2026-01-13 23:34:10,516 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:34:10] "GET /api/portfolio/summary?_t=1768318447818 HTTP/1.1" 200 - +2026-01-13 23:34:11,102 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:34:11] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:34:12,632 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:34:12] "GET /api/strategies/notifications?limit=50&_t=1768318452605 HTTP/1.1" 200 - +2026-01-13 23:34:12,937 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:34:12] "GET /api/portfolio/positions?_t=1768318447818 HTTP/1.1" 200 - +2026-01-13 23:34:18,011 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:34:18] "GET /api/strategies/notifications?limit=50&_t=1768318457997 HTTP/1.1" 200 - +2026-01-13 23:34:34,748 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:34:34] "GET /api/settings/schema?_t=1768318474744 HTTP/1.1" 200 - +2026-01-13 23:34:34,754 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:34:34] "GET /api/settings/values?_t=1768318474744 HTTP/1.1" 200 - +2026-01-13 23:34:41,178 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:34:41] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:34:43,275 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:34:43] "GET /api/strategies/notifications?limit=50&_t=1768318483253 HTTP/1.1" 200 - +2026-01-13 23:34:48,003 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:34:48] "GET /api/strategies/notifications?limit=50&_t=1768318487990 HTTP/1.1" 200 - +2026-01-13 23:35:11,243 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:35:11] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:35:13,271 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:35:13] "GET /api/strategies/notifications?limit=50&_t=1768318513254 HTTP/1.1" 200 - +2026-01-13 23:35:18,280 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:35:18] "GET /api/strategies/notifications?limit=50&_t=1768318518262 HTTP/1.1" 200 - +2026-01-13 23:35:41,283 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:35:41] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:35:43,276 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:35:43] "GET /api/strategies/notifications?limit=50&_t=1768318543264 HTTP/1.1" 200 - +2026-01-13 23:35:48,281 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:35:48] "GET /api/strategies/notifications?limit=50&_t=1768318548263 HTTP/1.1" 200 - +2026-01-13 23:36:11,331 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:36:11] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:36:13,275 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:36:13] "GET /api/strategies/notifications?limit=50&_t=1768318573263 HTTP/1.1" 200 - +2026-01-13 23:36:41,388 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:36:41] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:36:43,274 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:36:43] "GET /api/strategies/notifications?limit=50&_t=1768318603261 HTTP/1.1" 200 - +2026-01-13 23:36:48,280 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:36:48] "GET /api/strategies/notifications?limit=50&_t=1768318608260 HTTP/1.1" 200 - +2026-01-13 23:37:11,443 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:37:11] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:37:41,493 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:37:41] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:37:48,274 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:37:48] "GET /api/strategies/notifications?limit=50&_t=1768318668257 HTTP/1.1" 200 - +2026-01-13 23:37:48,275 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:37:48] "GET /api/strategies/notifications?limit=50&_t=1768318668256 HTTP/1.1" 200 - +2026-01-13 23:38:11,541 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:38:11] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:38:41,586 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:38:41] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:38:48,276 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:38:48] "GET /api/strategies/notifications?limit=50&_t=1768318728256 HTTP/1.1" 200 - +2026-01-13 23:38:48,278 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:38:48] "GET /api/strategies/notifications?limit=50&_t=1768318728258 HTTP/1.1" 200 - +2026-01-13 23:39:11,629 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:39:11] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:39:41,670 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:39:41] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:39:48,280 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:39:48] "GET /api/strategies/notifications?limit=50&_t=1768318788261 HTTP/1.1" 200 - +2026-01-13 23:39:48,280 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:39:48] "GET /api/strategies/notifications?limit=50&_t=1768318788261 HTTP/1.1" 200 - +2026-01-13 23:40:11,721 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:40:11] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:40:41,832 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:40:41] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:40:48,272 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:40:48] "GET /api/strategies/notifications?limit=50&_t=1768318848253 HTTP/1.1" 200 - +2026-01-13 23:40:48,273 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:40:48] "GET /api/strategies/notifications?limit=50&_t=1768318848253 HTTP/1.1" 200 - +2026-01-13 23:41:11,887 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:41:11] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:41:41,933 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:41:41] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:41:48,272 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:41:48] "GET /api/strategies/notifications?limit=50&_t=1768318908252 HTTP/1.1" 200 - +2026-01-13 23:41:48,273 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:41:48] "GET /api/strategies/notifications?limit=50&_t=1768318908253 HTTP/1.1" 200 - +2026-01-13 23:42:11,988 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:42:11] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:42:42,044 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:42:42] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:42:48,283 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:42:48] "GET /api/strategies/notifications?limit=50&_t=1768318968261 HTTP/1.1" 200 - +2026-01-13 23:42:48,284 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:42:48] "GET /api/strategies/notifications?limit=50&_t=1768318968262 HTTP/1.1" 200 - +2026-01-13 23:43:12,102 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:43:12] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:43:42,159 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:43:42] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:43:48,282 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:43:48] "GET /api/strategies/notifications?limit=50&_t=1768319028256 HTTP/1.1" 200 - +2026-01-13 23:43:48,282 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:43:48] "GET /api/strategies/notifications?limit=50&_t=1768319028255 HTTP/1.1" 200 - +2026-01-13 23:44:12,209 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:44:12] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:44:42,283 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:44:42] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:44:48,300 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:44:48] "GET /api/strategies/notifications?limit=50&_t=1768319088260 HTTP/1.1" 200 - +2026-01-13 23:44:48,307 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:44:48] "GET /api/strategies/notifications?limit=50&_t=1768319088258 HTTP/1.1" 200 - +2026-01-13 23:44:50,905 - app - INFO - !!! SYSTEM STARTING IN DEMO MODE (READ-ONLY) !!! +2026-01-13 23:44:51,838 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-13 23:44:51,838 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-13 23:44:51,844 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-13 23:44:51,844 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-13 23:44:51,889 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-13 23:44:51,892 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-13 23:44:52,175 - app.services.strategy - INFO - Found 1 running strategies: [{'id': 14, 'strategy_type': 'IndicatorStrategy'}] +2026-01-13 23:44:52,176 - app - INFO - Restoring 1 running strategies... +2026-01-13 23:44:52,176 - app.services.trading_executor - INFO - Strategy 14 loop starting +2026-01-13 23:44:52,176 - app.services.trading_executor - INFO - Strategy 14 started +2026-01-13 23:44:52,177 - app - INFO - [OK] IndicatorStrategy 14 restored +2026-01-13 23:44:52,177 - app - INFO - Strategy restore completed: 1/1 restored +2026-01-13 23:44:52,185 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://172.18.0.2:5000 +2026-01-13 23:44:52,185 - werkzeug - INFO - Press CTRL+C to quit +2026-01-13 23:44:52,186 - app.services.trading_executor - INFO - Strategy 14 derivatives trading; normalize market_type to: swap +2026-01-13 23:44:53,183 - app.services.trading_executor - INFO - ็ญ–็•ฅ 14 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-13 23:44:53,196 - app.services.trading_executor - INFO - Strategy 14 initialized; pending_signals=0 +2026-01-13 23:44:54,086 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:44:54] "GET /api/settings/schema?_t=1768319094081 HTTP/1.1" 200 - +2026-01-13 23:44:54,089 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:44:54] "GET /api/settings/values?_t=1768319094081 HTTP/1.1" 200 - +2026-01-13 23:44:54,102 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:44:54] "GET /api/strategies/notifications?limit=50&_t=1768319094081 HTTP/1.1" 200 - +2026-01-13 23:45:02,577 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:45:02] "POST /api/user/logout HTTP/1.1" 200 - +2026-01-13 23:45:20,699 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:45:20] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:45:48,292 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:45:48] "GET /api/strategies/notifications?limit=50&_t=1768319148261 HTTP/1.1" 200 - +2026-01-13 23:45:50,768 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:45:50] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:46:20,833 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:46:20] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:46:48,276 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:46:48] "GET /api/strategies/notifications?limit=50&_t=1768319208260 HTTP/1.1" 200 - +2026-01-13 23:46:50,884 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:46:50] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:47:20,929 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:47:20] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:47:48,268 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:47:48] "GET /api/strategies/notifications?limit=50&_t=1768319268255 HTTP/1.1" 200 - +2026-01-13 23:47:50,994 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:47:50] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:48:21,047 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:48:21] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:48:48,306 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:48:48] "GET /api/strategies/notifications?limit=50&_t=1768319328261 HTTP/1.1" 200 - +2026-01-13 23:48:51,108 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:48:51] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:49:21,151 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:49:21] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:49:48,284 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:49:48] "GET /api/strategies/notifications?limit=50&_t=1768319388265 HTTP/1.1" 200 - +2026-01-13 23:49:51,211 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:49:51] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:50:21,268 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:50:21] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:50:48,270 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:50:48] "GET /api/strategies/notifications?limit=50&_t=1768319448255 HTTP/1.1" 200 - +2026-01-13 23:50:51,323 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:50:51] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:51:21,368 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:51:21] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:51:48,280 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:51:48] "GET /api/strategies/notifications?limit=50&_t=1768319508265 HTTP/1.1" 200 - +2026-01-13 23:51:51,425 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:51:51] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:52:21,476 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:52:21] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:52:48,270 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:52:48] "GET /api/strategies/notifications?limit=50&_t=1768319568255 HTTP/1.1" 200 - +2026-01-13 23:52:51,528 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:52:51] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:53:21,578 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:53:21] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:53:48,272 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:53:48] "GET /api/strategies/notifications?limit=50&_t=1768319628255 HTTP/1.1" 200 - +2026-01-13 23:53:51,636 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:53:51] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:54:21,755 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:54:21] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:54:48,296 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:54:48] "GET /api/strategies/notifications?limit=50&_t=1768319688264 HTTP/1.1" 200 - +2026-01-13 23:54:51,809 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:54:51] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:55:21,874 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:55:21] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:55:48,273 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:55:48] "GET /api/strategies/notifications?limit=50&_t=1768319748255 HTTP/1.1" 200 - +2026-01-13 23:55:51,935 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:55:51] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:56:21,982 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:56:21] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:56:48,292 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:56:48] "GET /api/strategies/notifications?limit=50&_t=1768319808258 HTTP/1.1" 200 - +2026-01-13 23:56:52,026 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:56:52] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:57:22,080 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:57:22] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:57:48,274 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:57:48] "GET /api/strategies/notifications?limit=50&_t=1768319868257 HTTP/1.1" 200 - +2026-01-13 23:57:52,114 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:57:52] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:58:22,153 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:58:22] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:58:48,273 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:58:48] "GET /api/strategies/notifications?limit=50&_t=1768319928255 HTTP/1.1" 200 - +2026-01-13 23:58:52,200 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:58:52] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:59:22,251 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:59:22] "GET /api/health HTTP/1.1" 200 - +2026-01-13 23:59:48,273 - werkzeug - INFO - 172.18.0.3 - - [13/Jan/2026 23:59:48] "GET /api/strategies/notifications?limit=50&_t=1768319988253 HTTP/1.1" 200 - +2026-01-13 23:59:52,306 - werkzeug - INFO - 127.0.0.1 - - [13/Jan/2026 23:59:52] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:00:22,360 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:00:22] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:00:40,562 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:00:40] "POST /api/user/login HTTP/1.1" 200 - +2026-01-14 00:00:40,876 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:00:40] "GET /api/strategies/notifications?limit=50&_t=1768320040794 HTTP/1.1" 200 - +2026-01-14 00:00:40,884 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:00:40] "GET /api/dashboard/summary?_t=1768320040794 HTTP/1.1" 200 - +2026-01-14 00:00:40,890 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:00:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768320040794 HTTP/1.1" 200 - +2026-01-14 00:00:40,903 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:00:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768320040794 HTTP/1.1" 200 - +2026-01-14 00:00:44,173 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:00:44] "GET /api/settings/schema?_t=1768320044167 HTTP/1.1" 200 - +2026-01-14 00:00:44,177 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:00:44] "GET /api/settings/values?_t=1768320044167 HTTP/1.1" 200 - +2026-01-14 00:00:48,277 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:00:48] "GET /api/strategies/notifications?limit=50&_t=1768320048259 HTTP/1.1" 200 - +2026-01-14 00:00:50,566 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:00:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768320050530 HTTP/1.1" 200 - +2026-01-14 00:00:50,569 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:00:50] "GET /api/dashboard/summary?_t=1768320050530 HTTP/1.1" 200 - +2026-01-14 00:00:50,573 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:00:50] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768320050530 HTTP/1.1" 200 - +2026-01-14 00:00:52,410 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:00:52] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:00:55,549 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:00:55] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768320055514 HTTP/1.1" 200 - +2026-01-14 00:01:00,537 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:01:00] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768320060512 HTTP/1.1" 200 - +2026-01-14 00:01:05,544 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:01:05] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768320065526 HTTP/1.1" 200 - +2026-01-14 00:01:10,540 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:01:10] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768320070520 HTTP/1.1" 200 - +2026-01-14 00:01:10,733 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:01:10] "GET /api/strategies/notifications?limit=50&_t=1768320070721 HTTP/1.1" 200 - +2026-01-14 00:01:15,547 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:01:15] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768320075526 HTTP/1.1" 200 - +2026-01-14 00:01:20,532 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:01:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768320080516 HTTP/1.1" 200 - +2026-01-14 00:01:22,450 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:01:22] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:01:25,530 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:01:25] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768320085512 HTTP/1.1" 200 - +2026-01-14 00:01:26,258 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:01:26] "GET /api/settings/schema?_t=1768320086254 HTTP/1.1" 200 - +2026-01-14 00:01:26,264 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:01:26] "GET /api/settings/values?_t=1768320086254 HTTP/1.1" 200 - +2026-01-14 00:01:36,270 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:01:36] "GET /api/strategies/notifications?limit=50&_t=1768320096241 HTTP/1.1" 200 - +2026-01-14 00:01:38,092 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:01:38] "GET /api/user/info?_t=1768320098086 HTTP/1.1" 200 - +2026-01-14 00:01:38,211 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:01:38] "GET /api/settings/schema?_t=1768320098204 HTTP/1.1" 200 - +2026-01-14 00:01:38,214 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:01:38] "GET /api/settings/values?_t=1768320098204 HTTP/1.1" 200 - +2026-01-14 00:01:38,229 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:01:38] "GET /api/strategies/notifications?limit=50&_t=1768320098204 HTTP/1.1" 200 - +2026-01-14 00:01:40,748 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:01:40] "GET /api/strategies/notifications?limit=50&_t=1768320100736 HTTP/1.1" 200 - +2026-01-14 00:01:52,502 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:01:52] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:02:08,280 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:02:08] "GET /api/strategies/notifications?limit=50&_t=1768320128263 HTTP/1.1" 200 - +2026-01-14 00:02:10,738 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:02:10] "GET /api/strategies/notifications?limit=50&_t=1768320130724 HTTP/1.1" 200 - +2026-01-14 00:02:22,547 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:02:22] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:02:27,462 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:02:27] "GET /api/settings/schema?_t=1768320147447 HTTP/1.1" 200 - +2026-01-14 00:02:27,464 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:02:27] "GET /api/settings/values?_t=1768320147447 HTTP/1.1" 200 - +2026-01-14 00:02:27,482 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:02:27] "GET /api/strategies/notifications?limit=50&_t=1768320147447 HTTP/1.1" 200 - +2026-01-14 00:02:40,737 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:02:40] "GET /api/strategies/notifications?limit=50&_t=1768320160723 HTTP/1.1" 200 - +2026-01-14 00:02:52,589 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:02:52] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:02:57,438 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:02:57] "GET /api/strategies/notifications?limit=50&_t=1768320177424 HTTP/1.1" 200 - +2026-01-14 00:03:10,743 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:03:10] "GET /api/strategies/notifications?limit=50&_t=1768320190731 HTTP/1.1" 200 - +2026-01-14 00:03:22,650 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:03:22] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:03:28,272 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:03:28] "GET /api/strategies/notifications?limit=50&_t=1768320208260 HTTP/1.1" 200 - +2026-01-14 00:03:40,741 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:03:40] "GET /api/strategies/notifications?limit=50&_t=1768320220728 HTTP/1.1" 200 - +2026-01-14 00:03:52,707 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:03:52] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:03:58,277 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:03:58] "GET /api/strategies/notifications?limit=50&_t=1768320238265 HTTP/1.1" 200 - +2026-01-14 00:04:10,745 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:04:10] "GET /api/strategies/notifications?limit=50&_t=1768320250732 HTTP/1.1" 200 - +2026-01-14 00:04:22,757 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:04:22] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:04:28,270 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:04:28] "GET /api/strategies/notifications?limit=50&_t=1768320268256 HTTP/1.1" 200 - +2026-01-14 00:04:40,743 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:04:40] "GET /api/strategies/notifications?limit=50&_t=1768320280729 HTTP/1.1" 200 - +2026-01-14 00:04:52,820 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:04:52] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:04:58,269 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:04:58] "GET /api/strategies/notifications?limit=50&_t=1768320298255 HTTP/1.1" 200 - +2026-01-14 00:05:10,745 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:05:10] "GET /api/strategies/notifications?limit=50&_t=1768320310732 HTTP/1.1" 200 - +2026-01-14 00:05:22,880 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:05:22] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:05:28,268 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:05:28] "GET /api/strategies/notifications?limit=50&_t=1768320328258 HTTP/1.1" 200 - +2026-01-14 00:05:40,735 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:05:40] "GET /api/strategies/notifications?limit=50&_t=1768320340722 HTTP/1.1" 200 - +2026-01-14 00:05:52,935 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:05:52] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:06:10,746 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:06:10] "GET /api/strategies/notifications?limit=50&_t=1768320370732 HTTP/1.1" 200 - +2026-01-14 00:06:22,981 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:06:22] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:06:40,838 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:06:40] "GET /api/strategies/notifications?limit=50&_t=1768320400724 HTTP/1.1" 200 - +2026-01-14 00:06:48,277 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:06:48] "GET /api/strategies/notifications?limit=50&_t=1768320408257 HTTP/1.1" 200 - +2026-01-14 00:06:53,038 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:06:53] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:07:10,752 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:07:10] "GET /api/strategies/notifications?limit=50&_t=1768320430725 HTTP/1.1" 200 - +2026-01-14 00:07:23,090 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:07:23] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:07:40,738 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:07:40] "GET /api/strategies/notifications?limit=50&_t=1768320460725 HTTP/1.1" 200 - +2026-01-14 00:07:48,273 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:07:48] "GET /api/strategies/notifications?limit=50&_t=1768320468253 HTTP/1.1" 200 - +2026-01-14 00:07:53,130 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:07:53] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:08:10,736 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:08:10] "GET /api/strategies/notifications?limit=50&_t=1768320490721 HTTP/1.1" 200 - +2026-01-14 00:08:23,178 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:08:23] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:08:40,739 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:08:40] "GET /api/strategies/notifications?limit=50&_t=1768320520727 HTTP/1.1" 200 - +2026-01-14 00:08:48,278 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:08:48] "GET /api/strategies/notifications?limit=50&_t=1768320528264 HTTP/1.1" 200 - +2026-01-14 00:08:53,239 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:08:53] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:09:10,739 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:09:10] "GET /api/strategies/notifications?limit=50&_t=1768320550727 HTTP/1.1" 200 - +2026-01-14 00:09:23,288 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:09:23] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:09:40,742 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:09:40] "GET /api/strategies/notifications?limit=50&_t=1768320580727 HTTP/1.1" 200 - +2026-01-14 00:09:48,278 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:09:48] "GET /api/strategies/notifications?limit=50&_t=1768320588255 HTTP/1.1" 200 - +2026-01-14 00:09:53,327 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:09:53] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:10:10,737 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:10:10] "GET /api/strategies/notifications?limit=50&_t=1768320610724 HTTP/1.1" 200 - +2026-01-14 00:10:23,378 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:10:23] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:10:40,747 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:10:40] "GET /api/strategies/notifications?limit=50&_t=1768320640735 HTTP/1.1" 200 - +2026-01-14 00:10:48,271 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:10:48] "GET /api/strategies/notifications?limit=50&_t=1768320648252 HTTP/1.1" 200 - +2026-01-14 00:10:53,425 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:10:53] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:11:10,747 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:11:10] "GET /api/strategies/notifications?limit=50&_t=1768320670732 HTTP/1.1" 200 - +2026-01-14 00:11:23,483 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:11:23] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:11:40,736 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:11:40] "GET /api/strategies/notifications?limit=50&_t=1768320700724 HTTP/1.1" 200 - +2026-01-14 00:11:48,273 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:11:48] "GET /api/strategies/notifications?limit=50&_t=1768320708254 HTTP/1.1" 200 - +2026-01-14 00:11:53,527 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:11:53] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:12:10,748 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:12:10] "GET /api/strategies/notifications?limit=50&_t=1768320730736 HTTP/1.1" 200 - +2026-01-14 00:12:23,576 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:12:23] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:12:28,560 - app - INFO - !!! SYSTEM STARTING IN DEMO MODE (READ-ONLY) !!! +2026-01-14 00:12:29,494 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-14 00:12:29,494 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-14 00:12:29,499 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-14 00:12:29,499 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-14 00:12:29,542 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-14 00:12:29,543 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-14 00:12:29,792 - app.services.strategy - INFO - Found 1 running strategies: [{'id': 14, 'strategy_type': 'IndicatorStrategy'}] +2026-01-14 00:12:29,793 - app - INFO - Restoring 1 running strategies... +2026-01-14 00:12:29,793 - app.services.trading_executor - INFO - Strategy 14 loop starting +2026-01-14 00:12:29,793 - app.services.trading_executor - INFO - Strategy 14 started +2026-01-14 00:12:29,794 - app - INFO - [OK] IndicatorStrategy 14 restored +2026-01-14 00:12:29,794 - app - INFO - Strategy restore completed: 1/1 restored +2026-01-14 00:12:29,801 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://172.18.0.2:5000 +2026-01-14 00:12:29,801 - werkzeug - INFO - Press CTRL+C to quit +2026-01-14 00:12:29,802 - app.services.trading_executor - INFO - Strategy 14 derivatives trading; normalize market_type to: swap +2026-01-14 00:12:30,704 - app.services.trading_executor - INFO - ็ญ–็•ฅ 14 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-14 00:12:30,718 - app.services.trading_executor - INFO - Strategy 14 initialized; pending_signals=0 +2026-01-14 00:12:40,753 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:12:40] "GET /api/strategies/notifications?limit=50&_t=1768320760731 HTTP/1.1" 200 - +2026-01-14 00:12:48,287 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:12:48] "GET /api/strategies/notifications?limit=50&_t=1768320768267 HTTP/1.1" 200 - +2026-01-14 00:12:58,337 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:12:58] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:12:59,681 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:12:59] "GET /api/user/info?_t=1768320779676 HTTP/1.1" 200 - +2026-01-14 00:12:59,775 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:12:59] "GET /api/settings/schema?_t=1768320779768 HTTP/1.1" 200 - +2026-01-14 00:12:59,778 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:12:59] "GET /api/settings/values?_t=1768320779768 HTTP/1.1" 200 - +2026-01-14 00:12:59,788 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:12:59] "GET /api/strategies/notifications?limit=50&_t=1768320779768 HTTP/1.1" 200 - +2026-01-14 00:13:06,268 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:13:06] "GET /api/market/types?_t=1768320786258 HTTP/1.1" 200 - +2026-01-14 00:13:06,284 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:13:06] "GET /api/portfolio/alerts?_t=1768320786258 HTTP/1.1" 200 - +2026-01-14 00:13:06,285 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:13:06] "GET /api/portfolio/groups?_t=1768320786258 HTTP/1.1" 200 - +2026-01-14 00:13:06,292 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:13:06] "GET /api/portfolio/monitors?_t=1768320786258 HTTP/1.1" 200 - +2026-01-14 00:13:06,403 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-14 00:13:11,301 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:13:11] "GET /api/portfolio/summary?_t=1768320786258 HTTP/1.1" 200 - +2026-01-14 00:13:13,102 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:13:13] "GET /api/portfolio/positions?_t=1768320786258 HTTP/1.1" 200 - +2026-01-14 00:13:17,747 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:13:17] "PUT /api/portfolio/monitors/1 HTTP/1.1" 403 - +2026-01-14 00:13:28,404 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:13:28] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:13:29,768 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:13:29] "GET /api/strategies/notifications?limit=50&_t=1768320809754 HTTP/1.1" 200 - +2026-01-14 00:13:38,964 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:13:38] "GET /api/portfolio/summary?refresh=1&_t=1768320816266 HTTP/1.1" 200 - +2026-01-14 00:13:41,659 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:13:41] "GET /api/portfolio/positions?refresh=1&_t=1768320816266 HTTP/1.1" 200 - +2026-01-14 00:13:44,218 - app - INFO - !!! SYSTEM STARTING IN DEMO MODE (READ-ONLY) !!! +2026-01-14 00:13:45,097 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-14 00:13:45,097 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-14 00:13:45,102 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-14 00:13:45,102 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-14 00:13:45,138 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-14 00:13:45,142 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-14 00:13:45,385 - app.services.strategy - INFO - Found 1 running strategies: [{'id': 14, 'strategy_type': 'IndicatorStrategy'}] +2026-01-14 00:13:45,386 - app - INFO - Restoring 1 running strategies... +2026-01-14 00:13:45,387 - app.services.trading_executor - INFO - Strategy 14 loop starting +2026-01-14 00:13:45,387 - app.services.trading_executor - INFO - Strategy 14 started +2026-01-14 00:13:45,387 - app - INFO - [OK] IndicatorStrategy 14 restored +2026-01-14 00:13:45,388 - app - INFO - Strategy restore completed: 1/1 restored +2026-01-14 00:13:45,398 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://172.18.0.2:5000 +2026-01-14 00:13:45,399 - werkzeug - INFO - Press CTRL+C to quit +2026-01-14 00:13:45,400 - app.services.trading_executor - INFO - Strategy 14 derivatives trading; normalize market_type to: swap +2026-01-14 00:13:46,439 - app.services.trading_executor - INFO - ็ญ–็•ฅ 14 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-14 00:13:46,452 - app.services.trading_executor - INFO - Strategy 14 initialized; pending_signals=0 +2026-01-14 00:13:48,274 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:13:48] "GET /api/strategies/notifications?limit=50&_t=1768320828253 HTTP/1.1" 200 - +2026-01-14 00:13:59,772 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:13:59] "GET /api/strategies/notifications?limit=50&_t=1768320839758 HTTP/1.1" 200 - +2026-01-14 00:14:06,362 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-14 00:14:09,687 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:14:09] "GET /api/portfolio/summary?refresh=1&_t=1768320846269 HTTP/1.1" 200 - +2026-01-14 00:14:11,719 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:14:11] "GET /api/portfolio/positions?refresh=1&_t=1768320846269 HTTP/1.1" 200 - +2026-01-14 00:14:14,014 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:14:14] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:14:29,771 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:14:29] "GET /api/strategies/notifications?limit=50&_t=1768320869759 HTTP/1.1" 200 - +2026-01-14 00:14:39,088 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:14:39] "GET /api/portfolio/summary?refresh=1&_t=1768320876269 HTTP/1.1" 200 - +2026-01-14 00:14:41,701 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:14:41] "GET /api/portfolio/positions?refresh=1&_t=1768320876269 HTTP/1.1" 200 - +2026-01-14 00:14:44,126 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:14:44] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:14:48,283 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:14:48] "GET /api/strategies/notifications?limit=50&_t=1768320888258 HTTP/1.1" 200 - +2026-01-14 00:14:48,576 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:14:48] "GET /api/market/types?_t=1768320888567 HTTP/1.1" 200 - +2026-01-14 00:14:48,594 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:14:48] "GET /api/portfolio/monitors?_t=1768320888567 HTTP/1.1" 200 - +2026-01-14 00:14:48,595 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:14:48] "GET /api/portfolio/groups?_t=1768320888567 HTTP/1.1" 200 - +2026-01-14 00:14:48,608 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:14:48] "GET /api/strategies/notifications?limit=50&_t=1768320888567 HTTP/1.1" 200 - +2026-01-14 00:14:48,625 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:14:48] "GET /api/portfolio/alerts?_t=1768320888567 HTTP/1.1" 200 - +2026-01-14 00:14:50,993 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:14:50] "GET /api/portfolio/summary?_t=1768320888567 HTTP/1.1" 200 - +2026-01-14 00:14:53,693 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:14:53] "GET /api/portfolio/positions?_t=1768320888567 HTTP/1.1" 200 - +2026-01-14 00:14:59,958 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:14:59] "PUT /api/portfolio/monitors/1 HTTP/1.1" 403 - +2026-01-14 00:15:05,602 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:15:05] "PUT /api/portfolio/monitors/1 HTTP/1.1" 403 - +2026-01-14 00:15:14,189 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:15:14] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:15:18,574 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:15:18] "GET /api/strategies/notifications?limit=50&_t=1768320918560 HTTP/1.1" 200 - +2026-01-14 00:15:21,382 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:15:21] "GET /api/portfolio/summary?refresh=1&_t=1768320918579 HTTP/1.1" 200 - +2026-01-14 00:15:24,002 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:15:24] "GET /api/portfolio/positions?refresh=1&_t=1768320918579 HTTP/1.1" 200 - +2026-01-14 00:15:44,248 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:15:44] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:15:48,273 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:15:48] "GET /api/strategies/notifications?limit=50&_t=1768320948254 HTTP/1.1" 200 - +2026-01-14 00:15:48,569 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:15:48] "GET /api/strategies/notifications?limit=50&_t=1768320948548 HTTP/1.1" 200 - +2026-01-14 00:15:51,268 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:15:51] "GET /api/portfolio/summary?refresh=1&_t=1768320948567 HTTP/1.1" 200 - +2026-01-14 00:15:53,962 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:15:53] "GET /api/portfolio/positions?refresh=1&_t=1768320948567 HTTP/1.1" 200 - +2026-01-14 00:16:02,701 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:16:02] "GET /api/strategies/notifications?limit=50&_t=1768320962679 HTTP/1.1" 200 - +2026-01-14 00:16:14,295 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:16:14] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:16:18,589 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:16:18] "GET /api/strategies/notifications?limit=50&_t=1768320978550 HTTP/1.1" 200 - +2026-01-14 00:16:21,348 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:16:21] "GET /api/portfolio/summary?refresh=1&_t=1768320978566 HTTP/1.1" 200 - +2026-01-14 00:16:24,059 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:16:24] "GET /api/portfolio/positions?refresh=1&_t=1768320978566 HTTP/1.1" 200 - +2026-01-14 00:16:27,414 - app - INFO - !!! SYSTEM STARTING IN DEMO MODE (READ-ONLY) !!! +2026-01-14 00:16:28,304 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-14 00:16:28,305 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-14 00:16:28,309 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-14 00:16:28,310 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-14 00:16:28,349 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-14 00:16:28,349 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-14 00:16:28,583 - app.services.strategy - INFO - Found 1 running strategies: [{'id': 14, 'strategy_type': 'IndicatorStrategy'}] +2026-01-14 00:16:28,584 - app - INFO - Restoring 1 running strategies... +2026-01-14 00:16:28,585 - app.services.trading_executor - INFO - Strategy 14 loop starting +2026-01-14 00:16:28,585 - app.services.trading_executor - INFO - Strategy 14 started +2026-01-14 00:16:28,586 - app - INFO - [OK] IndicatorStrategy 14 restored +2026-01-14 00:16:28,586 - app - INFO - Strategy restore completed: 1/1 restored +2026-01-14 00:16:28,593 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://172.18.0.2:5000 +2026-01-14 00:16:28,593 - werkzeug - INFO - Press CTRL+C to quit +2026-01-14 00:16:28,594 - app.services.trading_executor - INFO - Strategy 14 derivatives trading; normalize market_type to: swap +2026-01-14 00:16:29,652 - app.services.trading_executor - INFO - ็ญ–็•ฅ 14 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-14 00:16:29,665 - app.services.trading_executor - INFO - Strategy 14 initialized; pending_signals=0 +2026-01-14 00:16:48,583 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:16:48] "GET /api/strategies/notifications?limit=50&_t=1768321008561 HTTP/1.1" 200 - +2026-01-14 00:16:48,680 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-14 00:16:51,375 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:16:51] "GET /api/portfolio/positions?refresh=1&_t=1768321008579 HTTP/1.1" 200 - +2026-01-14 00:16:53,988 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:16:53] "GET /api/portfolio/summary?refresh=1&_t=1768321008579 HTTP/1.1" 200 - +2026-01-14 00:16:57,217 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:16:57] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:16:57,439 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:16:57] "GET /api/strategies/notifications?limit=50&_t=1768321017428 HTTP/1.1" 200 - +2026-01-14 00:17:10,214 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:10] "GET /api/user/info?_t=1768321030200 HTTP/1.1" 200 - +2026-01-14 00:17:10,215 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:10] "GET /api/market/config?_t=1768321030200 HTTP/1.1" 200 - +2026-01-14 00:17:10,230 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:10] "GET /api/market/watchlist/get?userid=1&_t=1768321030200 HTTP/1.1" 200 - +2026-01-14 00:17:10,257 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:10] "GET /api/market/types?_t=1768321030247 HTTP/1.1" 200 - +2026-01-14 00:17:10,264 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:10] "GET /api/market/watchlist/get?userid=1&_t=1768321030241 HTTP/1.1" 200 - +2026-01-14 00:17:10,323 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-14 00:17:10,329 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-14 00:17:10,335 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-14 00:17:10,335 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-14 00:17:14,091 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:14] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AVGO"},{"market":"Crypto","symbol":"ETH/USDT"},{"market":"Crypto","symbol":"BNB/USDT"},{"market":"AShare","symbol":"600519"},{"market":"Futures","symbol":"SI"},{"market":"Forex","symbol":"XAUUSD"},{"market":"Crypto","symbol":"BTC/USDT"},{"market":"HShare","symbol":"00700"},{"market":"AShare","symbol":"300475"},{"market":"USStock","symbol":"AAPL"},{"market":"AShare","symbol":"000858"}]&_t=1768321030315 HTTP/1.1" 200 - +2026-01-14 00:17:14,675 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:14] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AVGO"},{"market":"Crypto","symbol":"ETH/USDT"},{"market":"Crypto","symbol":"BNB/USDT"},{"market":"AShare","symbol":"600519"},{"market":"Futures","symbol":"SI"},{"market":"Forex","symbol":"XAUUSD"},{"market":"Crypto","symbol":"BTC/USDT"},{"market":"HShare","symbol":"00700"},{"market":"AShare","symbol":"300475"},{"market":"USStock","symbol":"AAPL"},{"market":"AShare","symbol":"000858"}]&_t=1768321030275 HTTP/1.1" 200 - +2026-01-14 00:17:17,541 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:17] "GET /api/user/info?_t=1768321037534 HTTP/1.1" 200 - +2026-01-14 00:17:17,542 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:17] "GET /api/market/config?_t=1768321037534 HTTP/1.1" 200 - +2026-01-14 00:17:17,555 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:17] "GET /api/market/watchlist/get?userid=1&_t=1768321037534 HTTP/1.1" 200 - +2026-01-14 00:17:17,567 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:17] "GET /api/strategies/notifications?limit=50&_t=1768321037534 HTTP/1.1" 200 - +2026-01-14 00:17:17,570 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:17] "GET /api/market/types?_t=1768321037560 HTTP/1.1" 200 - +2026-01-14 00:17:17,581 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:17] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AVGO"},{"market":"Crypto","symbol":"ETH/USDT"},{"market":"Crypto","symbol":"BNB/USDT"},{"market":"AShare","symbol":"600519"},{"market":"Futures","symbol":"SI"},{"market":"Forex","symbol":"XAUUSD"},{"market":"Crypto","symbol":"BTC/USDT"},{"market":"HShare","symbol":"00700"},{"market":"AShare","symbol":"300475"},{"market":"USStock","symbol":"AAPL"},{"market":"AShare","symbol":"000858"}]&_t=1768321037573 HTTP/1.1" 200 - +2026-01-14 00:17:17,582 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:17] "GET /api/market/watchlist/get?userid=1&_t=1768321037556 HTTP/1.1" 200 - +2026-01-14 00:17:17,614 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:17] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AVGO"},{"market":"Crypto","symbol":"ETH/USDT"},{"market":"Crypto","symbol":"BNB/USDT"},{"market":"AShare","symbol":"600519"},{"market":"Futures","symbol":"SI"},{"market":"Forex","symbol":"XAUUSD"},{"market":"Crypto","symbol":"BTC/USDT"},{"market":"HShare","symbol":"00700"},{"market":"AShare","symbol":"300475"},{"market":"USStock","symbol":"AAPL"},{"market":"AShare","symbol":"000858"}]&_t=1768321037605 HTTP/1.1" 200 - +2026-01-14 00:17:25,675 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:25] "GET /api/user/info?_t=1768321045667 HTTP/1.1" 200 - +2026-01-14 00:17:25,676 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:25] "GET /api/market/types?_t=1768321045667 HTTP/1.1" 200 - +2026-01-14 00:17:25,690 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:25] "GET /api/market/watchlist/get?userid=1&_t=1768321045667 HTTP/1.1" 200 - +2026-01-14 00:17:25,695 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:25] "GET /api/indicator/getIndicators?userid=1&_t=1768321045667 HTTP/1.1" 200 - +2026-01-14 00:17:25,713 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:25] "GET /api/market/watchlist/get?userid=1&_t=1768321045681 HTTP/1.1" 200 - +2026-01-14 00:17:25,715 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:25] "GET /api/indicator/getIndicators?userid=1&_t=1768321045681 HTTP/1.1" 200 - +2026-01-14 00:17:25,765 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=500 +2026-01-14 00:17:26,213 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:26] "GET /api/indicator/kline?market=USStock&symbol=AVGO&timeframe=1D&limit=500&_t=1768321045761 HTTP/1.1" 200 - +2026-01-14 00:17:27,318 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:17:27] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:17:27,446 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:27] "GET /api/strategies/notifications?limit=50&_t=1768321047429 HTTP/1.1" 200 - +2026-01-14 00:17:27,526 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=5 +2026-01-14 00:17:27,712 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:27] "GET /api/indicator/kline?market=USStock&symbol=AVGO&timeframe=1D&limit=5&_t=1768321047523 HTTP/1.1" 200 - +2026-01-14 00:17:28,528 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=5 +2026-01-14 00:17:28,529 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:28] "GET /api/indicator/kline?market=USStock&symbol=AVGO&timeframe=1D&limit=5&_t=1768321048523 HTTP/1.1" 200 - +2026-01-14 00:17:29,537 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=5 +2026-01-14 00:17:29,538 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:29] "GET /api/indicator/kline?market=USStock&symbol=AVGO&timeframe=1D&limit=5&_t=1768321049532 HTTP/1.1" 200 - +2026-01-14 00:17:30,528 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=5 +2026-01-14 00:17:30,529 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:30] "GET /api/indicator/kline?market=USStock&symbol=AVGO&timeframe=1D&limit=5&_t=1768321050524 HTTP/1.1" 200 - +2026-01-14 00:17:31,538 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=5 +2026-01-14 00:17:31,539 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:31] "GET /api/indicator/kline?market=USStock&symbol=AVGO&timeframe=1D&limit=5&_t=1768321051534 HTTP/1.1" 200 - +2026-01-14 00:17:32,559 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=5 +2026-01-14 00:17:32,565 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:32] "GET /api/indicator/kline?market=USStock&symbol=AVGO&timeframe=1D&limit=5&_t=1768321052525 HTTP/1.1" 200 - +2026-01-14 00:17:33,523 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=5 +2026-01-14 00:17:33,524 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:33] "GET /api/indicator/kline?market=USStock&symbol=AVGO&timeframe=1D&limit=5&_t=1768321053520 HTTP/1.1" 200 - +2026-01-14 00:17:33,707 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:33] "POST /api/indicator/saveIndicator HTTP/1.1" 403 - +2026-01-14 00:17:34,529 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=5 +2026-01-14 00:17:34,530 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:34] "GET /api/indicator/kline?market=USStock&symbol=AVGO&timeframe=1D&limit=5&_t=1768321054526 HTTP/1.1" 200 - +2026-01-14 00:17:35,523 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=5 +2026-01-14 00:17:35,524 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:35] "GET /api/indicator/kline?market=USStock&symbol=AVGO&timeframe=1D&limit=5&_t=1768321055520 HTTP/1.1" 200 - +2026-01-14 00:17:36,533 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=5 +2026-01-14 00:17:36,534 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:36] "GET /api/indicator/kline?market=USStock&symbol=AVGO&timeframe=1D&limit=5&_t=1768321056530 HTTP/1.1" 200 - +2026-01-14 00:17:37,536 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=5 +2026-01-14 00:17:37,536 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:37] "GET /api/indicator/kline?market=USStock&symbol=AVGO&timeframe=1D&limit=5&_t=1768321057530 HTTP/1.1" 200 - +2026-01-14 00:17:38,529 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=5 +2026-01-14 00:17:38,529 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:38] "GET /api/indicator/kline?market=USStock&symbol=AVGO&timeframe=1D&limit=5&_t=1768321058526 HTTP/1.1" 200 - +2026-01-14 00:17:39,529 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=5 +2026-01-14 00:17:39,533 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:39] "GET /api/indicator/kline?market=USStock&symbol=AVGO&timeframe=1D&limit=5&_t=1768321059525 HTTP/1.1" 200 - +2026-01-14 00:17:40,525 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=5 +2026-01-14 00:17:40,526 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:40] "GET /api/indicator/kline?market=USStock&symbol=AVGO&timeframe=1D&limit=5&_t=1768321060523 HTTP/1.1" 200 - +2026-01-14 00:17:41,527 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=5 +2026-01-14 00:17:41,528 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:41] "GET /api/indicator/kline?market=USStock&symbol=AVGO&timeframe=1D&limit=5&_t=1768321061521 HTTP/1.1" 200 - +2026-01-14 00:17:42,528 - app.routes.kline - INFO - Requesting K-lines: USStock:AVGO, timeframe=1D, limit=5 +2026-01-14 00:17:42,533 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:42] "GET /api/indicator/kline?market=USStock&symbol=AVGO&timeframe=1D&limit=5&_t=1768321062523 HTTP/1.1" 200 - +2026-01-14 00:17:43,172 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:43] "GET /api/settings/schema?_t=1768321063165 HTTP/1.1" 200 - +2026-01-14 00:17:43,176 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:43] "GET /api/settings/values?_t=1768321063165 HTTP/1.1" 200 - +2026-01-14 00:17:47,526 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:47] "GET /api/strategies/notifications?limit=50&_t=1768321067512 HTTP/1.1" 200 - +2026-01-14 00:17:57,366 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:17:57] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:17:57,431 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:17:57] "GET /api/strategies/notifications?limit=50&_t=1768321077420 HTTP/1.1" 200 - +2026-01-14 00:18:18,319 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:18:18] "GET /api/strategies/notifications?limit=50&_t=1768321098258 HTTP/1.1" 200 - +2026-01-14 00:18:27,426 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:18:27] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:18:28,265 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:18:28] "GET /api/strategies/notifications?limit=50&_t=1768321108254 HTTP/1.1" 200 - +2026-01-14 00:18:48,278 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:18:48] "GET /api/strategies/notifications?limit=50&_t=1768321128256 HTTP/1.1" 200 - +2026-01-14 00:18:57,479 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:18:57] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:18:58,277 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:18:58] "GET /api/strategies/notifications?limit=50&_t=1768321138263 HTTP/1.1" 200 - +2026-01-14 00:19:13,309 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:19:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768321153269 HTTP/1.1" 200 - +2026-01-14 00:19:13,313 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:19:13] "GET /api/dashboard/summary?_t=1768321153269 HTTP/1.1" 200 - +2026-01-14 00:19:13,316 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:19:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768321153269 HTTP/1.1" 200 - +2026-01-14 00:19:15,949 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:19:15] "GET /api/user/info?_t=1768321155932 HTTP/1.1" 200 - +2026-01-14 00:19:15,951 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:19:15] "GET /api/market/config?_t=1768321155932 HTTP/1.1" 200 - +2026-01-14 00:19:15,966 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:19:15] "GET /api/market/watchlist/get?userid=1&_t=1768321155932 HTTP/1.1" 200 - +2026-01-14 00:19:15,996 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:19:15] "GET /api/market/types?_t=1768321155983 HTTP/1.1" 200 - +2026-01-14 00:19:16,008 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:19:16] "GET /api/market/watchlist/get?userid=1&_t=1768321155977 HTTP/1.1" 200 - +2026-01-14 00:19:17,555 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:19:17] "GET /api/strategies/notifications?limit=50&_t=1768321157510 HTTP/1.1" 200 - +2026-01-14 00:19:20,617 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:19:20] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AVGO"},{"market":"Crypto","symbol":"ETH/USDT"},{"market":"Crypto","symbol":"BNB/USDT"},{"market":"AShare","symbol":"600519"},{"market":"Futures","symbol":"SI"},{"market":"Forex","symbol":"XAUUSD"},{"market":"Crypto","symbol":"BTC/USDT"},{"market":"HShare","symbol":"00700"},{"market":"AShare","symbol":"300475"},{"market":"USStock","symbol":"AAPL"},{"market":"AShare","symbol":"000858"}]&_t=1768321156007 HTTP/1.1" 200 - +2026-01-14 00:19:21,018 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:19:21] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AVGO"},{"market":"Crypto","symbol":"ETH/USDT"},{"market":"Crypto","symbol":"BNB/USDT"},{"market":"AShare","symbol":"600519"},{"market":"Futures","symbol":"SI"},{"market":"Forex","symbol":"XAUUSD"},{"market":"Crypto","symbol":"BTC/USDT"},{"market":"HShare","symbol":"00700"},{"market":"AShare","symbol":"300475"},{"market":"USStock","symbol":"AAPL"},{"market":"AShare","symbol":"000858"}]&_t=1768321156026 HTTP/1.1" 200 - +2026-01-14 00:19:27,531 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:19:27] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:19:40,997 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-14 00:19:40,998 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-14 00:19:40,999 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-14 00:19:40,999 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-14 00:19:41,038 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-14 00:19:41,042 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-14 00:19:41,401 - app.services.strategy - INFO - Found 1 running strategies: [{'id': 14, 'strategy_type': 'IndicatorStrategy'}] +2026-01-14 00:19:41,403 - app - INFO - Restoring 1 running strategies... +2026-01-14 00:19:41,403 - app.services.trading_executor - INFO - Strategy 14 loop starting +2026-01-14 00:19:41,404 - app.services.trading_executor - INFO - Strategy 14 started +2026-01-14 00:19:41,404 - app - INFO - [OK] IndicatorStrategy 14 restored +2026-01-14 00:19:41,405 - app - INFO - Strategy restore completed: 1/1 restored +2026-01-14 00:19:41,414 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://172.18.0.2:5000 +2026-01-14 00:19:41,415 - werkzeug - INFO - Press CTRL+C to quit +2026-01-14 00:19:41,417 - app.services.trading_executor - INFO - Strategy 14 derivatives trading; normalize market_type to: swap +2026-01-14 00:19:42,410 - app.services.trading_executor - INFO - ็ญ–็•ฅ 14 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-14 00:19:42,426 - app.services.trading_executor - INFO - Strategy 14 initialized; pending_signals=0 +2026-01-14 00:19:46,025 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-14 00:19:46,025 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-14 00:19:46,025 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-14 00:19:46,027 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-14 00:19:46,029 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-14 00:19:46,029 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-14 00:19:47,535 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:19:47] "GET /api/strategies/notifications?limit=50&_t=1768321187518 HTTP/1.1" 200 - +2026-01-14 00:19:48,298 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:19:48] "GET /api/strategies/notifications?limit=50&_t=1768321188273 HTTP/1.1" 200 - +2026-01-14 00:19:49,531 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:19:49] "GET /api/market/types?_t=1768321189507 HTTP/1.1" 200 - +2026-01-14 00:19:49,550 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:19:49] "GET /api/portfolio/monitors?_t=1768321189507 HTTP/1.1" 200 - +2026-01-14 00:19:49,551 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:19:49] "GET /api/portfolio/alerts?_t=1768321189507 HTTP/1.1" 200 - +2026-01-14 00:19:49,551 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:19:49] "GET /api/portfolio/groups?_t=1768321189507 HTTP/1.1" 200 - +2026-01-14 00:19:49,702 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:19:49] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AVGO"},{"market":"Crypto","symbol":"ETH/USDT"},{"market":"Crypto","symbol":"BNB/USDT"},{"market":"AShare","symbol":"600519"},{"market":"Futures","symbol":"SI"},{"market":"Forex","symbol":"XAUUSD"},{"market":"Crypto","symbol":"BTC/USDT"},{"market":"HShare","symbol":"00700"},{"market":"AShare","symbol":"300475"},{"market":"USStock","symbol":"AAPL"},{"market":"AShare","symbol":"000858"}]&_t=1768321185919 HTTP/1.1" 200 - +2026-01-14 00:19:52,035 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:19:52] "GET /api/portfolio/positions?_t=1768321189507 HTTP/1.1" 200 - +2026-01-14 00:19:54,718 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:19:54] "GET /api/portfolio/summary?_t=1768321189507 HTTP/1.1" 200 - +2026-01-14 00:19:56,333 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:19:56] "PUT /api/portfolio/monitors/1 HTTP/1.1" 200 - +2026-01-14 00:19:56,379 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:19:56] "GET /api/portfolio/monitors?_t=1768321196352 HTTP/1.1" 200 - +2026-01-14 00:20:09,799 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:20:09] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:20:17,551 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:20:17] "GET /api/strategies/notifications?limit=50&_t=1768321217514 HTTP/1.1" 200 - +2026-01-14 00:20:22,309 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:20:22] "GET /api/portfolio/summary?refresh=1&_t=1768321219530 HTTP/1.1" 200 - +2026-01-14 00:20:24,999 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:20:24] "GET /api/portfolio/positions?refresh=1&_t=1768321219530 HTTP/1.1" 200 - +2026-01-14 00:20:25,568 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:20:25] "GET /api/market/types?_t=1768321225557 HTTP/1.1" 200 - +2026-01-14 00:20:25,586 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:20:25] "GET /api/portfolio/alerts?_t=1768321225558 HTTP/1.1" 200 - +2026-01-14 00:20:25,588 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:20:25] "GET /api/portfolio/groups?_t=1768321225557 HTTP/1.1" 200 - +2026-01-14 00:20:25,590 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:20:25] "GET /api/portfolio/monitors?_t=1768321225557 HTTP/1.1" 200 - +2026-01-14 00:20:25,602 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:20:25] "GET /api/strategies/notifications?limit=50&_t=1768321225558 HTTP/1.1" 200 - +2026-01-14 00:20:27,988 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:20:27] "GET /api/portfolio/positions?_t=1768321225557 HTTP/1.1" 200 - +2026-01-14 00:20:30,689 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:20:30] "GET /api/portfolio/summary?_t=1768321225557 HTTP/1.1" 200 - +2026-01-14 00:20:39,853 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:20:39] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:20:48,272 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:20:48] "GET /api/strategies/notifications?limit=50&_t=1768321248255 HTTP/1.1" 200 - +2026-01-14 00:20:55,536 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:20:55] "GET /api/strategies/notifications?limit=50&_t=1768321255523 HTTP/1.1" 200 - +2026-01-14 00:20:58,251 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:20:58] "GET /api/portfolio/summary?refresh=1&_t=1768321255537 HTTP/1.1" 200 - +2026-01-14 00:21:01,155 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:21:01] "GET /api/portfolio/positions?refresh=1&_t=1768321255537 HTTP/1.1" 200 - +2026-01-14 00:21:09,896 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:21:09] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:21:25,041 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:21:25] "POST /api/user/logout HTTP/1.1" 200 - +2026-01-14 00:21:36,000 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:21:36] "POST /api/user/login HTTP/1.1" 200 - +2026-01-14 00:21:36,241 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:21:36] "GET /api/strategies/notifications?limit=50&_t=1768321296205 HTTP/1.1" 200 - +2026-01-14 00:21:36,258 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:21:36] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768321296205 HTTP/1.1" 200 - +2026-01-14 00:21:36,260 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:21:36] "GET /api/dashboard/summary?_t=1768321296205 HTTP/1.1" 200 - +2026-01-14 00:21:36,269 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:21:36] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768321296205 HTTP/1.1" 200 - +2026-01-14 00:21:39,950 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:21:39] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:21:41,175 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:21:41] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768321301161 HTTP/1.1" 200 - +2026-01-14 00:21:41,502 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:21:41] "GET /api/settings/schema?_t=1768321301501 HTTP/1.1" 200 - +2026-01-14 00:21:41,509 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:21:41] "GET /api/settings/values?_t=1768321301501 HTTP/1.1" 200 - +2026-01-14 00:21:48,262 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:21:48] "GET /api/strategies/notifications?limit=50&_t=1768321308252 HTTP/1.1" 200 - +2026-01-14 00:22:06,178 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:22:06] "GET /api/strategies/notifications?limit=50&_t=1768321326166 HTTP/1.1" 200 - +2026-01-14 00:22:10,009 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:22:10] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:22:13,270 - app - INFO - !!! SYSTEM STARTING IN DEMO MODE (READ-ONLY) !!! +2026-01-14 00:22:13,716 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-14 00:22:13,716 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-14 00:22:13,717 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-14 00:22:13,717 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-14 00:22:13,785 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-14 00:22:13,786 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-14 00:22:13,927 - app.services.strategy - INFO - Found 1 running strategies: [{'id': 14, 'strategy_type': 'IndicatorStrategy'}] +2026-01-14 00:22:13,928 - app - INFO - Restoring 1 running strategies... +2026-01-14 00:22:13,928 - app.services.trading_executor - INFO - Strategy 14 loop starting +2026-01-14 00:22:13,929 - app.services.trading_executor - INFO - Strategy 14 started +2026-01-14 00:22:13,930 - app - INFO - [OK] IndicatorStrategy 14 restored +2026-01-14 00:22:13,930 - app - INFO - Strategy restore completed: 1/1 restored +2026-01-14 00:22:13,938 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://172.18.0.2:5000 +2026-01-14 00:22:13,938 - werkzeug - INFO - Press CTRL+C to quit +2026-01-14 00:22:13,941 - app.services.trading_executor - INFO - Strategy 14 derivatives trading; normalize market_type to: swap +2026-01-14 00:22:14,926 - app.services.trading_executor - INFO - ็ญ–็•ฅ 14 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-14 00:22:14,941 - app.services.trading_executor - INFO - Strategy 14 initialized; pending_signals=0 +2026-01-14 00:22:24,544 - app - INFO - !!! SYSTEM STARTING IN DEMO MODE (READ-ONLY) !!! +2026-01-14 00:22:25,008 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-14 00:22:25,009 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-14 00:22:25,010 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-14 00:22:25,010 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-14 00:22:25,079 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-14 00:22:25,082 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-14 00:22:25,205 - app.services.strategy - INFO - Found 1 running strategies: [{'id': 14, 'strategy_type': 'IndicatorStrategy'}] +2026-01-14 00:22:25,206 - app - INFO - Restoring 1 running strategies... +2026-01-14 00:22:25,206 - app.services.trading_executor - INFO - Strategy 14 loop starting +2026-01-14 00:22:25,206 - app.services.trading_executor - INFO - Strategy 14 started +2026-01-14 00:22:25,207 - app - INFO - [OK] IndicatorStrategy 14 restored +2026-01-14 00:22:25,207 - app - INFO - Strategy restore completed: 1/1 restored +2026-01-14 00:22:25,214 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://172.18.0.2:5000 +2026-01-14 00:22:25,214 - werkzeug - INFO - Press CTRL+C to quit +2026-01-14 00:22:25,215 - app.services.trading_executor - INFO - Strategy 14 derivatives trading; normalize market_type to: swap +2026-01-14 00:22:26,259 - app.services.trading_executor - INFO - ็ญ–็•ฅ 14 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-14 00:22:26,272 - app.services.trading_executor - INFO - Strategy 14 initialized; pending_signals=0 +2026-01-14 00:22:32,838 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:22:32] "GET /api/settings/schema?_t=1768321352833 HTTP/1.1" 200 - +2026-01-14 00:22:32,843 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:22:32] "GET /api/settings/values?_t=1768321352833 HTTP/1.1" 200 - +2026-01-14 00:22:32,862 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:22:32] "GET /api/strategies/notifications?limit=50&_t=1768321352833 HTTP/1.1" 200 - +2026-01-14 00:22:33,812 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:22:33] "GET /api/settings/schema?_t=1768321353806 HTTP/1.1" 200 - +2026-01-14 00:22:33,816 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:22:33] "GET /api/settings/values?_t=1768321353806 HTTP/1.1" 200 - +2026-01-14 00:22:33,836 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:22:33] "GET /api/strategies/notifications?limit=50&_t=1768321353806 HTTP/1.1" 200 - +2026-01-14 00:22:37,604 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:22:37] "POST /api/user/logout HTTP/1.1" 200 - +2026-01-14 00:22:43,702 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:22:43] "POST /api/user/login HTTP/1.1" 200 - +2026-01-14 00:22:43,907 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:22:43] "GET /api/strategies/notifications?limit=50&_t=1768321363849 HTTP/1.1" 200 - +2026-01-14 00:22:43,920 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:22:43] "GET /api/dashboard/summary?_t=1768321363849 HTTP/1.1" 200 - +2026-01-14 00:22:43,929 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:22:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768321363849 HTTP/1.1" 200 - +2026-01-14 00:22:43,941 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:22:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768321363849 HTTP/1.1" 200 - +2026-01-14 00:22:48,271 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:22:48] "GET /api/strategies/notifications?limit=50&_t=1768321368251 HTTP/1.1" 200 - +2026-01-14 00:22:48,774 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:22:48] "GET /api/market/types?_t=1768321368756 HTTP/1.1" 200 - +2026-01-14 00:22:48,793 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:22:48] "GET /api/portfolio/alerts?_t=1768321368756 HTTP/1.1" 200 - +2026-01-14 00:22:48,796 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:22:48] "GET /api/portfolio/groups?_t=1768321368756 HTTP/1.1" 200 - +2026-01-14 00:22:48,803 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:22:48] "GET /api/portfolio/monitors?_t=1768321368756 HTTP/1.1" 200 - +2026-01-14 00:22:48,858 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-14 00:22:51,556 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:22:51] "GET /api/portfolio/summary?_t=1768321368756 HTTP/1.1" 200 - +2026-01-14 00:22:53,892 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:22:53] "GET /api/portfolio/positions?_t=1768321368756 HTTP/1.1" 200 - +2026-01-14 00:22:54,042 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:22:54] "PUT /api/portfolio/monitors/1 HTTP/1.1" 403 - +2026-01-14 00:22:54,476 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:22:54] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:23:13,824 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:23:13] "GET /api/strategies/notifications?limit=50&_t=1768321393811 HTTP/1.1" 200 - +2026-01-14 00:23:16,590 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:23:16] "GET /api/settings/schema?_t=1768321396584 HTTP/1.1" 200 - +2026-01-14 00:23:16,594 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:23:16] "GET /api/settings/values?_t=1768321396584 HTTP/1.1" 200 - +2026-01-14 00:23:24,581 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:23:24] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:23:43,823 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:23:43] "GET /api/strategies/notifications?limit=50&_t=1768321423810 HTTP/1.1" 200 - +2026-01-14 00:23:48,285 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:23:48] "GET /api/strategies/notifications?limit=50&_t=1768321428267 HTTP/1.1" 200 - +2026-01-14 00:23:54,629 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:23:54] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:24:13,824 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:24:13] "GET /api/strategies/notifications?limit=50&_t=1768321453811 HTTP/1.1" 200 - +2026-01-14 00:24:24,693 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:24:24] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:24:43,886 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:24:43] "GET /api/strategies/notifications?limit=50&_t=1768321483817 HTTP/1.1" 200 - +2026-01-14 00:24:48,273 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:24:48] "GET /api/strategies/notifications?limit=50&_t=1768321488253 HTTP/1.1" 200 - +2026-01-14 00:24:54,740 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:24:54] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:25:13,824 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:25:13] "GET /api/strategies/notifications?limit=50&_t=1768321513808 HTTP/1.1" 200 - +2026-01-14 00:25:24,786 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:25:24] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:25:43,826 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:25:43] "GET /api/strategies/notifications?limit=50&_t=1768321543806 HTTP/1.1" 200 - +2026-01-14 00:25:48,279 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:25:48] "GET /api/strategies/notifications?limit=50&_t=1768321548261 HTTP/1.1" 200 - +2026-01-14 00:25:54,828 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:25:54] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:26:13,833 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:26:13] "GET /api/strategies/notifications?limit=50&_t=1768321573818 HTTP/1.1" 200 - +2026-01-14 00:26:24,876 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:26:24] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:26:36,145 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:26:36] "GET /api/settings/schema?_t=1768321596138 HTTP/1.1" 200 - +2026-01-14 00:26:36,149 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:26:36] "GET /api/settings/values?_t=1768321596138 HTTP/1.1" 200 - +2026-01-14 00:26:36,165 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:26:36] "GET /api/strategies/notifications?limit=50&_t=1768321596138 HTTP/1.1" 200 - +2026-01-14 00:26:37,427 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:26:37] "GET /api/settings/schema?_t=1768321597420 HTTP/1.1" 200 - +2026-01-14 00:26:37,431 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:26:37] "GET /api/settings/values?_t=1768321597420 HTTP/1.1" 200 - +2026-01-14 00:26:37,445 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:26:37] "GET /api/strategies/notifications?limit=50&_t=1768321597420 HTTP/1.1" 200 - +2026-01-14 00:26:48,278 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:26:48] "GET /api/strategies/notifications?limit=50&_t=1768321608257 HTTP/1.1" 200 - +2026-01-14 00:26:54,926 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:26:54] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:27:07,416 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:27:07] "GET /api/strategies/notifications?limit=50&_t=1768321627402 HTTP/1.1" 200 - +2026-01-14 00:27:24,986 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:27:24] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:27:37,440 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:27:37] "GET /api/strategies/notifications?limit=50&_t=1768321657413 HTTP/1.1" 200 - +2026-01-14 00:27:41,935 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:27:41] "POST /api/user/logout HTTP/1.1" 200 - +2026-01-14 00:27:48,296 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:27:48] "GET /api/strategies/notifications?limit=50&_t=1768321668255 HTTP/1.1" 200 - +2026-01-14 00:27:55,082 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:27:55] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:28:25,174 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:28:25] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:28:48,291 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:28:48] "GET /api/strategies/notifications?limit=50&_t=1768321728256 HTTP/1.1" 200 - +2026-01-14 00:28:55,276 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:28:55] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:28:59,678 - app - INFO - !!! SYSTEM STARTING IN DEMO MODE (READ-ONLY) !!! +2026-01-14 00:29:02,080 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-14 00:29:02,081 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-14 00:29:02,092 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-14 00:29:02,092 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-14 00:29:02,230 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-14 00:29:02,230 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-14 00:29:02,911 - app.services.strategy - INFO - Found 1 running strategies: [{'id': 14, 'strategy_type': 'IndicatorStrategy'}] +2026-01-14 00:29:02,923 - app - INFO - Restoring 1 running strategies... +2026-01-14 00:29:02,926 - app.services.trading_executor - INFO - Strategy 14 loop starting +2026-01-14 00:29:02,926 - app.services.trading_executor - INFO - Strategy 14 started +2026-01-14 00:29:02,927 - app - INFO - [OK] IndicatorStrategy 14 restored +2026-01-14 00:29:02,928 - app - INFO - Strategy restore completed: 1/1 restored +2026-01-14 00:29:02,942 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://172.18.0.2:5000 +2026-01-14 00:29:02,943 - werkzeug - INFO - Press CTRL+C to quit +2026-01-14 00:29:02,946 - app.services.trading_executor - INFO - Strategy 14 derivatives trading; normalize market_type to: swap +2026-01-14 00:29:04,429 - app.services.trading_executor - INFO - ็ญ–็•ฅ 14 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-14 00:29:04,456 - app.services.trading_executor - INFO - Strategy 14 initialized; pending_signals=0 +2026-01-14 00:29:14,904 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:29:14] "POST /api/user/login HTTP/1.1" 200 - +2026-01-14 00:29:15,208 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:29:15] "GET /api/strategies/notifications?limit=50&_t=1768321755132 HTTP/1.1" 200 - +2026-01-14 00:29:15,232 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:29:15] "GET /api/dashboard/summary?_t=1768321755132 HTTP/1.1" 200 - +2026-01-14 00:29:15,232 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:29:15] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768321755132 HTTP/1.1" 200 - +2026-01-14 00:29:15,239 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:29:15] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768321755132 HTTP/1.1" 200 - +2026-01-14 00:29:19,879 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:29:19] "GET /api/strategies/notifications?limit=50&_t=1768321759849 HTTP/1.1" 200 - +2026-01-14 00:29:19,884 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:29:19] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768321759849 HTTP/1.1" 200 - +2026-01-14 00:29:19,887 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:29:19] "GET /api/dashboard/summary?_t=1768321759849 HTTP/1.1" 200 - +2026-01-14 00:29:19,893 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:29:19] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768321759849 HTTP/1.1" 200 - +2026-01-14 00:29:24,082 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:29:24] "GET /api/settings/schema?_t=1768321764075 HTTP/1.1" 200 - +2026-01-14 00:29:24,085 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:29:24] "GET /api/settings/values?_t=1768321764075 HTTP/1.1" 200 - +2026-01-14 00:29:27,052 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:29:27] "POST /api/user/logout HTTP/1.1" 200 - +2026-01-14 00:29:29,142 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:29:29] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:29:36,774 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:29:36] "POST /api/user/login HTTP/1.1" 200 - +2026-01-14 00:29:37,025 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:29:37] "GET /api/strategies/notifications?limit=50&_t=1768321776948 HTTP/1.1" 200 - +2026-01-14 00:29:37,030 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:29:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768321776948 HTTP/1.1" 200 - +2026-01-14 00:29:37,034 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:29:37] "GET /api/dashboard/summary?_t=1768321776948 HTTP/1.1" 200 - +2026-01-14 00:29:37,041 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:29:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768321776948 HTTP/1.1" 200 - +2026-01-14 00:29:41,950 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:29:41] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768321781903 HTTP/1.1" 200 - +2026-01-14 00:29:46,934 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:29:46] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768321786913 HTTP/1.1" 200 - +2026-01-14 00:29:48,286 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:29:48] "GET /api/strategies/notifications?limit=50&_t=1768321788262 HTTP/1.1" 200 - +2026-01-14 00:29:51,919 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:29:51] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768321791905 HTTP/1.1" 200 - +2026-01-14 00:29:56,945 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:29:56] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768321796909 HTTP/1.1" 200 - +2026-01-14 00:29:59,210 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:29:59] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:30:01,918 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:30:01] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768321801901 HTTP/1.1" 200 - +2026-01-14 00:30:06,920 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:30:06] "GET /api/strategies/notifications?limit=50&_t=1768321806902 HTTP/1.1" 200 - +2026-01-14 00:30:06,925 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:30:06] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768321806902 HTTP/1.1" 200 - +2026-01-14 00:30:11,920 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:30:11] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768321811904 HTTP/1.1" 200 - +2026-01-14 00:30:16,915 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:30:16] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768321816898 HTTP/1.1" 200 - +2026-01-14 00:30:21,915 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:30:21] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768321821901 HTTP/1.1" 200 - +2026-01-14 00:30:26,930 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:30:26] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768321826909 HTTP/1.1" 200 - +2026-01-14 00:30:29,250 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:30:29] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:30:31,928 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:30:31] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768321831911 HTTP/1.1" 200 - +2026-01-14 00:30:36,916 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:30:36] "GET /api/strategies/notifications?limit=50&_t=1768321836901 HTTP/1.1" 200 - +2026-01-14 00:30:36,925 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:30:36] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768321836901 HTTP/1.1" 200 - +2026-01-14 00:30:41,930 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:30:41] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768321841903 HTTP/1.1" 200 - +2026-01-14 00:30:46,933 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:30:46] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768321846913 HTTP/1.1" 200 - +2026-01-14 00:30:48,280 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:30:48] "GET /api/strategies/notifications?limit=50&_t=1768321848265 HTTP/1.1" 200 - +2026-01-14 00:30:51,923 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:30:51] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768321851906 HTTP/1.1" 200 - +2026-01-14 00:30:56,925 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:30:56] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768321856908 HTTP/1.1" 200 - +2026-01-14 00:30:59,298 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:30:59] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:31:01,923 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:31:01] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768321861907 HTTP/1.1" 200 - +2026-01-14 00:31:06,927 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:31:06] "GET /api/strategies/notifications?limit=50&_t=1768321866896 HTTP/1.1" 200 - +2026-01-14 00:31:06,933 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:31:06] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768321866911 HTTP/1.1" 200 - +2026-01-14 00:31:11,994 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:31:11] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768321871905 HTTP/1.1" 200 - +2026-01-14 00:31:16,930 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:31:16] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768321876911 HTTP/1.1" 200 - +2026-01-14 00:31:21,923 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:31:21] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768321881904 HTTP/1.1" 200 - +2026-01-14 00:31:26,918 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:31:26] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768321886900 HTTP/1.1" 200 - +2026-01-14 00:31:29,339 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:31:29] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:31:31,929 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:31:31] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768321891901 HTTP/1.1" 200 - +2026-01-14 00:31:36,909 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:31:36] "GET /api/strategies/notifications?limit=50&_t=1768321896896 HTTP/1.1" 200 - +2026-01-14 00:31:36,927 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:31:36] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768321896912 HTTP/1.1" 200 - +2026-01-14 00:31:41,927 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:31:41] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768321901906 HTTP/1.1" 200 - +2026-01-14 00:31:46,927 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:31:46] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768321906910 HTTP/1.1" 200 - +2026-01-14 00:31:48,274 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:31:48] "GET /api/strategies/notifications?limit=50&_t=1768321908255 HTTP/1.1" 200 - +2026-01-14 00:31:51,926 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:31:51] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768321911912 HTTP/1.1" 200 - +2026-01-14 00:31:56,922 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:31:56] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768321916906 HTTP/1.1" 200 - +2026-01-14 00:31:59,394 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:31:59] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:32:01,920 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:32:01] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768321921905 HTTP/1.1" 200 - +2026-01-14 00:32:07,059 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:32:07] "GET /api/strategies/notifications?limit=50&_t=1768321926902 HTTP/1.1" 200 - +2026-01-14 00:32:07,064 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:32:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768321926903 HTTP/1.1" 200 - +2026-01-14 00:32:11,915 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:32:11] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768321931897 HTTP/1.1" 200 - +2026-01-14 00:32:16,929 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:32:16] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768321936905 HTTP/1.1" 200 - +2026-01-14 00:32:21,919 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:32:21] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768321941900 HTTP/1.1" 200 - +2026-01-14 00:32:26,931 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:32:26] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768321946912 HTTP/1.1" 200 - +2026-01-14 00:32:29,444 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:32:29] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:32:31,921 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:32:31] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768321951906 HTTP/1.1" 200 - +2026-01-14 00:32:36,930 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:32:36] "GET /api/strategies/notifications?limit=50&_t=1768321956910 HTTP/1.1" 200 - +2026-01-14 00:32:36,935 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:32:36] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768321956910 HTTP/1.1" 200 - +2026-01-14 00:32:41,915 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:32:41] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768321961900 HTTP/1.1" 200 - +2026-01-14 00:32:46,915 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:32:46] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768321966897 HTTP/1.1" 200 - +2026-01-14 00:32:47,077 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:32:47] "GET /api/settings/schema?_t=1768321967067 HTTP/1.1" 200 - +2026-01-14 00:32:47,080 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:32:47] "GET /api/settings/values?_t=1768321967067 HTTP/1.1" 200 - +2026-01-14 00:32:48,285 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:32:48] "GET /api/strategies/notifications?limit=50&_t=1768321968262 HTTP/1.1" 200 - +2026-01-14 00:32:59,518 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:32:59] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:33:06,912 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:33:06] "GET /api/strategies/notifications?limit=50&_t=1768321986899 HTTP/1.1" 200 - +2026-01-14 00:33:13,247 - app - INFO - !!! SYSTEM STARTING IN DEMO MODE (READ-ONLY) !!! +2026-01-14 00:33:13,937 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-14 00:33:13,938 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-14 00:33:13,944 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-14 00:33:13,944 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-14 00:33:14,006 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-14 00:33:14,008 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-14 00:33:14,144 - app.services.strategy - INFO - Found 1 running strategies: [{'id': 14, 'strategy_type': 'IndicatorStrategy'}] +2026-01-14 00:33:14,144 - app - INFO - Restoring 1 running strategies... +2026-01-14 00:33:14,145 - app.services.trading_executor - INFO - Strategy 14 loop starting +2026-01-14 00:33:14,145 - app.services.trading_executor - INFO - Strategy 14 started +2026-01-14 00:33:14,145 - app - INFO - [OK] IndicatorStrategy 14 restored +2026-01-14 00:33:14,145 - app - INFO - Strategy restore completed: 1/1 restored +2026-01-14 00:33:14,151 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://172.18.0.2:5000 +2026-01-14 00:33:14,152 - werkzeug - INFO - Press CTRL+C to quit +2026-01-14 00:33:14,158 - app.services.trading_executor - INFO - Strategy 14 derivatives trading; normalize market_type to: swap +2026-01-14 00:33:15,139 - app.services.trading_executor - INFO - ็ญ–็•ฅ 14 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-14 00:33:15,152 - app.services.trading_executor - INFO - Strategy 14 initialized; pending_signals=0 +2026-01-14 00:33:35,076 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:33:35] "GET /api/settings/schema?_t=1768322015068 HTTP/1.1" 403 - +2026-01-14 00:33:35,077 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:33:35] "GET /api/settings/values?_t=1768322015068 HTTP/1.1" 403 - +2026-01-14 00:33:35,100 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:33:35] "GET /api/strategies/notifications?limit=50&_t=1768322015068 HTTP/1.1" 200 - +2026-01-14 00:33:41,217 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:33:41] "GET /api/settings/schema?_t=1768322021181 HTTP/1.1" 403 - +2026-01-14 00:33:41,218 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:33:41] "GET /api/settings/values?_t=1768322021181 HTTP/1.1" 403 - +2026-01-14 00:33:43,157 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:33:43] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:33:48,274 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:33:48] "GET /api/strategies/notifications?limit=50&_t=1768322028255 HTTP/1.1" 200 - +2026-01-14 00:34:05,066 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:34:05] "GET /api/strategies/notifications?limit=50&_t=1768322045054 HTTP/1.1" 200 - +2026-01-14 00:34:13,219 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:34:13] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:34:35,075 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:34:35] "GET /api/strategies/notifications?limit=50&_t=1768322075063 HTTP/1.1" 200 - +2026-01-14 00:34:43,265 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:34:43] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:34:48,274 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:34:48] "GET /api/strategies/notifications?limit=50&_t=1768322088257 HTTP/1.1" 200 - +2026-01-14 00:35:05,067 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:35:05] "GET /api/strategies/notifications?limit=50&_t=1768322105054 HTTP/1.1" 200 - +2026-01-14 00:35:13,311 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:35:13] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:35:35,078 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:35:35] "GET /api/strategies/notifications?limit=50&_t=1768322135063 HTTP/1.1" 200 - +2026-01-14 00:35:43,361 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:35:43] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:35:48,283 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:35:48] "GET /api/strategies/notifications?limit=50&_t=1768322148263 HTTP/1.1" 200 - +2026-01-14 00:36:05,061 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:36:05] "GET /api/strategies/notifications?limit=50&_t=1768322165049 HTTP/1.1" 200 - +2026-01-14 00:36:13,423 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:36:13] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:36:35,070 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:36:35] "GET /api/strategies/notifications?limit=50&_t=1768322195058 HTTP/1.1" 200 - +2026-01-14 00:36:43,474 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:36:43] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:36:48,274 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:36:48] "GET /api/strategies/notifications?limit=50&_t=1768322208256 HTTP/1.1" 200 - +2026-01-14 00:37:05,074 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:37:05] "GET /api/strategies/notifications?limit=50&_t=1768322225062 HTTP/1.1" 200 - +2026-01-14 00:37:13,547 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:37:13] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:37:35,078 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:37:35] "GET /api/strategies/notifications?limit=50&_t=1768322255063 HTTP/1.1" 200 - +2026-01-14 00:37:43,626 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:37:43] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:37:48,283 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:37:48] "GET /api/strategies/notifications?limit=50&_t=1768322268263 HTTP/1.1" 200 - +2026-01-14 00:38:05,069 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:38:05] "GET /api/strategies/notifications?limit=50&_t=1768322285056 HTTP/1.1" 200 - +2026-01-14 00:38:13,695 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:38:13] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:38:35,080 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:38:35] "GET /api/strategies/notifications?limit=50&_t=1768322315054 HTTP/1.1" 200 - +2026-01-14 00:38:44,334 - app - INFO - !!! SYSTEM STARTING IN DEMO MODE (READ-ONLY) !!! +2026-01-14 00:38:44,990 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-14 00:38:44,991 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-14 00:38:44,996 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-14 00:38:44,996 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-14 00:38:45,048 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-14 00:38:45,052 - app.utils.db - INFO - Database schema initialized (SQLite) +2026-01-14 00:38:45,202 - app.services.strategy - INFO - Found 1 running strategies: [{'id': 14, 'strategy_type': 'IndicatorStrategy'}] +2026-01-14 00:38:45,202 - app - INFO - Restoring 1 running strategies... +2026-01-14 00:38:45,203 - app.services.trading_executor - INFO - Strategy 14 loop starting +2026-01-14 00:38:45,203 - app.services.trading_executor - INFO - Strategy 14 started +2026-01-14 00:38:45,203 - app - INFO - [OK] IndicatorStrategy 14 restored +2026-01-14 00:38:45,203 - app - INFO - Strategy restore completed: 1/1 restored +2026-01-14 00:38:45,211 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://172.18.0.2:5000 +2026-01-14 00:38:45,211 - werkzeug - INFO - Press CTRL+C to quit +2026-01-14 00:38:45,212 - app.services.trading_executor - INFO - Strategy 14 derivatives trading; normalize market_type to: swap +2026-01-14 00:38:46,405 - app.services.trading_executor - INFO - ็ญ–็•ฅ 14 ๆŒ‡ๆ ‡ๆณจๅ…ฅๆŒไป“็Šถๆ€: count=0, position=0, entry_price=0.0, highest=0.0 +2026-01-14 00:38:46,419 - app.services.trading_executor - INFO - Strategy 14 initialized; pending_signals=0 +2026-01-14 00:38:48,285 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:38:48] "GET /api/strategies/notifications?limit=50&_t=1768322328264 HTTP/1.1" 200 - +2026-01-14 00:39:05,064 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:39:05] "GET /api/strategies/notifications?limit=50&_t=1768322345051 HTTP/1.1" 200 - +2026-01-14 00:39:14,239 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:39:14] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:39:35,071 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:39:35] "GET /api/strategies/notifications?limit=50&_t=1768322375059 HTTP/1.1" 200 - +2026-01-14 00:39:37,158 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:39:37] "GET /api/settings/schema?_t=1768322377153 HTTP/1.1" 403 - +2026-01-14 00:39:37,160 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:39:37] "GET /api/settings/values?_t=1768322377153 HTTP/1.1" 403 - +2026-01-14 00:39:37,179 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:39:37] "GET /api/strategies/notifications?limit=50&_t=1768322377153 HTTP/1.1" 200 - +2026-01-14 00:39:38,847 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:39:38] "GET /api/dashboard/summary?_t=1768322378815 HTTP/1.1" 200 - +2026-01-14 00:39:38,848 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:39:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768322378815 HTTP/1.1" 200 - +2026-01-14 00:39:38,856 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:39:38] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768322378815 HTTP/1.1" 200 - +2026-01-14 00:39:43,820 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:39:43] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768322383800 HTTP/1.1" 200 - +2026-01-14 00:39:44,290 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:39:44] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:39:47,191 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:39:47] "POST /api/user/logout HTTP/1.1" 200 - +2026-01-14 00:39:48,301 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:39:48] "GET /api/strategies/notifications?limit=50&_t=1768322388266 HTTP/1.1" 200 - +2026-01-14 00:39:57,874 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:39:57] "POST /api/user/login HTTP/1.1" 200 - +2026-01-14 00:39:58,056 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:39:58] "GET /api/strategies/notifications?limit=50&_t=1768322397999 HTTP/1.1" 200 - +2026-01-14 00:39:58,070 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:39:58] "GET /api/dashboard/summary?_t=1768322397999 HTTP/1.1" 200 - +2026-01-14 00:39:58,071 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:39:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768322397999 HTTP/1.1" 200 - +2026-01-14 00:39:58,078 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:39:58] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768322397999 HTTP/1.1" 200 - +2026-01-14 00:39:59,338 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:39:59] "GET /api/settings/schema?_t=1768322399331 HTTP/1.1" 403 - +2026-01-14 00:39:59,339 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:39:59] "GET /api/settings/values?_t=1768322399331 HTTP/1.1" 403 - +2026-01-14 00:40:01,190 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:40:01] "GET /api/settings/schema?_t=1768322401185 HTTP/1.1" 403 - +2026-01-14 00:40:01,191 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:40:01] "GET /api/settings/values?_t=1768322401185 HTTP/1.1" 403 - +2026-01-14 00:40:01,213 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:40:01] "GET /api/strategies/notifications?limit=50&_t=1768322401185 HTTP/1.1" 200 - +2026-01-14 00:40:11,961 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:40:11] "GET /api/settings/schema?_t=1768322411953 HTTP/1.1" 403 - +2026-01-14 00:40:11,962 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:40:11] "GET /api/settings/values?_t=1768322411953 HTTP/1.1" 403 - +2026-01-14 00:40:14,334 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:40:14] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:40:31,194 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:40:31] "GET /api/strategies/notifications?limit=50&_t=1768322431174 HTTP/1.1" 200 - +2026-01-14 00:40:44,394 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:40:44] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:40:48,282 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:40:48] "GET /api/strategies/notifications?limit=50&_t=1768322448265 HTTP/1.1" 200 - +2026-01-14 00:41:01,192 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:41:01] "GET /api/strategies/notifications?limit=50&_t=1768322461177 HTTP/1.1" 200 - +2026-01-14 00:41:14,445 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:41:14] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:41:31,195 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:41:31] "GET /api/strategies/notifications?limit=50&_t=1768322491179 HTTP/1.1" 200 - +2026-01-14 00:41:44,496 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:41:44] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:41:48,284 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:41:48] "GET /api/strategies/notifications?limit=50&_t=1768322508265 HTTP/1.1" 200 - +2026-01-14 00:42:01,195 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:42:01] "GET /api/strategies/notifications?limit=50&_t=1768322521178 HTTP/1.1" 200 - +2026-01-14 00:42:14,566 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:42:14] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:42:31,181 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:42:31] "GET /api/strategies/notifications?limit=50&_t=1768322551170 HTTP/1.1" 200 - +2026-01-14 00:42:44,625 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:42:44] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:42:48,278 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:42:48] "GET /api/strategies/notifications?limit=50&_t=1768322568258 HTTP/1.1" 200 - +2026-01-14 00:43:01,185 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:43:01] "GET /api/strategies/notifications?limit=50&_t=1768322581173 HTTP/1.1" 200 - +2026-01-14 00:43:14,686 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:43:14] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:43:31,202 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:43:31] "GET /api/strategies/notifications?limit=50&_t=1768322611171 HTTP/1.1" 200 - +2026-01-14 00:43:44,752 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:43:44] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:43:48,281 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:43:48] "GET /api/strategies/notifications?limit=50&_t=1768322628264 HTTP/1.1" 200 - +2026-01-14 00:44:01,189 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:44:01] "GET /api/strategies/notifications?limit=50&_t=1768322641177 HTTP/1.1" 200 - +2026-01-14 00:44:14,819 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:44:14] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:44:31,193 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:44:31] "GET /api/strategies/notifications?limit=50&_t=1768322671177 HTTP/1.1" 200 - +2026-01-14 00:44:44,869 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:44:44] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:44:48,277 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:44:48] "GET /api/strategies/notifications?limit=50&_t=1768322688257 HTTP/1.1" 200 - +2026-01-14 00:45:01,182 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:45:01] "GET /api/strategies/notifications?limit=50&_t=1768322701171 HTTP/1.1" 200 - +2026-01-14 00:45:14,939 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:45:14] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:45:31,186 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:45:31] "GET /api/strategies/notifications?limit=50&_t=1768322731174 HTTP/1.1" 200 - +2026-01-14 00:45:44,987 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:45:44] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:45:48,284 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:45:48] "GET /api/strategies/notifications?limit=50&_t=1768322748266 HTTP/1.1" 200 - +2026-01-14 00:46:01,185 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:46:01] "GET /api/strategies/notifications?limit=50&_t=1768322761172 HTTP/1.1" 200 - +2026-01-14 00:46:15,027 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:46:15] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:46:31,192 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:46:31] "GET /api/strategies/notifications?limit=50&_t=1768322791181 HTTP/1.1" 200 - +2026-01-14 00:46:45,091 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:46:45] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:46:48,273 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:46:48] "GET /api/strategies/notifications?limit=50&_t=1768322808260 HTTP/1.1" 200 - +2026-01-14 00:47:01,199 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:47:01] "GET /api/strategies/notifications?limit=50&_t=1768322821176 HTTP/1.1" 200 - +2026-01-14 00:47:15,141 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:47:15] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:47:31,196 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:47:31] "GET /api/strategies/notifications?limit=50&_t=1768322851168 HTTP/1.1" 200 - +2026-01-14 00:47:45,195 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:47:45] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:47:48,278 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:47:48] "GET /api/strategies/notifications?limit=50&_t=1768322868258 HTTP/1.1" 200 - +2026-01-14 00:48:01,306 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:48:01] "GET /api/strategies/notifications?limit=50&_t=1768322881177 HTTP/1.1" 200 - +2026-01-14 00:48:15,311 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:48:15] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:48:31,191 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:48:31] "GET /api/strategies/notifications?limit=50&_t=1768322911169 HTTP/1.1" 200 - +2026-01-14 00:48:45,355 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:48:45] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:48:48,280 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:48:48] "GET /api/strategies/notifications?limit=50&_t=1768322928265 HTTP/1.1" 200 - +2026-01-14 00:49:01,182 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:49:01] "GET /api/strategies/notifications?limit=50&_t=1768322941170 HTTP/1.1" 200 - +2026-01-14 00:49:15,424 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:49:15] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:49:31,184 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:49:31] "GET /api/strategies/notifications?limit=50&_t=1768322971172 HTTP/1.1" 200 - +2026-01-14 00:49:45,492 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:49:45] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:49:48,271 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:49:48] "GET /api/strategies/notifications?limit=50&_t=1768322988253 HTTP/1.1" 200 - +2026-01-14 00:50:01,201 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:50:01] "GET /api/strategies/notifications?limit=50&_t=1768323001180 HTTP/1.1" 200 - +2026-01-14 00:50:15,556 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:50:15] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:50:31,209 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:50:31] "GET /api/strategies/notifications?limit=50&_t=1768323031176 HTTP/1.1" 200 - +2026-01-14 00:50:45,614 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:50:45] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:50:48,278 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:50:48] "GET /api/strategies/notifications?limit=50&_t=1768323048260 HTTP/1.1" 200 - +2026-01-14 00:51:01,184 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:51:01] "GET /api/strategies/notifications?limit=50&_t=1768323061173 HTTP/1.1" 200 - +2026-01-14 00:51:15,661 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:51:15] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:51:31,185 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:51:31] "GET /api/strategies/notifications?limit=50&_t=1768323091172 HTTP/1.1" 200 - +2026-01-14 00:51:45,727 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:51:45] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:51:48,276 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:51:48] "GET /api/strategies/notifications?limit=50&_t=1768323108259 HTTP/1.1" 200 - +2026-01-14 00:52:01,180 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:52:01] "GET /api/strategies/notifications?limit=50&_t=1768323121168 HTTP/1.1" 200 - +2026-01-14 00:52:15,790 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:52:15] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:52:31,181 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:52:31] "GET /api/strategies/notifications?limit=50&_t=1768323151170 HTTP/1.1" 200 - +2026-01-14 00:52:45,860 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:52:45] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:52:48,279 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:52:48] "GET /api/strategies/notifications?limit=50&_t=1768323168264 HTTP/1.1" 200 - +2026-01-14 00:53:01,187 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:53:01] "GET /api/strategies/notifications?limit=50&_t=1768323181173 HTTP/1.1" 200 - +2026-01-14 00:53:15,918 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:53:15] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:53:22,376 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:53:22] "GET /api/market/types?_t=1768323202369 HTTP/1.1" 200 - +2026-01-14 00:53:22,396 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:53:22] "GET /api/portfolio/alerts?_t=1768323202369 HTTP/1.1" 200 - +2026-01-14 00:53:22,399 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:53:22] "GET /api/portfolio/monitors?_t=1768323202369 HTTP/1.1" 200 - +2026-01-14 00:53:22,400 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:53:22] "GET /api/portfolio/groups?_t=1768323202369 HTTP/1.1" 200 - +2026-01-14 00:53:22,511 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-14 00:53:25,528 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:53:25] "GET /api/portfolio/summary?_t=1768323202369 HTTP/1.1" 200 - +2026-01-14 00:53:27,629 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:53:27] "GET /api/portfolio/positions?_t=1768323202369 HTTP/1.1" 200 - +2026-01-14 00:53:31,178 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:53:31] "GET /api/strategies/notifications?limit=50&_t=1768323211167 HTTP/1.1" 200 - +2026-01-14 00:53:45,973 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:53:45] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:53:48,271 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:53:48] "GET /api/strategies/notifications?limit=50&_t=1768323228255 HTTP/1.1" 200 - +2026-01-14 00:53:55,074 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:53:55] "GET /api/portfolio/summary?refresh=1&_t=1768323232372 HTTP/1.1" 200 - +2026-01-14 00:53:57,762 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:53:57] "GET /api/portfolio/positions?refresh=1&_t=1768323232372 HTTP/1.1" 200 - +2026-01-14 00:54:01,186 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:54:01] "GET /api/strategies/notifications?limit=50&_t=1768323241169 HTTP/1.1" 200 - +2026-01-14 00:54:16,027 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:54:16] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:54:25,072 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:54:25] "GET /api/portfolio/summary?refresh=1&_t=1768323262371 HTTP/1.1" 200 - +2026-01-14 00:54:27,759 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:54:27] "GET /api/portfolio/positions?refresh=1&_t=1768323262371 HTTP/1.1" 200 - +2026-01-14 00:54:31,180 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:54:31] "GET /api/strategies/notifications?limit=50&_t=1768323271167 HTTP/1.1" 200 - +2026-01-14 00:54:46,085 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:54:46] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:54:48,274 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:54:48] "GET /api/strategies/notifications?limit=50&_t=1768323288255 HTTP/1.1" 200 - +2026-01-14 00:54:55,086 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:54:55] "GET /api/portfolio/positions?refresh=1&_t=1768323292375 HTTP/1.1" 200 - +2026-01-14 00:54:57,786 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:54:57] "GET /api/portfolio/summary?refresh=1&_t=1768323292375 HTTP/1.1" 200 - +2026-01-14 00:55:01,181 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:55:01] "GET /api/strategies/notifications?limit=50&_t=1768323301169 HTTP/1.1" 200 - +2026-01-14 00:55:16,129 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:55:16] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:55:25,077 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:55:25] "GET /api/portfolio/summary?refresh=1&_t=1768323322376 HTTP/1.1" 200 - +2026-01-14 00:55:27,783 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:55:27] "GET /api/portfolio/positions?refresh=1&_t=1768323322376 HTTP/1.1" 200 - +2026-01-14 00:55:31,190 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:55:31] "GET /api/strategies/notifications?limit=50&_t=1768323331176 HTTP/1.1" 200 - +2026-01-14 00:55:46,176 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:55:46] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:55:48,277 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:55:48] "GET /api/strategies/notifications?limit=50&_t=1768323348255 HTTP/1.1" 200 - +2026-01-14 00:55:55,092 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:55:55] "GET /api/portfolio/positions?refresh=1&_t=1768323352377 HTTP/1.1" 200 - +2026-01-14 00:55:57,788 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:55:57] "GET /api/portfolio/summary?refresh=1&_t=1768323352377 HTTP/1.1" 200 - +2026-01-14 00:56:01,183 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:56:01] "GET /api/strategies/notifications?limit=50&_t=1768323361174 HTTP/1.1" 200 - +2026-01-14 00:56:16,221 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:56:16] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:56:25,067 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:56:25] "GET /api/portfolio/positions?refresh=1&_t=1768323382367 HTTP/1.1" 200 - +2026-01-14 00:56:27,774 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:56:27] "GET /api/portfolio/summary?refresh=1&_t=1768323382367 HTTP/1.1" 200 - +2026-01-14 00:56:31,189 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:56:31] "GET /api/strategies/notifications?limit=50&_t=1768323391178 HTTP/1.1" 200 - +2026-01-14 00:56:46,274 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:56:46] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:56:48,280 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:56:48] "GET /api/strategies/notifications?limit=50&_t=1768323408265 HTTP/1.1" 200 - +2026-01-14 00:56:55,106 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:56:55] "GET /api/portfolio/positions?refresh=1&_t=1768323412367 HTTP/1.1" 200 - +2026-01-14 00:56:57,778 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:56:57] "GET /api/portfolio/summary?refresh=1&_t=1768323412367 HTTP/1.1" 200 - +2026-01-14 00:57:01,195 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:57:01] "GET /api/strategies/notifications?limit=50&_t=1768323421181 HTTP/1.1" 200 - +2026-01-14 00:57:16,327 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:57:16] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:57:25,059 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:57:25] "GET /api/portfolio/summary?refresh=1&_t=1768323442368 HTTP/1.1" 200 - +2026-01-14 00:57:27,763 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:57:27] "GET /api/portfolio/positions?refresh=1&_t=1768323442368 HTTP/1.1" 200 - +2026-01-14 00:57:31,196 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:57:31] "GET /api/strategies/notifications?limit=50&_t=1768323451173 HTTP/1.1" 200 - +2026-01-14 00:57:46,389 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:57:46] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:57:48,272 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:57:48] "GET /api/strategies/notifications?limit=50&_t=1768323468252 HTTP/1.1" 200 - +2026-01-14 00:57:55,124 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:57:55] "GET /api/portfolio/positions?refresh=1&_t=1768323472379 HTTP/1.1" 200 - +2026-01-14 00:57:57,800 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:57:57] "GET /api/portfolio/summary?refresh=1&_t=1768323472379 HTTP/1.1" 200 - +2026-01-14 00:58:01,180 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:58:01] "GET /api/strategies/notifications?limit=50&_t=1768323481166 HTTP/1.1" 200 - +2026-01-14 00:58:16,444 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:58:16] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:58:25,084 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:58:25] "GET /api/portfolio/summary?refresh=1&_t=1768323502383 HTTP/1.1" 200 - +2026-01-14 00:58:27,780 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:58:27] "GET /api/portfolio/positions?refresh=1&_t=1768323502383 HTTP/1.1" 200 - +2026-01-14 00:58:31,191 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:58:31] "GET /api/strategies/notifications?limit=50&_t=1768323511177 HTTP/1.1" 200 - +2026-01-14 00:58:46,497 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:58:46] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:58:48,271 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:58:48] "GET /api/strategies/notifications?limit=50&_t=1768323528256 HTTP/1.1" 200 - +2026-01-14 00:58:55,056 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:58:55] "GET /api/portfolio/summary?refresh=1&_t=1768323532368 HTTP/1.1" 200 - +2026-01-14 00:58:57,756 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:58:57] "GET /api/portfolio/positions?refresh=1&_t=1768323532368 HTTP/1.1" 200 - +2026-01-14 00:59:01,195 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:59:01] "GET /api/strategies/notifications?limit=50&_t=1768323541176 HTTP/1.1" 200 - +2026-01-14 00:59:16,546 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:59:16] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:59:25,308 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:59:25] "GET /api/portfolio/summary?refresh=1&_t=1768323562369 HTTP/1.1" 200 - +2026-01-14 00:59:27,763 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:59:27] "GET /api/portfolio/positions?refresh=1&_t=1768323562369 HTTP/1.1" 200 - +2026-01-14 00:59:31,192 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:59:31] "GET /api/strategies/notifications?limit=50&_t=1768323571181 HTTP/1.1" 200 - +2026-01-14 00:59:46,603 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 00:59:46] "GET /api/health HTTP/1.1" 200 - +2026-01-14 00:59:48,277 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:59:48] "GET /api/strategies/notifications?limit=50&_t=1768323588255 HTTP/1.1" 200 - +2026-01-14 00:59:55,073 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:59:55] "GET /api/portfolio/summary?refresh=1&_t=1768323592372 HTTP/1.1" 200 - +2026-01-14 00:59:57,762 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 00:59:57] "GET /api/portfolio/positions?refresh=1&_t=1768323592372 HTTP/1.1" 200 - +2026-01-14 01:00:01,182 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:00:01] "GET /api/strategies/notifications?limit=50&_t=1768323601167 HTTP/1.1" 200 - +2026-01-14 01:00:16,658 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:00:16] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:00:25,082 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:00:25] "GET /api/portfolio/summary?refresh=1&_t=1768323622382 HTTP/1.1" 200 - +2026-01-14 01:00:27,819 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:00:27] "GET /api/portfolio/positions?refresh=1&_t=1768323622382 HTTP/1.1" 200 - +2026-01-14 01:00:31,182 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:00:31] "GET /api/strategies/notifications?limit=50&_t=1768323631170 HTTP/1.1" 200 - +2026-01-14 01:00:46,717 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:00:46] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:00:48,273 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:00:48] "GET /api/strategies/notifications?limit=50&_t=1768323648256 HTTP/1.1" 200 - +2026-01-14 01:00:55,091 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:00:55] "GET /api/portfolio/positions?refresh=1&_t=1768323652376 HTTP/1.1" 200 - +2026-01-14 01:00:57,763 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:00:57] "GET /api/portfolio/summary?refresh=1&_t=1768323652376 HTTP/1.1" 200 - +2026-01-14 01:01:01,192 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:01:01] "GET /api/strategies/notifications?limit=50&_t=1768323661170 HTTP/1.1" 200 - +2026-01-14 01:01:16,774 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:01:16] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:01:25,109 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:01:25] "GET /api/portfolio/summary?refresh=1&_t=1768323682376 HTTP/1.1" 200 - +2026-01-14 01:01:27,845 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:01:27] "GET /api/portfolio/positions?refresh=1&_t=1768323682376 HTTP/1.1" 200 - +2026-01-14 01:01:31,185 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:01:31] "GET /api/strategies/notifications?limit=50&_t=1768323691167 HTTP/1.1" 200 - +2026-01-14 01:01:46,826 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:01:46] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:01:48,278 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:01:48] "GET /api/strategies/notifications?limit=50&_t=1768323708262 HTTP/1.1" 200 - +2026-01-14 01:01:55,080 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:01:55] "GET /api/portfolio/positions?refresh=1&_t=1768323712372 HTTP/1.1" 200 - +2026-01-14 01:01:57,778 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:01:57] "GET /api/portfolio/summary?refresh=1&_t=1768323712372 HTTP/1.1" 200 - +2026-01-14 01:02:01,194 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:02:01] "GET /api/strategies/notifications?limit=50&_t=1768323721180 HTTP/1.1" 200 - +2026-01-14 01:02:16,889 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:02:16] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:02:25,189 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:02:25] "GET /api/portfolio/summary?refresh=1&_t=1768323742368 HTTP/1.1" 200 - +2026-01-14 01:02:27,812 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:02:27] "GET /api/portfolio/positions?refresh=1&_t=1768323742368 HTTP/1.1" 200 - +2026-01-14 01:02:31,190 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:02:31] "GET /api/strategies/notifications?limit=50&_t=1768323751177 HTTP/1.1" 200 - +2026-01-14 01:02:46,946 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:02:46] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:02:48,271 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:02:48] "GET /api/strategies/notifications?limit=50&_t=1768323768252 HTTP/1.1" 200 - +2026-01-14 01:02:55,063 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:02:55] "GET /api/portfolio/summary?refresh=1&_t=1768323772379 HTTP/1.1" 200 - +2026-01-14 01:02:57,812 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:02:57] "GET /api/portfolio/positions?refresh=1&_t=1768323772379 HTTP/1.1" 200 - +2026-01-14 01:03:01,187 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:03:01] "GET /api/strategies/notifications?limit=50&_t=1768323781173 HTTP/1.1" 200 - +2026-01-14 01:03:16,994 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:03:16] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:03:25,079 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:03:25] "GET /api/portfolio/summary?refresh=1&_t=1768323802380 HTTP/1.1" 200 - +2026-01-14 01:03:27,862 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:03:27] "GET /api/portfolio/positions?refresh=1&_t=1768323802380 HTTP/1.1" 200 - +2026-01-14 01:03:31,183 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:03:31] "GET /api/strategies/notifications?limit=50&_t=1768323811173 HTTP/1.1" 200 - +2026-01-14 01:03:47,049 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:03:47] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:03:48,280 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:03:48] "GET /api/strategies/notifications?limit=50&_t=1768323828263 HTTP/1.1" 200 - +2026-01-14 01:03:55,139 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:03:55] "GET /api/portfolio/summary?refresh=1&_t=1768323832369 HTTP/1.1" 200 - +2026-01-14 01:03:57,809 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:03:57] "GET /api/portfolio/positions?refresh=1&_t=1768323832369 HTTP/1.1" 200 - +2026-01-14 01:04:01,191 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:04:01] "GET /api/strategies/notifications?limit=50&_t=1768323841172 HTTP/1.1" 200 - +2026-01-14 01:04:17,090 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:04:17] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:04:25,075 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:04:25] "GET /api/portfolio/summary?refresh=1&_t=1768323862374 HTTP/1.1" 200 - +2026-01-14 01:04:27,828 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:04:27] "GET /api/portfolio/positions?refresh=1&_t=1768323862374 HTTP/1.1" 200 - +2026-01-14 01:04:31,186 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:04:31] "GET /api/strategies/notifications?limit=50&_t=1768323871175 HTTP/1.1" 200 - +2026-01-14 01:04:47,137 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:04:47] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:04:48,271 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:04:48] "GET /api/strategies/notifications?limit=50&_t=1768323888257 HTTP/1.1" 200 - +2026-01-14 01:04:55,145 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:04:55] "GET /api/portfolio/positions?refresh=1&_t=1768323892373 HTTP/1.1" 200 - +2026-01-14 01:04:57,831 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:04:57] "GET /api/portfolio/summary?refresh=1&_t=1768323892373 HTTP/1.1" 200 - +2026-01-14 01:05:01,193 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:05:01] "GET /api/strategies/notifications?limit=50&_t=1768323901173 HTTP/1.1" 200 - +2026-01-14 01:05:17,186 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:05:17] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:05:25,145 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:05:25] "GET /api/portfolio/summary?refresh=1&_t=1768323922384 HTTP/1.1" 200 - +2026-01-14 01:05:27,894 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:05:27] "GET /api/portfolio/positions?refresh=1&_t=1768323922384 HTTP/1.1" 200 - +2026-01-14 01:05:31,189 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:05:31] "GET /api/strategies/notifications?limit=50&_t=1768323931178 HTTP/1.1" 200 - +2026-01-14 01:05:47,243 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:05:47] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:05:48,282 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:05:48] "GET /api/strategies/notifications?limit=50&_t=1768323948252 HTTP/1.1" 200 - +2026-01-14 01:05:55,087 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:05:55] "GET /api/portfolio/summary?refresh=1&_t=1768323952374 HTTP/1.1" 200 - +2026-01-14 01:05:57,762 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:05:57] "GET /api/portfolio/positions?refresh=1&_t=1768323952374 HTTP/1.1" 200 - +2026-01-14 01:06:01,183 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:06:01] "GET /api/strategies/notifications?limit=50&_t=1768323961171 HTTP/1.1" 200 - +2026-01-14 01:06:17,309 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:06:17] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:06:25,101 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:06:25] "GET /api/portfolio/positions?refresh=1&_t=1768323982379 HTTP/1.1" 200 - +2026-01-14 01:06:27,826 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:06:27] "GET /api/portfolio/summary?refresh=1&_t=1768323982379 HTTP/1.1" 200 - +2026-01-14 01:06:31,196 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:06:31] "GET /api/strategies/notifications?limit=50&_t=1768323991181 HTTP/1.1" 200 - +2026-01-14 01:06:47,359 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:06:47] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:06:48,274 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:06:48] "GET /api/strategies/notifications?limit=50&_t=1768324008255 HTTP/1.1" 200 - +2026-01-14 01:06:55,069 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:06:55] "GET /api/portfolio/positions?refresh=1&_t=1768324012368 HTTP/1.1" 200 - +2026-01-14 01:06:57,788 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:06:57] "GET /api/portfolio/summary?refresh=1&_t=1768324012368 HTTP/1.1" 200 - +2026-01-14 01:07:01,261 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:07:01] "GET /api/strategies/notifications?limit=50&_t=1768324021179 HTTP/1.1" 200 - +2026-01-14 01:07:17,405 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:07:17] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:07:25,080 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:07:25] "GET /api/portfolio/summary?refresh=1&_t=1768324042367 HTTP/1.1" 200 - +2026-01-14 01:07:27,793 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:07:27] "GET /api/portfolio/positions?refresh=1&_t=1768324042367 HTTP/1.1" 200 - +2026-01-14 01:07:31,205 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:07:31] "GET /api/strategies/notifications?limit=50&_t=1768324051177 HTTP/1.1" 200 - +2026-01-14 01:07:47,452 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:07:47] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:07:48,273 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:07:48] "GET /api/strategies/notifications?limit=50&_t=1768324068256 HTTP/1.1" 200 - +2026-01-14 01:07:55,068 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:07:55] "GET /api/portfolio/positions?refresh=1&_t=1768324072377 HTTP/1.1" 200 - +2026-01-14 01:07:57,932 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:07:57] "GET /api/portfolio/summary?refresh=1&_t=1768324072377 HTTP/1.1" 200 - +2026-01-14 01:08:01,182 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:08:01] "GET /api/strategies/notifications?limit=50&_t=1768324081170 HTTP/1.1" 200 - +2026-01-14 01:08:17,496 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:08:17] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:08:25,057 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:08:25] "GET /api/portfolio/summary?refresh=1&_t=1768324102370 HTTP/1.1" 200 - +2026-01-14 01:08:27,763 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:08:27] "GET /api/portfolio/positions?refresh=1&_t=1768324102370 HTTP/1.1" 200 - +2026-01-14 01:08:31,196 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:08:31] "GET /api/strategies/notifications?limit=50&_t=1768324111177 HTTP/1.1" 200 - +2026-01-14 01:08:47,549 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:08:47] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:08:48,271 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:08:48] "GET /api/strategies/notifications?limit=50&_t=1768324128253 HTTP/1.1" 200 - +2026-01-14 01:08:55,674 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:08:55] "GET /api/portfolio/summary?refresh=1&_t=1768324132376 HTTP/1.1" 200 - +2026-01-14 01:08:58,336 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:08:58] "GET /api/portfolio/positions?refresh=1&_t=1768324132376 HTTP/1.1" 200 - +2026-01-14 01:09:01,208 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:09:01] "GET /api/strategies/notifications?limit=50&_t=1768324141172 HTTP/1.1" 200 - +2026-01-14 01:09:17,601 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:09:17] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:09:25,095 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:09:25] "GET /api/portfolio/summary?refresh=1&_t=1768324162369 HTTP/1.1" 200 - +2026-01-14 01:09:27,771 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:09:27] "GET /api/portfolio/positions?refresh=1&_t=1768324162369 HTTP/1.1" 200 - +2026-01-14 01:09:31,180 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:09:31] "GET /api/strategies/notifications?limit=50&_t=1768324171168 HTTP/1.1" 200 - +2026-01-14 01:09:36,455 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:09:36] "GET /api/portfolio/summary?refresh=1&_t=1768324173741 HTTP/1.1" 200 - +2026-01-14 01:09:39,136 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:09:39] "GET /api/portfolio/positions?refresh=1&_t=1768324173741 HTTP/1.1" 200 - +2026-01-14 01:09:47,659 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:09:47] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:09:48,279 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:09:48] "GET /api/strategies/notifications?limit=50&_t=1768324188261 HTTP/1.1" 200 - +2026-01-14 01:09:55,062 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:09:55] "GET /api/portfolio/positions?refresh=1&_t=1768324192367 HTTP/1.1" 200 - +2026-01-14 01:09:57,764 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:09:57] "GET /api/portfolio/summary?refresh=1&_t=1768324192367 HTTP/1.1" 200 - +2026-01-14 01:10:01,181 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:10:01] "GET /api/strategies/notifications?limit=50&_t=1768324201168 HTTP/1.1" 200 - +2026-01-14 01:10:17,705 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:10:17] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:10:25,063 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:10:25] "GET /api/portfolio/summary?refresh=1&_t=1768324222367 HTTP/1.1" 200 - +2026-01-14 01:10:28,009 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:10:28] "GET /api/portfolio/positions?refresh=1&_t=1768324222367 HTTP/1.1" 200 - +2026-01-14 01:10:31,180 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:10:31] "GET /api/strategies/notifications?limit=50&_t=1768324231168 HTTP/1.1" 200 - +2026-01-14 01:10:47,748 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:10:47] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:10:48,277 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:10:48] "GET /api/strategies/notifications?limit=50&_t=1768324248261 HTTP/1.1" 200 - +2026-01-14 01:10:55,103 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:10:55] "GET /api/portfolio/positions?refresh=1&_t=1768324252383 HTTP/1.1" 200 - +2026-01-14 01:10:57,829 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:10:57] "GET /api/portfolio/summary?refresh=1&_t=1768324252383 HTTP/1.1" 200 - +2026-01-14 01:11:01,189 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:11:01] "GET /api/strategies/notifications?limit=50&_t=1768324261177 HTTP/1.1" 200 - +2026-01-14 01:11:17,798 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:11:17] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:11:25,074 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:11:25] "GET /api/portfolio/summary?refresh=1&_t=1768324282368 HTTP/1.1" 200 - +2026-01-14 01:11:27,869 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:11:27] "GET /api/portfolio/positions?refresh=1&_t=1768324282368 HTTP/1.1" 200 - +2026-01-14 01:11:31,178 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:11:31] "GET /api/strategies/notifications?limit=50&_t=1768324291166 HTTP/1.1" 200 - +2026-01-14 01:11:47,846 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:11:47] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:11:48,281 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:11:48] "GET /api/strategies/notifications?limit=50&_t=1768324308265 HTTP/1.1" 200 - +2026-01-14 01:11:55,075 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:11:55] "GET /api/portfolio/summary?refresh=1&_t=1768324312380 HTTP/1.1" 200 - +2026-01-14 01:11:57,779 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:11:57] "GET /api/portfolio/positions?refresh=1&_t=1768324312380 HTTP/1.1" 200 - +2026-01-14 01:12:01,195 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:12:01] "GET /api/strategies/notifications?limit=50&_t=1768324321177 HTTP/1.1" 200 - +2026-01-14 01:12:17,900 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:12:17] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:12:25,104 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:12:25] "GET /api/portfolio/summary?refresh=1&_t=1768324342382 HTTP/1.1" 200 - +2026-01-14 01:12:27,813 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:12:27] "GET /api/portfolio/positions?refresh=1&_t=1768324342382 HTTP/1.1" 200 - +2026-01-14 01:12:31,181 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:12:31] "GET /api/strategies/notifications?limit=50&_t=1768324351169 HTTP/1.1" 200 - +2026-01-14 01:12:47,947 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:12:47] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:12:48,274 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:12:48] "GET /api/strategies/notifications?limit=50&_t=1768324368256 HTTP/1.1" 200 - +2026-01-14 01:12:55,066 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:12:55] "GET /api/portfolio/summary?refresh=1&_t=1768324372366 HTTP/1.1" 200 - +2026-01-14 01:12:57,779 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:12:57] "GET /api/portfolio/positions?refresh=1&_t=1768324372366 HTTP/1.1" 200 - +2026-01-14 01:13:01,182 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:13:01] "GET /api/strategies/notifications?limit=50&_t=1768324381170 HTTP/1.1" 200 - +2026-01-14 01:13:18,022 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:13:18] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:13:25,061 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:13:25] "GET /api/portfolio/summary?refresh=1&_t=1768324402368 HTTP/1.1" 200 - +2026-01-14 01:13:27,771 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:13:27] "GET /api/portfolio/positions?refresh=1&_t=1768324402368 HTTP/1.1" 200 - +2026-01-14 01:13:31,190 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:13:31] "GET /api/strategies/notifications?limit=50&_t=1768324411177 HTTP/1.1" 200 - +2026-01-14 01:13:48,067 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:13:48] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:13:48,272 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:13:48] "GET /api/strategies/notifications?limit=50&_t=1768324428254 HTTP/1.1" 200 - +2026-01-14 01:13:55,119 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:13:55] "GET /api/portfolio/summary?refresh=1&_t=1768324432378 HTTP/1.1" 200 - +2026-01-14 01:13:57,798 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:13:57] "GET /api/portfolio/positions?refresh=1&_t=1768324432378 HTTP/1.1" 200 - +2026-01-14 01:14:01,195 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:14:01] "GET /api/strategies/notifications?limit=50&_t=1768324441177 HTTP/1.1" 200 - +2026-01-14 01:14:18,129 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:14:18] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:14:25,077 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:14:25] "GET /api/portfolio/summary?refresh=1&_t=1768324462380 HTTP/1.1" 200 - +2026-01-14 01:14:27,814 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:14:27] "GET /api/portfolio/positions?refresh=1&_t=1768324462380 HTTP/1.1" 200 - +2026-01-14 01:14:31,189 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:14:31] "GET /api/strategies/notifications?limit=50&_t=1768324471177 HTTP/1.1" 200 - +2026-01-14 01:14:48,181 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:14:48] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:14:48,275 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:14:48] "GET /api/strategies/notifications?limit=50&_t=1768324488259 HTTP/1.1" 200 - +2026-01-14 01:14:55,121 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:14:55] "GET /api/portfolio/positions?refresh=1&_t=1768324492375 HTTP/1.1" 200 - +2026-01-14 01:14:57,792 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:14:57] "GET /api/portfolio/summary?refresh=1&_t=1768324492375 HTTP/1.1" 200 - +2026-01-14 01:15:01,191 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:15:01] "GET /api/strategies/notifications?limit=50&_t=1768324501178 HTTP/1.1" 200 - +2026-01-14 01:15:18,243 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:15:18] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:15:25,071 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:15:25] "GET /api/portfolio/positions?refresh=1&_t=1768324522369 HTTP/1.1" 200 - +2026-01-14 01:15:27,821 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:15:27] "GET /api/portfolio/summary?refresh=1&_t=1768324522369 HTTP/1.1" 200 - +2026-01-14 01:15:31,204 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:15:31] "GET /api/strategies/notifications?limit=50&_t=1768324531181 HTTP/1.1" 200 - +2026-01-14 01:15:48,271 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:15:48] "GET /api/strategies/notifications?limit=50&_t=1768324548252 HTTP/1.1" 200 - +2026-01-14 01:15:48,294 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:15:48] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:15:55,068 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:15:55] "GET /api/portfolio/summary?refresh=1&_t=1768324552373 HTTP/1.1" 200 - +2026-01-14 01:15:57,999 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:15:57] "GET /api/portfolio/positions?refresh=1&_t=1768324552373 HTTP/1.1" 200 - +2026-01-14 01:16:01,192 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:16:01] "GET /api/strategies/notifications?limit=50&_t=1768324561178 HTTP/1.1" 200 - +2026-01-14 01:16:18,340 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:16:18] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:16:25,084 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:16:25] "GET /api/portfolio/summary?refresh=1&_t=1768324582373 HTTP/1.1" 200 - +2026-01-14 01:16:28,402 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:16:28] "GET /api/portfolio/positions?refresh=1&_t=1768324582373 HTTP/1.1" 200 - +2026-01-14 01:16:31,229 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:16:31] "GET /api/strategies/notifications?limit=50&_t=1768324591176 HTTP/1.1" 200 - +2026-01-14 01:16:48,270 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:16:48] "GET /api/strategies/notifications?limit=50&_t=1768324608251 HTTP/1.1" 200 - +2026-01-14 01:16:48,401 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:16:48] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:16:55,106 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:16:55] "GET /api/portfolio/summary?refresh=1&_t=1768324612375 HTTP/1.1" 200 - +2026-01-14 01:16:57,800 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:16:57] "GET /api/portfolio/positions?refresh=1&_t=1768324612375 HTTP/1.1" 200 - +2026-01-14 01:17:01,199 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:17:01] "GET /api/strategies/notifications?limit=50&_t=1768324621181 HTTP/1.1" 200 - +2026-01-14 01:17:18,472 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:17:18] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:17:25,185 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:17:25] "GET /api/portfolio/summary?refresh=1&_t=1768324642370 HTTP/1.1" 200 - +2026-01-14 01:17:27,804 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:17:27] "GET /api/portfolio/positions?refresh=1&_t=1768324642370 HTTP/1.1" 200 - +2026-01-14 01:17:31,190 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:17:31] "GET /api/strategies/notifications?limit=50&_t=1768324651172 HTTP/1.1" 200 - +2026-01-14 01:17:48,275 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:17:48] "GET /api/strategies/notifications?limit=50&_t=1768324668253 HTTP/1.1" 200 - +2026-01-14 01:17:48,538 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:17:48] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:17:55,141 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:17:55] "GET /api/portfolio/summary?refresh=1&_t=1768324672379 HTTP/1.1" 200 - +2026-01-14 01:17:57,834 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:17:57] "GET /api/portfolio/positions?refresh=1&_t=1768324672379 HTTP/1.1" 200 - +2026-01-14 01:18:01,187 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:18:01] "GET /api/strategies/notifications?limit=50&_t=1768324681174 HTTP/1.1" 200 - +2026-01-14 01:18:18,596 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:18:18] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:18:25,074 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:18:25] "GET /api/portfolio/summary?refresh=1&_t=1768324702367 HTTP/1.1" 200 - +2026-01-14 01:18:27,766 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:18:27] "GET /api/portfolio/positions?refresh=1&_t=1768324702367 HTTP/1.1" 200 - +2026-01-14 01:18:31,189 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:18:31] "GET /api/strategies/notifications?limit=50&_t=1768324711169 HTTP/1.1" 200 - +2026-01-14 01:18:48,276 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:18:48] "GET /api/strategies/notifications?limit=50&_t=1768324728259 HTTP/1.1" 200 - +2026-01-14 01:18:48,643 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:18:48] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:18:55,077 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:18:55] "GET /api/portfolio/summary?refresh=1&_t=1768324732376 HTTP/1.1" 200 - +2026-01-14 01:18:57,796 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:18:57] "GET /api/portfolio/positions?refresh=1&_t=1768324732376 HTTP/1.1" 200 - +2026-01-14 01:19:01,179 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:19:01] "GET /api/strategies/notifications?limit=50&_t=1768324741168 HTTP/1.1" 200 - +2026-01-14 01:19:18,691 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:19:18] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:19:25,291 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:19:25] "GET /api/portfolio/positions?refresh=1&_t=1768324762370 HTTP/1.1" 200 - +2026-01-14 01:19:27,764 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:19:27] "GET /api/portfolio/summary?refresh=1&_t=1768324762370 HTTP/1.1" 200 - +2026-01-14 01:19:31,188 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:19:31] "GET /api/strategies/notifications?limit=50&_t=1768324771178 HTTP/1.1" 200 - +2026-01-14 01:19:48,280 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:19:48] "GET /api/strategies/notifications?limit=50&_t=1768324788261 HTTP/1.1" 200 - +2026-01-14 01:19:48,747 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:19:48] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:19:55,292 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:19:55] "GET /api/portfolio/summary?refresh=1&_t=1768324792378 HTTP/1.1" 200 - +2026-01-14 01:19:57,852 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:19:57] "GET /api/portfolio/positions?refresh=1&_t=1768324792378 HTTP/1.1" 200 - +2026-01-14 01:20:01,199 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:20:01] "GET /api/strategies/notifications?limit=50&_t=1768324801175 HTTP/1.1" 200 - +2026-01-14 01:20:18,789 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:20:18] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:20:25,109 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:20:25] "GET /api/portfolio/summary?refresh=1&_t=1768324822381 HTTP/1.1" 200 - +2026-01-14 01:20:27,808 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:20:27] "GET /api/portfolio/positions?refresh=1&_t=1768324822381 HTTP/1.1" 200 - +2026-01-14 01:20:31,180 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:20:31] "GET /api/strategies/notifications?limit=50&_t=1768324831168 HTTP/1.1" 200 - +2026-01-14 01:20:48,284 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:20:48] "GET /api/strategies/notifications?limit=50&_t=1768324848265 HTTP/1.1" 200 - +2026-01-14 01:20:48,857 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:20:48] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:20:55,097 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:20:55] "GET /api/portfolio/summary?refresh=1&_t=1768324852368 HTTP/1.1" 200 - +2026-01-14 01:20:57,845 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:20:57] "GET /api/portfolio/positions?refresh=1&_t=1768324852368 HTTP/1.1" 200 - +2026-01-14 01:21:01,181 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:21:01] "GET /api/strategies/notifications?limit=50&_t=1768324861170 HTTP/1.1" 200 - +2026-01-14 01:21:18,907 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:21:18] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:21:25,061 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:21:25] "GET /api/portfolio/summary?refresh=1&_t=1768324882368 HTTP/1.1" 200 - +2026-01-14 01:21:27,763 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:21:27] "GET /api/portfolio/positions?refresh=1&_t=1768324882368 HTTP/1.1" 200 - +2026-01-14 01:21:31,188 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:21:31] "GET /api/strategies/notifications?limit=50&_t=1768324891176 HTTP/1.1" 200 - +2026-01-14 01:21:48,287 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:21:48] "GET /api/strategies/notifications?limit=50&_t=1768324908266 HTTP/1.1" 200 - +2026-01-14 01:21:48,959 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:21:48] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:21:55,121 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:21:55] "GET /api/portfolio/summary?refresh=1&_t=1768324912368 HTTP/1.1" 200 - +2026-01-14 01:21:58,309 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:21:58] "GET /api/portfolio/positions?refresh=1&_t=1768324912368 HTTP/1.1" 200 - +2026-01-14 01:22:01,193 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:22:01] "GET /api/strategies/notifications?limit=50&_t=1768324921182 HTTP/1.1" 200 - +2026-01-14 01:22:19,034 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:22:19] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:22:25,070 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:22:25] "GET /api/portfolio/summary?refresh=1&_t=1768324942371 HTTP/1.1" 200 - +2026-01-14 01:22:27,772 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:22:27] "GET /api/portfolio/positions?refresh=1&_t=1768324942371 HTTP/1.1" 200 - +2026-01-14 01:22:31,192 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:22:31] "GET /api/strategies/notifications?limit=50&_t=1768324951180 HTTP/1.1" 200 - +2026-01-14 01:22:48,276 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:22:48] "GET /api/strategies/notifications?limit=50&_t=1768324968258 HTTP/1.1" 200 - +2026-01-14 01:22:49,075 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:22:49] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:22:55,117 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:22:55] "GET /api/portfolio/positions?refresh=1&_t=1768324972368 HTTP/1.1" 200 - +2026-01-14 01:22:57,816 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:22:57] "GET /api/portfolio/summary?refresh=1&_t=1768324972368 HTTP/1.1" 200 - +2026-01-14 01:23:01,187 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:23:01] "GET /api/strategies/notifications?limit=50&_t=1768324981173 HTTP/1.1" 200 - +2026-01-14 01:23:19,147 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:23:19] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:23:25,078 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:23:25] "GET /api/portfolio/summary?refresh=1&_t=1768325002375 HTTP/1.1" 200 - +2026-01-14 01:23:27,863 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:23:27] "GET /api/portfolio/positions?refresh=1&_t=1768325002375 HTTP/1.1" 200 - +2026-01-14 01:23:31,190 - werkzeug - INFO - 172.18.0.3 - - [14/Jan/2026 01:23:31] "GET /api/strategies/notifications?limit=50&_t=1768325011170 HTTP/1.1" 200 - +2026-01-14 01:34:28,449 - app - INFO - Database type: postgresql +2026-01-14 01:34:28,450 - app - WARNING - Database initialization note: Cannot connect to PostgreSQL. Check DATABASE_URL. +2026-01-14 01:34:29,470 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:34:29,470 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-14 01:34:29,470 - app.services.pending_order_worker - INFO - position sync skipped/failed: DATABASE_URL environment variable is not set. +2026-01-14 01:34:29,470 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-14 01:34:29,471 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-14 01:34:29,471 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-14 01:34:29,472 - app.services.portfolio_monitor - ERROR - _check_position_alerts failed: DATABASE_URL environment variable is not set. +2026-01-14 01:34:29,472 - app.services.portfolio_monitor - ERROR - Monitor loop error: DATABASE_URL environment variable is not set. +2026-01-14 01:34:29,899 - app.services.trading_executor - ERROR - Failed to check/ensure DB columns: DATABASE_URL environment variable is not set. +2026-01-14 01:34:29,899 - app.services.strategy - ERROR - Failed to fetch running strategies: DATABASE_URL environment variable is not set. +2026-01-14 01:34:29,899 - app - INFO - No running strategies to restore. +2026-01-14 01:34:29,914 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-14 01:34:29,914 - werkzeug - INFO - Press CTRL+C to quit +2026-01-14 01:34:30,471 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:34:31,471 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:34:32,472 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:34:33,473 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:34:34,473 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:34:35,474 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:34:35,566 - app.routes.dashboard - ERROR - dashboard summary failed: DATABASE_URL environment variable is not set. +Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\routes\dashboard.py", line 264, in summary + with get_db_connection() as db: + ~~~~~~~~~~~~~~~~~^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\contextlib.py", line 141, in __enter__ + return next(self.gen) + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 225, in get_pg_connection + pool = _get_connection_pool() + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 93, in _get_connection_pool + raise RuntimeError("DATABASE_URL environment variable is not set.") +RuntimeError: DATABASE_URL environment variable is not set. +2026-01-14 01:34:35,571 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:34:35] "GET /api/dashboard/summary?_t=1768325675559 HTTP/1.1" 500 - +2026-01-14 01:34:35,878 - app.routes.dashboard - ERROR - dashboard pendingOrders failed: DATABASE_URL environment variable is not set. +Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\routes\dashboard.py", line 509, in pending_orders + with get_db_connection() as db: + ~~~~~~~~~~~~~~~~~^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\contextlib.py", line 141, in __enter__ + return next(self.gen) + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 225, in get_pg_connection + pool = _get_connection_pool() + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 93, in _get_connection_pool + raise RuntimeError("DATABASE_URL environment variable is not set.") +RuntimeError: DATABASE_URL environment variable is not set. +2026-01-14 01:34:35,879 - app.routes.dashboard - ERROR - dashboard pendingOrders failed: DATABASE_URL environment variable is not set. +Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\routes\dashboard.py", line 509, in pending_orders + with get_db_connection() as db: + ~~~~~~~~~~~~~~~~~^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\contextlib.py", line 141, in __enter__ + return next(self.gen) + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 225, in get_pg_connection + pool = _get_connection_pool() + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 93, in _get_connection_pool + raise RuntimeError("DATABASE_URL environment variable is not set.") +RuntimeError: DATABASE_URL environment variable is not set. +2026-01-14 01:34:35,880 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:34:35] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768325675559 HTTP/1.1" 500 - +2026-01-14 01:34:35,880 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:34:35] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768325675559 HTTP/1.1" 500 - +2026-01-14 01:34:36,475 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:34:37,475 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:34:38,476 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:34:39,476 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:34:39,477 - app.services.pending_order_worker - INFO - position sync skipped/failed: DATABASE_URL environment variable is not set. +2026-01-14 01:34:40,477 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:34:40,766 - app.routes.dashboard - ERROR - dashboard pendingOrders failed: DATABASE_URL environment variable is not set. +Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\routes\dashboard.py", line 509, in pending_orders + with get_db_connection() as db: + ~~~~~~~~~~~~~~~~~^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\contextlib.py", line 141, in __enter__ + return next(self.gen) + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 225, in get_pg_connection + pool = _get_connection_pool() + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 93, in _get_connection_pool + raise RuntimeError("DATABASE_URL environment variable is not set.") +RuntimeError: DATABASE_URL environment variable is not set. +2026-01-14 01:34:40,768 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:34:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768325680540 HTTP/1.1" 500 - +2026-01-14 01:34:41,154 - app.services.user_service - ERROR - get_user_by_id failed: DATABASE_URL environment variable is not set. +2026-01-14 01:34:41,154 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:34:41] "GET /api/user/info?_t=1768325681146 HTTP/1.1" 200 - +2026-01-14 01:34:41,462 - app.routes.strategy - ERROR - get_strategy_notifications failed: DATABASE_URL environment variable is not set. +2026-01-14 01:34:41,462 - app.routes.dashboard - ERROR - dashboard summary failed: DATABASE_URL environment variable is not set. +Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\routes\dashboard.py", line 264, in summary + with get_db_connection() as db: + ~~~~~~~~~~~~~~~~~^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\contextlib.py", line 141, in __enter__ + return next(self.gen) + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 225, in get_pg_connection + pool = _get_connection_pool() + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 93, in _get_connection_pool + raise RuntimeError("DATABASE_URL environment variable is not set.") +RuntimeError: DATABASE_URL environment variable is not set. +2026-01-14 01:34:41,464 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:34:41] "GET /api/dashboard/summary?_t=1768325681450 HTTP/1.1" 500 - +2026-01-14 01:34:41,465 - app.routes.strategy - ERROR - Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\routes\strategy.py", line 736, in get_strategy_notifications + with get_db_connection() as db: + ~~~~~~~~~~~~~~~~~^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\contextlib.py", line 141, in __enter__ + return next(self.gen) + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 225, in get_pg_connection + pool = _get_connection_pool() + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 93, in _get_connection_pool + raise RuntimeError("DATABASE_URL environment variable is not set.") +RuntimeError: DATABASE_URL environment variable is not set. + +2026-01-14 01:34:41,466 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:34:41] "GET /api/strategies/notifications?limit=50&_t=1768325681450 HTTP/1.1" 500 - +2026-01-14 01:34:41,478 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:34:41,768 - app.routes.dashboard - ERROR - dashboard pendingOrders failed: DATABASE_URL environment variable is not set. +Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\routes\dashboard.py", line 509, in pending_orders + with get_db_connection() as db: + ~~~~~~~~~~~~~~~~~^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\contextlib.py", line 141, in __enter__ + return next(self.gen) + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 225, in get_pg_connection + pool = _get_connection_pool() + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 93, in _get_connection_pool + raise RuntimeError("DATABASE_URL environment variable is not set.") +RuntimeError: DATABASE_URL environment variable is not set. +2026-01-14 01:34:41,769 - app.routes.dashboard - ERROR - dashboard pendingOrders failed: DATABASE_URL environment variable is not set. +Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\routes\dashboard.py", line 509, in pending_orders + with get_db_connection() as db: + ~~~~~~~~~~~~~~~~~^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\contextlib.py", line 141, in __enter__ + return next(self.gen) + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 225, in get_pg_connection + pool = _get_connection_pool() + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 93, in _get_connection_pool + raise RuntimeError("DATABASE_URL environment variable is not set.") +RuntimeError: DATABASE_URL environment variable is not set. +2026-01-14 01:34:41,770 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:34:41] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768325681450 HTTP/1.1" 500 - +2026-01-14 01:34:41,770 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:34:41] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768325681450 HTTP/1.1" 500 - +2026-01-14 01:34:42,478 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:34:43,479 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:34:44,480 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:34:45,480 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:34:46,414 - app.routes.dashboard - ERROR - dashboard pendingOrders failed: DATABASE_URL environment variable is not set. +Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\routes\dashboard.py", line 509, in pending_orders + with get_db_connection() as db: + ~~~~~~~~~~~~~~~~~^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\contextlib.py", line 141, in __enter__ + return next(self.gen) + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 225, in get_pg_connection + pool = _get_connection_pool() + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 93, in _get_connection_pool + raise RuntimeError("DATABASE_URL environment variable is not set.") +RuntimeError: DATABASE_URL environment variable is not set. +2026-01-14 01:34:46,415 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:34:46] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768325686407 HTTP/1.1" 500 - +2026-01-14 01:34:46,481 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:34:47,482 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:34:48,484 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:34:49,485 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:34:49,485 - app.services.pending_order_worker - INFO - position sync skipped/failed: DATABASE_URL environment variable is not set. +2026-01-14 01:34:50,486 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:34:51,486 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:34:51,717 - app.routes.dashboard - ERROR - dashboard pendingOrders failed: DATABASE_URL environment variable is not set. +Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\routes\dashboard.py", line 509, in pending_orders + with get_db_connection() as db: + ~~~~~~~~~~~~~~~~~^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\contextlib.py", line 141, in __enter__ + return next(self.gen) + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 225, in get_pg_connection + pool = _get_connection_pool() + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 93, in _get_connection_pool + raise RuntimeError("DATABASE_URL environment variable is not set.") +RuntimeError: DATABASE_URL environment variable is not set. +2026-01-14 01:34:51,718 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:34:51] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768325691398 HTTP/1.1" 500 - +2026-01-14 01:34:52,487 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:34:53,487 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:34:54,488 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:34:55,489 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:34:56,409 - app.routes.dashboard - ERROR - dashboard pendingOrders failed: DATABASE_URL environment variable is not set. +Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\routes\dashboard.py", line 509, in pending_orders + with get_db_connection() as db: + ~~~~~~~~~~~~~~~~~^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\contextlib.py", line 141, in __enter__ + return next(self.gen) + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 225, in get_pg_connection + pool = _get_connection_pool() + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 93, in _get_connection_pool + raise RuntimeError("DATABASE_URL environment variable is not set.") +RuntimeError: DATABASE_URL environment variable is not set. +2026-01-14 01:34:56,410 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:34:56] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768325696400 HTTP/1.1" 500 - +2026-01-14 01:34:56,489 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:34:57,490 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:34:58,490 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:34:59,486 - app.services.portfolio_monitor - ERROR - _check_position_alerts failed: DATABASE_URL environment variable is not set. +2026-01-14 01:34:59,487 - app.services.portfolio_monitor - ERROR - Monitor loop error: DATABASE_URL environment variable is not set. +2026-01-14 01:34:59,491 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:34:59,491 - app.services.pending_order_worker - INFO - position sync skipped/failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:00,491 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:01,492 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:01,719 - app.routes.dashboard - ERROR - dashboard pendingOrders failed: DATABASE_URL environment variable is not set. +Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\routes\dashboard.py", line 509, in pending_orders + with get_db_connection() as db: + ~~~~~~~~~~~~~~~~~^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\contextlib.py", line 141, in __enter__ + return next(self.gen) + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 225, in get_pg_connection + pool = _get_connection_pool() + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 93, in _get_connection_pool + raise RuntimeError("DATABASE_URL environment variable is not set.") +RuntimeError: DATABASE_URL environment variable is not set. +2026-01-14 01:35:01,720 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:35:01] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768325701408 HTTP/1.1" 500 - +2026-01-14 01:35:02,493 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:03,493 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:04,494 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:05,495 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:06,416 - app.routes.dashboard - ERROR - dashboard pendingOrders failed: DATABASE_URL environment variable is not set. +Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\routes\dashboard.py", line 509, in pending_orders + with get_db_connection() as db: + ~~~~~~~~~~~~~~~~~^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\contextlib.py", line 141, in __enter__ + return next(self.gen) + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 225, in get_pg_connection + pool = _get_connection_pool() + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 93, in _get_connection_pool + raise RuntimeError("DATABASE_URL environment variable is not set.") +RuntimeError: DATABASE_URL environment variable is not set. +2026-01-14 01:35:06,418 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:35:06] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768325706408 HTTP/1.1" 500 - +2026-01-14 01:35:06,495 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:07,496 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:08,496 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:09,497 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:09,497 - app.services.pending_order_worker - INFO - position sync skipped/failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:10,498 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:11,498 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:11,720 - app.routes.dashboard - ERROR - dashboard pendingOrders failed: DATABASE_URL environment variable is not set. +Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\routes\dashboard.py", line 509, in pending_orders + with get_db_connection() as db: + ~~~~~~~~~~~~~~~~~^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\contextlib.py", line 141, in __enter__ + return next(self.gen) + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 225, in get_pg_connection + pool = _get_connection_pool() + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 93, in _get_connection_pool + raise RuntimeError("DATABASE_URL environment variable is not set.") +RuntimeError: DATABASE_URL environment variable is not set. +2026-01-14 01:35:11,720 - app.routes.strategy - ERROR - get_strategy_notifications failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:11,721 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:35:11] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768325711403 HTTP/1.1" 500 - +2026-01-14 01:35:11,722 - app.routes.strategy - ERROR - Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\routes\strategy.py", line 736, in get_strategy_notifications + with get_db_connection() as db: + ~~~~~~~~~~~~~~~~~^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\contextlib.py", line 141, in __enter__ + return next(self.gen) + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 225, in get_pg_connection + pool = _get_connection_pool() + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 93, in _get_connection_pool + raise RuntimeError("DATABASE_URL environment variable is not set.") +RuntimeError: DATABASE_URL environment variable is not set. + +2026-01-14 01:35:11,722 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:35:11] "GET /api/strategies/notifications?limit=50&_t=1768325711402 HTTP/1.1" 500 - +2026-01-14 01:35:12,499 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:13,501 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:14,502 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:15,502 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:16,407 - app.routes.dashboard - ERROR - dashboard pendingOrders failed: DATABASE_URL environment variable is not set. +Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\routes\dashboard.py", line 509, in pending_orders + with get_db_connection() as db: + ~~~~~~~~~~~~~~~~~^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\contextlib.py", line 141, in __enter__ + return next(self.gen) + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 225, in get_pg_connection + pool = _get_connection_pool() + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 93, in _get_connection_pool + raise RuntimeError("DATABASE_URL environment variable is not set.") +RuntimeError: DATABASE_URL environment variable is not set. +2026-01-14 01:35:16,408 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:35:16] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768325716401 HTTP/1.1" 500 - +2026-01-14 01:35:16,503 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:17,504 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:18,504 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:19,505 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:19,505 - app.services.pending_order_worker - INFO - position sync skipped/failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:20,506 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:21,506 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:21,726 - app.routes.dashboard - ERROR - dashboard pendingOrders failed: DATABASE_URL environment variable is not set. +Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\routes\dashboard.py", line 509, in pending_orders + with get_db_connection() as db: + ~~~~~~~~~~~~~~~~~^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\contextlib.py", line 141, in __enter__ + return next(self.gen) + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 225, in get_pg_connection + pool = _get_connection_pool() + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 93, in _get_connection_pool + raise RuntimeError("DATABASE_URL environment variable is not set.") +RuntimeError: DATABASE_URL environment variable is not set. +2026-01-14 01:35:21,727 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:35:21] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768325721407 HTTP/1.1" 500 - +2026-01-14 01:35:22,507 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:23,508 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:24,509 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:25,510 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:26,403 - app.routes.dashboard - ERROR - dashboard pendingOrders failed: DATABASE_URL environment variable is not set. +Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\routes\dashboard.py", line 509, in pending_orders + with get_db_connection() as db: + ~~~~~~~~~~~~~~~~~^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\contextlib.py", line 141, in __enter__ + return next(self.gen) + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 225, in get_pg_connection + pool = _get_connection_pool() + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 93, in _get_connection_pool + raise RuntimeError("DATABASE_URL environment variable is not set.") +RuntimeError: DATABASE_URL environment variable is not set. +2026-01-14 01:35:26,404 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:35:26] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768325726397 HTTP/1.1" 500 - +2026-01-14 01:35:26,511 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:27,512 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:28,512 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:29,487 - app.services.portfolio_monitor - ERROR - _check_position_alerts failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:29,488 - app.services.portfolio_monitor - ERROR - Monitor loop error: DATABASE_URL environment variable is not set. +2026-01-14 01:35:29,513 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:29,513 - app.services.pending_order_worker - INFO - position sync skipped/failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:30,514 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:31,514 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:31,707 - app.routes.dashboard - ERROR - dashboard pendingOrders failed: DATABASE_URL environment variable is not set. +Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\routes\dashboard.py", line 509, in pending_orders + with get_db_connection() as db: + ~~~~~~~~~~~~~~~~~^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\contextlib.py", line 141, in __enter__ + return next(self.gen) + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 225, in get_pg_connection + pool = _get_connection_pool() + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 93, in _get_connection_pool + raise RuntimeError("DATABASE_URL environment variable is not set.") +RuntimeError: DATABASE_URL environment variable is not set. +2026-01-14 01:35:31,708 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:35:31] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768325731396 HTTP/1.1" 500 - +2026-01-14 01:35:32,515 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:33,515 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:34,516 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:35,516 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:36,413 - app.routes.dashboard - ERROR - dashboard pendingOrders failed: DATABASE_URL environment variable is not set. +Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\routes\dashboard.py", line 509, in pending_orders + with get_db_connection() as db: + ~~~~~~~~~~~~~~~~~^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\contextlib.py", line 141, in __enter__ + return next(self.gen) + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 225, in get_pg_connection + pool = _get_connection_pool() + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 93, in _get_connection_pool + raise RuntimeError("DATABASE_URL environment variable is not set.") +RuntimeError: DATABASE_URL environment variable is not set. +2026-01-14 01:35:36,414 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:35:36] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768325736406 HTTP/1.1" 500 - +2026-01-14 01:35:36,517 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:37,518 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:38,518 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:39,519 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:39,520 - app.services.pending_order_worker - INFO - position sync skipped/failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:40,520 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:41,404 - app.routes.strategy - ERROR - get_strategy_notifications failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:41,405 - app.routes.strategy - ERROR - Traceback (most recent call last): + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\routes\strategy.py", line 736, in get_strategy_notifications + with get_db_connection() as db: + ~~~~~~~~~~~~~~~~~^^ + File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\contextlib.py", line 141, in __enter__ + return next(self.gen) + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 225, in get_pg_connection + pool = _get_connection_pool() + File "C:\Users\Administrator\Desktop\Xtrade\QuantDinger\backend_api_python\app\utils\db_postgres.py", line 93, in _get_connection_pool + raise RuntimeError("DATABASE_URL environment variable is not set.") +RuntimeError: DATABASE_URL environment variable is not set. + +2026-01-14 01:35:41,405 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:35:41] "GET /api/strategies/notifications?limit=50&_t=1768325741397 HTTP/1.1" 500 - +2026-01-14 01:35:41,520 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:42,521 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:43,042 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:35:43] "POST /api/user/logout HTTP/1.1" 200 - +2026-01-14 01:35:43,522 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:44,524 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:45,525 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:46,527 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:47,527 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:48,529 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:49,532 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:49,533 - app.services.pending_order_worker - INFO - position sync skipped/failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:50,533 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:51,535 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:52,536 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:53,538 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:54,539 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:55,539 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:56,540 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:57,541 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:58,542 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:59,501 - app.services.portfolio_monitor - ERROR - _check_position_alerts failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:59,502 - app.services.portfolio_monitor - ERROR - Monitor loop error: DATABASE_URL environment variable is not set. +2026-01-14 01:35:59,543 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:35:59,543 - app.services.pending_order_worker - INFO - position sync skipped/failed: DATABASE_URL environment variable is not set. +2026-01-14 01:36:00,544 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:36:01,545 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:36:02,546 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:36:03,547 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:36:04,548 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: DATABASE_URL environment variable is not set. +2026-01-14 01:36:07,491 - app - INFO - Database type: postgresql +2026-01-14 01:36:10,208 - app.utils.db_postgres - ERROR - Failed to create PostgreSQL connection pool: could not translate host name "postgres" to address: Name or service not known + +2026-01-14 01:36:10,209 - app - WARNING - Database initialization note: Cannot connect to PostgreSQL. Check DATABASE_URL. +2026-01-14 01:36:10,209 - app - INFO - !!! SYSTEM STARTING IN DEMO MODE (READ-ONLY) !!! +2026-01-14 01:36:11,780 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-14 01:36:11,781 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-14 01:36:11,784 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-14 01:36:11,784 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-14 01:36:14,484 - app.utils.db_postgres - ERROR - Failed to create PostgreSQL connection pool: could not translate host name "postgres" to address: Name or service not known + +2026-01-14 01:36:14,484 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: could not translate host name "postgres" to address: Name or service not known + +2026-01-14 01:36:17,187 - app.utils.db_postgres - ERROR - Failed to create PostgreSQL connection pool: could not translate host name "postgres" to address: Name or service not known + +2026-01-14 01:36:17,188 - app.services.portfolio_monitor - ERROR - _check_position_alerts failed: could not translate host name "postgres" to address: Name or service not known + +2026-01-14 01:36:19,879 - app.utils.db_postgres - ERROR - Failed to create PostgreSQL connection pool: could not translate host name "postgres" to address: Name or service not known + +2026-01-14 01:36:19,879 - app.services.trading_executor - ERROR - Failed to check/ensure DB columns: could not translate host name "postgres" to address: Name or service not known + +2026-01-14 01:36:22,584 - app.utils.db_postgres - ERROR - Failed to create PostgreSQL connection pool: could not translate host name "postgres" to address: Name or service not known + +2026-01-14 01:36:22,584 - app.services.pending_order_worker - INFO - position sync skipped/failed: could not translate host name "postgres" to address: Name or service not known + +2026-01-14 01:36:25,287 - app.utils.db_postgres - ERROR - Failed to create PostgreSQL connection pool: could not translate host name "postgres" to address: Name or service not known + +2026-01-14 01:36:25,288 - app.services.portfolio_monitor - ERROR - Monitor loop error: could not translate host name "postgres" to address: Name or service not known + +2026-01-14 01:36:28,000 - app.utils.db_postgres - ERROR - Failed to create PostgreSQL connection pool: could not translate host name "postgres" to address: Name or service not known + +2026-01-14 01:36:28,001 - app.services.strategy - ERROR - Failed to fetch running strategies: could not translate host name "postgres" to address: Name or service not known + +2026-01-14 01:36:28,001 - app - INFO - No running strategies to restore. +2026-01-14 01:36:28,025 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.1.10:5000 +2026-01-14 01:36:28,025 - werkzeug - INFO - Press CTRL+C to quit +2026-01-14 01:36:30,715 - app.utils.db_postgres - ERROR - Failed to create PostgreSQL connection pool: could not translate host name "postgres" to address: Name or service not known + +2026-01-14 01:36:30,715 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: could not translate host name "postgres" to address: Name or service not known + +2026-01-14 01:36:33,423 - app.utils.db_postgres - ERROR - Failed to create PostgreSQL connection pool: could not translate host name "postgres" to address: Name or service not known + +2026-01-14 01:36:33,424 - app.services.pending_order_worker - INFO - position sync skipped/failed: could not translate host name "postgres" to address: Name or service not known + +2026-01-14 01:36:37,126 - app.utils.db_postgres - ERROR - Failed to create PostgreSQL connection pool: could not translate host name "postgres" to address: Name or service not known + +2026-01-14 01:36:37,126 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: could not translate host name "postgres" to address: Name or service not known + +2026-01-14 01:36:40,822 - app.utils.db_postgres - ERROR - Failed to create PostgreSQL connection pool: could not translate host name "postgres" to address: Name or service not known + +2026-01-14 01:36:40,823 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: could not translate host name "postgres" to address: Name or service not known + +2026-01-14 01:36:43,528 - app.utils.db_postgres - ERROR - Failed to create PostgreSQL connection pool: could not translate host name "postgres" to address: Name or service not known + +2026-01-14 01:36:43,529 - app.services.pending_order_worker - INFO - position sync skipped/failed: could not translate host name "postgres" to address: Name or service not known + +2026-01-14 01:36:47,256 - app.utils.db_postgres - ERROR - Failed to create PostgreSQL connection pool: could not translate host name "postgres" to address: Name or service not known + +2026-01-14 01:36:47,257 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: could not translate host name "postgres" to address: Name or service not known + +2026-01-14 01:36:50,946 - app.utils.db_postgres - ERROR - Failed to create PostgreSQL connection pool: could not translate host name "postgres" to address: Name or service not known + +2026-01-14 01:36:50,947 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: could not translate host name "postgres" to address: Name or service not known + +2026-01-14 01:40:22,943 - app - INFO - Database type: postgresql +2026-01-14 01:40:22,970 - app.utils.db_postgres - INFO - PostgreSQL connection pool created: postgres:5432/quantdinger +2026-01-14 01:40:22,973 - app.utils.db - INFO - PostgreSQL connection verified +2026-01-14 01:40:23,662 - app.utils.db_postgres - ERROR - PostgreSQL operation error: column "created_at" is of type timestamp without time zone but expression is of type integer +LINE 4: ...3GYb6', NULL, 'Administrator', 'admin', 'active', 1768326023... + ^ +HINT: You will need to rewrite or cast the expression. + +2026-01-14 01:40:23,670 - app.services.user_service - ERROR - create_user failed: column "created_at" is of type timestamp without time zone but expression is of type integer +LINE 4: ...3GYb6', NULL, 'Administrator', 'admin', 'active', 1768326023... + ^ +HINT: You will need to rewrite or cast the expression. + +2026-01-14 01:40:23,672 - app.utils.db_postgres - ERROR - PostgreSQL operation error: column "created_at" is of type timestamp without time zone but expression is of type integer +LINE 4: ...3GYb6', NULL, 'Administrator', 'admin', 'active', 1768326023... + ^ +HINT: You will need to rewrite or cast the expression. + +2026-01-14 01:40:23,673 - app.services.user_service - ERROR - ensure_admin_exists failed: column "created_at" is of type timestamp without time zone but expression is of type integer +LINE 4: ...3GYb6', NULL, 'Administrator', 'admin', 'active', 1768326023... + ^ +HINT: You will need to rewrite or cast the expression. + +2026-01-14 01:40:23,673 - app - INFO - !!! SYSTEM STARTING IN DEMO MODE (READ-ONLY) !!! +2026-01-14 01:40:24,509 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-14 01:40:24,510 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-14 01:40:24,521 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:24,523 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:24,523 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-14 01:40:24,524 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-14 01:40:24,558 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:24,560 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:25,118 - app.services.trading_executor - INFO - Adding highest_price column to qd_strategy_positions (SQLite)... +2026-01-14 01:40:25,119 - app.utils.db_postgres - ERROR - PostgreSQL operation error: current transaction is aborted, commands ignored until end of transaction block + +2026-01-14 01:40:25,120 - app.services.trading_executor - ERROR - Failed to check/ensure DB columns: current transaction is aborted, commands ignored until end of transaction block + +2026-01-14 01:40:25,123 - app.services.strategy - INFO - Found 0 running strategies: [] +2026-01-14 01:40:25,124 - app - INFO - No running strategies to restore. +2026-01-14 01:40:25,145 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://172.18.0.3:5000 +2026-01-14 01:40:25,147 - werkzeug - INFO - Press CTRL+C to quit +2026-01-14 01:40:25,555 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:25,556 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:26,558 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:26,560 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:27,563 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:27,564 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:28,566 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:28,566 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:29,283 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:40:29] "GET /api/strategies/notifications?limit=50&_t=1768326029267 HTTP/1.1" 200 - +2026-01-14 01:40:29,300 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:40:29] "GET /api/dashboard/summary?_t=1768326029267 HTTP/1.1" 200 - +2026-01-14 01:40:29,301 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:40:29] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768326029267 HTTP/1.1" 200 - +2026-01-14 01:40:29,302 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:40:29] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768326029267 HTTP/1.1" 200 - +2026-01-14 01:40:29,568 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:29,568 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:30,570 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:30,570 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:31,572 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:31,572 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:32,573 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:32,574 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:33,575 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:33,576 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:34,581 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:34,581 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:35,583 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:35,583 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:36,584 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:36,585 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:37,586 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:37,587 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:38,588 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:38,589 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:39,590 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:39,591 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:40,592 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:40,592 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:41,593 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:41,596 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:42,598 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:42,598 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:43,599 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:43,600 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:44,601 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:44,601 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:45,603 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:45,603 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:46,604 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:46,605 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:47,606 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:47,606 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:48,266 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:40:48] "GET /api/strategies/notifications?limit=50&_t=1768326048259 HTTP/1.1" 200 - +2026-01-14 01:40:48,607 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:48,608 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:49,609 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:49,610 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:50,611 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:50,615 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:51,622 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:51,623 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:52,623 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:52,623 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:52,652 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:40:52] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:40:53,625 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:53,625 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:54,371 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:40:54] "POST /api/user/logout HTTP/1.1" 200 - +2026-01-14 01:40:54,570 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:54,572 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:54,628 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:54,629 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:55,635 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:55,636 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:56,641 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:56,642 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:57,645 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:57,646 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:58,650 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:58,651 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:59,652 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:40:59,652 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:00,654 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:00,655 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:01,656 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:01,657 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:02,659 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:02,661 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:03,664 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:03,666 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:04,668 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:04,668 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:05,670 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:05,671 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:05,919 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:41:05] "POST /api/user/login HTTP/1.1" 200 - +2026-01-14 01:41:06,133 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:41:06] "GET /api/strategies/notifications?limit=50&_t=1768326066106 HTTP/1.1" 200 - +2026-01-14 01:41:06,157 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:41:06] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768326066106 HTTP/1.1" 200 - +2026-01-14 01:41:06,159 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:41:06] "GET /api/dashboard/summary?_t=1768326066106 HTTP/1.1" 200 - +2026-01-14 01:41:06,166 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:41:06] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768326066106 HTTP/1.1" 200 - +2026-01-14 01:41:06,675 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:06,675 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:07,677 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:07,678 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:08,252 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:41:08] "GET /api/market/config?_t=1768326068232 HTTP/1.1" 200 - +2026-01-14 01:41:08,254 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:41:08] "GET /api/user/info?_t=1768326068232 HTTP/1.1" 200 - +2026-01-14 01:41:08,257 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:41:08] "GET /api/market/watchlist/get?userid=1&_t=1768326068232 HTTP/1.1" 200 - +2026-01-14 01:41:08,300 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:41:08] "GET /api/market/types?_t=1768326068289 HTTP/1.1" 200 - +2026-01-14 01:41:08,301 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:41:08] "GET /api/market/watchlist/get?userid=1&_t=1768326068291 HTTP/1.1" 200 - +2026-01-14 01:41:08,681 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:08,681 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:09,683 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:09,684 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:09,816 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:41:09] "GET /api/market/types?_t=1768326069779 HTTP/1.1" 200 - +2026-01-14 01:41:09,819 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:41:09] "GET /api/user/info?_t=1768326069779 HTTP/1.1" 200 - +2026-01-14 01:41:09,824 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:41:09] "GET /api/market/watchlist/get?userid=1&_t=1768326069779 HTTP/1.1" 200 - +2026-01-14 01:41:09,826 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:41:09] "GET /api/indicator/getIndicators?userid=1&_t=1768326069779 HTTP/1.1" 200 - +2026-01-14 01:41:09,851 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:41:09] "GET /api/market/watchlist/get?userid=1&_t=1768326069838 HTTP/1.1" 200 - +2026-01-14 01:41:09,856 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:41:09] "GET /api/indicator/getIndicators?userid=1&_t=1768326069838 HTTP/1.1" 200 - +2026-01-14 01:41:10,685 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:10,686 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:11,687 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:11,688 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:11,911 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:41:11] "GET /api/market/symbols/hot?market=USStock&limit=10&_t=1768326071898 HTTP/1.1" 200 - +2026-01-14 01:41:12,690 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:12,692 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:13,693 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:13,695 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:14,663 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:41:14] "POST /api/market/watchlist/add HTTP/1.1" 403 - +2026-01-14 01:41:14,697 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:14,698 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:15,702 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:15,703 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:16,704 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:16,704 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:17,705 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:17,708 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:18,709 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:18,710 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:19,711 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:19,712 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:20,713 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:20,714 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:21,716 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:21,716 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:22,708 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:41:22] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:41:22,715 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:22,716 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:23,717 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:23,719 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:24,574 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:24,575 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:24,720 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:24,720 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:25,722 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:25,723 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:26,724 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:26,725 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:27,727 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:27,727 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:28,729 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:28,731 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:29,735 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:29,736 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683259... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:30,745 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:30,746 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:31,747 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:31,748 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:32,749 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:32,749 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:33,751 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:33,751 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:34,752 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:34,753 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:35,754 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:35,755 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:36,052 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:41:36] "GET /api/strategies/notifications?limit=50&_t=1768326096046 HTTP/1.1" 200 - +2026-01-14 01:41:36,757 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:36,759 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:37,761 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:37,761 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:38,762 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:38,763 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:39,764 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:39,765 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:40,767 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:40,768 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:41,769 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:41,770 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:42,771 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:42,771 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:43,772 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:43,774 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:44,777 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:44,778 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:45,779 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:45,780 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:46,781 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:46,782 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:47,785 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:47,785 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:48,272 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:41:48] "GET /api/strategies/notifications?limit=50&_t=1768326108264 HTTP/1.1" 200 - +2026-01-14 01:41:48,786 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:48,787 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:49,788 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:49,789 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:50,790 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:50,791 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:51,793 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:51,794 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:52,768 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:41:52] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:41:52,797 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:52,797 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:53,799 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:53,799 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:54,575 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:54,577 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:54,800 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:54,801 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:55,802 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:55,803 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:56,804 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:56,804 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:57,805 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:57,807 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:58,809 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:58,810 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:59,811 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:41:59,811 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:00,812 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:00,813 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:01,814 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:01,814 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:02,815 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:02,815 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:03,817 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:03,817 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:04,818 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:04,818 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:05,820 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:05,820 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:06,063 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:42:06] "GET /api/strategies/notifications?limit=50&_t=1768326126057 HTTP/1.1" 200 - +2026-01-14 01:42:06,821 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:06,822 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:07,823 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:07,824 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:08,825 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:08,826 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:09,827 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:09,827 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:10,829 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:10,829 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:11,830 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:11,832 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:12,833 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:12,833 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:13,834 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:13,835 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:14,836 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:14,837 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:15,843 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:15,844 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:16,845 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:16,847 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:17,848 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:17,848 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:18,850 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:18,850 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:19,851 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:19,852 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:20,853 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:20,854 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:21,855 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:21,855 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:22,827 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:42:22] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:42:22,855 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:22,856 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:23,857 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:23,858 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:24,579 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:24,579 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:24,860 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:24,861 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:25,862 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:25,862 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:26,864 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:26,877 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:27,885 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:27,887 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:28,891 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:28,893 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:29,894 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:29,894 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:30,895 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:30,896 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:31,897 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:31,898 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:32,899 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:32,900 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:33,901 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:33,901 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:34,902 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:34,903 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:35,904 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:35,905 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:36,063 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:42:36] "GET /api/strategies/notifications?limit=50&_t=1768326156056 HTTP/1.1" 200 - +2026-01-14 01:42:36,911 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:36,911 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:37,912 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:37,913 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:38,914 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:38,914 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:39,915 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:39,916 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:40,917 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:40,918 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:41,919 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:41,923 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:42,924 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:42,925 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:43,927 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:43,928 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:44,929 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:44,930 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:45,931 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:45,932 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:46,933 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:46,933 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:47,934 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:47,935 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:48,269 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:42:48] "GET /api/strategies/notifications?limit=50&_t=1768326168263 HTTP/1.1" 200 - +2026-01-14 01:42:48,936 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:48,936 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:49,937 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:49,938 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:50,939 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:50,939 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:51,939 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:51,941 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:52,872 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:42:52] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:42:52,951 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:52,951 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:53,952 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:53,953 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:54,579 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:54,580 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:54,954 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:54,955 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:55,956 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:55,957 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:56,958 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:56,960 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:57,962 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:57,963 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:58,964 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:58,964 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:59,965 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:42:59,966 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:00,967 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:00,968 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:01,969 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:01,969 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:02,971 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:02,972 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:03,974 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:03,974 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:04,976 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:04,977 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:05,980 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:05,981 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:06,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:43:06] "GET /api/strategies/notifications?limit=50&_t=1768326186052 HTTP/1.1" 200 - +2026-01-14 01:43:06,982 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:06,983 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:07,984 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:07,985 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:08,986 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:08,987 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:09,988 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:09,988 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683260... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:10,990 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:10,990 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:11,992 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:11,993 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:12,995 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:12,996 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:13,997 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:13,998 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:14,999 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:14,999 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:16,001 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:16,001 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:17,003 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:17,003 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:18,004 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:18,008 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:19,010 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:19,010 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:20,013 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:20,013 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:21,015 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:21,015 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:22,016 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:22,016 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:22,915 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:43:22] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:43:23,017 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:23,021 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:24,023 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:24,023 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:24,580 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:24,581 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:25,024 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:25,025 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:26,028 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:26,029 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:27,030 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:27,030 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:28,033 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:28,034 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:29,035 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:29,035 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:30,036 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:30,037 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:31,038 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:31,039 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:32,040 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:32,041 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:33,042 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:33,042 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:34,044 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:34,045 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:35,046 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:35,046 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:36,048 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:36,049 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:36,058 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:43:36] "GET /api/strategies/notifications?limit=50&_t=1768326216053 HTTP/1.1" 200 - +2026-01-14 01:43:37,050 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:37,051 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:38,052 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:38,052 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:39,053 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:39,053 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:40,055 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:40,055 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:41,057 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:41,057 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:42,058 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:42,058 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:43,060 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:43,061 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:44,064 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:44,065 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:45,066 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:45,066 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:46,068 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:46,068 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:47,070 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:47,070 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:48,071 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:48,072 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:48,269 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:43:48] "GET /api/strategies/notifications?limit=50&_t=1768326228264 HTTP/1.1" 200 - +2026-01-14 01:43:49,073 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:49,073 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:50,074 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:50,075 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:51,076 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:51,078 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:52,078 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:52,080 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:52,970 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:43:52] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:43:53,081 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:53,082 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:54,083 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:54,083 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:54,581 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:54,582 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:55,084 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:55,085 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:56,086 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:56,087 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:57,088 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:57,089 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:58,090 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:58,091 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:59,092 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:43:59,093 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:00,094 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:00,095 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:01,097 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:01,097 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:02,099 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:02,099 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:03,100 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:03,101 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:04,102 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:04,102 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:05,103 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:05,104 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:06,058 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:44:06] "GET /api/strategies/notifications?limit=50&_t=1768326246052 HTTP/1.1" 200 - +2026-01-14 01:44:06,105 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:06,106 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:07,107 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:07,107 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:08,108 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:08,109 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:09,110 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:09,110 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:10,112 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:10,113 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:11,114 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:11,114 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:12,116 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:12,117 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:13,118 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:13,118 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:14,120 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:14,120 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:15,121 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:15,122 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:16,123 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:16,124 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:17,125 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:17,126 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:18,127 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:18,128 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:19,129 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:19,130 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:20,132 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:20,133 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:21,134 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:21,135 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:22,135 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:22,137 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:23,022 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:44:23] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:44:23,138 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:23,139 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:24,140 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:24,142 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:24,582 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:24,583 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:25,143 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:25,143 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:26,145 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:26,146 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:27,148 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:27,148 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:28,150 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:28,150 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:29,151 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:29,152 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:30,153 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:30,153 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:31,154 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:31,155 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:32,156 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:32,156 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:33,157 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:33,157 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:34,158 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:34,165 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:35,168 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:35,169 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:36,052 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:44:36] "GET /api/strategies/notifications?limit=50&_t=1768326276045 HTTP/1.1" 200 - +2026-01-14 01:44:36,170 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:36,171 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:37,172 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:37,172 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:38,174 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:38,174 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:39,176 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:39,176 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:40,177 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:40,177 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:41,178 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:41,179 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:42,180 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:42,181 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:43,183 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:43,183 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:44,185 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:44,185 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:45,186 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:45,186 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:46,188 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:46,188 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:47,189 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:47,190 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:48,191 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:48,191 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:48,273 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:44:48] "GET /api/strategies/notifications?limit=50&_t=1768326288266 HTTP/1.1" 200 - +2026-01-14 01:44:49,193 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:49,193 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683261... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:50,194 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:50,196 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:51,197 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:51,197 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:52,197 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:52,198 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:53,090 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:44:53] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:44:53,199 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:53,202 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:54,203 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:54,204 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:54,583 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:54,584 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:55,205 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:55,205 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:56,207 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:56,207 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:57,209 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:57,209 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:58,210 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:58,211 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:59,212 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:44:59,213 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:00,215 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:00,216 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:01,217 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:01,217 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:02,219 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:02,219 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:03,220 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:03,221 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:04,222 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:04,222 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:05,223 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:05,224 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:06,053 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:45:06] "GET /api/strategies/notifications?limit=50&_t=1768326306047 HTTP/1.1" 200 - +2026-01-14 01:45:06,225 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:06,226 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:07,227 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:07,228 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:08,229 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:08,229 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:09,230 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:09,232 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:10,233 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:10,234 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:11,235 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:11,235 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:12,236 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:12,237 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:13,238 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:13,238 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:14,239 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:14,240 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:15,241 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:15,241 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:16,243 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:16,243 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:17,244 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:17,245 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:18,246 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:18,246 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:19,247 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:19,248 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:20,250 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:20,254 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:21,257 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:21,257 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:22,256 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:22,257 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:23,137 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:45:23] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:45:23,258 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:23,258 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:24,259 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:24,260 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:24,585 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:24,586 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:25,261 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:25,263 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:26,266 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:26,267 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:27,268 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:27,269 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:28,270 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:28,271 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:29,272 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:29,272 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:30,274 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:30,274 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:31,275 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:31,276 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:32,277 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:32,277 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:33,278 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:33,279 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:34,280 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:34,281 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:35,284 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:35,284 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:36,053 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:45:36] "GET /api/strategies/notifications?limit=50&_t=1768326336047 HTTP/1.1" 200 - +2026-01-14 01:45:36,286 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:36,287 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:37,288 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:37,288 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:38,289 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:38,290 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:39,292 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:39,293 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:40,295 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:40,295 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:41,296 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:41,297 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:42,299 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:42,299 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:43,301 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:43,302 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:44,303 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:44,308 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:45,310 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:45,310 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:46,312 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:46,313 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:47,314 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:47,315 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:48,273 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:45:48] "GET /api/strategies/notifications?limit=50&_t=1768326348260 HTTP/1.1" 200 - +2026-01-14 01:45:48,316 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:48,316 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:49,318 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:49,318 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:50,319 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:50,320 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:51,321 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:51,322 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:52,322 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:52,322 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:53,188 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:45:53] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:45:53,323 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:53,324 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:54,325 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:54,325 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:54,587 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:54,587 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:55,326 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:55,327 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:56,328 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:56,328 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:57,329 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:57,330 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:58,331 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:58,332 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:59,334 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:45:59,335 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:00,336 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:00,337 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:01,338 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:01,338 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:02,339 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:02,340 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:03,341 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:03,341 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:04,342 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:04,342 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:05,344 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:05,344 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:06,058 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:46:06] "GET /api/strategies/notifications?limit=50&_t=1768326366051 HTTP/1.1" 200 - +2026-01-14 01:46:06,346 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:06,346 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:07,347 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:07,352 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:08,355 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:08,355 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:09,357 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:09,358 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:10,359 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:10,359 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:11,360 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:11,360 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:12,361 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:12,362 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:13,363 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:13,363 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:14,364 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:14,364 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:15,366 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:15,366 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:16,368 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:16,369 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:17,371 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:17,371 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:18,372 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:18,373 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:19,374 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:19,374 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:20,375 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:20,376 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:21,377 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:21,382 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:22,392 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:22,392 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:23,234 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:46:23] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:46:23,393 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:23,394 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:24,395 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:24,395 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:24,587 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:24,588 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:25,396 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:25,397 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:26,399 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:26,400 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:27,401 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:27,402 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:28,404 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:28,407 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:29,408 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:29,410 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683262... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:30,411 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:30,412 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:31,413 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:31,415 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:32,417 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:32,418 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:33,420 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:33,420 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:34,421 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:34,422 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:35,423 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:35,424 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:36,055 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:46:36] "GET /api/strategies/notifications?limit=50&_t=1768326396049 HTTP/1.1" 200 - +2026-01-14 01:46:36,425 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:36,426 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:37,428 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:37,428 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:38,430 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:38,430 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:39,431 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:39,432 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:40,433 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:40,433 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:41,435 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:41,436 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:42,438 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:42,438 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:43,440 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:43,440 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:44,442 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:44,443 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:45,444 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:45,444 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:46,446 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:46,447 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:47,448 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:47,449 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:48,259 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:46:48] "GET /api/strategies/notifications?limit=50&_t=1768326408253 HTTP/1.1" 200 - +2026-01-14 01:46:48,450 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:48,450 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:49,452 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:49,453 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:50,454 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:50,455 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:51,457 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:51,457 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:52,458 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:52,459 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:53,289 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:46:53] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:46:53,460 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:53,462 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:54,469 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:54,470 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:54,589 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:54,589 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:55,472 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:55,474 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:56,482 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:56,482 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:57,485 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:57,486 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:58,487 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:58,487 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:59,489 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:46:59,489 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:00,490 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:00,491 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:01,492 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:01,492 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:02,493 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:02,495 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:03,496 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:03,497 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:04,498 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:04,498 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:05,500 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:05,500 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:06,058 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:47:06] "GET /api/strategies/notifications?limit=50&_t=1768326426051 HTTP/1.1" 200 - +2026-01-14 01:47:06,504 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:06,504 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:07,505 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:07,506 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:08,507 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:08,507 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:09,508 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:09,509 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:10,510 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:10,510 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:11,511 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:11,512 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:12,513 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:12,513 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:13,514 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:13,515 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:14,516 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:14,517 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:15,518 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:15,518 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:16,521 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:16,524 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:17,527 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:17,527 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:18,528 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:18,529 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:19,530 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:19,530 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:20,531 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:20,532 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:21,533 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:21,533 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:22,533 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:22,534 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:23,344 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:47:23] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:47:23,535 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:23,535 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:24,537 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:24,539 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:24,590 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:24,591 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:25,540 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:25,541 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:26,543 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:26,543 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:27,545 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:27,545 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:28,546 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:28,547 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:29,548 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:29,548 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:30,549 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:30,550 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:31,552 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:31,553 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:32,555 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:32,557 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:33,559 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:33,559 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:34,560 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:34,561 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:35,562 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:35,563 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:36,050 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:47:36] "GET /api/strategies/notifications?limit=50&_t=1768326456046 HTTP/1.1" 200 - +2026-01-14 01:47:36,565 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:36,566 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:37,567 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:37,567 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:38,569 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:38,572 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:39,575 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:39,575 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:40,577 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:40,578 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:41,580 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:41,581 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:42,582 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:42,583 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:43,584 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:43,585 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:44,586 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:44,589 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:45,591 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:45,591 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:46,593 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:46,597 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:47,598 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:47,599 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:48,266 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:47:48] "GET /api/strategies/notifications?limit=50&_t=1768326468260 HTTP/1.1" 200 - +2026-01-14 01:47:48,600 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:48,601 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:49,602 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:49,603 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:50,604 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:50,605 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:51,606 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:51,607 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:52,606 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:52,607 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:53,393 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:47:53] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:47:53,608 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:53,609 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:54,591 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:54,592 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:54,610 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:54,610 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:55,612 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:55,612 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:56,614 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:56,614 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:57,615 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:57,616 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:58,617 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:58,617 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:59,619 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:47:59,620 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:00,623 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:00,623 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:01,625 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:01,625 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:02,626 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:02,627 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:03,629 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:03,629 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:04,631 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:04,631 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:05,632 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:05,633 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:06,053 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:48:06] "GET /api/strategies/notifications?limit=50&_t=1768326486048 HTTP/1.1" 200 - +2026-01-14 01:48:06,634 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:06,635 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:07,636 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:07,637 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:08,639 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:08,640 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:09,641 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:09,641 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683263... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:10,642 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:10,643 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:11,644 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:11,644 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:12,646 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:12,646 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:13,647 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:13,647 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:14,648 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:14,649 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:15,650 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:15,650 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:16,652 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:16,653 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:17,654 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:17,655 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:18,657 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:18,657 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:19,659 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:19,659 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:20,660 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:20,661 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:21,662 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:21,662 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:22,662 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:22,662 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:23,436 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:48:23] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:48:23,663 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:23,664 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:24,593 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:24,593 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:24,665 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:24,665 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:25,666 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:25,667 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:26,668 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:26,670 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:27,672 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:27,672 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:28,674 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:28,674 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:29,675 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:29,676 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:30,677 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:30,678 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:31,679 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:31,680 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:32,681 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:32,681 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:33,682 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:33,683 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:34,684 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:34,684 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:35,685 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:35,686 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:36,061 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:48:36] "GET /api/strategies/notifications?limit=50&_t=1768326516054 HTTP/1.1" 200 - +2026-01-14 01:48:36,688 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:36,689 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:37,691 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:37,692 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:38,693 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:38,694 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:39,695 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:39,695 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:40,697 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:40,698 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:41,699 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:41,700 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:42,701 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:42,701 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:43,702 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:43,703 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:44,704 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:44,705 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:45,707 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:45,707 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:46,709 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:46,710 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:47,711 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:47,711 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:48,260 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:48:48] "GET /api/strategies/notifications?limit=50&_t=1768326528253 HTTP/1.1" 200 - +2026-01-14 01:48:48,712 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:48,713 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:49,714 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:49,714 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:50,715 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:50,716 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:51,717 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:51,722 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:52,723 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:52,723 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:53,502 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:48:53] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:48:53,725 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:53,725 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:54,593 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:54,594 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:54,726 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:54,727 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:55,728 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:55,728 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:56,730 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:56,730 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:57,731 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:57,732 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:58,734 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:58,734 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:59,735 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:48:59,736 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:00,738 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:00,738 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:01,744 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:01,745 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:02,746 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:02,747 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:03,749 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:03,749 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:04,750 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:04,751 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:05,752 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:05,752 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:06,062 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:49:06] "GET /api/strategies/notifications?limit=50&_t=1768326546056 HTTP/1.1" 200 - +2026-01-14 01:49:06,754 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:06,760 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:07,770 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:07,770 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:08,772 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:08,773 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:09,775 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:09,775 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:10,776 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:10,777 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:11,778 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:11,778 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:12,780 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:12,780 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:13,781 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:13,781 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:14,783 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:14,783 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:15,784 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:15,785 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:16,786 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:16,798 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:17,799 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:17,800 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:18,801 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:18,801 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:19,803 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:19,803 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:20,804 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:20,805 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:21,806 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:21,807 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:22,808 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:22,809 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:23,559 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:49:23] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:49:23,810 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:23,811 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:24,594 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:24,594 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:24,812 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:24,813 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:25,814 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:25,815 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:26,816 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:26,817 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:27,818 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:27,818 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:28,819 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:28,820 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:29,821 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:29,821 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:30,823 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:30,823 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:31,825 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:31,826 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:32,827 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:32,828 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:33,829 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:33,830 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:34,831 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:34,832 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:35,833 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:35,834 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:36,063 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:49:36] "GET /api/strategies/notifications?limit=50&_t=1768326576056 HTTP/1.1" 200 - +2026-01-14 01:49:36,835 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:36,836 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:37,838 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:37,839 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:38,841 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:38,843 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:39,844 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:39,845 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:40,847 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:40,849 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:41,857 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:41,858 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:42,862 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:42,863 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:43,864 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:43,864 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:44,866 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:44,866 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:45,867 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:45,868 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:46,870 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:46,872 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:47,874 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:47,875 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:48,267 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:49:48] "GET /api/strategies/notifications?limit=50&_t=1768326588261 HTTP/1.1" 200 - +2026-01-14 01:49:48,877 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:48,877 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:49,879 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:49,904 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683264... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:50,906 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:50,907 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:51,906 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:51,906 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:52,909 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:52,909 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:53,647 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:49:53] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:49:53,911 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:53,911 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:54,594 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:54,594 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:54,912 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:54,913 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:55,914 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:55,915 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:56,917 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:56,918 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:57,919 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:57,919 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:58,920 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:58,922 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:59,923 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:49:59,924 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:00,926 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:00,926 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:01,928 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:01,928 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:02,929 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:02,930 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:03,931 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:03,931 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:04,932 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:04,933 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:05,939 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:05,939 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:06,063 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:50:06] "GET /api/strategies/notifications?limit=50&_t=1768326606057 HTTP/1.1" 200 - +2026-01-14 01:50:06,941 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:06,942 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:07,943 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:07,944 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:08,946 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:08,949 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:09,950 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:09,951 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:10,952 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:10,953 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:11,954 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:11,954 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:12,956 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:12,957 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:13,959 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:13,960 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:14,961 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:14,962 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:15,963 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:15,963 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:16,965 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:16,965 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:17,966 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:17,967 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:18,968 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:18,968 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:19,969 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:19,970 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:20,971 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:20,971 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:21,971 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:21,972 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:22,973 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:22,973 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:23,709 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:50:23] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:50:23,974 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:23,974 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:24,595 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:24,596 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:24,975 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:24,976 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:25,977 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:25,979 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:26,985 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:26,986 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:27,987 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:27,989 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:28,990 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:28,992 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:29,995 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:29,995 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:30,996 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:30,997 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:31,999 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:31,999 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:33,000 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:33,001 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:34,002 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:34,002 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:35,003 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:35,008 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:36,011 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:36,011 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:36,057 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:50:36] "GET /api/strategies/notifications?limit=50&_t=1768326636052 HTTP/1.1" 200 - +2026-01-14 01:50:37,013 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:37,014 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:38,015 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:38,016 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:39,017 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:39,017 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:40,018 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:40,019 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:41,020 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:41,020 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:42,021 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:42,025 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:43,033 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:43,034 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:44,036 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:44,036 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:45,040 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:45,042 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:46,049 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:46,050 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:47,051 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:47,052 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:48,053 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:48,053 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:48,315 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:50:48] "GET /api/strategies/notifications?limit=50&_t=1768326648263 HTTP/1.1" 200 - +2026-01-14 01:50:49,054 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:49,055 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:50,056 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:50,058 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:51,060 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:51,060 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:52,060 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:52,060 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:53,062 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:53,067 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:53,752 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:50:53] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:50:54,069 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:54,070 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:54,595 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:54,596 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:55,071 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:55,072 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:56,073 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:56,073 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:57,075 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:57,075 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:58,077 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:58,078 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:59,079 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:50:59,080 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:00,081 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:00,081 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:01,082 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:01,083 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:02,084 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:02,084 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:03,086 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:03,086 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:04,087 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:04,088 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:05,089 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:05,090 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:06,053 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:51:06] "GET /api/strategies/notifications?limit=50&_t=1768326666047 HTTP/1.1" 200 - +2026-01-14 01:51:06,091 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:06,092 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:07,095 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:07,097 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:08,098 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:08,098 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:09,100 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:09,100 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:10,101 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:10,102 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:11,103 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:11,103 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:12,104 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:12,105 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:13,107 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:13,107 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:14,108 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:14,109 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:15,112 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:15,112 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:16,114 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:16,114 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:17,116 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:17,116 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:18,117 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:18,118 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:19,119 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:19,120 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:20,121 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:20,122 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:21,123 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:21,123 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:22,123 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:22,123 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:23,124 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:23,125 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:23,803 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:51:23] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:51:24,126 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:24,127 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:24,597 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:24,598 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:25,128 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:25,129 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:26,130 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:26,130 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:27,133 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:27,133 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:28,134 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:28,135 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:29,136 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:29,136 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683265... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:30,138 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:30,139 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:31,140 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:31,140 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:32,141 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:32,143 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:33,145 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:33,146 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:34,147 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:34,147 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:35,149 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:35,149 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:36,053 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:51:36] "GET /api/strategies/notifications?limit=50&_t=1768326696049 HTTP/1.1" 200 - +2026-01-14 01:51:36,151 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:36,151 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:37,153 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:37,153 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:38,154 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:38,155 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:39,156 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:39,157 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:40,158 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:40,159 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:41,162 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:41,162 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:42,164 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:42,165 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:43,166 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:43,167 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:44,168 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:44,169 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:45,170 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:45,170 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:46,171 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:46,173 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:47,174 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:47,175 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:48,176 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:48,177 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:48,268 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:51:48] "GET /api/strategies/notifications?limit=50&_t=1768326708264 HTTP/1.1" 200 - +2026-01-14 01:51:49,178 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:49,180 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:50,181 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:50,181 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:51,183 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:51,183 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:52,184 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:52,185 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:53,186 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:53,186 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:53,854 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:51:53] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:51:54,187 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:54,188 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:54,599 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:54,599 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:55,189 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:55,189 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:56,191 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:56,191 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:57,192 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:57,193 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:58,194 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:58,197 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:59,199 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:51:59,200 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:00,201 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:00,204 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:01,205 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:01,205 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:02,207 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:02,207 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:03,208 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:03,209 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:04,210 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:04,212 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:05,214 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:05,215 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:06,060 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:52:06] "GET /api/strategies/notifications?limit=50&_t=1768326726056 HTTP/1.1" 200 - +2026-01-14 01:52:06,217 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:06,217 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:07,219 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:07,232 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:08,233 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:08,235 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:09,236 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:09,237 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:10,238 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:10,238 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:11,239 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:11,240 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:12,242 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:12,242 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:13,244 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:13,244 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:14,246 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:14,247 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:15,249 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:15,249 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:16,251 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:16,251 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:17,253 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:17,254 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:18,255 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:18,256 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:19,258 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:19,259 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:20,260 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:20,260 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:21,261 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:21,262 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:22,261 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:22,262 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:23,264 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:23,265 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:23,901 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:52:23] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:52:24,266 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:24,266 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:24,602 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:24,602 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:25,268 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:25,268 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:26,269 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:26,270 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:27,271 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:27,276 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:28,277 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:28,277 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:29,279 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:29,279 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:30,281 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:30,281 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:31,283 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:31,283 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:32,284 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:32,285 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:33,286 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:33,286 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:34,287 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:34,288 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:35,289 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:35,290 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:36,052 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:52:36] "GET /api/strategies/notifications?limit=50&_t=1768326756046 HTTP/1.1" 200 - +2026-01-14 01:52:36,291 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:36,292 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:37,293 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:37,294 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:38,295 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:38,295 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:39,296 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:39,298 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:40,300 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:40,301 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:41,302 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:41,303 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:42,305 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:42,305 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:43,307 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:43,308 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:44,309 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:44,310 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:45,311 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:45,311 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:46,312 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:46,313 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:47,317 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:47,317 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:48,270 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:52:48] "GET /api/strategies/notifications?limit=50&_t=1768326768265 HTTP/1.1" 200 - +2026-01-14 01:52:48,319 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:48,319 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:49,321 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:49,322 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:50,324 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:50,325 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:51,327 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:51,330 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:52,329 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:52,332 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:53,337 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:53,338 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:53,949 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:52:53] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:52:54,339 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:54,340 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:54,602 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:54,603 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:55,341 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:55,343 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:56,345 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:56,345 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:57,347 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:57,348 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:58,349 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:58,350 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:59,351 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:52:59,351 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:00,353 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:00,353 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:01,354 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:01,354 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:02,356 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:02,356 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:03,358 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:03,358 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:04,360 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:04,360 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:05,361 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:05,362 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:06,053 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:53:06] "GET /api/strategies/notifications?limit=50&_t=1768326786047 HTTP/1.1" 200 - +2026-01-14 01:53:06,363 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:06,364 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:07,366 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:07,367 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:08,369 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:08,369 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:09,370 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:09,371 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683266... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:10,372 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:10,373 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:11,374 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:11,374 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:12,375 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:12,375 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:13,377 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:13,377 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:14,378 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:14,379 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:15,380 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:15,381 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:16,383 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:16,384 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:17,386 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:17,387 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:18,389 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:18,389 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:19,390 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:19,391 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:20,392 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:20,392 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:21,394 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:21,400 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:22,402 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:22,403 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:23,404 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:23,404 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:24,005 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:53:24] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:53:24,406 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:24,406 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:24,604 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:24,604 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:25,407 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:25,408 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:26,409 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:26,410 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:27,411 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:27,411 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:28,412 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:28,413 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:29,414 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:29,415 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:30,417 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:30,418 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:31,419 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:31,420 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:32,421 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:32,425 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:33,427 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:33,427 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:34,428 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:34,429 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:35,430 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:35,432 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:36,054 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:53:36] "GET /api/strategies/notifications?limit=50&_t=1768326816048 HTTP/1.1" 200 - +2026-01-14 01:53:36,434 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:36,436 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:37,439 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:37,439 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:38,440 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:38,443 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:39,444 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:39,445 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:40,446 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:40,447 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:41,448 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:41,449 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:42,452 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:42,453 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:43,454 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:43,455 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:44,457 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:44,458 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:45,460 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:45,460 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:46,462 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:46,462 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:47,464 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:47,465 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:48,268 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:53:48] "GET /api/strategies/notifications?limit=50&_t=1768326828262 HTTP/1.1" 200 - +2026-01-14 01:53:48,467 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:48,470 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:49,472 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:49,472 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:50,473 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:50,474 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:51,475 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:51,475 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:52,475 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:52,475 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:53,476 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:53,477 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:54,056 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:53:54] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:53:54,478 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:54,480 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:54,604 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:54,604 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:55,482 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:55,483 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:56,484 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:56,485 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:57,487 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:57,487 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:58,489 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:58,489 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:59,491 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:53:59,491 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:00,492 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:00,493 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:01,495 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:01,495 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:02,497 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:02,500 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:03,502 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:03,503 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:04,509 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:04,509 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:05,511 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:05,511 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:06,054 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:54:06] "GET /api/strategies/notifications?limit=50&_t=1768326846049 HTTP/1.1" 200 - +2026-01-14 01:54:06,512 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:06,513 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:07,515 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:07,516 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:08,518 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:08,518 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:09,519 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:09,520 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:10,521 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:10,526 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:11,533 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:11,534 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:12,536 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:12,537 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:13,538 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:13,539 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:14,541 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:14,541 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:15,543 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:15,543 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:16,545 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:16,546 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:17,556 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:17,556 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:18,558 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:18,558 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:19,559 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:19,561 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:20,563 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:20,563 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:21,564 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:21,565 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:22,565 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:22,566 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:23,567 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:23,567 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:24,097 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:54:24] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:54:24,569 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:24,569 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:24,605 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:24,606 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:25,571 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:25,571 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:26,572 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:26,573 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:27,574 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:27,588 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:28,594 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:28,594 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:29,596 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:29,607 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:30,609 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:30,609 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:31,610 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:31,611 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:32,612 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:32,612 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:33,613 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:33,614 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:34,615 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:34,615 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:35,617 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:35,617 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:36,056 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:54:36] "GET /api/strategies/notifications?limit=50&_t=1768326876050 HTTP/1.1" 200 - +2026-01-14 01:54:36,619 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:36,620 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:37,622 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:37,623 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:38,624 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:38,624 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:39,626 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:39,626 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:40,627 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:40,631 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:41,633 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:41,633 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:42,635 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:42,636 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:43,638 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:43,638 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:44,640 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:44,640 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:45,641 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:45,642 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:46,644 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:46,645 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:47,659 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:47,659 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:48,267 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:54:48] "GET /api/strategies/notifications?limit=50&_t=1768326888262 HTTP/1.1" 200 - +2026-01-14 01:54:48,661 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:48,661 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:49,662 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:49,663 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683267... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:50,664 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:50,664 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:51,669 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:51,670 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:52,670 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:52,671 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:53,672 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:53,672 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:54,161 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:54:54] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:54:54,606 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:54,607 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:54,674 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:54,684 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:55,686 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:55,687 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:56,689 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:56,691 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:57,693 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:57,695 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:58,696 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:58,697 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:59,699 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:54:59,699 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:00,701 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:00,702 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:01,704 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:01,705 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:02,706 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:02,707 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:03,708 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:03,709 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:04,711 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:04,712 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:05,713 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:05,714 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:06,057 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:55:06] "GET /api/strategies/notifications?limit=50&_t=1768326906051 HTTP/1.1" 200 - +2026-01-14 01:55:06,715 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:06,716 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:07,717 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:07,718 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:08,723 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:08,723 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:09,725 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:09,725 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:10,727 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:10,727 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:11,728 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:11,729 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:12,730 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:12,731 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:13,732 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:13,733 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:14,734 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:14,735 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:15,738 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:15,739 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:16,740 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:16,742 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:17,743 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:17,757 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:18,759 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:18,760 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:19,762 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:19,763 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:20,764 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:20,764 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:21,765 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:21,766 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:22,765 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:22,766 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:23,767 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:23,768 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:24,203 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:55:24] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:55:24,607 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:24,608 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:24,770 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:24,771 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:25,772 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:25,772 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:26,774 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:26,776 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:27,778 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:27,779 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:28,780 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:28,780 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:29,782 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:29,782 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:30,783 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:30,784 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:31,785 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:31,785 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:32,787 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:32,788 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:33,789 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:33,789 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:34,791 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:34,791 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:35,793 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:35,794 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:36,055 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:55:36] "GET /api/strategies/notifications?limit=50&_t=1768326936049 HTTP/1.1" 200 - +2026-01-14 01:55:36,796 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:36,797 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:37,798 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:37,799 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:38,800 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:38,801 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:39,803 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:39,803 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:40,805 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:40,806 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:41,807 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:41,807 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:42,809 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:42,809 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:43,814 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:43,815 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:44,816 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:44,817 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:45,818 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:45,819 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:46,821 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:46,822 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:47,824 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:47,824 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:48,277 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:55:48] "GET /api/strategies/notifications?limit=50&_t=1768326948264 HTTP/1.1" 200 - +2026-01-14 01:55:48,825 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:48,826 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:49,828 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:49,831 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:50,833 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:50,833 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:51,834 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:51,835 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:52,835 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:52,836 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:53,839 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:53,841 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:54,247 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:55:54] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:55:54,608 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:54,608 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:54,843 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:54,843 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:55,844 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:55,844 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:56,845 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:56,846 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:57,848 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:57,848 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:58,849 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:58,850 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:59,851 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:55:59,856 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:00,872 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:00,877 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:01,879 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:01,879 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:02,880 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:02,881 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:03,882 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:03,882 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:04,883 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:04,885 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:05,898 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:05,906 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:06,060 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:56:06] "GET /api/strategies/notifications?limit=50&_t=1768326966053 HTTP/1.1" 200 - +2026-01-14 01:56:06,908 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:06,908 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:07,910 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:07,911 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:08,912 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:08,913 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:09,914 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:09,915 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:10,916 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:10,916 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:11,917 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:11,918 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:12,919 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:12,926 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:13,928 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:13,928 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:14,929 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:14,930 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:15,932 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:15,932 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:16,933 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:16,934 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:17,935 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:17,936 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:18,937 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:18,938 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:19,940 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:19,941 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:20,943 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:20,943 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:21,943 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:21,943 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:22,944 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:22,945 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:23,946 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:23,946 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:24,293 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:56:24] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:56:24,609 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:24,610 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768326... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:24,947 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:24,948 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:25,949 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:25,949 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:26,951 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:26,951 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:27,953 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:27,953 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:28,955 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:28,956 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:29,959 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:29,961 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683268... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:30,964 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:30,964 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:31,965 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:31,965 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:32,967 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:32,967 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:33,969 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:33,969 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:34,970 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:34,970 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:35,972 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:35,973 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:36,060 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:56:36] "GET /api/strategies/notifications?limit=50&_t=1768326996054 HTTP/1.1" 200 - +2026-01-14 01:56:36,974 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:36,975 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:37,977 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:37,977 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:38,979 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:38,979 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:39,980 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:39,980 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:40,981 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:40,983 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:41,984 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:41,984 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:42,986 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:42,986 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:43,987 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:43,988 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:44,991 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:44,992 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:45,993 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:46,000 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:47,001 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:47,002 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:48,003 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:48,004 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:48,266 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:56:48] "GET /api/strategies/notifications?limit=50&_t=1768327008256 HTTP/1.1" 200 - +2026-01-14 01:56:49,005 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:49,005 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:50,007 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:50,008 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:51,609 - app - INFO - Database type: postgresql +2026-01-14 01:56:51,619 - app.utils.db_postgres - INFO - PostgreSQL connection pool created: postgres:5432/quantdinger +2026-01-14 01:56:51,620 - app.utils.db - INFO - PostgreSQL connection verified +2026-01-14 01:56:52,125 - app.utils.db_postgres - ERROR - PostgreSQL operation error: column "created_at" is of type timestamp without time zone but expression is of type integer +LINE 4: ...P49Bu', NULL, 'Administrator', 'admin', 'active', 1768327012... + ^ +HINT: You will need to rewrite or cast the expression. + +2026-01-14 01:56:52,126 - app.services.user_service - ERROR - create_user failed: column "created_at" is of type timestamp without time zone but expression is of type integer +LINE 4: ...P49Bu', NULL, 'Administrator', 'admin', 'active', 1768327012... + ^ +HINT: You will need to rewrite or cast the expression. + +2026-01-14 01:56:52,127 - app.utils.db_postgres - ERROR - PostgreSQL operation error: column "created_at" is of type timestamp without time zone but expression is of type integer +LINE 4: ...P49Bu', NULL, 'Administrator', 'admin', 'active', 1768327012... + ^ +HINT: You will need to rewrite or cast the expression. + +2026-01-14 01:56:52,127 - app.services.user_service - ERROR - ensure_admin_exists failed: column "created_at" is of type timestamp without time zone but expression is of type integer +LINE 4: ...P49Bu', NULL, 'Administrator', 'admin', 'active', 1768327012... + ^ +HINT: You will need to rewrite or cast the expression. + +2026-01-14 01:56:52,568 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-14 01:56:52,569 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-14 01:56:52,570 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-14 01:56:52,570 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-14 01:56:52,570 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:52,573 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:52,575 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:52,576 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:52,901 - app.services.trading_executor - INFO - Adding highest_price column to qd_strategy_positions (SQLite)... +2026-01-14 01:56:52,903 - app.utils.db_postgres - ERROR - PostgreSQL operation error: current transaction is aborted, commands ignored until end of transaction block + +2026-01-14 01:56:52,903 - app.services.trading_executor - ERROR - Failed to check/ensure DB columns: current transaction is aborted, commands ignored until end of transaction block + +2026-01-14 01:56:52,904 - app.services.strategy - INFO - Found 0 running strategies: [] +2026-01-14 01:56:52,904 - app - INFO - No running strategies to restore. +2026-01-14 01:56:52,917 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://172.18.0.3:5000 +2026-01-14 01:56:52,917 - werkzeug - INFO - Press CTRL+C to quit +2026-01-14 01:56:53,578 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:53,578 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:54,580 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:54,580 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:55,582 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:55,582 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:55,877 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:56:55] "GET /api/market/types?_t=1768327015868 HTTP/1.1" 200 - +2026-01-14 01:56:55,878 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:56:55] "GET /api/strategies/notifications?limit=50&_t=1768327015868 HTTP/1.1" 200 - +2026-01-14 01:56:55,880 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:56:55] "GET /api/user/info?_t=1768327015868 HTTP/1.1" 200 - +2026-01-14 01:56:55,881 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:56:55] "GET /api/market/watchlist/get?userid=1&_t=1768327015868 HTTP/1.1" 200 - +2026-01-14 01:56:55,882 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:56:55] "GET /api/indicator/getIndicators?userid=1&_t=1768327015868 HTTP/1.1" 200 - +2026-01-14 01:56:55,904 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:56:55] "GET /api/market/watchlist/get?userid=1&_t=1768327015892 HTTP/1.1" 200 - +2026-01-14 01:56:55,907 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:56:55] "GET /api/indicator/getIndicators?userid=1&_t=1768327015892 HTTP/1.1" 200 - +2026-01-14 01:56:56,583 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:56,584 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:57,585 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:57,586 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:57,659 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:56:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768327017639 HTTP/1.1" 200 - +2026-01-14 01:56:57,660 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:56:57] "GET /api/dashboard/summary?_t=1768327017639 HTTP/1.1" 200 - +2026-01-14 01:56:57,663 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:56:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768327017639 HTTP/1.1" 200 - +2026-01-14 01:56:58,589 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:58,590 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:59,591 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:56:59,592 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:57:00,594 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:57:00,595 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:57:01,596 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:57:01,596 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:57:02,597 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:57:02,598 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:57:02,635 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768327022629 HTTP/1.1" 200 - +2026-01-14 01:57:03,601 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:57:03,602 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:57:04,604 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:57:04,604 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:57:05,606 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:57:05,612 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:57:06,613 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:57:06,614 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:57:07,615 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:57:07,615 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:57:07,643 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768327027638 HTTP/1.1" 200 - +2026-01-14 01:57:08,616 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:57:08,617 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:57:09,618 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:57:09,618 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:57:10,620 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:57:10,620 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:57:11,622 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:57:11,623 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:57:12,624 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:57:12,625 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:57:12,634 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:12] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768327032628 HTTP/1.1" 200 - +2026-01-14 01:57:13,626 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:57:13,627 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:57:14,628 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:57:14,628 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:57:15,629 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:57:15,630 - app.services.pending_order_worker - WARNING - fetch_pending_orders failed: operator does not exist: timestamp without time zone < integer +LINE 10: ... AND (updated_at IS NULL OR updated_at < 17683269... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:57:18,299 - app - INFO - Database type: postgresql +2026-01-14 01:57:18,310 - app.utils.db_postgres - INFO - PostgreSQL connection pool created: postgres:5432/quantdinger +2026-01-14 01:57:18,311 - app.utils.db - INFO - PostgreSQL connection verified +2026-01-14 01:57:18,758 - app.services.user_service - INFO - Created user: quantdinger (id=1) +2026-01-14 01:57:18,760 - app.services.user_service - INFO - Created admin user: quantdinger +2026-01-14 01:57:19,169 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-14 01:57:19,173 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-14 01:57:19,180 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-14 01:57:19,180 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-14 01:57:19,192 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:57:19,193 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:57:19,374 - app.services.trading_executor - INFO - Adding highest_price column to qd_strategy_positions (SQLite)... +2026-01-14 01:57:19,375 - app.utils.db_postgres - ERROR - PostgreSQL operation error: current transaction is aborted, commands ignored until end of transaction block + +2026-01-14 01:57:19,375 - app.services.trading_executor - ERROR - Failed to check/ensure DB columns: current transaction is aborted, commands ignored until end of transaction block + +2026-01-14 01:57:19,377 - app.services.strategy - INFO - Found 0 running strategies: [] +2026-01-14 01:57:19,377 - app - INFO - No running strategies to restore. +2026-01-14 01:57:19,385 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://172.18.0.3:5000 +2026-01-14 01:57:19,385 - werkzeug - INFO - Press CTRL+C to quit +2026-01-14 01:57:22,103 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:22] "GET /api/strategies/notifications?limit=50&_t=1768327042093 HTTP/1.1" 200 - +2026-01-14 01:57:22,113 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:22] "GET /api/dashboard/summary?_t=1768327042093 HTTP/1.1" 200 - +2026-01-14 01:57:22,116 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768327042093 HTTP/1.1" 200 - +2026-01-14 01:57:22,119 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768327042093 HTTP/1.1" 200 - +2026-01-14 01:57:27,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768327047064 HTTP/1.1" 200 - +2026-01-14 01:57:32,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768327052066 HTTP/1.1" 200 - +2026-01-14 01:57:34,826 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:34] "GET /api/market/config?_t=1768327054804 HTTP/1.1" 200 - +2026-01-14 01:57:34,828 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:34] "GET /api/user/info?_t=1768327054804 HTTP/1.1" 200 - +2026-01-14 01:57:34,831 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:34] "GET /api/market/watchlist/get?userid=1&_t=1768327054804 HTTP/1.1" 200 - +2026-01-14 01:57:34,862 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:34] "GET /api/market/types?_t=1768327054851 HTTP/1.1" 200 - +2026-01-14 01:57:34,862 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:34] "GET /api/market/watchlist/get?userid=1&_t=1768327054852 HTTP/1.1" 200 - +2026-01-14 01:57:36,728 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:36] "GET /api/market/symbols/hot?market=USStock&limit=10&_t=1768327056721 HTTP/1.1" 200 - +2026-01-14 01:57:39,337 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:39] "POST /api/market/watchlist/add HTTP/1.1" 200 - +2026-01-14 01:57:39,356 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:39] "GET /api/market/watchlist/get?userid=1&_t=1768327059348 HTTP/1.1" 200 - +2026-01-14 01:57:39,587 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-14 01:57:40,470 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:40] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AAPL"}]&_t=1768327059369 HTTP/1.1" 200 - +2026-01-14 01:57:42,239 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:42] "GET /api/market/types?_t=1768327062229 HTTP/1.1" 200 - +2026-01-14 01:57:42,240 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:42] "GET /api/user/info?_t=1768327062229 HTTP/1.1" 200 - +2026-01-14 01:57:42,243 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:42] "GET /api/market/watchlist/get?userid=1&_t=1768327062229 HTTP/1.1" 200 - +2026-01-14 01:57:42,244 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:42] "GET /api/indicator/getIndicators?userid=1&_t=1768327062229 HTTP/1.1" 200 - +2026-01-14 01:57:42,314 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:42] "GET /api/market/watchlist/get?userid=1&_t=1768327062304 HTTP/1.1" 200 - +2026-01-14 01:57:42,315 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:42] "GET /api/indicator/getIndicators?userid=1&_t=1768327062304 HTTP/1.1" 200 - +2026-01-14 01:57:42,326 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=500 +2026-01-14 01:57:43,455 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:43] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=500&_t=1768327062321 HTTP/1.1" 200 - +2026-01-14 01:57:44,536 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 01:57:44,722 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=500 +2026-01-14 01:57:44,745 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:44] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768327064533 HTTP/1.1" 200 - +2026-01-14 01:57:44,975 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:44] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1m&limit=500&_t=1768327064718 HTTP/1.1" 200 - +2026-01-14 01:57:45,998 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-14 01:57:46,221 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:46] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1m&limit=5&_t=1768327065991 HTTP/1.1" 200 - +2026-01-14 01:57:46,996 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-14 01:57:46,997 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:46] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1m&limit=5&_t=1768327066986 HTTP/1.1" 200 - +2026-01-14 01:57:47,994 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-14 01:57:47,995 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:47] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1m&limit=5&_t=1768327067988 HTTP/1.1" 200 - +2026-01-14 01:57:48,204 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:57:48] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:57:48,284 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:48] "GET /api/strategies/notifications?limit=50&_t=1768327068264 HTTP/1.1" 200 - +2026-01-14 01:57:48,995 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-14 01:57:48,995 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:48] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1m&limit=5&_t=1768327068989 HTTP/1.1" 200 - +2026-01-14 01:57:49,197 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:57:49,198 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:57:49,995 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-14 01:57:49,996 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:49] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1m&limit=5&_t=1768327069991 HTTP/1.1" 200 - +2026-01-14 01:57:50,991 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1m, limit=5 +2026-01-14 01:57:50,991 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:50] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1m&limit=5&_t=1768327070986 HTTP/1.1" 200 - +2026-01-14 01:57:51,181 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:51] "GET /api/strategies?_t=1768327071170 HTTP/1.1" 200 - +2026-01-14 01:57:52,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:52] "GET /api/strategies/notifications?limit=50&_t=1768327072064 HTTP/1.1" 200 - +2026-01-14 01:57:53,081 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:53] "GET /api/market/types?_t=1768327073075 HTTP/1.1" 200 - +2026-01-14 01:57:53,083 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:53] "GET /api/portfolio/positions?_t=1768327073075 HTTP/1.1" 200 - +2026-01-14 01:57:53,085 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:53] "GET /api/portfolio/summary?_t=1768327073075 HTTP/1.1" 200 - +2026-01-14 01:57:53,087 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:53] "GET /api/portfolio/monitors?_t=1768327073075 HTTP/1.1" 200 - +2026-01-14 01:57:53,112 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:53] "GET /api/portfolio/alerts?_t=1768327073075 HTTP/1.1" 200 - +2026-01-14 01:57:53,116 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:53] "GET /api/portfolio/groups?_t=1768327073075 HTTP/1.1" 200 - +2026-01-14 01:57:57,918 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:57] "GET /api/settings/schema?_t=1768327077910 HTTP/1.1" 200 - +2026-01-14 01:57:57,922 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:57:57] "GET /api/settings/values?_t=1768327077910 HTTP/1.1" 200 - +2026-01-14 01:58:18,265 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:58:18] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:58:19,198 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:58:19,198 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:58:22,083 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:58:22] "GET /api/strategies/notifications?limit=50&_t=1768327102075 HTTP/1.1" 200 - +2026-01-14 01:58:48,271 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:58:48] "GET /api/strategies/notifications?limit=50&_t=1768327128265 HTTP/1.1" 200 - +2026-01-14 01:58:48,325 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:58:48] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:58:49,199 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:58:49,199 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:58:52,080 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:58:52] "GET /api/strategies/notifications?limit=50&_t=1768327132075 HTTP/1.1" 200 - +2026-01-14 01:59:18,386 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:59:18] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:59:19,200 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:59:19,202 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:59:22,079 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:59:22] "GET /api/strategies/notifications?limit=50&_t=1768327162074 HTTP/1.1" 200 - +2026-01-14 01:59:48,262 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:59:48] "GET /api/strategies/notifications?limit=50&_t=1768327188257 HTTP/1.1" 200 - +2026-01-14 01:59:48,460 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 01:59:48] "GET /api/health HTTP/1.1" 200 - +2026-01-14 01:59:49,202 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:59:49,203 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 01:59:52,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 01:59:52] "GET /api/strategies/notifications?limit=50&_t=1768327192064 HTTP/1.1" 200 - +2026-01-14 02:00:18,517 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:00:18] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:00:19,203 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 02:00:19,204 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 02:00:22,080 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:00:22] "GET /api/strategies/notifications?limit=50&_t=1768327222076 HTTP/1.1" 200 - +2026-01-14 02:00:48,265 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:00:48] "GET /api/strategies/notifications?limit=50&_t=1768327248260 HTTP/1.1" 200 - +2026-01-14 02:00:48,578 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:00:48] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:00:49,203 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 02:00:49,204 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 02:00:52,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:00:52] "GET /api/strategies/notifications?limit=50&_t=1768327252065 HTTP/1.1" 200 - +2026-01-14 02:01:18,629 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:01:18] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:01:19,205 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 02:01:19,207 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 02:01:22,076 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:01:22] "GET /api/strategies/notifications?limit=50&_t=1768327282072 HTTP/1.1" 200 - +2026-01-14 02:01:48,262 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:01:48] "GET /api/strategies/notifications?limit=50&_t=1768327308255 HTTP/1.1" 200 - +2026-01-14 02:01:48,707 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:01:48] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:01:49,207 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 02:01:49,209 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 02:01:52,076 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:01:52] "GET /api/strategies/notifications?limit=50&_t=1768327312072 HTTP/1.1" 200 - +2026-01-14 02:02:18,752 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:02:18] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:02:19,209 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 02:02:19,210 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 02:02:22,080 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:02:22] "GET /api/strategies/notifications?limit=50&_t=1768327342075 HTTP/1.1" 200 - +2026-01-14 02:02:48,263 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:02:48] "GET /api/strategies/notifications?limit=50&_t=1768327368259 HTTP/1.1" 200 - +2026-01-14 02:02:48,809 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:02:48] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:02:49,210 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 02:02:49,210 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 02:02:52,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:02:52] "GET /api/strategies/notifications?limit=50&_t=1768327372064 HTTP/1.1" 200 - +2026-01-14 02:03:18,878 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:03:18] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:03:19,211 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 02:03:19,212 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 02:03:22,084 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:03:22] "GET /api/strategies/notifications?limit=50&_t=1768327402079 HTTP/1.1" 200 - +2026-01-14 02:03:48,263 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:03:48] "GET /api/strategies/notifications?limit=50&_t=1768327428256 HTTP/1.1" 200 - +2026-01-14 02:03:48,947 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:03:48] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:03:49,212 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 02:03:49,213 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 02:03:52,076 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:03:52] "GET /api/strategies/notifications?limit=50&_t=1768327432071 HTTP/1.1" 200 - +2026-01-14 02:04:19,018 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:04:19] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:04:19,213 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 02:04:19,214 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 02:04:22,082 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:04:22] "GET /api/strategies/notifications?limit=50&_t=1768327462078 HTTP/1.1" 200 - +2026-01-14 02:04:48,268 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:04:48] "GET /api/strategies/notifications?limit=50&_t=1768327488264 HTTP/1.1" 200 - +2026-01-14 02:04:49,084 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:04:49] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:04:49,213 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 02:04:49,214 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 02:04:52,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:04:52] "GET /api/strategies/notifications?limit=50&_t=1768327492066 HTTP/1.1" 200 - +2026-01-14 02:05:19,131 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:05:19] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:05:19,214 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 02:05:19,215 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 02:05:22,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:05:22] "GET /api/strategies/notifications?limit=50&_t=1768327522064 HTTP/1.1" 200 - +2026-01-14 02:05:48,266 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:05:48] "GET /api/strategies/notifications?limit=50&_t=1768327548260 HTTP/1.1" 200 - +2026-01-14 02:05:49,186 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:05:49] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:05:49,215 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 02:05:49,215 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 02:05:52,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:05:52] "GET /api/strategies/notifications?limit=50&_t=1768327552066 HTTP/1.1" 200 - +2026-01-14 02:06:19,215 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 02:06:19,216 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 02:06:19,236 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:06:19] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:06:22,080 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:06:22] "GET /api/strategies/notifications?limit=50&_t=1768327582074 HTTP/1.1" 200 - +2026-01-14 02:06:48,257 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:06:48] "GET /api/strategies/notifications?limit=50&_t=1768327608252 HTTP/1.1" 200 - +2026-01-14 02:06:49,217 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 02:06:49,217 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 02:06:49,291 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:06:49] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:06:52,079 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:06:52] "GET /api/strategies/notifications?limit=50&_t=1768327612074 HTTP/1.1" 200 - +2026-01-14 02:07:19,218 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 02:07:19,220 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 02:07:19,350 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:07:19] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:07:22,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:07:22] "GET /api/strategies/notifications?limit=50&_t=1768327642066 HTTP/1.1" 200 - +2026-01-14 02:07:34,972 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:07:34] "GET /api/strategies/notifications?limit=50&_t=1768327654967 HTTP/1.1" 200 - +2026-01-14 02:07:48,264 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:07:48] "GET /api/strategies/notifications?limit=50&_t=1768327668258 HTTP/1.1" 200 - +2026-01-14 02:07:49,222 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 02:07:49,222 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 02:07:49,393 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:07:49] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:08:04,964 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:08:04] "GET /api/strategies/notifications?limit=50&_t=1768327684958 HTTP/1.1" 200 - +2026-01-14 02:08:19,223 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 02:08:19,223 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 02:08:19,469 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:08:19] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:08:34,968 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:08:34] "GET /api/strategies/notifications?limit=50&_t=1768327714963 HTTP/1.1" 200 - +2026-01-14 02:08:48,258 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:08:48] "GET /api/strategies/notifications?limit=50&_t=1768327728253 HTTP/1.1" 200 - +2026-01-14 02:08:49,224 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 02:08:49,224 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 02:08:49,514 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:08:49] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:09:04,968 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:09:04] "GET /api/strategies/notifications?limit=50&_t=1768327744962 HTTP/1.1" 200 - +2026-01-14 02:09:19,225 - app.utils.db_postgres - ERROR - PostgreSQL operation error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 02:09:19,225 - app.services.portfolio_monitor - ERROR - Monitor loop error: operator does not exist: timestamp without time zone <= integer +LINE 3: ...ERE user_id = 1 AND is_active = 1 AND next_run_at <= 1768327... + ^ +HINT: No operator matches the given name and argument types. You might need to add explicit type casts. + +2026-01-14 02:09:19,591 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:09:19] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:09:23,785 - app - INFO - Database type: postgresql +2026-01-14 02:09:23,795 - app.utils.db_postgres - INFO - PostgreSQL connection pool created: postgres:5432/quantdinger +2026-01-14 02:09:23,796 - app.utils.db - INFO - PostgreSQL connection verified +2026-01-14 02:09:24,687 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-14 02:09:24,688 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-14 02:09:24,697 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-14 02:09:24,697 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-14 02:09:24,973 - app.services.trading_executor - INFO - Adding highest_price column to qd_strategy_positions (SQLite)... +2026-01-14 02:09:24,973 - app.utils.db_postgres - ERROR - PostgreSQL operation error: current transaction is aborted, commands ignored until end of transaction block + +2026-01-14 02:09:24,974 - app.services.trading_executor - ERROR - Failed to check/ensure DB columns: current transaction is aborted, commands ignored until end of transaction block + +2026-01-14 02:09:24,975 - app.services.strategy - INFO - Found 0 running strategies: [] +2026-01-14 02:09:24,975 - app - INFO - No running strategies to restore. +2026-01-14 02:09:24,982 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://172.18.0.3:5000 +2026-01-14 02:09:24,982 - werkzeug - INFO - Press CTRL+C to quit +2026-01-14 02:09:33,610 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:09:33] "GET /api/users/roles?_t=1768327773596 HTTP/1.1" 200 - +2026-01-14 02:09:33,611 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:09:33] "GET /api/users/list?page=1&page_size=10&_t=1768327773596 HTTP/1.1" 200 - +2026-01-14 02:09:33,612 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:09:33] "GET /api/strategies/notifications?limit=50&_t=1768327773596 HTTP/1.1" 200 - +2026-01-14 02:09:36,097 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:09:36] "GET /api/users/profile?_t=1768327776089 HTTP/1.1" 200 - +2026-01-14 02:09:48,272 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:09:48] "GET /api/strategies/notifications?limit=50&_t=1768327788265 HTTP/1.1" 200 - +2026-01-14 02:09:50,100 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:09:50] "GET /api/users/roles?_t=1768327790092 HTTP/1.1" 200 - +2026-01-14 02:09:50,101 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:09:50] "GET /api/users/list?page=1&page_size=10&_t=1768327790092 HTTP/1.1" 200 - +2026-01-14 02:09:51,572 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:09:51] "GET /api/settings/schema?_t=1768327791355 HTTP/1.1" 200 - +2026-01-14 02:09:51,575 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:09:51] "GET /api/settings/values?_t=1768327791355 HTTP/1.1" 200 - +2026-01-14 02:09:53,559 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:09:53] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:09:59,105 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:09:59] "GET /api/settings/schema?_t=1768327799088 HTTP/1.1" 200 - +2026-01-14 02:09:59,109 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:09:59] "GET /api/settings/values?_t=1768327799088 HTTP/1.1" 200 - +2026-01-14 02:10:00,507 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:00] "GET /api/users/roles?_t=1768327800502 HTTP/1.1" 200 - +2026-01-14 02:10:00,509 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:00] "GET /api/users/list?page=1&page_size=10&_t=1768327800502 HTTP/1.1" 200 - +2026-01-14 02:10:01,953 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:01] "GET /api/users/profile?_t=1768327801730 HTTP/1.1" 200 - +2026-01-14 02:10:02,679 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:02] "GET /api/users/roles?_t=1768327802669 HTTP/1.1" 200 - +2026-01-14 02:10:02,682 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:02] "GET /api/users/list?page=1&page_size=10&_t=1768327802669 HTTP/1.1" 200 - +2026-01-14 02:10:03,579 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:03] "GET /api/strategies/notifications?limit=50&_t=1768327803574 HTTP/1.1" 200 - +2026-01-14 02:10:06,531 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:06] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768327806513 HTTP/1.1" 200 - +2026-01-14 02:10:06,532 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:06] "GET /api/dashboard/summary?_t=1768327806513 HTTP/1.1" 200 - +2026-01-14 02:10:06,534 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:06] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768327806513 HTTP/1.1" 200 - +2026-01-14 02:10:07,981 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:07] "GET /api/strategies?_t=1768327807976 HTTP/1.1" 200 - +2026-01-14 02:10:08,894 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:08] "GET /api/market/types?_t=1768327808889 HTTP/1.1" 200 - +2026-01-14 02:10:08,896 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:08] "GET /api/portfolio/positions?_t=1768327808889 HTTP/1.1" 200 - +2026-01-14 02:10:08,897 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:08] "GET /api/portfolio/summary?_t=1768327808889 HTTP/1.1" 200 - +2026-01-14 02:10:08,900 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:08] "GET /api/portfolio/monitors?_t=1768327808889 HTTP/1.1" 200 - +2026-01-14 02:10:08,901 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:08] "GET /api/portfolio/groups?_t=1768327808889 HTTP/1.1" 200 - +2026-01-14 02:10:08,902 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:08] "GET /api/portfolio/alerts?_t=1768327808889 HTTP/1.1" 200 - +2026-01-14 02:10:11,143 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:11] "GET /api/settings/schema?_t=1768327811128 HTTP/1.1" 200 - +2026-01-14 02:10:11,149 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:11] "GET /api/settings/values?_t=1768327811128 HTTP/1.1" 200 - +2026-01-14 02:10:14,616 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:14] "GET /api/users/roles?_t=1768327814608 HTTP/1.1" 200 - +2026-01-14 02:10:14,617 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:14] "GET /api/users/list?page=1&page_size=10&_t=1768327814608 HTTP/1.1" 200 - +2026-01-14 02:10:16,074 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:16] "GET /api/users/profile?_t=1768327815872 HTTP/1.1" 200 - +2026-01-14 02:10:17,547 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:17] "GET /api/market/types?_t=1768327817539 HTTP/1.1" 200 - +2026-01-14 02:10:17,564 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:17] "GET /api/user/info?_t=1768327817539 HTTP/1.1" 200 - +2026-01-14 02:10:17,564 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:17] "GET /api/market/watchlist/get?userid=1&_t=1768327817539 HTTP/1.1" 200 - +2026-01-14 02:10:17,575 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:17] "GET /api/indicator/getIndicators?userid=1&_t=1768327817539 HTTP/1.1" 200 - +2026-01-14 02:10:17,584 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:17] "GET /api/market/watchlist/get?userid=1&_t=1768327817576 HTTP/1.1" 200 - +2026-01-14 02:10:17,585 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:17] "GET /api/indicator/getIndicators?userid=1&_t=1768327817576 HTTP/1.1" 200 - +2026-01-14 02:10:17,593 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=500 +2026-01-14 02:10:17,826 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-14 02:10:18,969 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:18] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=500&_t=1768327817586 HTTP/1.1" 200 - +2026-01-14 02:10:20,056 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:10:20,256 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:20] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768327820052 HTTP/1.1" 200 - +2026-01-14 02:10:20,689 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:20] "GET /api/market/config?_t=1768327820671 HTTP/1.1" 200 - +2026-01-14 02:10:20,691 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:20] "GET /api/user/info?_t=1768327820671 HTTP/1.1" 200 - +2026-01-14 02:10:20,692 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:20] "GET /api/market/watchlist/get?userid=1&_t=1768327820671 HTTP/1.1" 200 - +2026-01-14 02:10:20,732 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:20] "GET /api/market/types?_t=1768327820724 HTTP/1.1" 200 - +2026-01-14 02:10:20,735 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:20] "GET /api/market/watchlist/get?userid=1&_t=1768327820725 HTTP/1.1" 200 - +2026-01-14 02:10:21,639 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:21] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AAPL"}]&_t=1768327820734 HTTP/1.1" 200 - +2026-01-14 02:10:21,692 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:21] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AAPL"}]&_t=1768327820755 HTTP/1.1" 200 - +2026-01-14 02:10:22,413 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768327822396 HTTP/1.1" 200 - +2026-01-14 02:10:22,414 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:22] "GET /api/dashboard/summary?_t=1768327822396 HTTP/1.1" 200 - +2026-01-14 02:10:22,416 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768327822396 HTTP/1.1" 200 - +2026-01-14 02:10:23,627 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:10:23] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:10:27,378 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768327827373 HTTP/1.1" 200 - +2026-01-14 02:10:32,379 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768327832374 HTTP/1.1" 200 - +2026-01-14 02:10:33,582 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:33] "GET /api/strategies/notifications?limit=50&_t=1768327833577 HTTP/1.1" 200 - +2026-01-14 02:10:37,380 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768327837376 HTTP/1.1" 200 - +2026-01-14 02:10:42,374 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:42] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768327842369 HTTP/1.1" 200 - +2026-01-14 02:10:47,376 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:47] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768327847370 HTTP/1.1" 200 - +2026-01-14 02:10:48,271 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:48] "GET /api/strategies/notifications?limit=50&_t=1768327848265 HTTP/1.1" 200 - +2026-01-14 02:10:52,379 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768327852374 HTTP/1.1" 200 - +2026-01-14 02:10:53,680 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:10:53] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:10:57,370 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:10:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768327857366 HTTP/1.1" 200 - +2026-01-14 02:11:02,387 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:11:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768327862377 HTTP/1.1" 200 - +2026-01-14 02:11:03,585 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:11:03] "GET /api/strategies/notifications?limit=50&_t=1768327863579 HTTP/1.1" 200 - +2026-01-14 02:11:07,376 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:11:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768327867371 HTTP/1.1" 200 - +2026-01-14 02:11:12,379 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:11:12] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768327872373 HTTP/1.1" 200 - +2026-01-14 02:11:17,382 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:11:17] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768327877376 HTTP/1.1" 200 - +2026-01-14 02:11:22,381 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:11:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768327882375 HTTP/1.1" 200 - +2026-01-14 02:11:23,733 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:11:23] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:11:27,371 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:11:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768327887366 HTTP/1.1" 200 - +2026-01-14 02:11:32,381 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:11:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768327892376 HTTP/1.1" 200 - +2026-01-14 02:11:33,582 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:11:33] "GET /api/strategies/notifications?limit=50&_t=1768327893578 HTTP/1.1" 200 - +2026-01-14 02:11:37,382 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:11:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768327897377 HTTP/1.1" 200 - +2026-01-14 02:11:42,376 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:11:42] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768327902370 HTTP/1.1" 200 - +2026-01-14 02:11:47,384 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:11:47] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768327907378 HTTP/1.1" 200 - +2026-01-14 02:11:48,267 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:11:48] "GET /api/strategies/notifications?limit=50&_t=1768327908263 HTTP/1.1" 200 - +2026-01-14 02:11:52,381 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:11:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768327912376 HTTP/1.1" 200 - +2026-01-14 02:11:53,782 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:11:53] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:11:57,380 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:11:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768327917376 HTTP/1.1" 200 - +2026-01-14 02:12:02,378 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:12:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768327922372 HTTP/1.1" 200 - +2026-01-14 02:12:03,592 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:12:03] "GET /api/strategies/notifications?limit=50&_t=1768327923586 HTTP/1.1" 200 - +2026-01-14 02:12:07,372 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:12:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768327927367 HTTP/1.1" 200 - +2026-01-14 02:12:12,378 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:12:12] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768327932372 HTTP/1.1" 200 - +2026-01-14 02:12:17,382 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:12:17] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768327937376 HTTP/1.1" 200 - +2026-01-14 02:12:22,372 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:12:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768327942366 HTTP/1.1" 200 - +2026-01-14 02:12:23,831 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:12:23] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:12:27,376 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:12:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768327947370 HTTP/1.1" 200 - +2026-01-14 02:12:32,378 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:12:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768327952374 HTTP/1.1" 200 - +2026-01-14 02:12:33,589 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:12:33] "GET /api/strategies/notifications?limit=50&_t=1768327953584 HTTP/1.1" 200 - +2026-01-14 02:12:37,376 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:12:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768327957371 HTTP/1.1" 200 - +2026-01-14 02:12:42,379 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:12:42] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768327962374 HTTP/1.1" 200 - +2026-01-14 02:12:47,382 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:12:47] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768327967376 HTTP/1.1" 200 - +2026-01-14 02:12:48,263 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:12:48] "GET /api/strategies/notifications?limit=50&_t=1768327968258 HTTP/1.1" 200 - +2026-01-14 02:12:52,386 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:12:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768327972378 HTTP/1.1" 200 - +2026-01-14 02:12:53,882 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:12:53] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:12:57,372 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:12:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768327977367 HTTP/1.1" 200 - +2026-01-14 02:13:02,382 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:13:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768327982377 HTTP/1.1" 200 - +2026-01-14 02:13:03,585 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:13:03] "GET /api/strategies/notifications?limit=50&_t=1768327983581 HTTP/1.1" 200 - +2026-01-14 02:13:07,372 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:13:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768327987367 HTTP/1.1" 200 - +2026-01-14 02:13:12,372 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:13:12] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768327992366 HTTP/1.1" 200 - +2026-01-14 02:13:17,390 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:13:17] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768327997372 HTTP/1.1" 200 - +2026-01-14 02:13:22,372 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:13:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328002368 HTTP/1.1" 200 - +2026-01-14 02:13:23,926 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:13:23] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:13:27,373 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:13:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328007368 HTTP/1.1" 200 - +2026-01-14 02:13:32,380 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:13:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328012375 HTTP/1.1" 200 - +2026-01-14 02:13:33,584 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:13:33] "GET /api/strategies/notifications?limit=50&_t=1768328013579 HTTP/1.1" 200 - +2026-01-14 02:13:37,372 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:13:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328017367 HTTP/1.1" 200 - +2026-01-14 02:13:42,374 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:13:42] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328022369 HTTP/1.1" 200 - +2026-01-14 02:13:47,389 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:13:47] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328027371 HTTP/1.1" 200 - +2026-01-14 02:13:48,263 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:13:48] "GET /api/strategies/notifications?limit=50&_t=1768328028256 HTTP/1.1" 200 - +2026-01-14 02:13:52,380 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:13:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328032375 HTTP/1.1" 200 - +2026-01-14 02:13:53,982 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:13:53] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:13:57,380 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:13:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328037374 HTTP/1.1" 200 - +2026-01-14 02:14:02,382 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:14:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328042377 HTTP/1.1" 200 - +2026-01-14 02:14:03,585 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:14:03] "GET /api/strategies/notifications?limit=50&_t=1768328043580 HTTP/1.1" 200 - +2026-01-14 02:14:07,384 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:14:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328047376 HTTP/1.1" 200 - +2026-01-14 02:14:12,381 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:14:12] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328052375 HTTP/1.1" 200 - +2026-01-14 02:14:17,375 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:14:17] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328057370 HTTP/1.1" 200 - +2026-01-14 02:14:22,376 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:14:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328062371 HTTP/1.1" 200 - +2026-01-14 02:14:24,028 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:14:24] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:14:27,374 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:14:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328067369 HTTP/1.1" 200 - +2026-01-14 02:14:32,387 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:14:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328072373 HTTP/1.1" 200 - +2026-01-14 02:14:33,589 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:14:33] "GET /api/strategies/notifications?limit=50&_t=1768328073585 HTTP/1.1" 200 - +2026-01-14 02:14:37,377 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:14:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328077372 HTTP/1.1" 200 - +2026-01-14 02:14:42,383 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:14:42] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328082378 HTTP/1.1" 200 - +2026-01-14 02:14:47,379 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:14:47] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328087373 HTTP/1.1" 200 - +2026-01-14 02:14:48,270 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:14:48] "GET /api/strategies/notifications?limit=50&_t=1768328088265 HTTP/1.1" 200 - +2026-01-14 02:14:52,378 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:14:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328092374 HTTP/1.1" 200 - +2026-01-14 02:14:54,086 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:14:54] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:14:57,372 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:14:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328097367 HTTP/1.1" 200 - +2026-01-14 02:15:02,379 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:15:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328102374 HTTP/1.1" 200 - +2026-01-14 02:15:03,591 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:15:03] "GET /api/strategies/notifications?limit=50&_t=1768328103586 HTTP/1.1" 200 - +2026-01-14 02:15:07,373 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:15:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328107367 HTTP/1.1" 200 - +2026-01-14 02:15:12,378 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:15:12] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328112371 HTTP/1.1" 200 - +2026-01-14 02:15:17,371 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:15:17] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328117365 HTTP/1.1" 200 - +2026-01-14 02:15:22,376 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:15:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328122372 HTTP/1.1" 200 - +2026-01-14 02:15:24,145 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:15:24] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:15:27,384 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:15:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328127379 HTTP/1.1" 200 - +2026-01-14 02:15:32,380 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:15:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328132376 HTTP/1.1" 200 - +2026-01-14 02:15:33,588 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:15:33] "GET /api/strategies/notifications?limit=50&_t=1768328133583 HTTP/1.1" 200 - +2026-01-14 02:15:37,380 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:15:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328137375 HTTP/1.1" 200 - +2026-01-14 02:15:42,375 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:15:42] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328142369 HTTP/1.1" 200 - +2026-01-14 02:15:47,373 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:15:47] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328147368 HTTP/1.1" 200 - +2026-01-14 02:15:48,256 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:15:48] "GET /api/strategies/notifications?limit=50&_t=1768328148252 HTTP/1.1" 200 - +2026-01-14 02:15:52,370 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:15:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328152366 HTTP/1.1" 200 - +2026-01-14 02:15:54,207 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:15:54] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:15:57,377 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:15:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328157373 HTTP/1.1" 200 - +2026-01-14 02:16:02,374 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:16:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328162370 HTTP/1.1" 200 - +2026-01-14 02:16:03,582 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:16:03] "GET /api/strategies/notifications?limit=50&_t=1768328163577 HTTP/1.1" 200 - +2026-01-14 02:16:07,383 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:16:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328167377 HTTP/1.1" 200 - +2026-01-14 02:16:12,380 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:16:12] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328172375 HTTP/1.1" 200 - +2026-01-14 02:16:17,371 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:16:17] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328177365 HTTP/1.1" 200 - +2026-01-14 02:16:22,371 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:16:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328182367 HTTP/1.1" 200 - +2026-01-14 02:16:24,262 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:16:24] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:16:27,378 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:16:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328187374 HTTP/1.1" 200 - +2026-01-14 02:16:32,369 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:16:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328192364 HTTP/1.1" 200 - +2026-01-14 02:16:33,592 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:16:33] "GET /api/strategies/notifications?limit=50&_t=1768328193588 HTTP/1.1" 200 - +2026-01-14 02:16:37,372 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:16:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328197367 HTTP/1.1" 200 - +2026-01-14 02:16:42,372 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:16:42] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328202367 HTTP/1.1" 200 - +2026-01-14 02:16:47,384 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:16:47] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328207379 HTTP/1.1" 200 - +2026-01-14 02:16:48,266 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:16:48] "GET /api/strategies/notifications?limit=50&_t=1768328208261 HTTP/1.1" 200 - +2026-01-14 02:16:52,380 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:16:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328212376 HTTP/1.1" 200 - +2026-01-14 02:16:54,308 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:16:54] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:16:57,381 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:16:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328217376 HTTP/1.1" 200 - +2026-01-14 02:17:02,383 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:17:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328222379 HTTP/1.1" 200 - +2026-01-14 02:17:03,589 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:17:03] "GET /api/strategies/notifications?limit=50&_t=1768328223584 HTTP/1.1" 200 - +2026-01-14 02:17:07,384 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:17:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328227378 HTTP/1.1" 200 - +2026-01-14 02:17:12,373 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:17:12] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328232368 HTTP/1.1" 200 - +2026-01-14 02:17:17,378 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:17:17] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328237373 HTTP/1.1" 200 - +2026-01-14 02:17:22,377 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:17:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328242373 HTTP/1.1" 200 - +2026-01-14 02:17:24,367 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:17:24] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:17:27,382 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:17:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328247377 HTTP/1.1" 200 - +2026-01-14 02:17:32,375 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:17:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328252370 HTTP/1.1" 200 - +2026-01-14 02:17:33,585 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:17:33] "GET /api/strategies/notifications?limit=50&_t=1768328253580 HTTP/1.1" 200 - +2026-01-14 02:17:37,372 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:17:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328257367 HTTP/1.1" 200 - +2026-01-14 02:17:42,382 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:17:42] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328262377 HTTP/1.1" 200 - +2026-01-14 02:17:47,381 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:17:47] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328267376 HTTP/1.1" 200 - +2026-01-14 02:17:48,263 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:17:48] "GET /api/strategies/notifications?limit=50&_t=1768328268256 HTTP/1.1" 200 - +2026-01-14 02:17:52,383 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:17:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328272379 HTTP/1.1" 200 - +2026-01-14 02:17:54,437 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:17:54] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:17:57,372 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:17:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328277367 HTTP/1.1" 200 - +2026-01-14 02:18:02,380 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:18:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328282374 HTTP/1.1" 200 - +2026-01-14 02:18:03,585 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:18:03] "GET /api/strategies/notifications?limit=50&_t=1768328283580 HTTP/1.1" 200 - +2026-01-14 02:18:07,384 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:18:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328287378 HTTP/1.1" 200 - +2026-01-14 02:18:12,382 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:18:12] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328292377 HTTP/1.1" 200 - +2026-01-14 02:18:17,381 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:18:17] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328297375 HTTP/1.1" 200 - +2026-01-14 02:18:22,378 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:18:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328302373 HTTP/1.1" 200 - +2026-01-14 02:18:24,483 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:18:24] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:18:27,384 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:18:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328307380 HTTP/1.1" 200 - +2026-01-14 02:18:32,377 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:18:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328312372 HTTP/1.1" 200 - +2026-01-14 02:18:33,589 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:18:33] "GET /api/strategies/notifications?limit=50&_t=1768328313583 HTTP/1.1" 200 - +2026-01-14 02:18:37,378 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:18:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328317373 HTTP/1.1" 200 - +2026-01-14 02:18:42,371 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:18:42] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328322366 HTTP/1.1" 200 - +2026-01-14 02:18:47,371 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:18:47] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328327365 HTTP/1.1" 200 - +2026-01-14 02:18:48,257 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:18:48] "GET /api/strategies/notifications?limit=50&_t=1768328328251 HTTP/1.1" 200 - +2026-01-14 02:18:52,380 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:18:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328332375 HTTP/1.1" 200 - +2026-01-14 02:18:54,527 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:18:54] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:18:57,379 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:18:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328337374 HTTP/1.1" 200 - +2026-01-14 02:19:02,374 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:19:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328342369 HTTP/1.1" 200 - +2026-01-14 02:19:03,584 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:19:03] "GET /api/strategies/notifications?limit=50&_t=1768328343579 HTTP/1.1" 200 - +2026-01-14 02:19:07,376 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:19:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328347370 HTTP/1.1" 200 - +2026-01-14 02:19:12,373 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:19:12] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328352368 HTTP/1.1" 200 - +2026-01-14 02:19:17,385 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:19:17] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328357379 HTTP/1.1" 200 - +2026-01-14 02:19:22,382 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:19:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328362378 HTTP/1.1" 200 - +2026-01-14 02:19:24,621 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:19:24] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:19:27,381 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:19:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328367376 HTTP/1.1" 200 - +2026-01-14 02:19:32,378 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:19:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328372373 HTTP/1.1" 200 - +2026-01-14 02:19:33,581 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:19:33] "GET /api/strategies/notifications?limit=50&_t=1768328373576 HTTP/1.1" 200 - +2026-01-14 02:19:37,378 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:19:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328377373 HTTP/1.1" 200 - +2026-01-14 02:19:42,380 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:19:42] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328382375 HTTP/1.1" 200 - +2026-01-14 02:19:47,370 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:19:47] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328387365 HTTP/1.1" 200 - +2026-01-14 02:19:48,261 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:19:48] "GET /api/strategies/notifications?limit=50&_t=1768328388256 HTTP/1.1" 200 - +2026-01-14 02:19:52,374 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:19:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328392369 HTTP/1.1" 200 - +2026-01-14 02:19:54,680 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:19:54] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:19:57,380 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:19:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328397376 HTTP/1.1" 200 - +2026-01-14 02:20:02,378 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:20:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328402369 HTTP/1.1" 200 - +2026-01-14 02:20:03,592 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:20:03] "GET /api/strategies/notifications?limit=50&_t=1768328403588 HTTP/1.1" 200 - +2026-01-14 02:20:07,379 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:20:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328407374 HTTP/1.1" 200 - +2026-01-14 02:20:12,382 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:20:12] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328412377 HTTP/1.1" 200 - +2026-01-14 02:20:17,379 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:20:17] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328417373 HTTP/1.1" 200 - +2026-01-14 02:20:22,377 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:20:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328422372 HTTP/1.1" 200 - +2026-01-14 02:20:24,727 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:20:24] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:20:27,375 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:20:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328427371 HTTP/1.1" 200 - +2026-01-14 02:20:32,372 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:20:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328432368 HTTP/1.1" 200 - +2026-01-14 02:20:33,582 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:20:33] "GET /api/strategies/notifications?limit=50&_t=1768328433578 HTTP/1.1" 200 - +2026-01-14 02:20:37,373 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:20:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328437368 HTTP/1.1" 200 - +2026-01-14 02:20:42,370 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:20:42] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328442365 HTTP/1.1" 200 - +2026-01-14 02:20:47,381 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:20:47] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328447376 HTTP/1.1" 200 - +2026-01-14 02:20:48,269 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:20:48] "GET /api/strategies/notifications?limit=50&_t=1768328448263 HTTP/1.1" 200 - +2026-01-14 02:20:52,376 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:20:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328452371 HTTP/1.1" 200 - +2026-01-14 02:20:54,794 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:20:54] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:20:57,382 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:20:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328457377 HTTP/1.1" 200 - +2026-01-14 02:21:02,371 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:21:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328462365 HTTP/1.1" 200 - +2026-01-14 02:21:03,582 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:21:03] "GET /api/strategies/notifications?limit=50&_t=1768328463577 HTTP/1.1" 200 - +2026-01-14 02:21:07,371 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:21:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328467365 HTTP/1.1" 200 - +2026-01-14 02:21:12,406 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:21:12] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328472379 HTTP/1.1" 200 - +2026-01-14 02:21:17,385 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:21:17] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328477379 HTTP/1.1" 200 - +2026-01-14 02:21:22,374 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:21:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328482369 HTTP/1.1" 200 - +2026-01-14 02:21:24,849 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:21:24] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:21:27,380 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:21:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328487375 HTTP/1.1" 200 - +2026-01-14 02:21:32,383 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:21:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328492378 HTTP/1.1" 200 - +2026-01-14 02:21:33,582 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:21:33] "GET /api/strategies/notifications?limit=50&_t=1768328493578 HTTP/1.1" 200 - +2026-01-14 02:21:37,379 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:21:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328497373 HTTP/1.1" 200 - +2026-01-14 02:21:42,379 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:21:42] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328502373 HTTP/1.1" 200 - +2026-01-14 02:21:47,378 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:21:47] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328507372 HTTP/1.1" 200 - +2026-01-14 02:21:48,266 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:21:48] "GET /api/strategies/notifications?limit=50&_t=1768328508259 HTTP/1.1" 200 - +2026-01-14 02:21:52,372 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:21:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328512367 HTTP/1.1" 200 - +2026-01-14 02:21:54,899 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:21:54] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:21:57,372 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:21:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328517367 HTTP/1.1" 200 - +2026-01-14 02:22:02,382 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:22:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328522377 HTTP/1.1" 200 - +2026-01-14 02:22:03,581 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:22:03] "GET /api/strategies/notifications?limit=50&_t=1768328523576 HTTP/1.1" 200 - +2026-01-14 02:22:07,380 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:22:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328527374 HTTP/1.1" 200 - +2026-01-14 02:22:12,376 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:22:12] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328532372 HTTP/1.1" 200 - +2026-01-14 02:22:17,378 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:22:17] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328537373 HTTP/1.1" 200 - +2026-01-14 02:22:22,385 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:22:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328542379 HTTP/1.1" 200 - +2026-01-14 02:22:24,962 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:22:24] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:22:27,377 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:22:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328547373 HTTP/1.1" 200 - +2026-01-14 02:22:32,377 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:22:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328552372 HTTP/1.1" 200 - +2026-01-14 02:22:33,583 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:22:33] "GET /api/strategies/notifications?limit=50&_t=1768328553578 HTTP/1.1" 200 - +2026-01-14 02:22:37,380 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:22:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328557374 HTTP/1.1" 200 - +2026-01-14 02:22:42,382 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:22:42] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328562376 HTTP/1.1" 200 - +2026-01-14 02:22:47,381 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:22:47] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328567375 HTTP/1.1" 200 - +2026-01-14 02:22:48,269 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:22:48] "GET /api/strategies/notifications?limit=50&_t=1768328568264 HTTP/1.1" 200 - +2026-01-14 02:22:52,378 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:22:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328572373 HTTP/1.1" 200 - +2026-01-14 02:22:55,002 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:22:55] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:22:57,382 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:22:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328577377 HTTP/1.1" 200 - +2026-01-14 02:23:02,383 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:23:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328582378 HTTP/1.1" 200 - +2026-01-14 02:23:03,582 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:23:03] "GET /api/strategies/notifications?limit=50&_t=1768328583577 HTTP/1.1" 200 - +2026-01-14 02:23:07,373 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:23:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328587367 HTTP/1.1" 200 - +2026-01-14 02:23:12,375 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:23:12] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328592369 HTTP/1.1" 200 - +2026-01-14 02:23:17,375 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:23:17] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328597369 HTTP/1.1" 200 - +2026-01-14 02:23:22,376 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:23:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328602373 HTTP/1.1" 200 - +2026-01-14 02:23:25,051 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:23:25] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:23:27,374 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:23:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328607369 HTTP/1.1" 200 - +2026-01-14 02:23:32,380 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:23:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328612374 HTTP/1.1" 200 - +2026-01-14 02:23:33,587 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:23:33] "GET /api/strategies/notifications?limit=50&_t=1768328613581 HTTP/1.1" 200 - +2026-01-14 02:23:37,371 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:23:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328617365 HTTP/1.1" 200 - +2026-01-14 02:23:42,371 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:23:42] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328622365 HTTP/1.1" 200 - +2026-01-14 02:23:47,381 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:23:47] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328627375 HTTP/1.1" 200 - +2026-01-14 02:23:48,257 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:23:48] "GET /api/strategies/notifications?limit=50&_t=1768328628251 HTTP/1.1" 200 - +2026-01-14 02:23:52,373 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:23:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328632367 HTTP/1.1" 200 - +2026-01-14 02:23:55,098 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:23:55] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:23:57,381 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:23:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328637376 HTTP/1.1" 200 - +2026-01-14 02:24:02,372 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:24:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328642367 HTTP/1.1" 200 - +2026-01-14 02:24:03,592 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:24:03] "GET /api/strategies/notifications?limit=50&_t=1768328643588 HTTP/1.1" 200 - +2026-01-14 02:24:07,385 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:24:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328647380 HTTP/1.1" 200 - +2026-01-14 02:24:12,382 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:24:12] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328652376 HTTP/1.1" 200 - +2026-01-14 02:24:17,382 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:24:17] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328657376 HTTP/1.1" 200 - +2026-01-14 02:24:22,375 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:24:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328662370 HTTP/1.1" 200 - +2026-01-14 02:24:25,156 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:24:25] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:24:27,384 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:24:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328667379 HTTP/1.1" 200 - +2026-01-14 02:24:32,381 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:24:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328672376 HTTP/1.1" 200 - +2026-01-14 02:24:33,580 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:24:33] "GET /api/strategies/notifications?limit=50&_t=1768328673576 HTTP/1.1" 200 - +2026-01-14 02:24:37,379 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:24:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328677373 HTTP/1.1" 200 - +2026-01-14 02:24:42,379 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:24:42] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328682374 HTTP/1.1" 200 - +2026-01-14 02:24:47,374 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:24:47] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328687368 HTTP/1.1" 200 - +2026-01-14 02:24:48,270 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:24:48] "GET /api/strategies/notifications?limit=50&_t=1768328688265 HTTP/1.1" 200 - +2026-01-14 02:24:52,375 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:24:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328692371 HTTP/1.1" 200 - +2026-01-14 02:24:55,220 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:24:55] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:24:57,371 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:24:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328697366 HTTP/1.1" 200 - +2026-01-14 02:25:02,383 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:25:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328702378 HTTP/1.1" 200 - +2026-01-14 02:25:03,580 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:25:03] "GET /api/strategies/notifications?limit=50&_t=1768328703574 HTTP/1.1" 200 - +2026-01-14 02:25:07,383 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:25:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328707378 HTTP/1.1" 200 - +2026-01-14 02:25:12,380 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:25:12] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328712375 HTTP/1.1" 200 - +2026-01-14 02:25:17,383 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:25:17] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328717377 HTTP/1.1" 200 - +2026-01-14 02:25:22,379 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:25:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328722374 HTTP/1.1" 200 - +2026-01-14 02:25:25,278 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:25:25] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:25:27,376 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:25:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328727372 HTTP/1.1" 200 - +2026-01-14 02:25:32,382 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:25:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328732377 HTTP/1.1" 200 - +2026-01-14 02:25:33,591 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:25:33] "GET /api/strategies/notifications?limit=50&_t=1768328733585 HTTP/1.1" 200 - +2026-01-14 02:25:37,376 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:25:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328737371 HTTP/1.1" 200 - +2026-01-14 02:25:42,381 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:25:42] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328742376 HTTP/1.1" 200 - +2026-01-14 02:25:47,379 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:25:47] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328747374 HTTP/1.1" 200 - +2026-01-14 02:25:48,266 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:25:48] "GET /api/strategies/notifications?limit=50&_t=1768328748262 HTTP/1.1" 200 - +2026-01-14 02:25:52,370 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:25:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328752365 HTTP/1.1" 200 - +2026-01-14 02:25:55,327 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:25:55] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:25:57,378 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:25:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328757373 HTTP/1.1" 200 - +2026-01-14 02:26:02,384 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:26:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328762379 HTTP/1.1" 200 - +2026-01-14 02:26:03,585 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:26:03] "GET /api/strategies/notifications?limit=50&_t=1768328763580 HTTP/1.1" 200 - +2026-01-14 02:26:07,383 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:26:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328767375 HTTP/1.1" 200 - +2026-01-14 02:26:12,376 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:26:12] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328772370 HTTP/1.1" 200 - +2026-01-14 02:26:17,372 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:26:17] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328777366 HTTP/1.1" 200 - +2026-01-14 02:26:22,382 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:26:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328782375 HTTP/1.1" 200 - +2026-01-14 02:26:25,388 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:26:25] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:26:27,377 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:26:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328787372 HTTP/1.1" 200 - +2026-01-14 02:26:32,379 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:26:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328792373 HTTP/1.1" 200 - +2026-01-14 02:26:33,587 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:26:33] "GET /api/strategies/notifications?limit=50&_t=1768328793582 HTTP/1.1" 200 - +2026-01-14 02:26:37,377 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:26:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328797371 HTTP/1.1" 200 - +2026-01-14 02:26:42,372 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:26:42] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328802366 HTTP/1.1" 200 - +2026-01-14 02:26:47,383 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:26:47] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328807378 HTTP/1.1" 200 - +2026-01-14 02:26:48,264 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:26:48] "GET /api/strategies/notifications?limit=50&_t=1768328808251 HTTP/1.1" 200 - +2026-01-14 02:26:52,376 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:26:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328812369 HTTP/1.1" 200 - +2026-01-14 02:26:55,458 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:26:55] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:26:57,379 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:26:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328817374 HTTP/1.1" 200 - +2026-01-14 02:27:02,382 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:27:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328822378 HTTP/1.1" 200 - +2026-01-14 02:27:03,578 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:27:03] "GET /api/strategies/notifications?limit=50&_t=1768328823574 HTTP/1.1" 200 - +2026-01-14 02:27:07,385 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:27:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328827378 HTTP/1.1" 200 - +2026-01-14 02:27:12,374 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:27:12] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328832368 HTTP/1.1" 200 - +2026-01-14 02:27:17,372 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:27:17] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328837367 HTTP/1.1" 200 - +2026-01-14 02:27:22,375 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:27:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328842371 HTTP/1.1" 200 - +2026-01-14 02:27:25,513 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:27:25] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:27:27,382 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:27:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328847377 HTTP/1.1" 200 - +2026-01-14 02:27:32,372 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:27:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328852368 HTTP/1.1" 200 - +2026-01-14 02:27:33,584 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:27:33] "GET /api/strategies/notifications?limit=50&_t=1768328853579 HTTP/1.1" 200 - +2026-01-14 02:27:37,380 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:27:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328857371 HTTP/1.1" 200 - +2026-01-14 02:27:42,377 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:27:42] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328862371 HTTP/1.1" 200 - +2026-01-14 02:27:44,047 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:27:44] "GET /api/dashboard/summary?_t=1768328864032 HTTP/1.1" 200 - +2026-01-14 02:27:44,047 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:27:44] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768328864032 HTTP/1.1" 200 - +2026-01-14 02:27:44,049 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:27:44] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768328864032 HTTP/1.1" 200 - +2026-01-14 02:27:47,701 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:27:47] "GET /api/strategies/notifications?limit=50&_t=1768328867687 HTTP/1.1" 200 - +2026-01-14 02:27:47,703 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:27:47] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768328867687 HTTP/1.1" 200 - +2026-01-14 02:27:47,704 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:27:47] "GET /api/dashboard/summary?_t=1768328867687 HTTP/1.1" 200 - +2026-01-14 02:27:47,706 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:27:47] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768328867687 HTTP/1.1" 200 - +2026-01-14 02:27:48,269 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:27:48] "GET /api/strategies/notifications?limit=50&_t=1768328868263 HTTP/1.1" 200 - +2026-01-14 02:27:49,519 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:27:49] "GET /api/users/profile?_t=1768328869512 HTTP/1.1" 200 - +2026-01-14 02:27:51,020 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:27:51] "GET /api/settings/schema?_t=1768328871012 HTTP/1.1" 200 - +2026-01-14 02:27:51,027 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:27:51] "GET /api/settings/values?_t=1768328871012 HTTP/1.1" 200 - +2026-01-14 02:27:55,561 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:27:55] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:28:00,903 - app - INFO - Database type: postgresql +2026-01-14 02:28:00,915 - app.utils.db_postgres - INFO - PostgreSQL connection pool created: postgres:5432/quantdinger +2026-01-14 02:28:00,916 - app.utils.db - INFO - PostgreSQL connection verified +2026-01-14 02:28:01,898 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-14 02:28:01,899 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-14 02:28:01,904 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-14 02:28:01,904 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-14 02:28:02,203 - app.services.trading_executor - INFO - Adding highest_price column to qd_strategy_positions (SQLite)... +2026-01-14 02:28:02,203 - app.utils.db_postgres - ERROR - PostgreSQL operation error: current transaction is aborted, commands ignored until end of transaction block + +2026-01-14 02:28:02,204 - app.services.trading_executor - ERROR - Failed to check/ensure DB columns: current transaction is aborted, commands ignored until end of transaction block + +2026-01-14 02:28:02,205 - app.services.strategy - INFO - Found 0 running strategies: [] +2026-01-14 02:28:02,205 - app - INFO - No running strategies to restore. +2026-01-14 02:28:02,211 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://172.18.0.3:5000 +2026-01-14 02:28:02,211 - werkzeug - INFO - Press CTRL+C to quit +2026-01-14 02:28:02,988 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:28:02] "GET /api/strategies/notifications?limit=50&_t=1768328882980 HTTP/1.1" 200 - +2026-01-14 02:28:02,991 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:28:02] "GET /api/users/list?page=1&page_size=10&_t=1768328882980 HTTP/1.1" 200 - +2026-01-14 02:28:02,993 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:28:02] "GET /api/users/roles?_t=1768328882980 HTTP/1.1" 200 - +2026-01-14 02:28:16,048 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:28:16] "DELETE /api/users/delete?id=1 HTTP/1.1" 400 - +2026-01-14 02:28:30,646 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:28:30] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:28:32,968 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:28:32] "GET /api/strategies/notifications?limit=50&_t=1768328912962 HTTP/1.1" 200 - +2026-01-14 02:28:34,694 - app.services.user_service - INFO - Created user: add1 (id=2) +2026-01-14 02:28:34,695 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:28:34] "POST /api/users/create HTTP/1.1" 200 - +2026-01-14 02:28:34,717 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:28:34] "GET /api/users/list?page=1&page_size=10&_t=1768328914710 HTTP/1.1" 200 - +2026-01-14 02:28:43,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:28:43] "DELETE /api/users/delete?id=2 HTTP/1.1" 200 - +2026-01-14 02:28:43,090 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:28:43] "GET /api/users/list?page=1&page_size=10&_t=1768328923084 HTTP/1.1" 200 - +2026-01-14 02:28:48,259 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:28:48] "GET /api/strategies/notifications?limit=50&_t=1768328928251 HTTP/1.1" 200 - +2026-01-14 02:28:50,599 - app.services.user_service - INFO - Created user: add1 (id=3) +2026-01-14 02:28:50,600 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:28:50] "POST /api/users/create HTTP/1.1" 200 - +2026-01-14 02:28:50,618 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:28:50] "GET /api/users/list?page=1&page_size=10&_t=1768328930612 HTTP/1.1" 200 - +2026-01-14 02:28:54,393 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:28:54] "GET /api/users/profile?_t=1768328934387 HTTP/1.1" 200 - +2026-01-14 02:29:00,708 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:29:00] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:29:02,962 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:29:02] "GET /api/strategies/notifications?limit=50&_t=1768328942957 HTTP/1.1" 200 - +2026-01-14 02:29:15,135 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:29:15] "POST /api/user/logout HTTP/1.1" 200 - +2026-01-14 02:29:20,550 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:29:20] "POST /api/user/login HTTP/1.1" 200 - +2026-01-14 02:29:20,783 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:29:20] "GET /api/strategies/notifications?limit=50&_t=1768328960733 HTTP/1.1" 200 - +2026-01-14 02:29:20,803 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:29:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768328960733 HTTP/1.1" 200 - +2026-01-14 02:29:20,804 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:29:20] "GET /api/dashboard/summary?_t=1768328960733 HTTP/1.1" 200 - +2026-01-14 02:29:20,806 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:29:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768328960733 HTTP/1.1" 200 - +2026-01-14 02:29:25,663 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:29:25] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768328965659 HTTP/1.1" 200 - +2026-01-14 02:29:26,701 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:29:26] "GET /api/settings/schema?_t=1768328966698 HTTP/1.1" 200 - +2026-01-14 02:29:26,705 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:29:26] "GET /api/settings/values?_t=1768328966698 HTTP/1.1" 200 - +2026-01-14 02:29:30,303 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:29:30] "GET /api/users/list?page=1&page_size=10&_t=1768328970299 HTTP/1.1" 403 - +2026-01-14 02:29:30,304 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:29:30] "GET /api/users/roles?_t=1768328970299 HTTP/1.1" 403 - +2026-01-14 02:29:30,754 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:29:30] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:29:33,124 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:29:33] "GET /api/users/profile?_t=1768328973120 HTTP/1.1" 200 - +2026-01-14 02:29:35,918 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:29:35] "GET /api/users/roles?_t=1768328975909 HTTP/1.1" 403 - +2026-01-14 02:29:35,919 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:29:35] "GET /api/users/list?page=1&page_size=10&_t=1768328975909 HTTP/1.1" 403 - +2026-01-14 02:29:38,253 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:29:38] "GET /api/users/profile?_t=1768328978247 HTTP/1.1" 200 - +2026-01-14 02:29:48,257 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:29:48] "GET /api/strategies/notifications?limit=50&_t=1768328988252 HTTP/1.1" 200 - +2026-01-14 02:29:50,666 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:29:50] "GET /api/strategies/notifications?limit=50&_t=1768328990661 HTTP/1.1" 200 - +2026-01-14 02:29:52,418 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:29:52] "POST /api/users/change-password HTTP/1.1" 400 - +2026-01-14 02:29:58,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:29:58] "POST /api/users/change-password HTTP/1.1" 200 - +2026-01-14 02:30:00,806 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:30:00] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:30:03,448 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:30:03] "GET /api/users/list?page=1&page_size=10&_t=1768329003443 HTTP/1.1" 403 - +2026-01-14 02:30:03,449 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:30:03] "GET /api/users/roles?_t=1768329003443 HTTP/1.1" 403 - +2026-01-14 02:30:06,369 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:30:06] "GET /api/settings/schema?_t=1768329006362 HTTP/1.1" 200 - +2026-01-14 02:30:06,373 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:30:06] "GET /api/settings/values?_t=1768329006362 HTTP/1.1" 200 - +2026-01-14 02:30:20,667 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:30:20] "GET /api/strategies/notifications?limit=50&_t=1768329020662 HTTP/1.1" 200 - +2026-01-14 02:30:30,869 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:30:30] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:30:37,488 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:30:37] "GET /api/users/list?page=1&page_size=10&_t=1768329037483 HTTP/1.1" 403 - +2026-01-14 02:30:37,490 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:30:37] "GET /api/users/roles?_t=1768329037483 HTTP/1.1" 403 - +2026-01-14 02:30:46,435 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:30:46] "POST /api/users/create HTTP/1.1" 403 - +2026-01-14 02:30:48,271 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:30:48] "GET /api/strategies/notifications?limit=50&_t=1768329048266 HTTP/1.1" 200 - +2026-01-14 02:30:50,664 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:30:50] "GET /api/strategies/notifications?limit=50&_t=1768329050657 HTTP/1.1" 200 - +2026-01-14 02:31:00,922 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:31:00] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:31:20,673 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:31:20] "GET /api/strategies/notifications?limit=50&_t=1768329080667 HTTP/1.1" 200 - +2026-01-14 02:31:26,210 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:31:26] "GET /api/settings/schema?_t=1768329086209 HTTP/1.1" 200 - +2026-01-14 02:31:26,213 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:31:26] "GET /api/settings/values?_t=1768329086209 HTTP/1.1" 200 - +2026-01-14 02:31:30,958 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:31:30] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:31:48,262 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:31:48] "GET /api/strategies/notifications?limit=50&_t=1768329108257 HTTP/1.1" 200 - +2026-01-14 02:31:50,673 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:31:50] "GET /api/strategies/notifications?limit=50&_t=1768329110665 HTTP/1.1" 200 - +2026-01-14 02:32:01,006 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:32:01] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:32:14,752 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768329134744 HTTP/1.1" 200 - +2026-01-14 02:32:14,755 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768329134744 HTTP/1.1" 200 - +2026-01-14 02:32:14,756 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:14] "GET /api/dashboard/summary?_t=1768329134744 HTTP/1.1" 200 - +2026-01-14 02:32:15,364 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:15] "GET /api/market/config?_t=1768329135346 HTTP/1.1" 200 - +2026-01-14 02:32:15,366 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:15] "GET /api/user/info?_t=1768329135346 HTTP/1.1" 200 - +2026-01-14 02:32:15,367 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:15] "GET /api/market/watchlist/get?userid=1&_t=1768329135346 HTTP/1.1" 200 - +2026-01-14 02:32:15,394 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:15] "GET /api/market/types?_t=1768329135388 HTTP/1.1" 200 - +2026-01-14 02:32:15,397 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:15] "GET /api/market/watchlist/get?userid=3&_t=1768329135389 HTTP/1.1" 200 - +2026-01-14 02:32:15,667 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-14 02:32:15,667 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-14 02:32:16,545 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:16] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AAPL"}]&_t=1768329135423 HTTP/1.1" 200 - +2026-01-14 02:32:16,562 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:16] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AAPL"}]&_t=1768329135393 HTTP/1.1" 200 - +2026-01-14 02:32:20,667 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:20] "GET /api/strategies/notifications?limit=50&_t=1768329140657 HTTP/1.1" 200 - +2026-01-14 02:32:22,305 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:22] "GET /api/users/profile?_t=1768329142153 HTTP/1.1" 200 - +2026-01-14 02:32:25,031 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:25] "GET /api/market/types?_t=1768329145022 HTTP/1.1" 200 - +2026-01-14 02:32:25,034 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:25] "GET /api/portfolio/positions?_t=1768329145022 HTTP/1.1" 200 - +2026-01-14 02:32:25,038 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:25] "GET /api/portfolio/summary?_t=1768329145022 HTTP/1.1" 200 - +2026-01-14 02:32:25,052 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:25] "GET /api/portfolio/monitors?_t=1768329145022 HTTP/1.1" 200 - +2026-01-14 02:32:25,052 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:25] "GET /api/portfolio/groups?_t=1768329145022 HTTP/1.1" 200 - +2026-01-14 02:32:25,057 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:25] "GET /api/portfolio/alerts?_t=1768329145022 HTTP/1.1" 200 - +2026-01-14 02:32:28,092 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:28] "GET /api/market/types?_t=1768329148087 HTTP/1.1" 200 - +2026-01-14 02:32:28,096 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:28] "GET /api/portfolio/positions?_t=1768329148087 HTTP/1.1" 200 - +2026-01-14 02:32:28,097 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:28] "GET /api/portfolio/summary?_t=1768329148087 HTTP/1.1" 200 - +2026-01-14 02:32:28,098 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:28] "GET /api/portfolio/monitors?_t=1768329148087 HTTP/1.1" 200 - +2026-01-14 02:32:28,101 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:28] "GET /api/portfolio/alerts?_t=1768329148087 HTTP/1.1" 200 - +2026-01-14 02:32:28,104 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:28] "GET /api/portfolio/groups?_t=1768329148087 HTTP/1.1" 200 - +2026-01-14 02:32:31,062 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:32:31] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:32:31,626 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:31] "GET /api/market/config?_t=1768329151622 HTTP/1.1" 200 - +2026-01-14 02:32:31,627 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:31] "GET /api/market/watchlist/get?userid=1&_t=1768329151622 HTTP/1.1" 200 - +2026-01-14 02:32:31,627 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:31] "GET /api/user/info?_t=1768329151622 HTTP/1.1" 200 - +2026-01-14 02:32:31,643 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:31] "GET /api/market/types?_t=1768329151639 HTTP/1.1" 200 - +2026-01-14 02:32:31,648 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:31] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AAPL"}]&_t=1768329151644 HTTP/1.1" 200 - +2026-01-14 02:32:31,658 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:31] "GET /api/market/watchlist/get?userid=3&_t=1768329151648 HTTP/1.1" 200 - +2026-01-14 02:32:31,687 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:31] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AAPL"}]&_t=1768329151676 HTTP/1.1" 200 - +2026-01-14 02:32:33,671 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768329153648 HTTP/1.1" 200 - +2026-01-14 02:32:33,673 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:33] "GET /api/dashboard/summary?_t=1768329153648 HTTP/1.1" 200 - +2026-01-14 02:32:33,677 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:33] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768329153648 HTTP/1.1" 200 - +2026-01-14 02:32:35,469 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:35] "GET /api/market/config?_t=1768329155463 HTTP/1.1" 200 - +2026-01-14 02:32:35,472 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:35] "GET /api/user/info?_t=1768329155463 HTTP/1.1" 200 - +2026-01-14 02:32:35,472 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:35] "GET /api/market/watchlist/get?userid=1&_t=1768329155463 HTTP/1.1" 200 - +2026-01-14 02:32:35,485 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:35] "GET /api/market/types?_t=1768329155480 HTTP/1.1" 200 - +2026-01-14 02:32:35,488 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:35] "GET /api/market/watchlist/get?userid=3&_t=1768329155481 HTTP/1.1" 200 - +2026-01-14 02:32:35,492 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:35] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AAPL"}]&_t=1768329155486 HTTP/1.1" 200 - +2026-01-14 02:32:35,509 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:35] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AAPL"}]&_t=1768329155498 HTTP/1.1" 200 - +2026-01-14 02:32:39,501 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:39] "GET /api/market/types?_t=1768329159490 HTTP/1.1" 200 - +2026-01-14 02:32:39,504 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:39] "GET /api/user/info?_t=1768329159490 HTTP/1.1" 200 - +2026-01-14 02:32:39,506 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:39] "GET /api/indicator/getIndicators?userid=1&_t=1768329159490 HTTP/1.1" 200 - +2026-01-14 02:32:39,507 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:39] "GET /api/market/watchlist/get?userid=1&_t=1768329159490 HTTP/1.1" 200 - +2026-01-14 02:32:39,529 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:39] "GET /api/market/watchlist/get?userid=3&_t=1768329159516 HTTP/1.1" 200 - +2026-01-14 02:32:39,533 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:39] "GET /api/indicator/getIndicators?userid=3&_t=1768329159516 HTTP/1.1" 200 - +2026-01-14 02:32:39,537 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=500 +2026-01-14 02:32:40,702 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:40] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=500&_t=1768329159530 HTTP/1.1" 200 - +2026-01-14 02:32:40,773 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768329160750 HTTP/1.1" 200 - +2026-01-14 02:32:40,777 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:40] "GET /api/dashboard/summary?_t=1768329160750 HTTP/1.1" 200 - +2026-01-14 02:32:40,778 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:40] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768329160750 HTTP/1.1" 200 - +2026-01-14 02:32:41,777 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:32:41,979 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:41] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329161770 HTTP/1.1" 200 - +2026-01-14 02:32:42,775 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:32:42,776 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:42] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329162768 HTTP/1.1" 200 - +2026-01-14 02:32:43,111 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:43] "GET /api/market/config?_t=1768329163106 HTTP/1.1" 200 - +2026-01-14 02:32:43,114 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:43] "GET /api/market/watchlist/get?userid=1&_t=1768329163106 HTTP/1.1" 200 - +2026-01-14 02:32:43,114 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:43] "GET /api/user/info?_t=1768329163106 HTTP/1.1" 200 - +2026-01-14 02:32:43,127 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:43] "GET /api/market/types?_t=1768329163122 HTTP/1.1" 200 - +2026-01-14 02:32:43,134 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:43] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AAPL"}]&_t=1768329163127 HTTP/1.1" 200 - +2026-01-14 02:32:43,142 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:43] "GET /api/market/watchlist/get?userid=3&_t=1768329163131 HTTP/1.1" 200 - +2026-01-14 02:32:43,164 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:43] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AAPL"}]&_t=1768329163154 HTTP/1.1" 200 - +2026-01-14 02:32:43,769 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:32:43,770 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:43] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329163765 HTTP/1.1" 200 - +2026-01-14 02:32:44,690 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:44] "GET /api/market/types?_t=1768329164678 HTTP/1.1" 200 - +2026-01-14 02:32:44,692 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:44] "GET /api/user/info?_t=1768329164678 HTTP/1.1" 200 - +2026-01-14 02:32:44,695 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:44] "GET /api/market/watchlist/get?userid=1&_t=1768329164678 HTTP/1.1" 200 - +2026-01-14 02:32:44,696 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:44] "GET /api/indicator/getIndicators?userid=1&_t=1768329164678 HTTP/1.1" 200 - +2026-01-14 02:32:44,726 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:44] "GET /api/market/watchlist/get?userid=3&_t=1768329164709 HTTP/1.1" 200 - +2026-01-14 02:32:44,727 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:44] "GET /api/indicator/getIndicators?userid=3&_t=1768329164709 HTTP/1.1" 200 - +2026-01-14 02:32:44,756 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=500 +2026-01-14 02:32:44,759 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:44] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=500&_t=1768329164748 HTTP/1.1" 200 - +2026-01-14 02:32:44,794 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:32:44,796 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:44] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329164785 HTTP/1.1" 200 - +2026-01-14 02:32:45,540 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:45] "GET /api/strategies?_t=1768329165530 HTTP/1.1" 200 - +2026-01-14 02:32:45,779 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:32:45,780 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:45] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329165771 HTTP/1.1" 200 - +2026-01-14 02:32:46,227 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:46] "GET /api/market/types?_t=1768329166217 HTTP/1.1" 200 - +2026-01-14 02:32:46,238 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:46] "GET /api/portfolio/summary?_t=1768329166217 HTTP/1.1" 200 - +2026-01-14 02:32:46,239 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:46] "GET /api/portfolio/positions?_t=1768329166217 HTTP/1.1" 200 - +2026-01-14 02:32:46,242 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:46] "GET /api/portfolio/alerts?_t=1768329166217 HTTP/1.1" 200 - +2026-01-14 02:32:46,243 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:46] "GET /api/portfolio/groups?_t=1768329166217 HTTP/1.1" 200 - +2026-01-14 02:32:46,244 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:46] "GET /api/portfolio/monitors?_t=1768329166217 HTTP/1.1" 200 - +2026-01-14 02:32:46,772 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:32:46,773 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:46] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329166767 HTTP/1.1" 200 - +2026-01-14 02:32:47,773 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:32:47,774 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:47] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329167767 HTTP/1.1" 200 - +2026-01-14 02:32:48,259 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:48] "GET /api/strategies/notifications?limit=50&_t=1768329168253 HTTP/1.1" 200 - +2026-01-14 02:32:48,556 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:48] "GET /api/settings/schema?_t=1768329168540 HTTP/1.1" 200 - +2026-01-14 02:32:48,559 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:48] "GET /api/settings/values?_t=1768329168540 HTTP/1.1" 200 - +2026-01-14 02:32:48,773 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:32:48,775 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:48] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329168764 HTTP/1.1" 200 - +2026-01-14 02:32:49,775 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:32:49,776 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:49] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329169768 HTTP/1.1" 200 - +2026-01-14 02:32:50,063 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:50] "GET /api/users/roles?_t=1768329169859 HTTP/1.1" 403 - +2026-01-14 02:32:50,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:50] "GET /api/users/list?page=1&page_size=10&_t=1768329169859 HTTP/1.1" 403 - +2026-01-14 02:32:50,674 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:50] "GET /api/strategies/notifications?limit=50&_t=1768329170668 HTTP/1.1" 200 - +2026-01-14 02:32:50,773 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:32:50,774 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:50] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329170768 HTTP/1.1" 200 - +2026-01-14 02:32:51,550 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:51] "GET /api/users/profile?_t=1768329171315 HTTP/1.1" 200 - +2026-01-14 02:32:51,775 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:32:51,776 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:51] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329171769 HTTP/1.1" 200 - +2026-01-14 02:32:52,487 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768329172469 HTTP/1.1" 200 - +2026-01-14 02:32:52,489 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:52] "GET /api/dashboard/summary?_t=1768329172469 HTTP/1.1" 200 - +2026-01-14 02:32:52,491 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768329172469 HTTP/1.1" 200 - +2026-01-14 02:32:52,777 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:32:52,778 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:52] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329172771 HTTP/1.1" 200 - +2026-01-14 02:32:53,457 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:53] "GET /api/market/config?_t=1768329173450 HTTP/1.1" 200 - +2026-01-14 02:32:53,459 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:53] "GET /api/user/info?_t=1768329173450 HTTP/1.1" 200 - +2026-01-14 02:32:53,460 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:53] "GET /api/market/watchlist/get?userid=1&_t=1768329173450 HTTP/1.1" 200 - +2026-01-14 02:32:53,472 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:53] "GET /api/market/types?_t=1768329173466 HTTP/1.1" 200 - +2026-01-14 02:32:53,474 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:53] "GET /api/market/watchlist/get?userid=3&_t=1768329173467 HTTP/1.1" 200 - +2026-01-14 02:32:53,757 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:53] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AAPL"}]&_t=1768329173473 HTTP/1.1" 200 - +2026-01-14 02:32:53,773 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:32:53,774 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:53] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329173767 HTTP/1.1" 200 - +2026-01-14 02:32:54,276 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:54] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768329174260 HTTP/1.1" 200 - +2026-01-14 02:32:54,277 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:54] "GET /api/dashboard/summary?_t=1768329174260 HTTP/1.1" 200 - +2026-01-14 02:32:54,279 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:54] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768329174260 HTTP/1.1" 200 - +2026-01-14 02:32:54,376 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:54] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AAPL"}]&_t=1768329173487 HTTP/1.1" 200 - +2026-01-14 02:32:54,775 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:32:54,775 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:54] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329174766 HTTP/1.1" 200 - +2026-01-14 02:32:55,746 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:55] "GET /api/market/config?_t=1768329175740 HTTP/1.1" 200 - +2026-01-14 02:32:55,747 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:55] "GET /api/user/info?_t=1768329175740 HTTP/1.1" 200 - +2026-01-14 02:32:55,749 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:55] "GET /api/market/watchlist/get?userid=1&_t=1768329175740 HTTP/1.1" 200 - +2026-01-14 02:32:55,762 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:55] "GET /api/market/types?_t=1768329175757 HTTP/1.1" 200 - +2026-01-14 02:32:55,763 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:55] "GET /api/market/watchlist/get?userid=3&_t=1768329175758 HTTP/1.1" 200 - +2026-01-14 02:32:55,766 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:55] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AAPL"}]&_t=1768329175762 HTTP/1.1" 200 - +2026-01-14 02:32:55,769 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:32:55,772 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:55] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329175766 HTTP/1.1" 200 - +2026-01-14 02:32:55,786 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:55] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AAPL"}]&_t=1768329175775 HTTP/1.1" 200 - +2026-01-14 02:32:56,365 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:56] "GET /api/market/types?_t=1768329176358 HTTP/1.1" 200 - +2026-01-14 02:32:56,367 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:56] "GET /api/user/info?_t=1768329176358 HTTP/1.1" 200 - +2026-01-14 02:32:56,369 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:56] "GET /api/indicator/getIndicators?userid=1&_t=1768329176358 HTTP/1.1" 200 - +2026-01-14 02:32:56,370 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:56] "GET /api/market/watchlist/get?userid=1&_t=1768329176358 HTTP/1.1" 200 - +2026-01-14 02:32:56,392 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:56] "GET /api/indicator/getIndicators?userid=3&_t=1768329176382 HTTP/1.1" 200 - +2026-01-14 02:32:56,392 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:56] "GET /api/market/watchlist/get?userid=3&_t=1768329176382 HTTP/1.1" 200 - +2026-01-14 02:32:56,398 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=500 +2026-01-14 02:32:56,401 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:56] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=500&_t=1768329176395 HTTP/1.1" 200 - +2026-01-14 02:32:56,774 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:32:56,775 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:56] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329176769 HTTP/1.1" 200 - +2026-01-14 02:32:57,107 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:57] "GET /api/strategies?_t=1768329177096 HTTP/1.1" 200 - +2026-01-14 02:32:57,806 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:57] "GET /api/market/types?_t=1768329177797 HTTP/1.1" 200 - +2026-01-14 02:32:57,809 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:57] "GET /api/portfolio/summary?_t=1768329177797 HTTP/1.1" 200 - +2026-01-14 02:32:57,811 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:57] "GET /api/portfolio/positions?_t=1768329177797 HTTP/1.1" 200 - +2026-01-14 02:32:57,814 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:32:57,815 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:57] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329177804 HTTP/1.1" 200 - +2026-01-14 02:32:57,824 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:57] "GET /api/portfolio/monitors?_t=1768329177797 HTTP/1.1" 200 - +2026-01-14 02:32:57,825 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:57] "GET /api/portfolio/groups?_t=1768329177797 HTTP/1.1" 200 - +2026-01-14 02:32:57,827 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:57] "GET /api/portfolio/alerts?_t=1768329177797 HTTP/1.1" 200 - +2026-01-14 02:32:58,774 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:32:58,775 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:58] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329178767 HTTP/1.1" 200 - +2026-01-14 02:32:59,282 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:59] "GET /api/settings/schema?_t=1768329179272 HTTP/1.1" 200 - +2026-01-14 02:32:59,288 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:59] "GET /api/settings/values?_t=1768329179272 HTTP/1.1" 200 - +2026-01-14 02:32:59,798 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:59] "GET /api/users/list?page=1&page_size=10&_t=1768329179793 HTTP/1.1" 403 - +2026-01-14 02:32:59,799 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:59] "GET /api/users/roles?_t=1768329179793 HTTP/1.1" 403 - +2026-01-14 02:32:59,807 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:32:59,808 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:32:59] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329179799 HTTP/1.1" 200 - +2026-01-14 02:33:00,527 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:00] "GET /api/users/profile?_t=1768329180522 HTTP/1.1" 200 - +2026-01-14 02:33:00,775 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:00,776 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:00] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329180767 HTTP/1.1" 200 - +2026-01-14 02:33:01,116 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:33:01] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:33:01,772 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:01,773 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:01] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329181768 HTTP/1.1" 200 - +2026-01-14 02:33:02,406 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768329182389 HTTP/1.1" 200 - +2026-01-14 02:33:02,409 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:02] "GET /api/dashboard/summary?_t=1768329182389 HTTP/1.1" 200 - +2026-01-14 02:33:02,410 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768329182389 HTTP/1.1" 200 - +2026-01-14 02:33:02,775 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:02,776 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:02] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329182772 HTTP/1.1" 200 - +2026-01-14 02:33:03,838 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:03,838 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:03] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329183769 HTTP/1.1" 200 - +2026-01-14 02:33:04,782 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:04,783 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:04] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329184779 HTTP/1.1" 200 - +2026-01-14 02:33:05,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:05,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:05] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329185764 HTTP/1.1" 200 - +2026-01-14 02:33:06,776 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:06,777 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:06] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329186772 HTTP/1.1" 200 - +2026-01-14 02:33:07,393 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329187389 HTTP/1.1" 200 - +2026-01-14 02:33:07,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:07,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:07] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329187764 HTTP/1.1" 200 - +2026-01-14 02:33:08,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:08,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:08] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329188764 HTTP/1.1" 200 - +2026-01-14 02:33:09,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:09,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:09] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329189763 HTTP/1.1" 200 - +2026-01-14 02:33:10,805 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:10,805 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:10] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329190772 HTTP/1.1" 200 - +2026-01-14 02:33:11,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:11,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:11] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329191764 HTTP/1.1" 200 - +2026-01-14 02:33:12,380 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:12] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329192375 HTTP/1.1" 200 - +2026-01-14 02:33:12,769 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:12,771 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:12] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329192765 HTTP/1.1" 200 - +2026-01-14 02:33:13,769 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:13,770 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:13] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329193765 HTTP/1.1" 200 - +2026-01-14 02:33:14,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:14,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:14] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329194764 HTTP/1.1" 200 - +2026-01-14 02:33:15,769 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:15,770 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:15] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329195765 HTTP/1.1" 200 - +2026-01-14 02:33:16,776 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:16,777 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:16] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329196772 HTTP/1.1" 200 - +2026-01-14 02:33:17,388 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:17] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329197383 HTTP/1.1" 200 - +2026-01-14 02:33:17,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:17,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:17] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329197764 HTTP/1.1" 200 - +2026-01-14 02:33:18,775 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:18,776 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:18] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329198770 HTTP/1.1" 200 - +2026-01-14 02:33:19,769 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:19,770 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:19] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329199765 HTTP/1.1" 200 - +2026-01-14 02:33:20,665 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:20] "GET /api/strategies/notifications?limit=50&_t=1768329200659 HTTP/1.1" 200 - +2026-01-14 02:33:20,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:20,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:20] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329200764 HTTP/1.1" 200 - +2026-01-14 02:33:21,780 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:21,786 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:21] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329201765 HTTP/1.1" 200 - +2026-01-14 02:33:22,379 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329202375 HTTP/1.1" 200 - +2026-01-14 02:33:22,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:22,771 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:22] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329202764 HTTP/1.1" 200 - +2026-01-14 02:33:23,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:23,767 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:23] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329203764 HTTP/1.1" 200 - +2026-01-14 02:33:24,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:24,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:24] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329204765 HTTP/1.1" 200 - +2026-01-14 02:33:25,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:25,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:25] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329205765 HTTP/1.1" 200 - +2026-01-14 02:33:26,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:26,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:26] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329206765 HTTP/1.1" 200 - +2026-01-14 02:33:27,391 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329207386 HTTP/1.1" 200 - +2026-01-14 02:33:27,766 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:27,767 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:27] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329207764 HTTP/1.1" 200 - +2026-01-14 02:33:28,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:28,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:28] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329208764 HTTP/1.1" 200 - +2026-01-14 02:33:29,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:29,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:29] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329209764 HTTP/1.1" 200 - +2026-01-14 02:33:30,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:30,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:30] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329210764 HTTP/1.1" 200 - +2026-01-14 02:33:31,158 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:33:31] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:33:31,770 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:31,771 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:31] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329211765 HTTP/1.1" 200 - +2026-01-14 02:33:32,386 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329212381 HTTP/1.1" 200 - +2026-01-14 02:33:32,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:32,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:32] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329212765 HTTP/1.1" 200 - +2026-01-14 02:33:33,781 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:33,782 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:33] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329213777 HTTP/1.1" 200 - +2026-01-14 02:33:34,781 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:34,782 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:34] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329214778 HTTP/1.1" 200 - +2026-01-14 02:33:35,774 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:35,775 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:35] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329215770 HTTP/1.1" 200 - +2026-01-14 02:33:36,780 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:36,782 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:36] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329216776 HTTP/1.1" 200 - +2026-01-14 02:33:37,386 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329217380 HTTP/1.1" 200 - +2026-01-14 02:33:37,772 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:37,773 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:37] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329217768 HTTP/1.1" 200 - +2026-01-14 02:33:38,781 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:38,782 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:38] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329218777 HTTP/1.1" 200 - +2026-01-14 02:33:39,774 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:39,775 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:39] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329219771 HTTP/1.1" 200 - +2026-01-14 02:33:40,783 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:40,784 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:40] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329220779 HTTP/1.1" 200 - +2026-01-14 02:33:41,774 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:41,775 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:41] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329221770 HTTP/1.1" 200 - +2026-01-14 02:33:42,381 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:42] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329222376 HTTP/1.1" 200 - +2026-01-14 02:33:42,783 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:42,784 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:42] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329222779 HTTP/1.1" 200 - +2026-01-14 02:33:43,778 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:43,782 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:43] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329223774 HTTP/1.1" 200 - +2026-01-14 02:33:44,782 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:44,783 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:44] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329224777 HTTP/1.1" 200 - +2026-01-14 02:33:45,781 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:45,782 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:45] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329225777 HTTP/1.1" 200 - +2026-01-14 02:33:46,780 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:46,781 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:46] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329226776 HTTP/1.1" 200 - +2026-01-14 02:33:47,390 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:47] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329227383 HTTP/1.1" 200 - +2026-01-14 02:33:47,780 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:47,783 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:47] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329227776 HTTP/1.1" 200 - +2026-01-14 02:33:48,263 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:48] "GET /api/strategies/notifications?limit=50&_t=1768329228257 HTTP/1.1" 200 - +2026-01-14 02:33:48,771 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:48,772 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:48] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329228766 HTTP/1.1" 200 - +2026-01-14 02:33:49,778 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:49,778 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:49] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329229773 HTTP/1.1" 200 - +2026-01-14 02:33:50,678 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:50] "GET /api/strategies/notifications?limit=50&_t=1768329230672 HTTP/1.1" 200 - +2026-01-14 02:33:50,769 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:50,770 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:50] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329230764 HTTP/1.1" 200 - +2026-01-14 02:33:51,782 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:51,783 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:51] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329231777 HTTP/1.1" 200 - +2026-01-14 02:33:52,384 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329232380 HTTP/1.1" 200 - +2026-01-14 02:33:52,771 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:52,772 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:52] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329232768 HTTP/1.1" 200 - +2026-01-14 02:33:53,776 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:53,776 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:53] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329233772 HTTP/1.1" 200 - +2026-01-14 02:33:54,782 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:54,783 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:54] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329234778 HTTP/1.1" 200 - +2026-01-14 02:33:55,770 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:55,772 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:55] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329235766 HTTP/1.1" 200 - +2026-01-14 02:33:56,780 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:56,780 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:56] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329236776 HTTP/1.1" 200 - +2026-01-14 02:33:57,380 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329237376 HTTP/1.1" 200 - +2026-01-14 02:33:57,783 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:57,783 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:57] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329237779 HTTP/1.1" 200 - +2026-01-14 02:33:58,776 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:58,777 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:58] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329238772 HTTP/1.1" 200 - +2026-01-14 02:33:59,782 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:33:59,783 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:33:59] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329239778 HTTP/1.1" 200 - +2026-01-14 02:34:00,774 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:00,775 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:00] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329240770 HTTP/1.1" 200 - +2026-01-14 02:34:01,210 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:34:01] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:34:01,769 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:01,771 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:01] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329241765 HTTP/1.1" 200 - +2026-01-14 02:34:02,388 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329242383 HTTP/1.1" 200 - +2026-01-14 02:34:02,770 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:02,771 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:02] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329242766 HTTP/1.1" 200 - +2026-01-14 02:34:03,784 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:03,785 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:03] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329243779 HTTP/1.1" 200 - +2026-01-14 02:34:04,782 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:04,782 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:04] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329244778 HTTP/1.1" 200 - +2026-01-14 02:34:05,769 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:05,773 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:05] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329245765 HTTP/1.1" 200 - +2026-01-14 02:34:06,784 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:06,785 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:06] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329246779 HTTP/1.1" 200 - +2026-01-14 02:34:07,391 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329247386 HTTP/1.1" 200 - +2026-01-14 02:34:07,780 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:07,792 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:07] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329247775 HTTP/1.1" 200 - +2026-01-14 02:34:08,770 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:08,770 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:08] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329248766 HTTP/1.1" 200 - +2026-01-14 02:34:09,779 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:09,780 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:09] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329249773 HTTP/1.1" 200 - +2026-01-14 02:34:10,782 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:10,784 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:10] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329250778 HTTP/1.1" 200 - +2026-01-14 02:34:11,778 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:11,779 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:11] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329251773 HTTP/1.1" 200 - +2026-01-14 02:34:12,385 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:12] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329252379 HTTP/1.1" 200 - +2026-01-14 02:34:12,769 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:12,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:12] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329252765 HTTP/1.1" 200 - +2026-01-14 02:34:13,781 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:13,781 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:13] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329253776 HTTP/1.1" 200 - +2026-01-14 02:34:14,769 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:14,770 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:14] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329254765 HTTP/1.1" 200 - +2026-01-14 02:34:15,777 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:15,777 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:15] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329255772 HTTP/1.1" 200 - +2026-01-14 02:34:16,779 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:16,780 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:16] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329256774 HTTP/1.1" 200 - +2026-01-14 02:34:17,382 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:17] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329257376 HTTP/1.1" 200 - +2026-01-14 02:34:17,783 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:17,784 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:17] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329257778 HTTP/1.1" 200 - +2026-01-14 02:34:18,775 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:18,775 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:18] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329258770 HTTP/1.1" 200 - +2026-01-14 02:34:19,769 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:19,770 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:19] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329259765 HTTP/1.1" 200 - +2026-01-14 02:34:20,663 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:20] "GET /api/strategies/notifications?limit=50&_t=1768329260657 HTTP/1.1" 200 - +2026-01-14 02:34:20,769 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:20,770 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:20] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329260765 HTTP/1.1" 200 - +2026-01-14 02:34:21,770 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:21,771 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:21] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329261765 HTTP/1.1" 200 - +2026-01-14 02:34:22,394 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329262390 HTTP/1.1" 200 - +2026-01-14 02:34:22,766 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:22,767 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:22] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329262764 HTTP/1.1" 200 - +2026-01-14 02:34:23,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:23,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:23] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329263764 HTTP/1.1" 200 - +2026-01-14 02:34:24,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:24,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:24] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329264764 HTTP/1.1" 200 - +2026-01-14 02:34:25,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:25,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:25] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329265764 HTTP/1.1" 200 - +2026-01-14 02:34:26,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:26,770 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:26] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329266765 HTTP/1.1" 200 - +2026-01-14 02:34:27,391 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329267386 HTTP/1.1" 200 - +2026-01-14 02:34:27,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:27,767 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:27] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329267764 HTTP/1.1" 200 - +2026-01-14 02:34:28,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:28,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:28] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329268764 HTTP/1.1" 200 - +2026-01-14 02:34:29,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:29,776 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:29] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329269764 HTTP/1.1" 200 - +2026-01-14 02:34:30,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:30,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:30] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329270764 HTTP/1.1" 200 - +2026-01-14 02:34:31,271 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:34:31] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:34:31,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:31,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:31] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329271764 HTTP/1.1" 200 - +2026-01-14 02:34:32,395 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329272389 HTTP/1.1" 200 - +2026-01-14 02:34:32,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:32,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:32] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329272764 HTTP/1.1" 200 - +2026-01-14 02:34:33,769 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:33,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:33] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329273764 HTTP/1.1" 200 - +2026-01-14 02:34:34,769 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:34,770 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:34] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329274764 HTTP/1.1" 200 - +2026-01-14 02:34:35,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:35,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:35] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329275764 HTTP/1.1" 200 - +2026-01-14 02:34:36,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:36,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:36] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329276764 HTTP/1.1" 200 - +2026-01-14 02:34:37,395 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329277390 HTTP/1.1" 200 - +2026-01-14 02:34:37,769 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:37,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:37] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329277765 HTTP/1.1" 200 - +2026-01-14 02:34:38,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:38,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:38] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329278764 HTTP/1.1" 200 - +2026-01-14 02:34:39,769 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:39,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:39] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329279764 HTTP/1.1" 200 - +2026-01-14 02:34:40,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:40,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:40] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329280764 HTTP/1.1" 200 - +2026-01-14 02:34:41,769 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:41,770 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:41] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329281764 HTTP/1.1" 200 - +2026-01-14 02:34:42,382 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:42] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329282375 HTTP/1.1" 200 - +2026-01-14 02:34:42,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:42,772 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:42] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329282764 HTTP/1.1" 200 - +2026-01-14 02:34:43,779 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:43,780 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:43] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329283774 HTTP/1.1" 200 - +2026-01-14 02:34:44,769 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:44,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:44] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329284764 HTTP/1.1" 200 - +2026-01-14 02:34:45,770 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:45,771 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:45] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329285765 HTTP/1.1" 200 - +2026-01-14 02:34:46,778 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:46,779 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:46] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329286772 HTTP/1.1" 200 - +2026-01-14 02:34:47,382 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:47] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329287376 HTTP/1.1" 200 - +2026-01-14 02:34:47,771 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:47,771 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:47] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329287766 HTTP/1.1" 200 - +2026-01-14 02:34:48,266 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:48] "GET /api/strategies/notifications?limit=50&_t=1768329288260 HTTP/1.1" 200 - +2026-01-14 02:34:48,779 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:48,780 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:48] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329288773 HTTP/1.1" 200 - +2026-01-14 02:34:49,783 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:49,827 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:49] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329289778 HTTP/1.1" 200 - +2026-01-14 02:34:50,666 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:50] "GET /api/strategies/notifications?limit=50&_t=1768329290660 HTTP/1.1" 200 - +2026-01-14 02:34:50,774 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:50,775 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:50] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329290769 HTTP/1.1" 200 - +2026-01-14 02:34:51,770 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:51,771 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:51] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329291765 HTTP/1.1" 200 - +2026-01-14 02:34:52,393 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329292390 HTTP/1.1" 200 - +2026-01-14 02:34:52,766 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:52,767 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:52] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329292764 HTTP/1.1" 200 - +2026-01-14 02:34:53,766 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:53,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:53] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329293764 HTTP/1.1" 200 - +2026-01-14 02:34:54,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:54,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:54] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329294764 HTTP/1.1" 200 - +2026-01-14 02:34:55,766 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:55,767 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:55] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329295764 HTTP/1.1" 200 - +2026-01-14 02:34:56,769 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:56,770 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:56] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329296767 HTTP/1.1" 200 - +2026-01-14 02:34:57,387 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329297383 HTTP/1.1" 200 - +2026-01-14 02:34:57,766 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:57,767 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:57] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329297764 HTTP/1.1" 200 - +2026-01-14 02:34:58,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:58,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:58] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329298764 HTTP/1.1" 200 - +2026-01-14 02:34:59,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:34:59,767 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:34:59] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329299764 HTTP/1.1" 200 - +2026-01-14 02:35:00,766 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:00,767 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:00] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329300764 HTTP/1.1" 200 - +2026-01-14 02:35:01,340 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:35:01] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:35:01,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:01,771 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:01] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329301764 HTTP/1.1" 200 - +2026-01-14 02:35:02,390 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329302386 HTTP/1.1" 200 - +2026-01-14 02:35:02,778 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:02,778 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:02] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329302775 HTTP/1.1" 200 - +2026-01-14 02:35:03,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:03,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:03] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329303765 HTTP/1.1" 200 - +2026-01-14 02:35:04,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:04,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:04] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329304764 HTTP/1.1" 200 - +2026-01-14 02:35:05,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:05,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:05] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329305764 HTTP/1.1" 200 - +2026-01-14 02:35:06,773 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:06,775 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:06] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329306769 HTTP/1.1" 200 - +2026-01-14 02:35:07,385 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329307381 HTTP/1.1" 200 - +2026-01-14 02:35:07,773 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:07,774 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:07] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329307770 HTTP/1.1" 200 - +2026-01-14 02:35:08,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:08,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:08] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329308764 HTTP/1.1" 200 - +2026-01-14 02:35:09,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:09,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:09] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329309765 HTTP/1.1" 200 - +2026-01-14 02:35:10,778 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:10,778 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:10] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329310773 HTTP/1.1" 200 - +2026-01-14 02:35:11,781 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:11,781 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:11] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329311777 HTTP/1.1" 200 - +2026-01-14 02:35:12,385 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:12] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329312381 HTTP/1.1" 200 - +2026-01-14 02:35:12,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:12,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:12] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329312764 HTTP/1.1" 200 - +2026-01-14 02:35:13,781 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:13,782 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:13] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329313777 HTTP/1.1" 200 - +2026-01-14 02:35:14,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:14,770 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:14] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329314764 HTTP/1.1" 200 - +2026-01-14 02:35:15,773 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:15,775 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:15] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329315769 HTTP/1.1" 200 - +2026-01-14 02:35:16,780 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:16,794 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:16] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329316776 HTTP/1.1" 200 - +2026-01-14 02:35:17,384 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:17] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329317379 HTTP/1.1" 200 - +2026-01-14 02:35:17,780 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:17,781 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:17] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329317776 HTTP/1.1" 200 - +2026-01-14 02:35:18,770 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:18,771 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:18] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329318766 HTTP/1.1" 200 - +2026-01-14 02:35:19,770 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:19,771 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:19] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329319766 HTTP/1.1" 200 - +2026-01-14 02:35:20,667 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:20] "GET /api/strategies/notifications?limit=50&_t=1768329320662 HTTP/1.1" 200 - +2026-01-14 02:35:20,773 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:20,774 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:20] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329320769 HTTP/1.1" 200 - +2026-01-14 02:35:21,778 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:21,779 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:21] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329321773 HTTP/1.1" 200 - +2026-01-14 02:35:22,476 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329322375 HTTP/1.1" 200 - +2026-01-14 02:35:22,791 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:22,792 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:22] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329322778 HTTP/1.1" 200 - +2026-01-14 02:35:23,774 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:23,776 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:23] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329323770 HTTP/1.1" 200 - +2026-01-14 02:35:24,780 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:24,782 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:24] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329324776 HTTP/1.1" 200 - +2026-01-14 02:35:25,773 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:25,774 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:25] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329325769 HTTP/1.1" 200 - +2026-01-14 02:35:26,783 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:26,784 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:26] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329326776 HTTP/1.1" 200 - +2026-01-14 02:35:27,387 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329327383 HTTP/1.1" 200 - +2026-01-14 02:35:27,777 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:27,778 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:27] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329327773 HTTP/1.1" 200 - +2026-01-14 02:35:28,776 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:28,776 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:28] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329328771 HTTP/1.1" 200 - +2026-01-14 02:35:29,775 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:29,776 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:29] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329329771 HTTP/1.1" 200 - +2026-01-14 02:35:30,778 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:30,779 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:30] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329330774 HTTP/1.1" 200 - +2026-01-14 02:35:31,393 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:35:31] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:35:31,776 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:31,776 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:31] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329331771 HTTP/1.1" 200 - +2026-01-14 02:35:32,395 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329332389 HTTP/1.1" 200 - +2026-01-14 02:35:32,770 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:32,771 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:32] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329332766 HTTP/1.1" 200 - +2026-01-14 02:35:33,778 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:33,790 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:33] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329333773 HTTP/1.1" 200 - +2026-01-14 02:35:34,784 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:34,784 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:34] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329334779 HTTP/1.1" 200 - +2026-01-14 02:35:35,781 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:35,782 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:35] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329335777 HTTP/1.1" 200 - +2026-01-14 02:35:36,770 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:36,770 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:36] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329336766 HTTP/1.1" 200 - +2026-01-14 02:35:37,391 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329337385 HTTP/1.1" 200 - +2026-01-14 02:35:37,777 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:37,778 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:37] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329337772 HTTP/1.1" 200 - +2026-01-14 02:35:38,770 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:38,770 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:38] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329338766 HTTP/1.1" 200 - +2026-01-14 02:35:39,770 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:39,772 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:39] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329339765 HTTP/1.1" 200 - +2026-01-14 02:35:40,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:40,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:40] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329340764 HTTP/1.1" 200 - +2026-01-14 02:35:41,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:41,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:41] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329341764 HTTP/1.1" 200 - +2026-01-14 02:35:42,381 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:42] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329342375 HTTP/1.1" 200 - +2026-01-14 02:35:42,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:42,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:42] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329342764 HTTP/1.1" 200 - +2026-01-14 02:35:43,780 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:43,787 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:43] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329343775 HTTP/1.1" 200 - +2026-01-14 02:35:44,770 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:44,771 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:44] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329344764 HTTP/1.1" 200 - +2026-01-14 02:35:45,769 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:45,770 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:45] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329345764 HTTP/1.1" 200 - +2026-01-14 02:35:46,769 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:46,770 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:46] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329346764 HTTP/1.1" 200 - +2026-01-14 02:35:47,393 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:47] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329347387 HTTP/1.1" 200 - +2026-01-14 02:35:47,769 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:47,770 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:47] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329347764 HTTP/1.1" 200 - +2026-01-14 02:35:48,264 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:48] "GET /api/strategies/notifications?limit=50&_t=1768329348257 HTTP/1.1" 200 - +2026-01-14 02:35:48,769 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:48,770 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:48] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329348764 HTTP/1.1" 200 - +2026-01-14 02:35:49,781 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:49,781 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:49] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329349774 HTTP/1.1" 200 - +2026-01-14 02:35:50,675 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:50] "GET /api/strategies/notifications?limit=50&_t=1768329350669 HTTP/1.1" 200 - +2026-01-14 02:35:50,770 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:50,771 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:50] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329350764 HTTP/1.1" 200 - +2026-01-14 02:35:51,771 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:51,771 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:51] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329351765 HTTP/1.1" 200 - +2026-01-14 02:35:52,385 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329352381 HTTP/1.1" 200 - +2026-01-14 02:35:52,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:52,767 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:52] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329352764 HTTP/1.1" 200 - +2026-01-14 02:35:53,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:53,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:53] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329353764 HTTP/1.1" 200 - +2026-01-14 02:35:54,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:54,767 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:54] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329354764 HTTP/1.1" 200 - +2026-01-14 02:35:55,773 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:55,774 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:55] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329355770 HTTP/1.1" 200 - +2026-01-14 02:35:56,769 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:56,770 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:56] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329356766 HTTP/1.1" 200 - +2026-01-14 02:35:57,391 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329357387 HTTP/1.1" 200 - +2026-01-14 02:35:57,766 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:57,767 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:57] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329357764 HTTP/1.1" 200 - +2026-01-14 02:35:58,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:58,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:58] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329358764 HTTP/1.1" 200 - +2026-01-14 02:35:59,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:35:59,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:35:59] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329359764 HTTP/1.1" 200 - +2026-01-14 02:36:00,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:00,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:00] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329360764 HTTP/1.1" 200 - +2026-01-14 02:36:01,445 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:36:01] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:36:01,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:01,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:01] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329361763 HTTP/1.1" 200 - +2026-01-14 02:36:02,392 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329362388 HTTP/1.1" 200 - +2026-01-14 02:36:02,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:02,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:02] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329362764 HTTP/1.1" 200 - +2026-01-14 02:36:03,772 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:03,773 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:03] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329363769 HTTP/1.1" 200 - +2026-01-14 02:36:04,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:04,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:04] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329364764 HTTP/1.1" 200 - +2026-01-14 02:36:05,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:05,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:05] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329365764 HTTP/1.1" 200 - +2026-01-14 02:36:06,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:06,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:06] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329366764 HTTP/1.1" 200 - +2026-01-14 02:36:07,394 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329367389 HTTP/1.1" 200 - +2026-01-14 02:36:07,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:07,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:07] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329367764 HTTP/1.1" 200 - +2026-01-14 02:36:08,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:08,771 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:08] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329368764 HTTP/1.1" 200 - +2026-01-14 02:36:09,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:09,770 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:09] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329369765 HTTP/1.1" 200 - +2026-01-14 02:36:10,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:10,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:10] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329370764 HTTP/1.1" 200 - +2026-01-14 02:36:11,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:11,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:11] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329371764 HTTP/1.1" 200 - +2026-01-14 02:36:12,385 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:12] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329372380 HTTP/1.1" 200 - +2026-01-14 02:36:12,773 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:12,774 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:12] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329372769 HTTP/1.1" 200 - +2026-01-14 02:36:13,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:13,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:13] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329373764 HTTP/1.1" 200 - +2026-01-14 02:36:14,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:14,770 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:14] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329374764 HTTP/1.1" 200 - +2026-01-14 02:36:15,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:15,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:15] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329375764 HTTP/1.1" 200 - +2026-01-14 02:36:16,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:16,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:16] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329376764 HTTP/1.1" 200 - +2026-01-14 02:36:17,387 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:17] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329377381 HTTP/1.1" 200 - +2026-01-14 02:36:17,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:17,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:17] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329377764 HTTP/1.1" 200 - +2026-01-14 02:36:18,769 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:18,774 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:18] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329378764 HTTP/1.1" 200 - +2026-01-14 02:36:19,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:19,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:19] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329379764 HTTP/1.1" 200 - +2026-01-14 02:36:20,673 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:20] "GET /api/strategies/notifications?limit=50&_t=1768329380667 HTTP/1.1" 200 - +2026-01-14 02:36:20,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:20,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:20] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329380763 HTTP/1.1" 200 - +2026-01-14 02:36:21,781 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:21,781 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:21] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329381774 HTTP/1.1" 200 - +2026-01-14 02:36:22,382 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329382378 HTTP/1.1" 200 - +2026-01-14 02:36:22,772 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:22,773 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:22] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329382770 HTTP/1.1" 200 - +2026-01-14 02:36:23,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:23,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:23] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329383764 HTTP/1.1" 200 - +2026-01-14 02:36:24,766 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:24,775 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:24] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329384764 HTTP/1.1" 200 - +2026-01-14 02:36:25,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:25,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:25] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329385764 HTTP/1.1" 200 - +2026-01-14 02:36:26,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:26,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:26] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329386765 HTTP/1.1" 200 - +2026-01-14 02:36:27,387 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329387382 HTTP/1.1" 200 - +2026-01-14 02:36:27,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:27,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:27] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329387764 HTTP/1.1" 200 - +2026-01-14 02:36:28,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:28,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:28] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329388764 HTTP/1.1" 200 - +2026-01-14 02:36:29,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:29,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:29] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329389765 HTTP/1.1" 200 - +2026-01-14 02:36:30,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:30,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:30] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329390764 HTTP/1.1" 200 - +2026-01-14 02:36:31,498 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:36:31] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:36:31,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:31,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:31] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329391765 HTTP/1.1" 200 - +2026-01-14 02:36:32,384 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329392379 HTTP/1.1" 200 - +2026-01-14 02:36:32,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:32,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:32] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329392765 HTTP/1.1" 200 - +2026-01-14 02:36:33,773 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:33,774 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:33] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329393769 HTTP/1.1" 200 - +2026-01-14 02:36:34,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:34,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:34] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329394765 HTTP/1.1" 200 - +2026-01-14 02:36:35,779 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:35,781 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:35] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329395774 HTTP/1.1" 200 - +2026-01-14 02:36:36,781 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:36,782 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:36] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329396777 HTTP/1.1" 200 - +2026-01-14 02:36:37,388 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329397383 HTTP/1.1" 200 - +2026-01-14 02:36:37,774 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:37,774 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:37] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329397770 HTTP/1.1" 200 - +2026-01-14 02:36:38,770 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:38,770 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:38] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329398765 HTTP/1.1" 200 - +2026-01-14 02:36:39,775 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:39,776 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:39] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329399771 HTTP/1.1" 200 - +2026-01-14 02:36:40,771 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:40,772 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:40] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329400767 HTTP/1.1" 200 - +2026-01-14 02:36:41,782 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:41,783 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:41] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329401778 HTTP/1.1" 200 - +2026-01-14 02:36:42,383 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:42] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329402377 HTTP/1.1" 200 - +2026-01-14 02:36:42,774 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:42,775 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:42] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329402770 HTTP/1.1" 200 - +2026-01-14 02:36:43,770 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:43,771 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:43] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329403766 HTTP/1.1" 200 - +2026-01-14 02:36:44,770 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:44,770 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:44] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329404766 HTTP/1.1" 200 - +2026-01-14 02:36:45,774 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:45,775 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:45] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329405770 HTTP/1.1" 200 - +2026-01-14 02:36:46,771 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:46,772 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:46] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329406766 HTTP/1.1" 200 - +2026-01-14 02:36:47,389 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:47] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329407383 HTTP/1.1" 200 - +2026-01-14 02:36:47,777 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:47,778 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:47] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329407773 HTTP/1.1" 200 - +2026-01-14 02:36:48,271 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:48] "GET /api/strategies/notifications?limit=50&_t=1768329408259 HTTP/1.1" 200 - +2026-01-14 02:36:48,774 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:48,776 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:48] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329408768 HTTP/1.1" 200 - +2026-01-14 02:36:49,779 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:49,780 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:49] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329409774 HTTP/1.1" 200 - +2026-01-14 02:36:50,677 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:50] "GET /api/strategies/notifications?limit=50&_t=1768329410671 HTTP/1.1" 200 - +2026-01-14 02:36:50,769 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:50,770 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:50] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329410765 HTTP/1.1" 200 - +2026-01-14 02:36:51,779 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:51,780 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:51] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329411773 HTTP/1.1" 200 - +2026-01-14 02:36:52,393 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329412389 HTTP/1.1" 200 - +2026-01-14 02:36:52,782 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:52,783 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:52] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329412779 HTTP/1.1" 200 - +2026-01-14 02:36:53,769 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:53,773 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:53] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329413766 HTTP/1.1" 200 - +2026-01-14 02:36:54,775 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:54,775 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:54] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329414771 HTTP/1.1" 200 - +2026-01-14 02:36:55,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:55,770 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:55] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329415765 HTTP/1.1" 200 - +2026-01-14 02:36:56,782 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:56,782 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:56] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329416778 HTTP/1.1" 200 - +2026-01-14 02:36:57,386 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329417382 HTTP/1.1" 200 - +2026-01-14 02:36:57,770 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:57,771 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:57] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329417768 HTTP/1.1" 200 - +2026-01-14 02:36:58,778 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:58,778 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:58] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329418773 HTTP/1.1" 200 - +2026-01-14 02:36:59,770 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:36:59,771 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:36:59] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329419767 HTTP/1.1" 200 - +2026-01-14 02:37:00,773 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:00,774 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:00] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329420769 HTTP/1.1" 200 - +2026-01-14 02:37:01,539 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:37:01] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:37:01,776 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:01,778 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:01] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329421772 HTTP/1.1" 200 - +2026-01-14 02:37:02,379 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329422374 HTTP/1.1" 200 - +2026-01-14 02:37:02,781 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:02,782 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:02] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329422776 HTTP/1.1" 200 - +2026-01-14 02:37:03,771 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:03,773 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:03] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329423767 HTTP/1.1" 200 - +2026-01-14 02:37:04,776 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:04,777 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:04] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329424772 HTTP/1.1" 200 - +2026-01-14 02:37:05,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:05,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:05] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329425764 HTTP/1.1" 200 - +2026-01-14 02:37:06,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:06,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:06] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329426764 HTTP/1.1" 200 - +2026-01-14 02:37:07,395 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329427389 HTTP/1.1" 200 - +2026-01-14 02:37:07,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:07,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:07] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329427764 HTTP/1.1" 200 - +2026-01-14 02:37:08,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:08,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:08] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329428764 HTTP/1.1" 200 - +2026-01-14 02:37:09,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:09,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:09] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329429764 HTTP/1.1" 200 - +2026-01-14 02:37:10,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:10,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:10] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329430764 HTTP/1.1" 200 - +2026-01-14 02:37:11,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:11,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:11] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329431764 HTTP/1.1" 200 - +2026-01-14 02:37:12,388 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:12] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329432382 HTTP/1.1" 200 - +2026-01-14 02:37:12,772 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:12,774 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:12] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329432768 HTTP/1.1" 200 - +2026-01-14 02:37:13,769 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:13,770 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:13] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329433764 HTTP/1.1" 200 - +2026-01-14 02:37:14,769 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:14,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:14] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329434764 HTTP/1.1" 200 - +2026-01-14 02:37:15,775 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:15,775 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:15] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329435770 HTTP/1.1" 200 - +2026-01-14 02:37:16,782 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:16,783 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:16] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329436777 HTTP/1.1" 200 - +2026-01-14 02:37:17,390 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:17] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329437384 HTTP/1.1" 200 - +2026-01-14 02:37:17,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:17,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:17] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329437764 HTTP/1.1" 200 - +2026-01-14 02:37:18,775 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:18,776 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:18] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329438770 HTTP/1.1" 200 - +2026-01-14 02:37:19,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:19,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:19] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329439764 HTTP/1.1" 200 - +2026-01-14 02:37:20,676 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:20] "GET /api/strategies/notifications?limit=50&_t=1768329440670 HTTP/1.1" 200 - +2026-01-14 02:37:20,782 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:20,783 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:20] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329440778 HTTP/1.1" 200 - +2026-01-14 02:37:21,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:21,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:21] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329441763 HTTP/1.1" 200 - +2026-01-14 02:37:22,394 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329442389 HTTP/1.1" 200 - +2026-01-14 02:37:22,783 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:22,784 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:22] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329442780 HTTP/1.1" 200 - +2026-01-14 02:37:23,773 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:23,773 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:23] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329443770 HTTP/1.1" 200 - +2026-01-14 02:37:24,769 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:24,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:24] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329444765 HTTP/1.1" 200 - +2026-01-14 02:37:25,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:25,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:25] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329445764 HTTP/1.1" 200 - +2026-01-14 02:37:26,782 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:26,782 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:26] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329446777 HTTP/1.1" 200 - +2026-01-14 02:37:27,386 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329447380 HTTP/1.1" 200 - +2026-01-14 02:37:27,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:27,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:27] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329447764 HTTP/1.1" 200 - +2026-01-14 02:37:28,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:28,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:28] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329448764 HTTP/1.1" 200 - +2026-01-14 02:37:29,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:29,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:29] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329449764 HTTP/1.1" 200 - +2026-01-14 02:37:30,778 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:30,778 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:30] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329450774 HTTP/1.1" 200 - +2026-01-14 02:37:31,579 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:37:31] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:37:31,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:31,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:31] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329451764 HTTP/1.1" 200 - +2026-01-14 02:37:32,390 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:32] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329452385 HTTP/1.1" 200 - +2026-01-14 02:37:32,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:32,770 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:32] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329452764 HTTP/1.1" 200 - +2026-01-14 02:37:33,769 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:33,780 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:33] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329453764 HTTP/1.1" 200 - +2026-01-14 02:37:34,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:34,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:34] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329454764 HTTP/1.1" 200 - +2026-01-14 02:37:35,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:35,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:35] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329455764 HTTP/1.1" 200 - +2026-01-14 02:37:36,769 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:36,770 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:36] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329456765 HTTP/1.1" 200 - +2026-01-14 02:37:37,386 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:37] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329457381 HTTP/1.1" 200 - +2026-01-14 02:37:37,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:37,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:37] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329457763 HTTP/1.1" 200 - +2026-01-14 02:37:38,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:38,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:38] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329458764 HTTP/1.1" 200 - +2026-01-14 02:37:39,769 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:39,770 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:39] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329459764 HTTP/1.1" 200 - +2026-01-14 02:37:40,769 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:40,770 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:40] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329460764 HTTP/1.1" 200 - +2026-01-14 02:37:41,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:41,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:41] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329461764 HTTP/1.1" 200 - +2026-01-14 02:37:42,385 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:42] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329462379 HTTP/1.1" 200 - +2026-01-14 02:37:42,769 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:42,989 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:42] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329462764 HTTP/1.1" 200 - +2026-01-14 02:37:43,770 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:43,774 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:43] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329463764 HTTP/1.1" 200 - +2026-01-14 02:37:44,777 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:44,778 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:44] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329464773 HTTP/1.1" 200 - +2026-01-14 02:37:45,769 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:45,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:45] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329465764 HTTP/1.1" 200 - +2026-01-14 02:37:46,769 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:46,772 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:46] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329466764 HTTP/1.1" 200 - +2026-01-14 02:37:47,394 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:47] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329467389 HTTP/1.1" 200 - +2026-01-14 02:37:47,785 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:47,786 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:47] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329467779 HTTP/1.1" 200 - +2026-01-14 02:37:48,267 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:48] "GET /api/strategies/notifications?limit=50&_t=1768329468262 HTTP/1.1" 200 - +2026-01-14 02:37:48,781 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:48,782 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:48] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329468776 HTTP/1.1" 200 - +2026-01-14 02:37:49,770 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:49,770 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:49] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329469764 HTTP/1.1" 200 - +2026-01-14 02:37:50,678 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:50] "GET /api/strategies/notifications?limit=50&_t=1768329470672 HTTP/1.1" 200 - +2026-01-14 02:37:50,784 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:50,785 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:50] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329470779 HTTP/1.1" 200 - +2026-01-14 02:37:51,769 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:51,770 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:51] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329471764 HTTP/1.1" 200 - +2026-01-14 02:37:52,391 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:52] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329472387 HTTP/1.1" 200 - +2026-01-14 02:37:52,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:52,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:52] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329472764 HTTP/1.1" 200 - +2026-01-14 02:37:53,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:53,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:53] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329473765 HTTP/1.1" 200 - +2026-01-14 02:37:54,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:54,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:54] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329474764 HTTP/1.1" 200 - +2026-01-14 02:37:55,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:55,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:55] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329475764 HTTP/1.1" 200 - +2026-01-14 02:37:56,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:56,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:56] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329476764 HTTP/1.1" 200 - +2026-01-14 02:37:57,394 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:57] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329477388 HTTP/1.1" 200 - +2026-01-14 02:37:57,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:57,768 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:57] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329477765 HTTP/1.1" 200 - +2026-01-14 02:37:58,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:58,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:58] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329478764 HTTP/1.1" 200 - +2026-01-14 02:37:59,767 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:37:59,767 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:37:59] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329479764 HTTP/1.1" 200 - +2026-01-14 02:38:00,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:38:00,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:00] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329480765 HTTP/1.1" 200 - +2026-01-14 02:38:01,636 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:38:01] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:38:01,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:38:01,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:01] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329481765 HTTP/1.1" 200 - +2026-01-14 02:38:02,381 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:02] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329482376 HTTP/1.1" 200 - +2026-01-14 02:38:02,766 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:38:02,767 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:02] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329482763 HTTP/1.1" 200 - +2026-01-14 02:38:03,768 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:38:03,769 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:03] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329483765 HTTP/1.1" 200 - +2026-01-14 02:38:04,782 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:38:04,783 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:04] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329484775 HTTP/1.1" 200 - +2026-01-14 02:38:05,783 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:38:05,783 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:05] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329485779 HTTP/1.1" 200 - +2026-01-14 02:38:06,501 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:06] "GET /api/strategies/notifications?limit=50&_t=1768329486493 HTTP/1.1" 200 - +2026-01-14 02:38:06,509 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:06] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768329486493 HTTP/1.1" 200 - +2026-01-14 02:38:06,510 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:06] "GET /api/dashboard/summary?_t=1768329486493 HTTP/1.1" 200 - +2026-01-14 02:38:06,511 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:06] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768329486493 HTTP/1.1" 200 - +2026-01-14 02:38:08,026 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:08] "GET /api/market/config?_t=1768329488008 HTTP/1.1" 200 - +2026-01-14 02:38:08,027 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:08] "GET /api/user/info?_t=1768329488008 HTTP/1.1" 200 - +2026-01-14 02:38:08,029 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:08] "GET /api/market/watchlist/get?userid=1&_t=1768329488008 HTTP/1.1" 200 - +2026-01-14 02:38:08,074 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:08] "GET /api/market/types?_t=1768329488065 HTTP/1.1" 200 - +2026-01-14 02:38:08,076 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:08] "GET /api/market/watchlist/get?userid=3&_t=1768329488067 HTTP/1.1" 200 - +2026-01-14 02:38:08,808 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:08] "GET /api/market/types?_t=1768329488797 HTTP/1.1" 200 - +2026-01-14 02:38:08,811 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:08] "GET /api/user/info?_t=1768329488797 HTTP/1.1" 200 - +2026-01-14 02:38:08,814 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:08] "GET /api/market/watchlist/get?userid=1&_t=1768329488797 HTTP/1.1" 200 - +2026-01-14 02:38:08,816 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:08] "GET /api/indicator/getIndicators?userid=1&_t=1768329488797 HTTP/1.1" 200 - +2026-01-14 02:38:08,843 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:08] "GET /api/market/watchlist/get?userid=3&_t=1768329488827 HTTP/1.1" 200 - +2026-01-14 02:38:08,844 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:08] "GET /api/indicator/getIndicators?userid=3&_t=1768329488827 HTTP/1.1" 200 - +2026-01-14 02:38:08,852 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=500 +2026-01-14 02:38:08,909 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:08] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AAPL"}]&_t=1768329488075 HTTP/1.1" 200 - +2026-01-14 02:38:08,969 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:08] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AAPL"}]&_t=1768329488089 HTTP/1.1" 200 - +2026-01-14 02:38:09,148 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:09] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=500&_t=1768329488845 HTTP/1.1" 200 - +2026-01-14 02:38:10,620 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:38:10,621 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:10] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329490615 HTTP/1.1" 200 - +2026-01-14 02:38:11,617 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:38:11,618 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:11] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768329491613 HTTP/1.1" 200 - +2026-01-14 02:38:11,898 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:11] "GET /api/dashboard/summary?_t=1768329491881 HTTP/1.1" 200 - +2026-01-14 02:38:11,899 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:11] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768329491881 HTTP/1.1" 200 - +2026-01-14 02:38:11,900 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:11] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768329491881 HTTP/1.1" 200 - +2026-01-14 02:38:13,399 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:13] "GET /api/market/config?_t=1768329493191 HTTP/1.1" 200 - +2026-01-14 02:38:13,403 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:13] "GET /api/user/info?_t=1768329493191 HTTP/1.1" 200 - +2026-01-14 02:38:13,405 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:13] "GET /api/market/watchlist/get?userid=1&_t=1768329493191 HTTP/1.1" 200 - +2026-01-14 02:38:13,455 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:13] "GET /api/market/types?_t=1768329493438 HTTP/1.1" 200 - +2026-01-14 02:38:13,457 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:13] "GET /api/market/watchlist/get?userid=3&_t=1768329493440 HTTP/1.1" 200 - +2026-01-14 02:38:13,460 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:13] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AAPL"}]&_t=1768329493447 HTTP/1.1" 200 - +2026-01-14 02:38:13,485 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:13] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AAPL"}]&_t=1768329493479 HTTP/1.1" 200 - +2026-01-14 02:38:13,738 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768329493720 HTTP/1.1" 200 - +2026-01-14 02:38:13,739 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:13] "GET /api/dashboard/summary?_t=1768329493720 HTTP/1.1" 200 - +2026-01-14 02:38:13,740 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:13] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768329493720 HTTP/1.1" 200 - +2026-01-14 02:38:18,710 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768329498702 HTTP/1.1" 200 - +2026-01-14 02:38:19,103 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:19] "GET /api/users/list?page=1&page_size=10&_t=1768329499096 HTTP/1.1" 403 - +2026-01-14 02:38:19,104 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:19] "GET /api/users/roles?_t=1768329499096 HTTP/1.1" 403 - +2026-01-14 02:38:20,716 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:20] "GET /api/settings/schema?_t=1768329500706 HTTP/1.1" 200 - +2026-01-14 02:38:20,723 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:20] "GET /api/settings/values?_t=1768329500706 HTTP/1.1" 200 - +2026-01-14 02:38:31,682 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:38:31] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:38:36,482 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:36] "GET /api/strategies/notifications?limit=50&_t=1768329516476 HTTP/1.1" 200 - +2026-01-14 02:38:48,261 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:38:48] "GET /api/strategies/notifications?limit=50&_t=1768329528255 HTTP/1.1" 200 - +2026-01-14 02:39:01,738 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:39:01] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:39:06,480 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:39:06] "GET /api/strategies/notifications?limit=50&_t=1768329546475 HTTP/1.1" 200 - +2026-01-14 02:39:31,787 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:39:31] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:39:36,489 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:39:36] "GET /api/strategies/notifications?limit=50&_t=1768329576483 HTTP/1.1" 200 - +2026-01-14 02:39:41,151 - app - INFO - Database type: postgresql +2026-01-14 02:39:41,163 - app.utils.db_postgres - INFO - PostgreSQL connection pool created: postgres:5432/quantdinger +2026-01-14 02:39:41,163 - app.utils.db - INFO - PostgreSQL connection verified +2026-01-14 02:39:42,033 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-14 02:39:42,033 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-14 02:39:42,038 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-14 02:39:42,038 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-14 02:39:42,306 - app.services.trading_executor - INFO - Adding highest_price column to qd_strategy_positions (SQLite)... +2026-01-14 02:39:42,307 - app.utils.db_postgres - ERROR - PostgreSQL operation error: current transaction is aborted, commands ignored until end of transaction block + +2026-01-14 02:39:42,307 - app.services.trading_executor - ERROR - Failed to check/ensure DB columns: current transaction is aborted, commands ignored until end of transaction block + +2026-01-14 02:39:42,308 - app.services.strategy - INFO - Found 0 running strategies: [] +2026-01-14 02:39:42,308 - app - INFO - No running strategies to restore. +2026-01-14 02:39:42,315 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://172.18.0.3:5000 +2026-01-14 02:39:42,315 - werkzeug - INFO - Press CTRL+C to quit +2026-01-14 02:39:48,265 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:39:48] "GET /api/strategies/notifications?limit=50&_t=1768329588257 HTTP/1.1" 200 - +2026-01-14 02:40:06,481 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:40:06] "GET /api/strategies/notifications?limit=50&_t=1768329606473 HTTP/1.1" 200 - +2026-01-14 02:40:08,681 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:40:08] "GET /api/settings/schema?_t=1768329608675 HTTP/1.1" 403 - +2026-01-14 02:40:08,683 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:40:08] "GET /api/strategies/notifications?limit=50&_t=1768329608675 HTTP/1.1" 200 - +2026-01-14 02:40:08,684 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:40:08] "GET /api/settings/values?_t=1768329608675 HTTP/1.1" 403 - +2026-01-14 02:40:10,933 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:40:10] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:40:14,807 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:40:14] "POST /api/user/logout HTTP/1.1" 200 - +2026-01-14 02:40:20,999 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:40:20] "POST /api/user/login HTTP/1.1" 401 - +2026-01-14 02:40:27,783 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:40:27] "POST /api/user/login HTTP/1.1" 200 - +2026-01-14 02:40:28,022 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:40:28] "GET /api/strategies/notifications?limit=50&_t=1768329627974 HTTP/1.1" 200 - +2026-01-14 02:40:28,027 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:40:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768329627974 HTTP/1.1" 200 - +2026-01-14 02:40:28,033 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:40:28] "GET /api/dashboard/summary?_t=1768329627974 HTTP/1.1" 200 - +2026-01-14 02:40:28,036 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:40:28] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768329627974 HTTP/1.1" 200 - +2026-01-14 02:40:30,218 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:40:30] "GET /api/settings/values?_t=1768329630211 HTTP/1.1" 403 - +2026-01-14 02:40:30,222 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:40:30] "GET /api/settings/schema?_t=1768329630211 HTTP/1.1" 403 - +2026-01-14 02:40:31,037 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:40:31] "GET /api/users/roles?_t=1768329631029 HTTP/1.1" 403 - +2026-01-14 02:40:31,040 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:40:31] "GET /api/users/list?page=1&page_size=10&_t=1768329631029 HTTP/1.1" 403 - +2026-01-14 02:40:32,848 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:40:32] "GET /api/users/list?page=1&page_size=10&_t=1768329632781 HTTP/1.1" 403 - +2026-01-14 02:40:32,849 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:40:32] "GET /api/strategies/notifications?limit=50&_t=1768329632781 HTTP/1.1" 200 - +2026-01-14 02:40:32,851 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:40:32] "GET /api/users/roles?_t=1768329632781 HTTP/1.1" 403 - +2026-01-14 02:40:34,085 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:40:34] "GET /api/users/profile?_t=1768329634076 HTTP/1.1" 200 - +2026-01-14 02:40:36,132 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:40:36] "GET /api/settings/values?_t=1768329636126 HTTP/1.1" 403 - +2026-01-14 02:40:36,134 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:40:36] "GET /api/settings/schema?_t=1768329636126 HTTP/1.1" 403 - +2026-01-14 02:40:37,042 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:40:37] "GET /api/users/list?page=1&page_size=10&_t=1768329637034 HTTP/1.1" 403 - +2026-01-14 02:40:37,043 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:40:37] "GET /api/users/roles?_t=1768329637034 HTTP/1.1" 403 - +2026-01-14 02:40:37,729 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:40:37] "GET /api/users/profile?_t=1768329637724 HTTP/1.1" 200 - +2026-01-14 02:40:41,010 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:40:41] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:40:47,148 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:40:47] "GET /api/users/profile?_t=1768329647142 HTTP/1.1" 200 - +2026-01-14 02:40:48,178 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:40:48] "GET /api/users/profile?_t=1768329648172 HTTP/1.1" 200 - +2026-01-14 02:40:48,262 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:40:48] "GET /api/strategies/notifications?limit=50&_t=1768329648256 HTTP/1.1" 200 - +2026-01-14 02:40:51,661 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:40:51] "GET /api/users/profile?_t=1768329651649 HTTP/1.1" 200 - +2026-01-14 02:41:02,759 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:41:02] "GET /api/strategies/notifications?limit=50&_t=1768329662755 HTTP/1.1" 200 - +2026-01-14 02:41:11,066 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:41:11] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:41:32,758 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:41:32] "GET /api/strategies/notifications?limit=50&_t=1768329692752 HTTP/1.1" 200 - +2026-01-14 02:41:41,120 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:41:41] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:41:48,266 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:41:48] "GET /api/strategies/notifications?limit=50&_t=1768329708261 HTTP/1.1" 200 - +2026-01-14 02:42:02,761 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:42:02] "GET /api/strategies/notifications?limit=50&_t=1768329722756 HTTP/1.1" 200 - +2026-01-14 02:42:11,189 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:42:11] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:42:32,761 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:42:32] "GET /api/strategies/notifications?limit=50&_t=1768329752756 HTTP/1.1" 200 - +2026-01-14 02:42:41,241 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:42:41] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:42:48,266 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:42:48] "GET /api/strategies/notifications?limit=50&_t=1768329768261 HTTP/1.1" 200 - +2026-01-14 02:43:02,756 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:43:02] "GET /api/strategies/notifications?limit=50&_t=1768329782751 HTTP/1.1" 200 - +2026-01-14 02:43:11,296 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:43:11] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:43:32,753 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:43:32] "GET /api/strategies/notifications?limit=50&_t=1768329812748 HTTP/1.1" 200 - +2026-01-14 02:43:41,348 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:43:41] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:43:48,257 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:43:48] "GET /api/strategies/notifications?limit=50&_t=1768329828252 HTTP/1.1" 200 - +2026-01-14 02:44:02,765 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:44:02] "GET /api/strategies/notifications?limit=50&_t=1768329842760 HTTP/1.1" 200 - +2026-01-14 02:44:11,400 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:44:11] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:44:32,766 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:44:32] "GET /api/strategies/notifications?limit=50&_t=1768329872761 HTTP/1.1" 200 - +2026-01-14 02:44:41,462 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:44:41] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:44:48,260 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:44:48] "GET /api/strategies/notifications?limit=50&_t=1768329888253 HTTP/1.1" 200 - +2026-01-14 02:45:02,756 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:45:02] "GET /api/strategies/notifications?limit=50&_t=1768329902751 HTTP/1.1" 200 - +2026-01-14 02:45:11,525 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:45:11] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:45:32,758 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:45:32] "GET /api/strategies/notifications?limit=50&_t=1768329932753 HTTP/1.1" 200 - +2026-01-14 02:45:41,573 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:45:41] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:45:48,269 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:45:48] "GET /api/strategies/notifications?limit=50&_t=1768329948262 HTTP/1.1" 200 - +2026-01-14 02:46:02,761 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:46:02] "GET /api/strategies/notifications?limit=50&_t=1768329962756 HTTP/1.1" 200 - +2026-01-14 02:46:11,626 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:46:11] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:46:32,755 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:46:32] "GET /api/strategies/notifications?limit=50&_t=1768329992751 HTTP/1.1" 200 - +2026-01-14 02:46:41,666 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:46:41] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:46:48,271 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:46:48] "GET /api/strategies/notifications?limit=50&_t=1768330008254 HTTP/1.1" 200 - +2026-01-14 02:47:02,765 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:47:02] "GET /api/strategies/notifications?limit=50&_t=1768330022760 HTTP/1.1" 200 - +2026-01-14 02:47:11,718 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:47:11] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:47:27,576 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:47:27] "GET /api/dashboard/summary?_t=1768330047553 HTTP/1.1" 200 - +2026-01-14 02:47:27,578 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:47:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768330047553 HTTP/1.1" 200 - +2026-01-14 02:47:27,580 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:47:27] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768330047553 HTTP/1.1" 200 - +2026-01-14 02:47:28,604 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:47:28] "GET /api/market/config?_t=1768330048578 HTTP/1.1" 200 - +2026-01-14 02:47:28,608 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:47:28] "GET /api/user/info?_t=1768330048578 HTTP/1.1" 200 - +2026-01-14 02:47:28,611 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:47:28] "GET /api/market/watchlist/get?userid=1&_t=1768330048578 HTTP/1.1" 200 - +2026-01-14 02:47:28,697 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:47:28] "GET /api/market/types?_t=1768330048683 HTTP/1.1" 200 - +2026-01-14 02:47:28,699 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:47:28] "GET /api/market/watchlist/get?userid=3&_t=1768330048685 HTTP/1.1" 200 - +2026-01-14 02:47:28,897 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-14 02:47:28,897 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-14 02:47:29,869 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:47:29] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AAPL"}]&_t=1768330048730 HTTP/1.1" 200 - +2026-01-14 02:47:29,876 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:47:29] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AAPL"}]&_t=1768330048693 HTTP/1.1" 200 - +2026-01-14 02:47:31,229 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:47:31] "GET /api/market/types?_t=1768330051217 HTTP/1.1" 200 - +2026-01-14 02:47:31,232 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:47:31] "GET /api/user/info?_t=1768330051217 HTTP/1.1" 200 - +2026-01-14 02:47:31,235 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:47:31] "GET /api/market/watchlist/get?userid=1&_t=1768330051217 HTTP/1.1" 200 - +2026-01-14 02:47:31,236 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:47:31] "GET /api/indicator/getIndicators?userid=1&_t=1768330051217 HTTP/1.1" 200 - +2026-01-14 02:47:31,269 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:47:31] "GET /api/market/watchlist/get?userid=3&_t=1768330051262 HTTP/1.1" 200 - +2026-01-14 02:47:31,270 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:47:31] "GET /api/indicator/getIndicators?userid=3&_t=1768330051262 HTTP/1.1" 200 - +2026-01-14 02:47:31,276 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=500 +2026-01-14 02:47:32,689 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:47:32] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=500&_t=1768330051271 HTTP/1.1" 200 - +2026-01-14 02:47:33,127 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:47:33] "GET /api/strategies/notifications?limit=50&_t=1768330053118 HTTP/1.1" 200 - +2026-01-14 02:47:34,123 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:47:34,329 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:47:34] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330054118 HTTP/1.1" 200 - +2026-01-14 02:47:35,114 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:47:35,114 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:47:35] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330055109 HTTP/1.1" 200 - +2026-01-14 02:47:36,118 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:47:36,120 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:47:36] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330056114 HTTP/1.1" 200 - +2026-01-14 02:47:37,118 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 02:47:37,119 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:47:37] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330057113 HTTP/1.1" 200 - +2026-01-14 02:47:37,531 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:47:37] "GET /api/strategies?_t=1768330057524 HTTP/1.1" 200 - +2026-01-14 02:47:40,913 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:47:40] "GET /api/market/watchlist/get?userid=1&_t=1768330060902 HTTP/1.1" 200 - +2026-01-14 02:47:40,914 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:47:40] "GET /api/indicator/getIndicators?userid=3&_t=1768330060902 HTTP/1.1" 200 - +2026-01-14 02:47:40,915 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:47:40] "GET /api/credentials/list?user_id=1&_t=1768330060902 HTTP/1.1" 200 - +2026-01-14 02:47:41,799 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:47:41] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:47:46,397 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:47:46] "GET /api/indicator/getIndicators?userid=3&_t=1768330066390 HTTP/1.1" 200 - +2026-01-14 02:47:46,397 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:47:46] "GET /api/market/watchlist/get?userid=1&_t=1768330066390 HTTP/1.1" 200 - +2026-01-14 02:47:46,398 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:47:46] "GET /api/credentials/list?user_id=1&_t=1768330066390 HTTP/1.1" 200 - +2026-01-14 02:47:48,271 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:47:48] "GET /api/strategies/notifications?limit=50&_t=1768330068262 HTTP/1.1" 200 - +2026-01-14 02:47:48,870 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:47:48] "GET /api/market/types?_t=1768330068861 HTTP/1.1" 200 - +2026-01-14 02:47:48,884 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:47:48] "GET /api/portfolio/positions?_t=1768330068861 HTTP/1.1" 200 - +2026-01-14 02:47:48,884 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:47:48] "GET /api/portfolio/monitors?_t=1768330068861 HTTP/1.1" 200 - +2026-01-14 02:47:48,886 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:47:48] "GET /api/portfolio/summary?_t=1768330068861 HTTP/1.1" 200 - +2026-01-14 02:47:48,888 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:47:48] "GET /api/portfolio/alerts?_t=1768330068862 HTTP/1.1" 200 - +2026-01-14 02:47:48,888 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:47:48] "GET /api/portfolio/groups?_t=1768330068862 HTTP/1.1" 200 - +2026-01-14 02:48:02,764 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:48:02] "GET /api/strategies/notifications?limit=50&_t=1768330082757 HTTP/1.1" 200 - +2026-01-14 02:48:11,861 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:48:11] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:48:18,855 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:48:18] "GET /api/portfolio/positions?refresh=1&_t=1768330098849 HTTP/1.1" 200 - +2026-01-14 02:48:18,856 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:48:18] "GET /api/portfolio/summary?refresh=1&_t=1768330098849 HTTP/1.1" 200 - +2026-01-14 02:48:32,763 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:48:32] "GET /api/strategies/notifications?limit=50&_t=1768330112757 HTTP/1.1" 200 - +2026-01-14 02:48:41,903 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:48:41] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:48:43,822 - app - INFO - Database type: postgresql +2026-01-14 02:48:43,833 - app.utils.db_postgres - INFO - PostgreSQL connection pool created: postgres:5432/quantdinger +2026-01-14 02:48:43,834 - app.utils.db - INFO - PostgreSQL connection verified +2026-01-14 02:48:44,493 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-14 02:48:44,494 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-14 02:48:44,498 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-14 02:48:44,498 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-14 02:48:44,676 - app.services.trading_executor - INFO - Adding highest_price column to qd_strategy_positions (SQLite)... +2026-01-14 02:48:44,677 - app.utils.db_postgres - ERROR - PostgreSQL operation error: current transaction is aborted, commands ignored until end of transaction block + +2026-01-14 02:48:44,677 - app.services.trading_executor - ERROR - Failed to check/ensure DB columns: current transaction is aborted, commands ignored until end of transaction block + +2026-01-14 02:48:44,678 - app.services.strategy - INFO - Found 0 running strategies: [] +2026-01-14 02:48:44,679 - app - INFO - No running strategies to restore. +2026-01-14 02:48:44,685 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://172.18.0.3:5000 +2026-01-14 02:48:44,685 - werkzeug - INFO - Press CTRL+C to quit +2026-01-14 02:48:48,270 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:48:48] "GET /api/strategies/notifications?limit=50&_t=1768330128260 HTTP/1.1" 200 - +2026-01-14 02:48:48,861 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:48:48] "GET /api/portfolio/positions?refresh=1&_t=1768330128849 HTTP/1.1" 200 - +2026-01-14 02:48:48,861 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:48:48] "GET /api/portfolio/summary?refresh=1&_t=1768330128849 HTTP/1.1" 200 - +2026-01-14 02:48:54,194 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:48:54] "GET /api/market/types?_t=1768330134184 HTTP/1.1" 200 - +2026-01-14 02:48:54,198 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:48:54] "GET /api/portfolio/positions?_t=1768330134184 HTTP/1.1" 200 - +2026-01-14 02:48:54,199 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:48:54] "GET /api/portfolio/summary?_t=1768330134184 HTTP/1.1" 200 - +2026-01-14 02:48:54,218 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:48:54] "GET /api/portfolio/monitors?_t=1768330134184 HTTP/1.1" 200 - +2026-01-14 02:48:54,218 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:48:54] "GET /api/portfolio/groups?_t=1768330134184 HTTP/1.1" 200 - +2026-01-14 02:48:54,219 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:48:54] "GET /api/portfolio/alerts?_t=1768330134184 HTTP/1.1" 200 - +2026-01-14 02:48:54,220 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:48:54] "GET /api/strategies/notifications?limit=50&_t=1768330134184 HTTP/1.1" 200 - +2026-01-14 02:48:58,832 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:48:58] "GET /api/settings/values?_t=1768330138823 HTTP/1.1" 403 - +2026-01-14 02:48:58,836 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:48:58] "GET /api/settings/schema?_t=1768330138823 HTTP/1.1" 403 - +2026-01-14 02:49:04,714 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:49:04] "POST /api/user/logout HTTP/1.1" 200 - +2026-01-14 02:49:13,737 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:49:13] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:49:15,889 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:49:15] "POST /api/user/login HTTP/1.1" 401 - +2026-01-14 02:49:21,744 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:49:21] "POST /api/user/login HTTP/1.1" 200 - +2026-01-14 02:49:22,004 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:49:22] "GET /api/strategies/notifications?limit=50&_t=1768330161978 HTTP/1.1" 200 - +2026-01-14 02:49:22,027 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:49:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768330161978 HTTP/1.1" 200 - +2026-01-14 02:49:22,028 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:49:22] "GET /api/dashboard/summary?_t=1768330161978 HTTP/1.1" 200 - +2026-01-14 02:49:22,030 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:49:22] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768330161978 HTTP/1.1" 200 - +2026-01-14 02:49:26,932 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:49:26] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768330166927 HTTP/1.1" 200 - +2026-01-14 02:49:31,938 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:49:31] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768330171932 HTTP/1.1" 200 - +2026-01-14 02:49:33,857 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:49:33] "GET /api/settings/values?_t=1768330173849 HTTP/1.1" 403 - +2026-01-14 02:49:33,861 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:49:33] "GET /api/settings/schema?_t=1768330173849 HTTP/1.1" 403 - +2026-01-14 02:49:43,784 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:49:43] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:49:48,255 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:49:48] "GET /api/strategies/notifications?limit=50&_t=1768330188252 HTTP/1.1" 200 - +2026-01-14 02:49:51,927 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:49:51] "GET /api/strategies/notifications?limit=50&_t=1768330191920 HTTP/1.1" 200 - +2026-01-14 02:49:57,426 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:49:57] "GET /api/strategies/notifications?limit=50&_t=1768330197422 HTTP/1.1" 200 - +2026-01-14 02:50:00,467 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:50:00] "POST /api/user/logout HTTP/1.1" 200 - +2026-01-14 02:50:09,938 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:50:09] "POST /api/user/login HTTP/1.1" 401 - +2026-01-14 02:50:13,849 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:50:13] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:50:21,934 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:50:21] "GET /api/strategies/notifications?limit=50&_t=1768330221925 HTTP/1.1" 200 - +2026-01-14 02:50:25,712 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:50:25] "POST /api/user/login HTTP/1.1" 401 - +2026-01-14 02:50:30,232 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:50:30] "POST /api/user/login HTTP/1.1" 200 - +2026-01-14 02:50:30,467 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:50:30] "GET /api/strategies/notifications?limit=50&_t=1768330230439 HTTP/1.1" 200 - +2026-01-14 02:50:30,479 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:50:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768330230439 HTTP/1.1" 200 - +2026-01-14 02:50:30,481 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:50:30] "GET /api/dashboard/summary?_t=1768330230439 HTTP/1.1" 200 - +2026-01-14 02:50:30,486 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:50:30] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768330230439 HTTP/1.1" 200 - +2026-01-14 02:50:32,603 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:50:32] "GET /api/settings/values?_t=1768330232600 HTTP/1.1" 403 - +2026-01-14 02:50:32,605 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:50:32] "GET /api/settings/schema?_t=1768330232600 HTTP/1.1" 403 - +2026-01-14 02:50:34,913 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:50:34] "GET /api/users/roles?_t=1768330234905 HTTP/1.1" 403 - +2026-01-14 02:50:34,918 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:50:34] "GET /api/users/list?page=1&page_size=10&_t=1768330234905 HTTP/1.1" 403 - +2026-01-14 02:50:37,217 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:50:37] "GET /api/users/list?page=1&page_size=10&_t=1768330237212 HTTP/1.1" 403 - +2026-01-14 02:50:38,239 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:50:38] "GET /api/users/profile?_t=1768330238235 HTTP/1.1" 200 - +2026-01-14 02:50:39,169 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:50:39] "GET /api/users/list?page=1&page_size=10&_t=1768330239167 HTTP/1.1" 403 - +2026-01-14 02:50:39,170 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:50:39] "GET /api/users/roles?_t=1768330239167 HTTP/1.1" 403 - +2026-01-14 02:50:39,917 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:50:39] "GET /api/settings/schema?_t=1768330239913 HTTP/1.1" 403 - +2026-01-14 02:50:39,918 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:50:39] "GET /api/settings/values?_t=1768330239913 HTTP/1.1" 403 - +2026-01-14 02:50:43,914 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:50:43] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:50:51,936 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:50:51] "GET /api/strategies/notifications?limit=50&_t=1768330251929 HTTP/1.1" 200 - +2026-01-14 02:51:01,265 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:51:01] "GET /api/strategies/notifications?limit=50&_t=1768330261260 HTTP/1.1" 200 - +2026-01-14 02:51:13,958 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:51:13] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:51:21,937 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:51:21] "GET /api/strategies/notifications?limit=50&_t=1768330281931 HTTP/1.1" 200 - +2026-01-14 02:51:31,257 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:51:31] "GET /api/strategies/notifications?limit=50&_t=1768330291254 HTTP/1.1" 200 - +2026-01-14 02:51:44,003 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:51:44] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:51:51,936 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:51:51] "GET /api/strategies/notifications?limit=50&_t=1768330311931 HTTP/1.1" 200 - +2026-01-14 02:52:01,256 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:52:01] "GET /api/strategies/notifications?limit=50&_t=1768330321252 HTTP/1.1" 200 - +2026-01-14 02:52:14,057 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:52:14] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:52:21,936 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:52:21] "GET /api/strategies/notifications?limit=50&_t=1768330341931 HTTP/1.1" 200 - +2026-01-14 02:52:31,260 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:52:31] "GET /api/strategies/notifications?limit=50&_t=1768330351256 HTTP/1.1" 200 - +2026-01-14 02:52:44,130 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:52:44] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:52:51,928 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:52:51] "GET /api/strategies/notifications?limit=50&_t=1768330371922 HTTP/1.1" 200 - +2026-01-14 02:53:01,258 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:53:01] "GET /api/strategies/notifications?limit=50&_t=1768330381253 HTTP/1.1" 200 - +2026-01-14 02:53:14,179 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:53:14] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:53:21,928 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:53:21] "GET /api/strategies/notifications?limit=50&_t=1768330401921 HTTP/1.1" 200 - +2026-01-14 02:53:31,264 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:53:31] "GET /api/strategies/notifications?limit=50&_t=1768330411260 HTTP/1.1" 200 - +2026-01-14 02:53:44,242 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:53:44] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:53:51,927 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:53:51] "GET /api/strategies/notifications?limit=50&_t=1768330431920 HTTP/1.1" 200 - +2026-01-14 02:54:14,309 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:54:14] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:54:21,931 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:54:21] "GET /api/strategies/notifications?limit=50&_t=1768330461924 HTTP/1.1" 200 - +2026-01-14 02:54:44,351 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:54:44] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:54:48,261 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:54:48] "GET /api/strategies/notifications?limit=50&_t=1768330488253 HTTP/1.1" 200 - +2026-01-14 02:54:51,928 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:54:51] "GET /api/strategies/notifications?limit=50&_t=1768330491921 HTTP/1.1" 200 - +2026-01-14 02:55:14,394 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:55:14] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:55:21,930 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:55:21] "GET /api/strategies/notifications?limit=50&_t=1768330521924 HTTP/1.1" 200 - +2026-01-14 02:55:44,449 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:55:44] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:55:48,273 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:55:48] "GET /api/strategies/notifications?limit=50&_t=1768330548265 HTTP/1.1" 200 - +2026-01-14 02:55:51,937 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:55:51] "GET /api/strategies/notifications?limit=50&_t=1768330551931 HTTP/1.1" 200 - +2026-01-14 02:56:14,498 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:56:14] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:56:21,935 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:56:21] "GET /api/strategies/notifications?limit=50&_t=1768330581929 HTTP/1.1" 200 - +2026-01-14 02:56:44,541 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:56:44] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:56:48,262 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:56:48] "GET /api/strategies/notifications?limit=50&_t=1768330608253 HTTP/1.1" 200 - +2026-01-14 02:56:51,925 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:56:51] "GET /api/strategies/notifications?limit=50&_t=1768330611920 HTTP/1.1" 200 - +2026-01-14 02:57:08,579 - app - INFO - Database type: postgresql +2026-01-14 02:57:08,590 - app.utils.db_postgres - INFO - PostgreSQL connection pool created: postgres:5432/quantdinger +2026-01-14 02:57:08,590 - app.utils.db - INFO - PostgreSQL connection verified +2026-01-14 02:57:09,252 - app.services.pending_order_worker - INFO - PendingOrderWorker started +2026-01-14 02:57:09,252 - app - INFO - Reflection worker is disabled. Set ENABLE_REFLECTION_WORKER=true to enable. +2026-01-14 02:57:09,257 - app.services.portfolio_monitor - INFO - Portfolio monitor background loop started +2026-01-14 02:57:09,257 - app.services.portfolio_monitor - INFO - Portfolio monitor service started +2026-01-14 02:57:09,437 - app.services.trading_executor - INFO - Adding highest_price column to qd_strategy_positions (SQLite)... +2026-01-14 02:57:09,451 - app.utils.db_postgres - ERROR - PostgreSQL operation error: current transaction is aborted, commands ignored until end of transaction block + +2026-01-14 02:57:09,452 - app.services.trading_executor - ERROR - Failed to check/ensure DB columns: current transaction is aborted, commands ignored until end of transaction block + +2026-01-14 02:57:09,454 - app.services.strategy - INFO - Found 0 running strategies: [] +2026-01-14 02:57:09,454 - app - INFO - No running strategies to restore. +2026-01-14 02:57:09,472 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://172.18.0.3:5000 +2026-01-14 02:57:09,472 - werkzeug - INFO - Press CTRL+C to quit +2026-01-14 02:57:18,147 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:18] "GET /api/strategies/notifications?limit=50&_t=1768330638128 HTTP/1.1" 200 - +2026-01-14 02:57:18,161 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:18] "GET /api/dashboard/summary?_t=1768330638128 HTTP/1.1" 200 - +2026-01-14 02:57:18,164 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768330638128 HTTP/1.1" 200 - +2026-01-14 02:57:18,168 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:18] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768330638128 HTTP/1.1" 200 - +2026-01-14 02:57:20,835 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:20] "GET /api/users/profile?_t=1768330640826 HTTP/1.1" 200 - +2026-01-14 02:57:26,159 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:26] "POST /api/user/logout HTTP/1.1" 200 - +2026-01-14 02:57:38,504 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:57:38] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:57:38,974 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:38] "POST /api/user/login HTTP/1.1" 200 - +2026-01-14 02:57:39,178 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:39] "GET /api/strategies/notifications?limit=50&_t=1768330659165 HTTP/1.1" 200 - +2026-01-14 02:57:39,195 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:39] "GET /api/dashboard/summary?_t=1768330659165 HTTP/1.1" 200 - +2026-01-14 02:57:39,197 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:39] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768330659165 HTTP/1.1" 200 - +2026-01-14 02:57:39,201 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:39] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768330659165 HTTP/1.1" 200 - +2026-01-14 02:57:43,433 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:43] "GET /api/market/types?_t=1768330663422 HTTP/1.1" 200 - +2026-01-14 02:57:43,434 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:43] "GET /api/portfolio/positions?_t=1768330663422 HTTP/1.1" 200 - +2026-01-14 02:57:43,436 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:43] "GET /api/portfolio/summary?_t=1768330663422 HTTP/1.1" 200 - +2026-01-14 02:57:43,439 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:43] "GET /api/portfolio/monitors?_t=1768330663422 HTTP/1.1" 200 - +2026-01-14 02:57:43,443 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:43] "GET /api/portfolio/groups?_t=1768330663422 HTTP/1.1" 200 - +2026-01-14 02:57:43,443 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:43] "GET /api/portfolio/alerts?_t=1768330663422 HTTP/1.1" 200 - +2026-01-14 02:57:44,936 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:44] "GET /api/strategies?_t=1768330664925 HTTP/1.1" 200 - +2026-01-14 02:57:45,755 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:45] "GET /api/market/types?_t=1768330665745 HTTP/1.1" 200 - +2026-01-14 02:57:45,759 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:45] "GET /api/user/info?_t=1768330665745 HTTP/1.1" 200 - +2026-01-14 02:57:45,761 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:45] "GET /api/market/watchlist/get?userid=1&_t=1768330665745 HTTP/1.1" 200 - +2026-01-14 02:57:45,762 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:45] "GET /api/indicator/getIndicators?userid=1&_t=1768330665745 HTTP/1.1" 200 - +2026-01-14 02:57:45,788 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:45] "GET /api/indicator/getIndicators?userid=3&_t=1768330665777 HTTP/1.1" 200 - +2026-01-14 02:57:45,788 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:45] "GET /api/market/watchlist/get?userid=3&_t=1768330665777 HTTP/1.1" 200 - +2026-01-14 02:57:45,800 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=500 +2026-01-14 02:57:46,051 - app.data_sources.us_stock - INFO - Finnhub client initialized +2026-01-14 02:57:47,160 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:47] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=500&_t=1768330665791 HTTP/1.1" 200 - +2026-01-14 02:57:47,752 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:47] "GET /api/market/config?_t=1768330667721 HTTP/1.1" 200 - +2026-01-14 02:57:47,753 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:47] "GET /api/user/info?_t=1768330667721 HTTP/1.1" 200 - +2026-01-14 02:57:47,755 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:47] "GET /api/market/watchlist/get?userid=1&_t=1768330667721 HTTP/1.1" 200 - +2026-01-14 02:57:48,015 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:48] "GET /api/market/types?_t=1768330668005 HTTP/1.1" 200 - +2026-01-14 02:57:48,016 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:48] "GET /api/market/watchlist/get?userid=3&_t=1768330668005 HTTP/1.1" 200 - +2026-01-14 02:57:48,270 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:48] "GET /api/strategies/notifications?limit=50&_t=1768330668260 HTTP/1.1" 200 - +2026-01-14 02:57:48,916 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:48] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AAPL"}]&_t=1768330668039 HTTP/1.1" 200 - +2026-01-14 02:57:48,919 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:48] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AAPL"}]&_t=1768330668012 HTTP/1.1" 200 - +2026-01-14 02:57:49,262 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:49] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768330669242 HTTP/1.1" 200 - +2026-01-14 02:57:49,263 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:49] "GET /api/dashboard/summary?_t=1768330669242 HTTP/1.1" 200 - +2026-01-14 02:57:49,264 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:49] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768330669242 HTTP/1.1" 200 - +2026-01-14 02:57:50,799 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:50] "GET /api/users/profile?_t=1768330670792 HTTP/1.1" 200 - +2026-01-14 02:57:54,719 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:54] "GET /api/dashboard/summary?_t=1768330674699 HTTP/1.1" 200 - +2026-01-14 02:57:54,719 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:54] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768330674699 HTTP/1.1" 200 - +2026-01-14 02:57:54,721 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:54] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768330674699 HTTP/1.1" 200 - +2026-01-14 02:57:59,695 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:57:59] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768330679690 HTTP/1.1" 200 - +2026-01-14 02:58:04,697 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:58:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768330684691 HTTP/1.1" 200 - +2026-01-14 02:58:05,652 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:58:05] "GET /api/users/profile?_t=1768330685647 HTTP/1.1" 200 - +2026-01-14 02:58:07,116 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:58:07] "GET /api/dashboard/summary?_t=1768330686933 HTTP/1.1" 200 - +2026-01-14 02:58:07,120 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:58:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768330686933 HTTP/1.1" 200 - +2026-01-14 02:58:07,120 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:58:07] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768330686933 HTTP/1.1" 200 - +2026-01-14 02:58:08,569 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:58:08] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:58:09,112 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:58:09] "GET /api/strategies/notifications?limit=50&_t=1768330689106 HTTP/1.1" 200 - +2026-01-14 02:58:09,970 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:58:09] "POST /api/user/logout HTTP/1.1" 200 - +2026-01-14 02:58:19,913 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:58:19] "POST /api/user/login HTTP/1.1" 200 - +2026-01-14 02:58:20,162 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:58:20] "GET /api/strategies/notifications?limit=50&_t=1768330700133 HTTP/1.1" 200 - +2026-01-14 02:58:20,179 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:58:20] "GET /api/dashboard/summary?_t=1768330700133 HTTP/1.1" 200 - +2026-01-14 02:58:20,182 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:58:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768330700133 HTTP/1.1" 200 - +2026-01-14 02:58:20,280 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:58:20] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768330700133 HTTP/1.1" 200 - +2026-01-14 02:58:24,308 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:58:24] "GET /api/users/profile?_t=1768330704301 HTTP/1.1" 200 - +2026-01-14 02:58:33,306 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:58:33] "GET /api/users/roles?_t=1768330713301 HTTP/1.1" 200 - +2026-01-14 02:58:33,308 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:58:33] "GET /api/users/list?page=1&page_size=10&_t=1768330713301 HTTP/1.1" 200 - +2026-01-14 02:58:38,627 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:58:38] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:58:42,118 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:58:42] "GET /api/users/list?page=1&page_size=10&_t=1768330722110 HTTP/1.1" 200 - +2026-01-14 02:58:48,272 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:58:48] "GET /api/strategies/notifications?limit=50&_t=1768330728265 HTTP/1.1" 200 - +2026-01-14 02:58:50,015 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:58:50] "GET /api/strategies/notifications?limit=50&_t=1768330730007 HTTP/1.1" 200 - +2026-01-14 02:59:06,224 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:59:06] "PUT /api/users/update?id=3 HTTP/1.1" 200 - +2026-01-14 02:59:06,247 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:59:06] "GET /api/users/list?page=1&page_size=10&_t=1768330746238 HTTP/1.1" 200 - +2026-01-14 02:59:08,322 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:59:08] "GET /api/users/list?page=1&page_size=10&_t=1768330748315 HTTP/1.1" 200 - +2026-01-14 02:59:08,680 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:59:08] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:59:09,342 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:59:09] "GET /api/users/profile?_t=1768330749335 HTTP/1.1" 200 - +2026-01-14 02:59:10,522 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:59:10] "GET /api/users/roles?_t=1768330750514 HTTP/1.1" 200 - +2026-01-14 02:59:10,523 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:59:10] "GET /api/users/list?page=1&page_size=10&_t=1768330750514 HTTP/1.1" 200 - +2026-01-14 02:59:11,854 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:59:11] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768330751837 HTTP/1.1" 200 - +2026-01-14 02:59:11,855 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:59:11] "GET /api/dashboard/summary?_t=1768330751837 HTTP/1.1" 200 - +2026-01-14 02:59:11,856 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:59:11] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768330751837 HTTP/1.1" 200 - +2026-01-14 02:59:12,597 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:59:12] "GET /api/user/info?_t=1768330752580 HTTP/1.1" 200 - +2026-01-14 02:59:12,598 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:59:12] "GET /api/market/config?_t=1768330752580 HTTP/1.1" 200 - +2026-01-14 02:59:12,599 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:59:12] "GET /api/market/watchlist/get?userid=1&_t=1768330752580 HTTP/1.1" 200 - +2026-01-14 02:59:12,622 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:59:12] "GET /api/market/watchlist/get?userid=1&_t=1768330752612 HTTP/1.1" 200 - +2026-01-14 02:59:12,628 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:59:12] "GET /api/market/types?_t=1768330752618 HTTP/1.1" 200 - +2026-01-14 02:59:13,455 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:59:13] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AAPL"}]&_t=1768330752631 HTTP/1.1" 200 - +2026-01-14 02:59:13,456 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:59:13] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AAPL"}]&_t=1768330752642 HTTP/1.1" 200 - +2026-01-14 02:59:13,761 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:59:13] "GET /api/users/profile?_t=1768330753752 HTTP/1.1" 200 - +2026-01-14 02:59:14,218 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:59:14] "GET /api/users/roles?_t=1768330754211 HTTP/1.1" 200 - +2026-01-14 02:59:14,219 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:59:14] "GET /api/users/list?page=1&page_size=10&_t=1768330754211 HTTP/1.1" 200 - +2026-01-14 02:59:19,120 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:59:19] "GET /api/users/list?page=1&page_size=10&_t=1768330759113 HTTP/1.1" 200 - +2026-01-14 02:59:20,014 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:59:20] "GET /api/strategies/notifications?limit=50&_t=1768330760008 HTTP/1.1" 200 - +2026-01-14 02:59:38,723 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 02:59:38] "GET /api/health HTTP/1.1" 200 - +2026-01-14 02:59:48,256 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:59:48] "GET /api/strategies/notifications?limit=50&_t=1768330788251 HTTP/1.1" 200 - +2026-01-14 02:59:48,518 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:59:48] "GET /api/settings/schema?_t=1768330788510 HTTP/1.1" 200 - +2026-01-14 02:59:48,521 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:59:48] "GET /api/settings/values?_t=1768330788510 HTTP/1.1" 200 - +2026-01-14 02:59:50,016 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 02:59:50] "GET /api/strategies/notifications?limit=50&_t=1768330790010 HTTP/1.1" 200 - +2026-01-14 03:00:08,766 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 03:00:08] "GET /api/health HTTP/1.1" 200 - +2026-01-14 03:00:20,018 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:00:20] "GET /api/strategies/notifications?limit=50&_t=1768330820012 HTTP/1.1" 200 - +2026-01-14 03:00:21,051 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:00:21] "GET /api/settings/openrouter-balance?_t=1768330820662 HTTP/1.1" 200 - +2026-01-14 03:00:38,816 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 03:00:38] "GET /api/health HTTP/1.1" 200 - +2026-01-14 03:00:40,036 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:00:40] "GET /api/settings/schema?_t=1768330840029 HTTP/1.1" 200 - +2026-01-14 03:00:40,040 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:00:40] "GET /api/settings/values?_t=1768330840029 HTTP/1.1" 200 - +2026-01-14 03:00:41,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:00:41] "GET /api/market/types?_t=1768330841066 HTTP/1.1" 200 - +2026-01-14 03:00:41,074 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:00:41] "GET /api/portfolio/positions?_t=1768330841066 HTTP/1.1" 200 - +2026-01-14 03:00:41,077 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:00:41] "GET /api/portfolio/summary?_t=1768330841066 HTTP/1.1" 200 - +2026-01-14 03:00:41,079 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:00:41] "GET /api/portfolio/monitors?_t=1768330841066 HTTP/1.1" 200 - +2026-01-14 03:00:41,081 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:00:41] "GET /api/portfolio/groups?_t=1768330841066 HTTP/1.1" 200 - +2026-01-14 03:00:41,082 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:00:41] "GET /api/portfolio/alerts?_t=1768330841066 HTTP/1.1" 200 - +2026-01-14 03:00:42,123 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:00:42] "GET /api/strategies?_t=1768330842116 HTTP/1.1" 200 - +2026-01-14 03:00:42,968 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:00:42] "GET /api/market/types?_t=1768330842961 HTTP/1.1" 200 - +2026-01-14 03:00:42,969 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:00:42] "GET /api/user/info?_t=1768330842961 HTTP/1.1" 200 - +2026-01-14 03:00:42,971 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:00:42] "GET /api/market/watchlist/get?userid=1&_t=1768330842961 HTTP/1.1" 200 - +2026-01-14 03:00:42,972 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:00:42] "GET /api/indicator/getIndicators?userid=1&_t=1768330842961 HTTP/1.1" 200 - +2026-01-14 03:00:42,989 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:00:42] "GET /api/indicator/getIndicators?userid=1&_t=1768330842978 HTTP/1.1" 200 - +2026-01-14 03:00:42,989 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:00:42] "GET /api/market/watchlist/get?userid=1&_t=1768330842978 HTTP/1.1" 200 - +2026-01-14 03:00:42,997 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=500 +2026-01-14 03:00:43,000 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:00:43] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=500&_t=1768330842993 HTTP/1.1" 200 - +2026-01-14 03:00:43,680 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:00:43] "GET /api/market/config?_t=1768330843665 HTTP/1.1" 200 - +2026-01-14 03:00:43,685 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:00:43] "GET /api/user/info?_t=1768330843665 HTTP/1.1" 200 - +2026-01-14 03:00:43,687 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:00:43] "GET /api/market/watchlist/get?userid=1&_t=1768330843665 HTTP/1.1" 200 - +2026-01-14 03:00:43,716 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:00:43] "GET /api/market/types?_t=1768330843706 HTTP/1.1" 200 - +2026-01-14 03:00:43,719 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:00:43] "GET /api/market/watchlist/get?userid=1&_t=1768330843708 HTTP/1.1" 200 - +2026-01-14 03:00:44,330 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:00:44] "GET /api/dashboard/summary?_t=1768330844311 HTTP/1.1" 200 - +2026-01-14 03:00:44,331 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:00:44] "GET /api/dashboard/pendingOrders?page=1&pageSize=1&_t=1768330844311 HTTP/1.1" 200 - +2026-01-14 03:00:44,332 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:00:44] "GET /api/dashboard/pendingOrders?page=1&pageSize=20&_t=1768330844311 HTTP/1.1" 200 - +2026-01-14 03:00:44,645 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:00:44] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AAPL"}]&_t=1768330843718 HTTP/1.1" 200 - +2026-01-14 03:00:44,703 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:00:44] "GET /api/market/watchlist/prices?watchlist=[{"market":"USStock","symbol":"AAPL"}]&_t=1768330843742 HTTP/1.1" 200 - +2026-01-14 03:00:48,273 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:00:48] "GET /api/strategies/notifications?limit=50&_t=1768330848265 HTTP/1.1" 200 - +2026-01-14 03:00:49,311 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:00:49] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768330849295 HTTP/1.1" 200 - +2026-01-14 03:00:50,023 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:00:50] "GET /api/strategies/notifications?limit=50&_t=1768330850018 HTTP/1.1" 200 - +2026-01-14 03:00:54,298 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:00:54] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768330854293 HTTP/1.1" 200 - +2026-01-14 03:00:59,294 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:00:59] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768330859290 HTTP/1.1" 200 - +2026-01-14 03:01:04,300 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:04] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768330864295 HTTP/1.1" 200 - +2026-01-14 03:01:08,886 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 03:01:08] "GET /api/health HTTP/1.1" 200 - +2026-01-14 03:01:09,297 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:09] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768330869292 HTTP/1.1" 200 - +2026-01-14 03:01:14,305 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:14] "GET /api/dashboard/pendingOrders?page=1&pageSize=10&_t=1768330874299 HTTP/1.1" 200 - +2026-01-14 03:01:16,008 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:16] "GET /api/market/types?_t=1768330876002 HTTP/1.1" 200 - +2026-01-14 03:01:16,011 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:16] "GET /api/user/info?_t=1768330876002 HTTP/1.1" 200 - +2026-01-14 03:01:16,012 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:16] "GET /api/market/watchlist/get?userid=1&_t=1768330876002 HTTP/1.1" 200 - +2026-01-14 03:01:16,012 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:16] "GET /api/indicator/getIndicators?userid=1&_t=1768330876002 HTTP/1.1" 200 - +2026-01-14 03:01:16,027 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:16] "GET /api/indicator/getIndicators?userid=1&_t=1768330876019 HTTP/1.1" 200 - +2026-01-14 03:01:16,029 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:16] "GET /api/market/watchlist/get?userid=1&_t=1768330876019 HTTP/1.1" 200 - +2026-01-14 03:01:16,040 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=500 +2026-01-14 03:01:16,043 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:16] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=500&_t=1768330876034 HTTP/1.1" 200 - +2026-01-14 03:01:17,077 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:17,346 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:17] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330877069 HTTP/1.1" 200 - +2026-01-14 03:01:18,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:18,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:18] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330878064 HTTP/1.1" 200 - +2026-01-14 03:01:19,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:19,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:19] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330879063 HTTP/1.1" 200 - +2026-01-14 03:01:20,022 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:20] "GET /api/strategies/notifications?limit=50&_t=1768330880015 HTTP/1.1" 200 - +2026-01-14 03:01:20,074 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:20,075 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:20] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330880068 HTTP/1.1" 200 - +2026-01-14 03:01:21,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:21,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:21] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330881065 HTTP/1.1" 200 - +2026-01-14 03:01:22,063 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:22,064 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:22] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330882060 HTTP/1.1" 200 - +2026-01-14 03:01:23,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:23,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:23] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330883065 HTTP/1.1" 200 - +2026-01-14 03:01:24,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:24,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:24] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330884065 HTTP/1.1" 200 - +2026-01-14 03:01:25,062 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:25,063 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:25] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330885060 HTTP/1.1" 200 - +2026-01-14 03:01:26,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:26,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:26] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330886065 HTTP/1.1" 200 - +2026-01-14 03:01:27,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:27,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:27] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330887061 HTTP/1.1" 200 - +2026-01-14 03:01:28,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:28,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:28] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330888065 HTTP/1.1" 200 - +2026-01-14 03:01:29,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:29,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:29] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330889065 HTTP/1.1" 200 - +2026-01-14 03:01:30,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:30,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:30] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330890065 HTTP/1.1" 200 - +2026-01-14 03:01:31,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:31,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:31] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330891064 HTTP/1.1" 200 - +2026-01-14 03:01:32,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:32,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:32] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330892065 HTTP/1.1" 200 - +2026-01-14 03:01:33,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:33,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:33] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330893061 HTTP/1.1" 200 - +2026-01-14 03:01:34,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:34,073 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:34] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330894065 HTTP/1.1" 200 - +2026-01-14 03:01:35,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:35,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:35] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330895065 HTTP/1.1" 200 - +2026-01-14 03:01:36,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:36,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:36] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330896065 HTTP/1.1" 200 - +2026-01-14 03:01:37,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:37,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:37] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330897065 HTTP/1.1" 200 - +2026-01-14 03:01:38,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:38,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:38] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330898064 HTTP/1.1" 200 - +2026-01-14 03:01:38,941 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 03:01:38] "GET /api/health HTTP/1.1" 200 - +2026-01-14 03:01:39,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:39,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:39] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330899065 HTTP/1.1" 200 - +2026-01-14 03:01:40,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:40,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:40] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330900065 HTTP/1.1" 200 - +2026-01-14 03:01:41,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:41,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:41] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330901060 HTTP/1.1" 200 - +2026-01-14 03:01:42,076 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:42,077 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:42] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330902067 HTTP/1.1" 200 - +2026-01-14 03:01:43,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:43,064 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:43] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330903060 HTTP/1.1" 200 - +2026-01-14 03:01:44,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:44,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:44] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330904065 HTTP/1.1" 200 - +2026-01-14 03:01:45,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:45,073 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:45] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330905067 HTTP/1.1" 200 - +2026-01-14 03:01:46,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:46,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:46] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330906062 HTTP/1.1" 200 - +2026-01-14 03:01:47,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:47,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:47] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330907061 HTTP/1.1" 200 - +2026-01-14 03:01:48,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:48,073 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:48] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330908066 HTTP/1.1" 200 - +2026-01-14 03:01:48,258 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:48] "GET /api/strategies/notifications?limit=50&_t=1768330908252 HTTP/1.1" 200 - +2026-01-14 03:01:49,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:49,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:49] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330909065 HTTP/1.1" 200 - +2026-01-14 03:01:50,023 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:50] "GET /api/strategies/notifications?limit=50&_t=1768330910016 HTTP/1.1" 200 - +2026-01-14 03:01:50,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:50,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:50] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330910064 HTTP/1.1" 200 - +2026-01-14 03:01:51,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:51,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:51] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330911063 HTTP/1.1" 200 - +2026-01-14 03:01:52,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:52,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:52] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330912066 HTTP/1.1" 200 - +2026-01-14 03:01:53,062 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:53,063 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:53] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330913059 HTTP/1.1" 200 - +2026-01-14 03:01:54,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:54,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:54] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330914066 HTTP/1.1" 200 - +2026-01-14 03:01:55,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:55,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:55] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330915066 HTTP/1.1" 200 - +2026-01-14 03:01:56,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:56,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:56] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330916064 HTTP/1.1" 200 - +2026-01-14 03:01:57,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:57,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:57] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330917066 HTTP/1.1" 200 - +2026-01-14 03:01:58,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:58,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:58] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330918066 HTTP/1.1" 200 - +2026-01-14 03:01:59,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:01:59,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:01:59] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330919066 HTTP/1.1" 200 - +2026-01-14 03:02:00,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:00,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:00] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330920066 HTTP/1.1" 200 - +2026-01-14 03:02:01,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:01,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:01] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330921067 HTTP/1.1" 200 - +2026-01-14 03:02:02,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:02,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:02] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330922067 HTTP/1.1" 200 - +2026-01-14 03:02:03,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:03,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:03] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330923063 HTTP/1.1" 200 - +2026-01-14 03:02:04,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:04,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:04] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330924063 HTTP/1.1" 200 - +2026-01-14 03:02:05,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:05,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:05] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330925066 HTTP/1.1" 200 - +2026-01-14 03:02:06,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:06,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:06] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330926062 HTTP/1.1" 200 - +2026-01-14 03:02:07,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:07,075 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:07] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330927067 HTTP/1.1" 200 - +2026-01-14 03:02:08,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:08,073 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:08] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330928067 HTTP/1.1" 200 - +2026-01-14 03:02:09,005 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 03:02:09] "GET /api/health HTTP/1.1" 200 - +2026-01-14 03:02:09,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:09,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:09] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330929066 HTTP/1.1" 200 - +2026-01-14 03:02:10,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:10,073 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:10] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330930066 HTTP/1.1" 200 - +2026-01-14 03:02:11,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:11,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:11] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330931067 HTTP/1.1" 200 - +2026-01-14 03:02:12,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:12,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:12] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330932064 HTTP/1.1" 200 - +2026-01-14 03:02:13,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:13,073 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:13] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330933066 HTTP/1.1" 200 - +2026-01-14 03:02:14,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:14,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:14] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330934063 HTTP/1.1" 200 - +2026-01-14 03:02:15,073 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:15,074 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:15] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330935067 HTTP/1.1" 200 - +2026-01-14 03:02:16,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:16,073 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:16] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330936067 HTTP/1.1" 200 - +2026-01-14 03:02:17,095 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:17,095 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:17] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330937067 HTTP/1.1" 200 - +2026-01-14 03:02:18,074 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:18,075 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:18] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330938067 HTTP/1.1" 200 - +2026-01-14 03:02:19,063 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:19,064 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:19] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330939059 HTTP/1.1" 200 - +2026-01-14 03:02:20,023 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:20] "GET /api/strategies/notifications?limit=50&_t=1768330940017 HTTP/1.1" 200 - +2026-01-14 03:02:20,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:20,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:20] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330940063 HTTP/1.1" 200 - +2026-01-14 03:02:21,073 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:21,074 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:21] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330941067 HTTP/1.1" 200 - +2026-01-14 03:02:22,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:22,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:22] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330942067 HTTP/1.1" 200 - +2026-01-14 03:02:23,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:23,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:23] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330943067 HTTP/1.1" 200 - +2026-01-14 03:02:24,076 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:24,077 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:24] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330944071 HTTP/1.1" 200 - +2026-01-14 03:02:25,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:25,073 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:25] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330945067 HTTP/1.1" 200 - +2026-01-14 03:02:26,074 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:26,074 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:26] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330946067 HTTP/1.1" 200 - +2026-01-14 03:02:27,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:27,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:27] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330947062 HTTP/1.1" 200 - +2026-01-14 03:02:28,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:28,073 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:28] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330948067 HTTP/1.1" 200 - +2026-01-14 03:02:29,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:29,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:29] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330949067 HTTP/1.1" 200 - +2026-01-14 03:02:30,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:30,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:30] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330950061 HTTP/1.1" 200 - +2026-01-14 03:02:31,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:31,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:31] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330951067 HTTP/1.1" 200 - +2026-01-14 03:02:32,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:32,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:32] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330952067 HTTP/1.1" 200 - +2026-01-14 03:02:33,063 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:33,064 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:33] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330953060 HTTP/1.1" 200 - +2026-01-14 03:02:34,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:34,073 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:34] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330954067 HTTP/1.1" 200 - +2026-01-14 03:02:35,073 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:35,074 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:35] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330955068 HTTP/1.1" 200 - +2026-01-14 03:02:36,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:36,073 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:36] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330956067 HTTP/1.1" 200 - +2026-01-14 03:02:37,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:37,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:37] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330957062 HTTP/1.1" 200 - +2026-01-14 03:02:38,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:38,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:38] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330958061 HTTP/1.1" 200 - +2026-01-14 03:02:39,063 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 03:02:39] "GET /api/health HTTP/1.1" 200 - +2026-01-14 03:02:39,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:39,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:39] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330959059 HTTP/1.1" 200 - +2026-01-14 03:02:40,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:40,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:40] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330960062 HTTP/1.1" 200 - +2026-01-14 03:02:41,073 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:41,074 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:41] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330961067 HTTP/1.1" 200 - +2026-01-14 03:02:42,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:42,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:42] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330962061 HTTP/1.1" 200 - +2026-01-14 03:02:43,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:43,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:43] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330963059 HTTP/1.1" 200 - +2026-01-14 03:02:44,073 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:44,073 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:44] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330964068 HTTP/1.1" 200 - +2026-01-14 03:02:45,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:45,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:45] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330965060 HTTP/1.1" 200 - +2026-01-14 03:02:46,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:46,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:46] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330966063 HTTP/1.1" 200 - +2026-01-14 03:02:47,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:47,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:47] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330967062 HTTP/1.1" 200 - +2026-01-14 03:02:48,074 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:48,074 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:48] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330968066 HTTP/1.1" 200 - +2026-01-14 03:02:48,260 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:48] "GET /api/strategies/notifications?limit=50&_t=1768330968253 HTTP/1.1" 200 - +2026-01-14 03:02:49,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:49,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:49] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330969061 HTTP/1.1" 200 - +2026-01-14 03:02:50,024 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:50] "GET /api/strategies/notifications?limit=50&_t=1768330970018 HTTP/1.1" 200 - +2026-01-14 03:02:50,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:50,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:50] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330970065 HTTP/1.1" 200 - +2026-01-14 03:02:51,073 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:51,074 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:51] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330971068 HTTP/1.1" 200 - +2026-01-14 03:02:52,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:52,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:52] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330972062 HTTP/1.1" 200 - +2026-01-14 03:02:53,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:53,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:53] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330973063 HTTP/1.1" 200 - +2026-01-14 03:02:54,073 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:54,087 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:54] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330974069 HTTP/1.1" 200 - +2026-01-14 03:02:55,073 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:55,074 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:55] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330975068 HTTP/1.1" 200 - +2026-01-14 03:02:56,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:56,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:56] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330976063 HTTP/1.1" 200 - +2026-01-14 03:02:57,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:57,073 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:57] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330977067 HTTP/1.1" 200 - +2026-01-14 03:02:58,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:58,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:58] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330978068 HTTP/1.1" 200 - +2026-01-14 03:02:59,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:02:59,073 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:02:59] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330979068 HTTP/1.1" 200 - +2026-01-14 03:03:00,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:00,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:00] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330980062 HTTP/1.1" 200 - +2026-01-14 03:03:01,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:01,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:01] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330981065 HTTP/1.1" 200 - +2026-01-14 03:03:02,073 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:02,074 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:02] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330982068 HTTP/1.1" 200 - +2026-01-14 03:03:03,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:03,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:03] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330983066 HTTP/1.1" 200 - +2026-01-14 03:03:04,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:04,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:04] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330984065 HTTP/1.1" 200 - +2026-01-14 03:03:05,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:05,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:05] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330985064 HTTP/1.1" 200 - +2026-01-14 03:03:06,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:06,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:06] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330986064 HTTP/1.1" 200 - +2026-01-14 03:03:07,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:07,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:07] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330987063 HTTP/1.1" 200 - +2026-01-14 03:03:08,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:08,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:08] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330988062 HTTP/1.1" 200 - +2026-01-14 03:03:09,074 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:09,075 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:09] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330989069 HTTP/1.1" 200 - +2026-01-14 03:03:09,123 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 03:03:09] "GET /api/health HTTP/1.1" 200 - +2026-01-14 03:03:10,073 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:10,074 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:10] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330990068 HTTP/1.1" 200 - +2026-01-14 03:03:11,073 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:11,074 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:11] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330991068 HTTP/1.1" 200 - +2026-01-14 03:03:12,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:12,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:12] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330992065 HTTP/1.1" 200 - +2026-01-14 03:03:13,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:13,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:13] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330993065 HTTP/1.1" 200 - +2026-01-14 03:03:14,073 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:14,074 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:14] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330994069 HTTP/1.1" 200 - +2026-01-14 03:03:15,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:15,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:15] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330995063 HTTP/1.1" 200 - +2026-01-14 03:03:16,075 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:16,080 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:16] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330996069 HTTP/1.1" 200 - +2026-01-14 03:03:17,074 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:17,074 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:17] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330997069 HTTP/1.1" 200 - +2026-01-14 03:03:18,076 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:18,077 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:18] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330998069 HTTP/1.1" 200 - +2026-01-14 03:03:19,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:19,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:19] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768330999062 HTTP/1.1" 200 - +2026-01-14 03:03:20,025 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:20] "GET /api/strategies/notifications?limit=50&_t=1768331000018 HTTP/1.1" 200 - +2026-01-14 03:03:20,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:20,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:20] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331000065 HTTP/1.1" 200 - +2026-01-14 03:03:21,075 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:21,075 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:21] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331001069 HTTP/1.1" 200 - +2026-01-14 03:03:22,074 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:22,075 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:22] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331002071 HTTP/1.1" 200 - +2026-01-14 03:03:23,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:23,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:23] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331003065 HTTP/1.1" 200 - +2026-01-14 03:03:24,073 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:24,074 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:24] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331004069 HTTP/1.1" 200 - +2026-01-14 03:03:25,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:25,075 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:25] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331005067 HTTP/1.1" 200 - +2026-01-14 03:03:26,078 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:26,079 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:26] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331006071 HTTP/1.1" 200 - +2026-01-14 03:03:27,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:27,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:27] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331007062 HTTP/1.1" 200 - +2026-01-14 03:03:28,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:28,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:28] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331008066 HTTP/1.1" 200 - +2026-01-14 03:03:29,075 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:29,075 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:29] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331009069 HTTP/1.1" 200 - +2026-01-14 03:03:30,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:30,064 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:30] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331010060 HTTP/1.1" 200 - +2026-01-14 03:03:31,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:31,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:31] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331011062 HTTP/1.1" 200 - +2026-01-14 03:03:32,075 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:32,076 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:32] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331012070 HTTP/1.1" 200 - +2026-01-14 03:03:33,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:33,073 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:33] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331013059 HTTP/1.1" 200 - +2026-01-14 03:03:34,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:34,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:34] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331014065 HTTP/1.1" 200 - +2026-01-14 03:03:35,074 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:35,075 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:35] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331015068 HTTP/1.1" 200 - +2026-01-14 03:03:36,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:36,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:36] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331016059 HTTP/1.1" 200 - +2026-01-14 03:03:37,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:37,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:37] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331017066 HTTP/1.1" 200 - +2026-01-14 03:03:38,074 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:38,075 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:38] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331018070 HTTP/1.1" 200 - +2026-01-14 03:03:39,074 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:39,075 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:39] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331019070 HTTP/1.1" 200 - +2026-01-14 03:03:39,172 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 03:03:39] "GET /api/health HTTP/1.1" 200 - +2026-01-14 03:03:40,075 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:40,076 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:40] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331020070 HTTP/1.1" 200 - +2026-01-14 03:03:41,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:41,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:41] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331021063 HTTP/1.1" 200 - +2026-01-14 03:03:42,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:42,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:42] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331022066 HTTP/1.1" 200 - +2026-01-14 03:03:43,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:43,075 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:43] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331023067 HTTP/1.1" 200 - +2026-01-14 03:03:44,076 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:44,077 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:44] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331024070 HTTP/1.1" 200 - +2026-01-14 03:03:45,076 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:45,077 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:45] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331025070 HTTP/1.1" 200 - +2026-01-14 03:03:46,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:46,074 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:46] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331026065 HTTP/1.1" 200 - +2026-01-14 03:03:47,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:47,076 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:47] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331027067 HTTP/1.1" 200 - +2026-01-14 03:03:48,077 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:48,078 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:48] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331028070 HTTP/1.1" 200 - +2026-01-14 03:03:48,264 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:48] "GET /api/strategies/notifications?limit=50&_t=1768331028258 HTTP/1.1" 200 - +2026-01-14 03:03:49,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:49,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:49] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331029061 HTTP/1.1" 200 - +2026-01-14 03:03:50,026 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:50] "GET /api/strategies/notifications?limit=50&_t=1768331030020 HTTP/1.1" 200 - +2026-01-14 03:03:50,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:50,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:50] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331030066 HTTP/1.1" 200 - +2026-01-14 03:03:51,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:51,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:51] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331031060 HTTP/1.1" 200 - +2026-01-14 03:03:52,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:52,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:52] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331032066 HTTP/1.1" 200 - +2026-01-14 03:03:53,073 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:53,073 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:53] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331033068 HTTP/1.1" 200 - +2026-01-14 03:03:54,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:54,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:54] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331034067 HTTP/1.1" 200 - +2026-01-14 03:03:55,075 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:55,079 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:55] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331035071 HTTP/1.1" 200 - +2026-01-14 03:03:56,075 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:56,083 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:56] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331036071 HTTP/1.1" 200 - +2026-01-14 03:03:57,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:57,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:57] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331037062 HTTP/1.1" 200 - +2026-01-14 03:03:58,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:58,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:58] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331038061 HTTP/1.1" 200 - +2026-01-14 03:03:59,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:03:59,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:03:59] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331039062 HTTP/1.1" 200 - +2026-01-14 03:04:00,076 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:00,077 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:00] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331040071 HTTP/1.1" 200 - +2026-01-14 03:04:01,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:01,084 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:01] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331041067 HTTP/1.1" 200 - +2026-01-14 03:04:02,073 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:02,075 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:02] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331042068 HTTP/1.1" 200 - +2026-01-14 03:04:03,062 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:03,063 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:03] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331043059 HTTP/1.1" 200 - +2026-01-14 03:04:04,074 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:04,075 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:04] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331044068 HTTP/1.1" 200 - +2026-01-14 03:04:05,074 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:05,076 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:05] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331045069 HTTP/1.1" 200 - +2026-01-14 03:04:06,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:06,084 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:06] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331046067 HTTP/1.1" 200 - +2026-01-14 03:04:07,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:07,073 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:07] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331047068 HTTP/1.1" 200 - +2026-01-14 03:04:08,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:08,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:08] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331048061 HTTP/1.1" 200 - +2026-01-14 03:04:09,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:09,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:09] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331049064 HTTP/1.1" 200 - +2026-01-14 03:04:09,217 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 03:04:09] "GET /api/health HTTP/1.1" 200 - +2026-01-14 03:04:10,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:10,073 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:10] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331050068 HTTP/1.1" 200 - +2026-01-14 03:04:11,075 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:11,076 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:11] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331051069 HTTP/1.1" 200 - +2026-01-14 03:04:12,063 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:12,063 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:12] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331052059 HTTP/1.1" 200 - +2026-01-14 03:04:13,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:13,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:13] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331053062 HTTP/1.1" 200 - +2026-01-14 03:04:14,076 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:14,077 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:14] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331054071 HTTP/1.1" 200 - +2026-01-14 03:04:15,076 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:15,081 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:15] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331055071 HTTP/1.1" 200 - +2026-01-14 03:04:16,074 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:16,075 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:16] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331056066 HTTP/1.1" 200 - +2026-01-14 03:04:17,077 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:17,078 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:17] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331057072 HTTP/1.1" 200 - +2026-01-14 03:04:18,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:18,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:18] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331058064 HTTP/1.1" 200 - +2026-01-14 03:04:19,076 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:19,077 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:19] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331059070 HTTP/1.1" 200 - +2026-01-14 03:04:20,021 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:20] "GET /api/strategies/notifications?limit=50&_t=1768331060015 HTTP/1.1" 200 - +2026-01-14 03:04:20,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:20,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:20] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331060062 HTTP/1.1" 200 - +2026-01-14 03:04:21,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:21,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:21] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331061066 HTTP/1.1" 200 - +2026-01-14 03:04:22,076 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:22,076 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:22] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331062071 HTTP/1.1" 200 - +2026-01-14 03:04:23,063 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:23,064 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:23] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331063061 HTTP/1.1" 200 - +2026-01-14 03:04:24,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:24,077 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:24] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331064061 HTTP/1.1" 200 - +2026-01-14 03:04:25,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:25,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:25] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331065065 HTTP/1.1" 200 - +2026-01-14 03:04:26,075 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:26,078 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:26] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331066071 HTTP/1.1" 200 - +2026-01-14 03:04:27,076 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:27,077 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:27] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331067072 HTTP/1.1" 200 - +2026-01-14 03:04:28,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:28,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:28] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331068065 HTTP/1.1" 200 - +2026-01-14 03:04:29,077 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:29,077 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:29] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331069072 HTTP/1.1" 200 - +2026-01-14 03:04:30,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:30,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:30] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331070063 HTTP/1.1" 200 - +2026-01-14 03:04:31,076 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:31,076 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:31] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331071071 HTTP/1.1" 200 - +2026-01-14 03:04:32,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:32,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:32] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331072065 HTTP/1.1" 200 - +2026-01-14 03:04:33,077 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:33,077 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:33] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331073072 HTTP/1.1" 200 - +2026-01-14 03:04:34,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:34,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:34] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331074067 HTTP/1.1" 200 - +2026-01-14 03:04:35,077 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:35,078 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:35] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331075072 HTTP/1.1" 200 - +2026-01-14 03:04:36,063 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:36,064 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:36] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331076060 HTTP/1.1" 200 - +2026-01-14 03:04:37,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:37,073 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:37] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331077068 HTTP/1.1" 200 - +2026-01-14 03:04:38,077 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:38,077 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:38] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331078072 HTTP/1.1" 200 - +2026-01-14 03:04:39,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:39,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:39] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331079067 HTTP/1.1" 200 - +2026-01-14 03:04:39,284 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 03:04:39] "GET /api/health HTTP/1.1" 200 - +2026-01-14 03:04:40,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:40,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:40] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331080061 HTTP/1.1" 200 - +2026-01-14 03:04:41,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:41,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:41] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331081067 HTTP/1.1" 200 - +2026-01-14 03:04:42,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:42,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:42] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331082063 HTTP/1.1" 200 - +2026-01-14 03:04:43,073 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:43,074 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:43] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331083069 HTTP/1.1" 200 - +2026-01-14 03:04:44,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:44,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:44] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331084066 HTTP/1.1" 200 - +2026-01-14 03:04:45,076 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:45,078 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:45] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331085070 HTTP/1.1" 200 - +2026-01-14 03:04:46,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:46,074 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:46] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331086068 HTTP/1.1" 200 - +2026-01-14 03:04:47,073 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:47,075 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:47] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331087069 HTTP/1.1" 200 - +2026-01-14 03:04:48,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:48,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:48] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331088065 HTTP/1.1" 200 - +2026-01-14 03:04:48,259 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:48] "GET /api/strategies/notifications?limit=50&_t=1768331088251 HTTP/1.1" 200 - +2026-01-14 03:04:49,077 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:49,078 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:49] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331089071 HTTP/1.1" 200 - +2026-01-14 03:04:50,015 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:50] "GET /api/strategies/notifications?limit=50&_t=1768331090009 HTTP/1.1" 200 - +2026-01-14 03:04:50,075 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:50,076 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:50] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331090070 HTTP/1.1" 200 - +2026-01-14 03:04:51,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:51,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:51] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331091063 HTTP/1.1" 200 - +2026-01-14 03:04:52,076 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:52,076 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:52] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331092071 HTTP/1.1" 200 - +2026-01-14 03:04:53,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:53,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:53] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331093061 HTTP/1.1" 200 - +2026-01-14 03:04:54,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:54,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:54] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331094062 HTTP/1.1" 200 - +2026-01-14 03:04:55,077 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:55,077 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:55] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331095073 HTTP/1.1" 200 - +2026-01-14 03:04:56,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:56,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:56] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331096065 HTTP/1.1" 200 - +2026-01-14 03:04:57,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:57,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:57] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331097063 HTTP/1.1" 200 - +2026-01-14 03:04:58,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:58,073 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:58] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331098068 HTTP/1.1" 200 - +2026-01-14 03:04:59,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:04:59,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:04:59] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331099062 HTTP/1.1" 200 - +2026-01-14 03:05:00,077 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:00,078 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:00] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331100072 HTTP/1.1" 200 - +2026-01-14 03:05:01,078 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:01,079 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:01] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331101073 HTTP/1.1" 200 - +2026-01-14 03:05:02,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:02,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:02] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331102062 HTTP/1.1" 200 - +2026-01-14 03:05:03,078 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:03,079 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:03] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331103073 HTTP/1.1" 200 - +2026-01-14 03:05:04,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:04,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:04] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331104066 HTTP/1.1" 200 - +2026-01-14 03:05:05,079 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:05,081 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:05] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331105069 HTTP/1.1" 200 - +2026-01-14 03:05:06,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:06,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:06] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331106066 HTTP/1.1" 200 - +2026-01-14 03:05:07,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:07,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:07] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331107063 HTTP/1.1" 200 - +2026-01-14 03:05:08,073 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:08,075 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:08] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331108069 HTTP/1.1" 200 - +2026-01-14 03:05:09,078 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:09,081 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:09] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331109073 HTTP/1.1" 200 - +2026-01-14 03:05:09,340 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 03:05:09] "GET /api/health HTTP/1.1" 200 - +2026-01-14 03:05:10,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:10,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:10] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331110060 HTTP/1.1" 200 - +2026-01-14 03:05:11,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:11,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:11] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331111063 HTTP/1.1" 200 - +2026-01-14 03:05:12,081 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:12,082 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:12] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331112074 HTTP/1.1" 200 - +2026-01-14 03:05:13,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:13,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:13] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331113063 HTTP/1.1" 200 - +2026-01-14 03:05:14,079 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:14,080 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:14] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331114074 HTTP/1.1" 200 - +2026-01-14 03:05:15,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:15,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:15] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331115067 HTTP/1.1" 200 - +2026-01-14 03:05:16,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:16,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:16] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331116065 HTTP/1.1" 200 - +2026-01-14 03:05:17,078 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:17,079 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:17] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331117072 HTTP/1.1" 200 - +2026-01-14 03:05:18,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:18,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:18] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331118065 HTTP/1.1" 200 - +2026-01-14 03:05:19,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:19,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:19] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331119065 HTTP/1.1" 200 - +2026-01-14 03:05:20,014 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:20] "GET /api/strategies/notifications?limit=50&_t=1768331120007 HTTP/1.1" 200 - +2026-01-14 03:05:20,075 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:20,076 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:20] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331120070 HTTP/1.1" 200 - +2026-01-14 03:05:21,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:21,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:21] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331121062 HTTP/1.1" 200 - +2026-01-14 03:05:22,076 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:22,077 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:22] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331122072 HTTP/1.1" 200 - +2026-01-14 03:05:23,063 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:23,064 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:23] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331123060 HTTP/1.1" 200 - +2026-01-14 03:05:24,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:24,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:24] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331124065 HTTP/1.1" 200 - +2026-01-14 03:05:25,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:25,091 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:25] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331125062 HTTP/1.1" 200 - +2026-01-14 03:05:26,062 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:26,063 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:26] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331126060 HTTP/1.1" 200 - +2026-01-14 03:05:27,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:27,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:27] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331127065 HTTP/1.1" 200 - +2026-01-14 03:05:28,062 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:28,063 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:28] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331128059 HTTP/1.1" 200 - +2026-01-14 03:05:29,078 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:29,079 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:29] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331129074 HTTP/1.1" 200 - +2026-01-14 03:05:30,075 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:30,076 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:30] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331130071 HTTP/1.1" 200 - +2026-01-14 03:05:31,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:31,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:31] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331131061 HTTP/1.1" 200 - +2026-01-14 03:05:32,079 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:32,090 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:32] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331132074 HTTP/1.1" 200 - +2026-01-14 03:05:33,075 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:33,076 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:33] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331133070 HTTP/1.1" 200 - +2026-01-14 03:05:34,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:34,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:34] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331134067 HTTP/1.1" 200 - +2026-01-14 03:05:35,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:35,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:35] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331135061 HTTP/1.1" 200 - +2026-01-14 03:05:36,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:36,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:36] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331136061 HTTP/1.1" 200 - +2026-01-14 03:05:37,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:37,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:37] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331137065 HTTP/1.1" 200 - +2026-01-14 03:05:38,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:38,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:38] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331138063 HTTP/1.1" 200 - +2026-01-14 03:05:39,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:39,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:39] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331139065 HTTP/1.1" 200 - +2026-01-14 03:05:39,394 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 03:05:39] "GET /api/health HTTP/1.1" 200 - +2026-01-14 03:05:40,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:40,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:40] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331140061 HTTP/1.1" 200 - +2026-01-14 03:05:41,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:41,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:41] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331141062 HTTP/1.1" 200 - +2026-01-14 03:05:42,080 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:42,080 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:42] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331142074 HTTP/1.1" 200 - +2026-01-14 03:05:43,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:43,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:43] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331143067 HTTP/1.1" 200 - +2026-01-14 03:05:44,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:44,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:44] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331144061 HTTP/1.1" 200 - +2026-01-14 03:05:45,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:45,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:45] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331145065 HTTP/1.1" 200 - +2026-01-14 03:05:46,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:46,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:46] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331146068 HTTP/1.1" 200 - +2026-01-14 03:05:47,075 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:47,077 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:47] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331147071 HTTP/1.1" 200 - +2026-01-14 03:05:48,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:48,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:48] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331148060 HTTP/1.1" 200 - +2026-01-14 03:05:48,267 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:48] "GET /api/strategies/notifications?limit=50&_t=1768331148260 HTTP/1.1" 200 - +2026-01-14 03:05:49,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:49,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:49] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331149061 HTTP/1.1" 200 - +2026-01-14 03:05:50,015 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:50] "GET /api/strategies/notifications?limit=50&_t=1768331150008 HTTP/1.1" 200 - +2026-01-14 03:05:50,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:50,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:50] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331150060 HTTP/1.1" 200 - +2026-01-14 03:05:51,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:51,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:51] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331151061 HTTP/1.1" 200 - +2026-01-14 03:05:52,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:52,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:52] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331152065 HTTP/1.1" 200 - +2026-01-14 03:05:53,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:53,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:53] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331153060 HTTP/1.1" 200 - +2026-01-14 03:05:54,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:54,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:54] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331154065 HTTP/1.1" 200 - +2026-01-14 03:05:55,080 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:55,111 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:55] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331155073 HTTP/1.1" 200 - +2026-01-14 03:05:56,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:56,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:56] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331156063 HTTP/1.1" 200 - +2026-01-14 03:05:57,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:57,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:57] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331157059 HTTP/1.1" 200 - +2026-01-14 03:05:58,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:58,073 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:58] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331158069 HTTP/1.1" 200 - +2026-01-14 03:05:59,075 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:05:59,077 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:05:59] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331159071 HTTP/1.1" 200 - +2026-01-14 03:06:00,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:00,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:00] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331160063 HTTP/1.1" 200 - +2026-01-14 03:06:01,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:01,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:01] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331161063 HTTP/1.1" 200 - +2026-01-14 03:06:02,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:02,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:02] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331162060 HTTP/1.1" 200 - +2026-01-14 03:06:03,078 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:03,079 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:03] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331163072 HTTP/1.1" 200 - +2026-01-14 03:06:04,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:04,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:04] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331164061 HTTP/1.1" 200 - +2026-01-14 03:06:05,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:05,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:05] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331165063 HTTP/1.1" 200 - +2026-01-14 03:06:06,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:06,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:06] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331166060 HTTP/1.1" 200 - +2026-01-14 03:06:07,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:07,064 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:07] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331167060 HTTP/1.1" 200 - +2026-01-14 03:06:08,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:08,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:08] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331168059 HTTP/1.1" 200 - +2026-01-14 03:06:09,079 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:09,080 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:09] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331169073 HTTP/1.1" 200 - +2026-01-14 03:06:09,446 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 03:06:09] "GET /api/health HTTP/1.1" 200 - +2026-01-14 03:06:10,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:10,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:10] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331170062 HTTP/1.1" 200 - +2026-01-14 03:06:11,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:11,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:11] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331171059 HTTP/1.1" 200 - +2026-01-14 03:06:12,073 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:12,074 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:12] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331172069 HTTP/1.1" 200 - +2026-01-14 03:06:13,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:13,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:13] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331173059 HTTP/1.1" 200 - +2026-01-14 03:06:14,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:14,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:14] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331174059 HTTP/1.1" 200 - +2026-01-14 03:06:15,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:15,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:15] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331175059 HTTP/1.1" 200 - +2026-01-14 03:06:16,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:16,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:16] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331176059 HTTP/1.1" 200 - +2026-01-14 03:06:17,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:17,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:17] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331177062 HTTP/1.1" 200 - +2026-01-14 03:06:18,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:18,326 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:18] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331178059 HTTP/1.1" 200 - +2026-01-14 03:06:19,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:19,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:19] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331179059 HTTP/1.1" 200 - +2026-01-14 03:06:20,015 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:20] "GET /api/strategies/notifications?limit=50&_t=1768331180009 HTTP/1.1" 200 - +2026-01-14 03:06:20,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:20,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:20] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331180059 HTTP/1.1" 200 - +2026-01-14 03:06:21,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:21,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:21] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331181059 HTTP/1.1" 200 - +2026-01-14 03:06:22,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:22,064 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:22] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331182059 HTTP/1.1" 200 - +2026-01-14 03:06:23,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:23,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:23] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331183059 HTTP/1.1" 200 - +2026-01-14 03:06:24,063 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:24,064 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:24] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331184059 HTTP/1.1" 200 - +2026-01-14 03:06:25,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:25,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:25] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331185059 HTTP/1.1" 200 - +2026-01-14 03:06:26,063 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:26,063 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:26] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331186059 HTTP/1.1" 200 - +2026-01-14 03:06:27,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:27,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:27] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331187059 HTTP/1.1" 200 - +2026-01-14 03:06:28,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:28,064 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:28] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331188060 HTTP/1.1" 200 - +2026-01-14 03:06:29,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:29,064 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:29] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331189060 HTTP/1.1" 200 - +2026-01-14 03:06:30,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:30,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:30] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331190060 HTTP/1.1" 200 - +2026-01-14 03:06:31,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:31,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:31] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331191060 HTTP/1.1" 200 - +2026-01-14 03:06:32,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:32,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:32] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331192059 HTTP/1.1" 200 - +2026-01-14 03:06:33,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:33,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:33] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331193060 HTTP/1.1" 200 - +2026-01-14 03:06:34,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:34,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:34] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331194060 HTTP/1.1" 200 - +2026-01-14 03:06:35,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:35,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:35] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331195059 HTTP/1.1" 200 - +2026-01-14 03:06:36,063 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:36,064 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:36] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331196059 HTTP/1.1" 200 - +2026-01-14 03:06:37,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:37,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:37] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331197060 HTTP/1.1" 200 - +2026-01-14 03:06:38,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:38,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:38] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331198060 HTTP/1.1" 200 - +2026-01-14 03:06:39,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:39,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:39] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331199060 HTTP/1.1" 200 - +2026-01-14 03:06:39,496 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 03:06:39] "GET /api/health HTTP/1.1" 200 - +2026-01-14 03:06:40,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:40,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:40] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331200060 HTTP/1.1" 200 - +2026-01-14 03:06:41,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:41,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:41] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331201060 HTTP/1.1" 200 - +2026-01-14 03:06:42,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:42,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:42] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331202060 HTTP/1.1" 200 - +2026-01-14 03:06:43,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:43,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:43] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331203060 HTTP/1.1" 200 - +2026-01-14 03:06:44,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:44,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:44] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331204059 HTTP/1.1" 200 - +2026-01-14 03:06:45,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:45,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:45] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331205060 HTTP/1.1" 200 - +2026-01-14 03:06:46,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:46,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:46] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331206060 HTTP/1.1" 200 - +2026-01-14 03:06:47,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:47,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:47] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331207060 HTTP/1.1" 200 - +2026-01-14 03:06:48,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:48,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:48] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331208061 HTTP/1.1" 200 - +2026-01-14 03:06:48,265 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:48] "GET /api/strategies/notifications?limit=50&_t=1768331208257 HTTP/1.1" 200 - +2026-01-14 03:06:49,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:49,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:49] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331209060 HTTP/1.1" 200 - +2026-01-14 03:06:50,018 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:50] "GET /api/strategies/notifications?limit=50&_t=1768331210011 HTTP/1.1" 200 - +2026-01-14 03:06:50,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:50,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:50] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331210060 HTTP/1.1" 200 - +2026-01-14 03:06:51,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:51,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:51] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331211060 HTTP/1.1" 200 - +2026-01-14 03:06:52,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:52,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:52] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331212060 HTTP/1.1" 200 - +2026-01-14 03:06:53,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:53,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:53] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331213060 HTTP/1.1" 200 - +2026-01-14 03:06:54,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:54,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:54] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331214061 HTTP/1.1" 200 - +2026-01-14 03:06:55,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:55,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:55] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331215061 HTTP/1.1" 200 - +2026-01-14 03:06:56,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:56,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:56] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331216061 HTTP/1.1" 200 - +2026-01-14 03:06:57,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:57,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:57] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331217061 HTTP/1.1" 200 - +2026-01-14 03:06:58,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:58,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:58] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331218061 HTTP/1.1" 200 - +2026-01-14 03:06:59,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:06:59,064 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:06:59] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331219061 HTTP/1.1" 200 - +2026-01-14 03:07:00,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:00,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:00] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331220061 HTTP/1.1" 200 - +2026-01-14 03:07:01,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:01,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:01] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331221061 HTTP/1.1" 200 - +2026-01-14 03:07:02,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:02,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:02] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331222061 HTTP/1.1" 200 - +2026-01-14 03:07:03,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:03,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:03] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331223061 HTTP/1.1" 200 - +2026-01-14 03:07:04,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:04,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:04] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331224061 HTTP/1.1" 200 - +2026-01-14 03:07:05,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:05,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:05] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331225061 HTTP/1.1" 200 - +2026-01-14 03:07:06,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:06,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:06] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331226061 HTTP/1.1" 200 - +2026-01-14 03:07:07,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:07,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:07] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331227061 HTTP/1.1" 200 - +2026-01-14 03:07:08,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:08,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:08] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331228061 HTTP/1.1" 200 - +2026-01-14 03:07:09,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:09,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:09] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331229061 HTTP/1.1" 200 - +2026-01-14 03:07:09,569 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 03:07:09] "GET /api/health HTTP/1.1" 200 - +2026-01-14 03:07:10,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:10,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:10] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331230061 HTTP/1.1" 200 - +2026-01-14 03:07:11,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:11,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:11] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331231061 HTTP/1.1" 200 - +2026-01-14 03:07:12,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:12,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:12] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331232061 HTTP/1.1" 200 - +2026-01-14 03:07:13,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:13,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:13] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331233061 HTTP/1.1" 200 - +2026-01-14 03:07:14,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:14,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:14] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331234061 HTTP/1.1" 200 - +2026-01-14 03:07:15,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:15,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:15] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331235060 HTTP/1.1" 200 - +2026-01-14 03:07:16,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:16,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:16] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331236061 HTTP/1.1" 200 - +2026-01-14 03:07:17,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:17,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:17] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331237061 HTTP/1.1" 200 - +2026-01-14 03:07:18,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:18,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:18] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331238062 HTTP/1.1" 200 - +2026-01-14 03:07:19,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:19,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:19] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331239061 HTTP/1.1" 200 - +2026-01-14 03:07:20,018 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:20] "GET /api/strategies/notifications?limit=50&_t=1768331240012 HTTP/1.1" 200 - +2026-01-14 03:07:20,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:20,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:20] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331240061 HTTP/1.1" 200 - +2026-01-14 03:07:21,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:21,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:21] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331241061 HTTP/1.1" 200 - +2026-01-14 03:07:22,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:22,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:22] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331242061 HTTP/1.1" 200 - +2026-01-14 03:07:23,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:23,073 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:23] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331243063 HTTP/1.1" 200 - +2026-01-14 03:07:24,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:24,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:24] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331244062 HTTP/1.1" 200 - +2026-01-14 03:07:25,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:25,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:25] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331245062 HTTP/1.1" 200 - +2026-01-14 03:07:26,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:26,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:26] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331246062 HTTP/1.1" 200 - +2026-01-14 03:07:27,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:27,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:27] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331247062 HTTP/1.1" 200 - +2026-01-14 03:07:28,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:28,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:28] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331248062 HTTP/1.1" 200 - +2026-01-14 03:07:29,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:29,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:29] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331249062 HTTP/1.1" 200 - +2026-01-14 03:07:30,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:30,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:30] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331250062 HTTP/1.1" 200 - +2026-01-14 03:07:31,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:31,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:31] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331251062 HTTP/1.1" 200 - +2026-01-14 03:07:32,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:32,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:32] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331252062 HTTP/1.1" 200 - +2026-01-14 03:07:33,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:33,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:33] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331253062 HTTP/1.1" 200 - +2026-01-14 03:07:34,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:34,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:34] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331254062 HTTP/1.1" 200 - +2026-01-14 03:07:35,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:35,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:35] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331255062 HTTP/1.1" 200 - +2026-01-14 03:07:36,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:36,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:36] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331256062 HTTP/1.1" 200 - +2026-01-14 03:07:37,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:37,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:37] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331257062 HTTP/1.1" 200 - +2026-01-14 03:07:38,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:38,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:38] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331258062 HTTP/1.1" 200 - +2026-01-14 03:07:39,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:39,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:39] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331259062 HTTP/1.1" 200 - +2026-01-14 03:07:39,622 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 03:07:39] "GET /api/health HTTP/1.1" 200 - +2026-01-14 03:07:40,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:40,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:40] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331260062 HTTP/1.1" 200 - +2026-01-14 03:07:41,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:41,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:41] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331261062 HTTP/1.1" 200 - +2026-01-14 03:07:42,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:42,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:42] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331262062 HTTP/1.1" 200 - +2026-01-14 03:07:43,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:43,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:43] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331263062 HTTP/1.1" 200 - +2026-01-14 03:07:44,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:44,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:44] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331264062 HTTP/1.1" 200 - +2026-01-14 03:07:45,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:45,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:45] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331265062 HTTP/1.1" 200 - +2026-01-14 03:07:46,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:46,081 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:46] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331266063 HTTP/1.1" 200 - +2026-01-14 03:07:47,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:47,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:47] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331267062 HTTP/1.1" 200 - +2026-01-14 03:07:48,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:48,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:48] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331268061 HTTP/1.1" 200 - +2026-01-14 03:07:48,269 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:48] "GET /api/strategies/notifications?limit=50&_t=1768331268263 HTTP/1.1" 200 - +2026-01-14 03:07:49,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:49,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:49] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331269063 HTTP/1.1" 200 - +2026-01-14 03:07:50,017 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:50] "GET /api/strategies/notifications?limit=50&_t=1768331270010 HTTP/1.1" 200 - +2026-01-14 03:07:50,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:50,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:50] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331270062 HTTP/1.1" 200 - +2026-01-14 03:07:51,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:51,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:51] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331271062 HTTP/1.1" 200 - +2026-01-14 03:07:52,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:52,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:52] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331272061 HTTP/1.1" 200 - +2026-01-14 03:07:53,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:53,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:53] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331273063 HTTP/1.1" 200 - +2026-01-14 03:07:54,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:54,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:54] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331274063 HTTP/1.1" 200 - +2026-01-14 03:07:55,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:55,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:55] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331275063 HTTP/1.1" 200 - +2026-01-14 03:07:56,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:56,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:56] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331276063 HTTP/1.1" 200 - +2026-01-14 03:07:57,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:57,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:57] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331277063 HTTP/1.1" 200 - +2026-01-14 03:07:58,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:58,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:58] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331278063 HTTP/1.1" 200 - +2026-01-14 03:07:59,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:07:59,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:07:59] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331279063 HTTP/1.1" 200 - +2026-01-14 03:08:00,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:00,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:00] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331280060 HTTP/1.1" 200 - +2026-01-14 03:08:01,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:01,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:01] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331281063 HTTP/1.1" 200 - +2026-01-14 03:08:02,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:02,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:02] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331282061 HTTP/1.1" 200 - +2026-01-14 03:08:03,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:03,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:03] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331283063 HTTP/1.1" 200 - +2026-01-14 03:08:04,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:04,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:04] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331284063 HTTP/1.1" 200 - +2026-01-14 03:08:05,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:05,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:05] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331285063 HTTP/1.1" 200 - +2026-01-14 03:08:06,082 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:06,082 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:06] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331286063 HTTP/1.1" 200 - +2026-01-14 03:08:07,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:07,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:07] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331287063 HTTP/1.1" 200 - +2026-01-14 03:08:08,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:08,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:08] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331288063 HTTP/1.1" 200 - +2026-01-14 03:08:09,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:09,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:09] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331289063 HTTP/1.1" 200 - +2026-01-14 03:08:09,685 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 03:08:09] "GET /api/health HTTP/1.1" 200 - +2026-01-14 03:08:10,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:10,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:10] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331290063 HTTP/1.1" 200 - +2026-01-14 03:08:11,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:11,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:11] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331291063 HTTP/1.1" 200 - +2026-01-14 03:08:12,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:12,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:12] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331292063 HTTP/1.1" 200 - +2026-01-14 03:08:13,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:13,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:13] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331293063 HTTP/1.1" 200 - +2026-01-14 03:08:14,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:14,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:14] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331294063 HTTP/1.1" 200 - +2026-01-14 03:08:15,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:15,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:15] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331295063 HTTP/1.1" 200 - +2026-01-14 03:08:16,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:16,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:16] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331296063 HTTP/1.1" 200 - +2026-01-14 03:08:17,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:17,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:17] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331297063 HTTP/1.1" 200 - +2026-01-14 03:08:18,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:18,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:18] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331298064 HTTP/1.1" 200 - +2026-01-14 03:08:19,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:19,073 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:19] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331299063 HTTP/1.1" 200 - +2026-01-14 03:08:20,016 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:20] "GET /api/strategies/notifications?limit=50&_t=1768331300009 HTTP/1.1" 200 - +2026-01-14 03:08:20,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:20,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:20] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331300063 HTTP/1.1" 200 - +2026-01-14 03:08:21,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:21,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:21] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331301061 HTTP/1.1" 200 - +2026-01-14 03:08:22,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:22,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:22] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331302063 HTTP/1.1" 200 - +2026-01-14 03:08:23,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:23,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:23] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331303063 HTTP/1.1" 200 - +2026-01-14 03:08:24,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:24,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:24] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331304064 HTTP/1.1" 200 - +2026-01-14 03:08:25,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:25,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:25] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331305064 HTTP/1.1" 200 - +2026-01-14 03:08:26,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:26,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:26] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331306064 HTTP/1.1" 200 - +2026-01-14 03:08:27,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:27,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:27] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331307064 HTTP/1.1" 200 - +2026-01-14 03:08:28,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:28,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:28] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331308064 HTTP/1.1" 200 - +2026-01-14 03:08:29,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:29,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:29] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331309064 HTTP/1.1" 200 - +2026-01-14 03:08:30,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:30,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:30] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331310064 HTTP/1.1" 200 - +2026-01-14 03:08:31,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:31,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:31] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331311064 HTTP/1.1" 200 - +2026-01-14 03:08:32,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:32,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:32] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331312064 HTTP/1.1" 200 - +2026-01-14 03:08:33,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:33,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:33] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331313064 HTTP/1.1" 200 - +2026-01-14 03:08:34,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:34,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:34] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331314064 HTTP/1.1" 200 - +2026-01-14 03:08:35,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:35,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:35] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331315060 HTTP/1.1" 200 - +2026-01-14 03:08:36,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:36,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:36] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331316064 HTTP/1.1" 200 - +2026-01-14 03:08:37,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:37,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:37] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331317064 HTTP/1.1" 200 - +2026-01-14 03:08:38,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:38,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:38] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331318064 HTTP/1.1" 200 - +2026-01-14 03:08:39,177 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:39,178 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:39] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331319061 HTTP/1.1" 200 - +2026-01-14 03:08:39,728 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 03:08:39] "GET /api/health HTTP/1.1" 200 - +2026-01-14 03:08:40,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:40,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:40] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331320065 HTTP/1.1" 200 - +2026-01-14 03:08:41,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:41,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:41] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331321060 HTTP/1.1" 200 - +2026-01-14 03:08:42,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:42,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:42] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331322065 HTTP/1.1" 200 - +2026-01-14 03:08:43,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:43,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:43] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331323065 HTTP/1.1" 200 - +2026-01-14 03:08:44,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:44,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:44] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331324062 HTTP/1.1" 200 - +2026-01-14 03:08:45,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:45,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:45] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331325064 HTTP/1.1" 200 - +2026-01-14 03:08:46,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:46,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:46] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331326064 HTTP/1.1" 200 - +2026-01-14 03:08:47,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:47,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:47] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331327064 HTTP/1.1" 200 - +2026-01-14 03:08:48,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:48,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:48] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331328064 HTTP/1.1" 200 - +2026-01-14 03:08:48,265 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:48] "GET /api/strategies/notifications?limit=50&_t=1768331328259 HTTP/1.1" 200 - +2026-01-14 03:08:49,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:49,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:49] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331329064 HTTP/1.1" 200 - +2026-01-14 03:08:50,021 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:50] "GET /api/strategies/notifications?limit=50&_t=1768331330014 HTTP/1.1" 200 - +2026-01-14 03:08:50,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:50,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:50] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331330060 HTTP/1.1" 200 - +2026-01-14 03:08:51,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:51,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:51] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331331059 HTTP/1.1" 200 - +2026-01-14 03:08:52,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:52,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:52] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331332063 HTTP/1.1" 200 - +2026-01-14 03:08:53,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:53,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:53] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331333065 HTTP/1.1" 200 - +2026-01-14 03:08:54,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:54,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:54] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331334063 HTTP/1.1" 200 - +2026-01-14 03:08:55,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:55,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:55] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331335065 HTTP/1.1" 200 - +2026-01-14 03:08:56,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:56,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:56] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331336061 HTTP/1.1" 200 - +2026-01-14 03:08:57,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:57,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:57] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331337063 HTTP/1.1" 200 - +2026-01-14 03:08:58,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:58,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:58] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331338065 HTTP/1.1" 200 - +2026-01-14 03:08:59,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:08:59,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:08:59] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331339063 HTTP/1.1" 200 - +2026-01-14 03:09:00,073 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:00,073 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:00] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331340065 HTTP/1.1" 200 - +2026-01-14 03:09:01,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:01,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:01] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331341060 HTTP/1.1" 200 - +2026-01-14 03:09:02,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:02,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:02] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331342065 HTTP/1.1" 200 - +2026-01-14 03:09:03,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:03,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:03] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331343063 HTTP/1.1" 200 - +2026-01-14 03:09:04,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:04,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:04] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331344065 HTTP/1.1" 200 - +2026-01-14 03:09:05,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:05,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:05] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331345065 HTTP/1.1" 200 - +2026-01-14 03:09:06,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:06,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:06] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331346065 HTTP/1.1" 200 - +2026-01-14 03:09:07,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:07,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:07] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331347066 HTTP/1.1" 200 - +2026-01-14 03:09:08,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:08,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:08] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331348064 HTTP/1.1" 200 - +2026-01-14 03:09:09,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:09,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:09] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331349065 HTTP/1.1" 200 - +2026-01-14 03:09:09,787 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 03:09:09] "GET /api/health HTTP/1.1" 200 - +2026-01-14 03:09:10,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:10,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:10] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331350061 HTTP/1.1" 200 - +2026-01-14 03:09:11,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:11,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:11] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331351065 HTTP/1.1" 200 - +2026-01-14 03:09:12,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:12,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:12] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331352065 HTTP/1.1" 200 - +2026-01-14 03:09:13,077 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:13,078 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:13] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331353062 HTTP/1.1" 200 - +2026-01-14 03:09:14,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:14,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:14] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331354066 HTTP/1.1" 200 - +2026-01-14 03:09:15,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:15,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:15] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331355063 HTTP/1.1" 200 - +2026-01-14 03:09:16,063 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:16,064 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:16] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331356059 HTTP/1.1" 200 - +2026-01-14 03:09:17,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:17,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:17] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331357066 HTTP/1.1" 200 - +2026-01-14 03:09:18,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:18,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:18] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331358060 HTTP/1.1" 200 - +2026-01-14 03:09:19,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:19,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:19] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331359063 HTTP/1.1" 200 - +2026-01-14 03:09:20,014 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:20] "GET /api/strategies/notifications?limit=50&_t=1768331360008 HTTP/1.1" 200 - +2026-01-14 03:09:20,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:20,073 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:20] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331360066 HTTP/1.1" 200 - +2026-01-14 03:09:21,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:21,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:21] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331361064 HTTP/1.1" 200 - +2026-01-14 03:09:22,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:22,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:22] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331362059 HTTP/1.1" 200 - +2026-01-14 03:09:23,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:23,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:23] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331363063 HTTP/1.1" 200 - +2026-01-14 03:09:24,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:24,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:24] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331364064 HTTP/1.1" 200 - +2026-01-14 03:09:25,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:25,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:25] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331365066 HTTP/1.1" 200 - +2026-01-14 03:09:26,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:26,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:26] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331366066 HTTP/1.1" 200 - +2026-01-14 03:09:27,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:27,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:27] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331367062 HTTP/1.1" 200 - +2026-01-14 03:09:28,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:28,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:28] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331368066 HTTP/1.1" 200 - +2026-01-14 03:09:29,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:29,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:29] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331369066 HTTP/1.1" 200 - +2026-01-14 03:09:30,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:30,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:30] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331370066 HTTP/1.1" 200 - +2026-01-14 03:09:31,073 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:31,075 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:31] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331371066 HTTP/1.1" 200 - +2026-01-14 03:09:32,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:32,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:32] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331372066 HTTP/1.1" 200 - +2026-01-14 03:09:33,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:33,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:33] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331373066 HTTP/1.1" 200 - +2026-01-14 03:09:34,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:34,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:34] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331374066 HTTP/1.1" 200 - +2026-01-14 03:09:35,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:35,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:35] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331375063 HTTP/1.1" 200 - +2026-01-14 03:09:36,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:36,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:36] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331376066 HTTP/1.1" 200 - +2026-01-14 03:09:37,063 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:37,064 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:37] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331377060 HTTP/1.1" 200 - +2026-01-14 03:09:38,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:38,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:38] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331378066 HTTP/1.1" 200 - +2026-01-14 03:09:39,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:39,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:39] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331379067 HTTP/1.1" 200 - +2026-01-14 03:09:39,869 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 03:09:39] "GET /api/health HTTP/1.1" 200 - +2026-01-14 03:09:40,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:40,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:40] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331380061 HTTP/1.1" 200 - +2026-01-14 03:09:41,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:41,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:41] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331381063 HTTP/1.1" 200 - +2026-01-14 03:09:42,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:42,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:42] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331382066 HTTP/1.1" 200 - +2026-01-14 03:09:43,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:43,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:43] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331383064 HTTP/1.1" 200 - +2026-01-14 03:09:44,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:44,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:44] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331384067 HTTP/1.1" 200 - +2026-01-14 03:09:45,074 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:45,074 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:45] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331385067 HTTP/1.1" 200 - +2026-01-14 03:09:46,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:46,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:46] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331386067 HTTP/1.1" 200 - +2026-01-14 03:09:47,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:47,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:47] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331387063 HTTP/1.1" 200 - +2026-01-14 03:09:48,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:48,073 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:48] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331388067 HTTP/1.1" 200 - +2026-01-14 03:09:48,266 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:48] "GET /api/strategies/notifications?limit=50&_t=1768331388259 HTTP/1.1" 200 - +2026-01-14 03:09:49,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:49,064 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:49] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331389060 HTTP/1.1" 200 - +2026-01-14 03:09:50,023 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:50] "GET /api/strategies/notifications?limit=50&_t=1768331390017 HTTP/1.1" 200 - +2026-01-14 03:09:50,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:50,073 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:50] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331390064 HTTP/1.1" 200 - +2026-01-14 03:09:51,073 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:51,074 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:51] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331391067 HTTP/1.1" 200 - +2026-01-14 03:09:52,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:52,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:52] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331392063 HTTP/1.1" 200 - +2026-01-14 03:09:53,075 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:53,076 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:53] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331393068 HTTP/1.1" 200 - +2026-01-14 03:09:54,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:54,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:54] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331394062 HTTP/1.1" 200 - +2026-01-14 03:09:55,077 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:55,079 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:55] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331395068 HTTP/1.1" 200 - +2026-01-14 03:09:56,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:56,064 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:56] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331396061 HTTP/1.1" 200 - +2026-01-14 03:09:57,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:57,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:57] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331397065 HTTP/1.1" 200 - +2026-01-14 03:09:58,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:58,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:58] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331398062 HTTP/1.1" 200 - +2026-01-14 03:09:59,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:09:59,080 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:09:59] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331399064 HTTP/1.1" 200 - +2026-01-14 03:10:00,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:00,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:00] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331400063 HTTP/1.1" 200 - +2026-01-14 03:10:01,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:01,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:01] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331401067 HTTP/1.1" 200 - +2026-01-14 03:10:02,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:02,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:02] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331402063 HTTP/1.1" 200 - +2026-01-14 03:10:03,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:03,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:03] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331403063 HTTP/1.1" 200 - +2026-01-14 03:10:04,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:04,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:04] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331404061 HTTP/1.1" 200 - +2026-01-14 03:10:05,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:05,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:05] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331405060 HTTP/1.1" 200 - +2026-01-14 03:10:06,073 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:06,074 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:06] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331406067 HTTP/1.1" 200 - +2026-01-14 03:10:07,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:07,074 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:07] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331407068 HTTP/1.1" 200 - +2026-01-14 03:10:08,075 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:08,076 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:08] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331408068 HTTP/1.1" 200 - +2026-01-14 03:10:09,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:09,073 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:09] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331409067 HTTP/1.1" 200 - +2026-01-14 03:10:09,922 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 03:10:09] "GET /api/health HTTP/1.1" 200 - +2026-01-14 03:10:10,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:10,073 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:10] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331410067 HTTP/1.1" 200 - +2026-01-14 03:10:11,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:11,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:11] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331411064 HTTP/1.1" 200 - +2026-01-14 03:10:12,063 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:12,063 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:12] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331412059 HTTP/1.1" 200 - +2026-01-14 03:10:13,074 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:13,075 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:13] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331413069 HTTP/1.1" 200 - +2026-01-14 03:10:14,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:14,073 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:14] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331414068 HTTP/1.1" 200 - +2026-01-14 03:10:15,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:15,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:15] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331415063 HTTP/1.1" 200 - +2026-01-14 03:10:16,076 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:16,077 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:16] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331416069 HTTP/1.1" 200 - +2026-01-14 03:10:17,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:17,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:17] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331417065 HTTP/1.1" 200 - +2026-01-14 03:10:18,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:18,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:18] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331418064 HTTP/1.1" 200 - +2026-01-14 03:10:19,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:19,064 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:19] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331419060 HTTP/1.1" 200 - +2026-01-14 03:10:20,021 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:20] "GET /api/strategies/notifications?limit=50&_t=1768331420013 HTTP/1.1" 200 - +2026-01-14 03:10:20,073 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:20,074 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:20] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331420068 HTTP/1.1" 200 - +2026-01-14 03:10:21,074 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:21,075 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:21] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331421068 HTTP/1.1" 200 - +2026-01-14 03:10:22,063 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:22,064 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:22] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331422059 HTTP/1.1" 200 - +2026-01-14 03:10:23,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:23,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:23] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331423061 HTTP/1.1" 200 - +2026-01-14 03:10:24,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:24,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:24] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331424063 HTTP/1.1" 200 - +2026-01-14 03:10:25,077 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:25,078 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:25] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331425072 HTTP/1.1" 200 - +2026-01-14 03:10:26,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:26,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:26] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331426064 HTTP/1.1" 200 - +2026-01-14 03:10:27,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:27,073 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:27] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331427067 HTTP/1.1" 200 - +2026-01-14 03:10:28,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:28,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:28] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331428065 HTTP/1.1" 200 - +2026-01-14 03:10:29,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:29,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:29] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331429067 HTTP/1.1" 200 - +2026-01-14 03:10:30,074 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:30,074 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:30] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331430068 HTTP/1.1" 200 - +2026-01-14 03:10:31,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:31,073 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:31] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331431068 HTTP/1.1" 200 - +2026-01-14 03:10:32,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:32,074 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:32] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331432067 HTTP/1.1" 200 - +2026-01-14 03:10:33,074 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:33,074 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:33] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331433068 HTTP/1.1" 200 - +2026-01-14 03:10:34,063 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:34,064 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:34] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331434060 HTTP/1.1" 200 - +2026-01-14 03:10:35,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:35,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:35] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331435064 HTTP/1.1" 200 - +2026-01-14 03:10:36,073 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:36,074 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:36] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331436068 HTTP/1.1" 200 - +2026-01-14 03:10:37,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:37,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:37] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331437061 HTTP/1.1" 200 - +2026-01-14 03:10:38,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:38,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:38] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331438062 HTTP/1.1" 200 - +2026-01-14 03:10:39,073 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:39,074 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:39] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331439067 HTTP/1.1" 200 - +2026-01-14 03:10:39,971 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 03:10:39] "GET /api/health HTTP/1.1" 200 - +2026-01-14 03:10:40,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:40,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:40] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331440061 HTTP/1.1" 200 - +2026-01-14 03:10:41,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:41,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:41] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331441064 HTTP/1.1" 200 - +2026-01-14 03:10:42,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:42,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:42] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331442062 HTTP/1.1" 200 - +2026-01-14 03:10:43,075 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:43,076 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:43] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331443069 HTTP/1.1" 200 - +2026-01-14 03:10:44,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:44,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:44] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331444060 HTTP/1.1" 200 - +2026-01-14 03:10:45,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:45,073 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:45] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331445067 HTTP/1.1" 200 - +2026-01-14 03:10:46,076 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:46,079 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:46] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331446070 HTTP/1.1" 200 - +2026-01-14 03:10:47,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:47,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:47] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331447062 HTTP/1.1" 200 - +2026-01-14 03:10:48,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:48,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:48] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331448065 HTTP/1.1" 200 - +2026-01-14 03:10:48,276 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:48] "GET /api/strategies/notifications?limit=50&_t=1768331448266 HTTP/1.1" 200 - +2026-01-14 03:10:49,074 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:49,075 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:49] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331449068 HTTP/1.1" 200 - +2026-01-14 03:10:50,025 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:50] "GET /api/strategies/notifications?limit=50&_t=1768331450019 HTTP/1.1" 200 - +2026-01-14 03:10:50,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:50,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:50] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331450066 HTTP/1.1" 200 - +2026-01-14 03:10:51,075 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:51,075 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:51] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331451069 HTTP/1.1" 200 - +2026-01-14 03:10:52,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:52,074 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:52] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331452064 HTTP/1.1" 200 - +2026-01-14 03:10:53,074 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:53,074 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:53] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331453069 HTTP/1.1" 200 - +2026-01-14 03:10:54,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:54,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:54] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331454065 HTTP/1.1" 200 - +2026-01-14 03:10:55,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:55,064 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:55] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331455061 HTTP/1.1" 200 - +2026-01-14 03:10:56,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:56,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:56] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331456065 HTTP/1.1" 200 - +2026-01-14 03:10:57,073 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:57,074 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:57] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331457069 HTTP/1.1" 200 - +2026-01-14 03:10:58,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:58,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:58] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331458067 HTTP/1.1" 200 - +2026-01-14 03:10:59,063 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:10:59,063 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:10:59] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331459060 HTTP/1.1" 200 - +2026-01-14 03:11:00,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:00,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:00] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331460061 HTTP/1.1" 200 - +2026-01-14 03:11:01,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:01,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:01] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331461065 HTTP/1.1" 200 - +2026-01-14 03:11:02,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:02,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:02] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331462066 HTTP/1.1" 200 - +2026-01-14 03:11:03,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:03,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:03] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331463066 HTTP/1.1" 200 - +2026-01-14 03:11:04,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:04,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:04] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331464063 HTTP/1.1" 200 - +2026-01-14 03:11:05,075 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:05,075 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:05] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331465070 HTTP/1.1" 200 - +2026-01-14 03:11:06,074 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:06,087 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:06] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331466070 HTTP/1.1" 200 - +2026-01-14 03:11:07,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:07,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:07] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331467061 HTTP/1.1" 200 - +2026-01-14 03:11:08,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:08,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:08] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331468063 HTTP/1.1" 200 - +2026-01-14 03:11:09,074 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:09,075 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:09] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331469067 HTTP/1.1" 200 - +2026-01-14 03:11:10,040 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 03:11:10] "GET /api/health HTTP/1.1" 200 - +2026-01-14 03:11:10,073 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:10,073 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:10] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331470067 HTTP/1.1" 200 - +2026-01-14 03:11:11,075 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:11,082 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:11] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331471069 HTTP/1.1" 200 - +2026-01-14 03:11:12,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:12,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:12] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331472063 HTTP/1.1" 200 - +2026-01-14 03:11:13,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:13,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:13] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331473061 HTTP/1.1" 200 - +2026-01-14 03:11:14,075 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:14,075 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:14] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331474070 HTTP/1.1" 200 - +2026-01-14 03:11:15,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:15,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:15] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331475064 HTTP/1.1" 200 - +2026-01-14 03:11:16,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:16,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:16] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331476063 HTTP/1.1" 200 - +2026-01-14 03:11:17,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:17,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:17] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331477061 HTTP/1.1" 200 - +2026-01-14 03:11:18,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:18,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:18] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331478060 HTTP/1.1" 200 - +2026-01-14 03:11:19,073 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:19,292 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:19] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331479068 HTTP/1.1" 200 - +2026-01-14 03:11:20,020 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:20] "GET /api/strategies/notifications?limit=50&_t=1768331480012 HTTP/1.1" 200 - +2026-01-14 03:11:20,074 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:20,075 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:20] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331480070 HTTP/1.1" 200 - +2026-01-14 03:11:21,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:21,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:21] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331481062 HTTP/1.1" 200 - +2026-01-14 03:11:22,074 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:22,075 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:22] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331482071 HTTP/1.1" 200 - +2026-01-14 03:11:23,074 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:23,075 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:23] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331483070 HTTP/1.1" 200 - +2026-01-14 03:11:24,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:24,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:24] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331484064 HTTP/1.1" 200 - +2026-01-14 03:11:25,075 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:25,076 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:25] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331485067 HTTP/1.1" 200 - +2026-01-14 03:11:26,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:26,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:26] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331486063 HTTP/1.1" 200 - +2026-01-14 03:11:27,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:27,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:27] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331487063 HTTP/1.1" 200 - +2026-01-14 03:11:28,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:28,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:28] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331488063 HTTP/1.1" 200 - +2026-01-14 03:11:29,075 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:29,076 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:29] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331489071 HTTP/1.1" 200 - +2026-01-14 03:11:30,074 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:30,075 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:30] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331490070 HTTP/1.1" 200 - +2026-01-14 03:11:31,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:31,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:31] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331491065 HTTP/1.1" 200 - +2026-01-14 03:11:32,074 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:32,075 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:32] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331492070 HTTP/1.1" 200 - +2026-01-14 03:11:33,074 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:33,074 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:33] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331493070 HTTP/1.1" 200 - +2026-01-14 03:11:34,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:34,073 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:34] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331494068 HTTP/1.1" 200 - +2026-01-14 03:11:35,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:35,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:35] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331495063 HTTP/1.1" 200 - +2026-01-14 03:11:36,076 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:36,076 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:36] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331496071 HTTP/1.1" 200 - +2026-01-14 03:11:37,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:37,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:37] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331497063 HTTP/1.1" 200 - +2026-01-14 03:11:38,063 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:38,063 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:38] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331498059 HTTP/1.1" 200 - +2026-01-14 03:11:39,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:39,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:39] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331499065 HTTP/1.1" 200 - +2026-01-14 03:11:40,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:40,064 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:40] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331500061 HTTP/1.1" 200 - +2026-01-14 03:11:40,087 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 03:11:40] "GET /api/health HTTP/1.1" 200 - +2026-01-14 03:11:41,075 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:41,076 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:41] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331501071 HTTP/1.1" 200 - +2026-01-14 03:11:42,074 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:42,075 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:42] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331502069 HTTP/1.1" 200 - +2026-01-14 03:11:43,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:43,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:43] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331503062 HTTP/1.1" 200 - +2026-01-14 03:11:44,075 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:44,076 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:44] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331504070 HTTP/1.1" 200 - +2026-01-14 03:11:45,076 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:45,076 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:45] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331505071 HTTP/1.1" 200 - +2026-01-14 03:11:46,075 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:46,076 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:46] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331506071 HTTP/1.1" 200 - +2026-01-14 03:11:47,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:47,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:47] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331507062 HTTP/1.1" 200 - +2026-01-14 03:11:48,076 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:48,079 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:48] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331508071 HTTP/1.1" 200 - +2026-01-14 03:11:48,270 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:48] "GET /api/strategies/notifications?limit=50&_t=1768331508261 HTTP/1.1" 200 - +2026-01-14 03:11:49,076 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:49,076 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:49] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331509071 HTTP/1.1" 200 - +2026-01-14 03:11:50,022 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:50] "GET /api/strategies/notifications?limit=50&_t=1768331510017 HTTP/1.1" 200 - +2026-01-14 03:11:50,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:50,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:50] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331510063 HTTP/1.1" 200 - +2026-01-14 03:11:51,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:51,073 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:51] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331511067 HTTP/1.1" 200 - +2026-01-14 03:11:52,075 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:52,076 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:52] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331512071 HTTP/1.1" 200 - +2026-01-14 03:11:53,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:53,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:53] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331513063 HTTP/1.1" 200 - +2026-01-14 03:11:54,073 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:54,073 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:54] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331514068 HTTP/1.1" 200 - +2026-01-14 03:11:55,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:55,064 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:55] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331515061 HTTP/1.1" 200 - +2026-01-14 03:11:56,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:56,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:56] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331516062 HTTP/1.1" 200 - +2026-01-14 03:11:57,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:57,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:57] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331517064 HTTP/1.1" 200 - +2026-01-14 03:11:58,063 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:58,064 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:58] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331518061 HTTP/1.1" 200 - +2026-01-14 03:11:59,076 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:11:59,076 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:11:59] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331519071 HTTP/1.1" 200 - +2026-01-14 03:12:00,063 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:00,064 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:00] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331520061 HTTP/1.1" 200 - +2026-01-14 03:12:01,074 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:01,075 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:01] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331521070 HTTP/1.1" 200 - +2026-01-14 03:12:02,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:02,071 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:02] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331522066 HTTP/1.1" 200 - +2026-01-14 03:12:03,063 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:03,063 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:03] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331523060 HTTP/1.1" 200 - +2026-01-14 03:12:04,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:04,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:04] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331524062 HTTP/1.1" 200 - +2026-01-14 03:12:05,073 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:05,074 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:05] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331525069 HTTP/1.1" 200 - +2026-01-14 03:12:06,074 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:06,075 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:06] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331526070 HTTP/1.1" 200 - +2026-01-14 03:12:07,075 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:07,076 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:07] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331527071 HTTP/1.1" 200 - +2026-01-14 03:12:08,076 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:08,077 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:08] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331528072 HTTP/1.1" 200 - +2026-01-14 03:12:09,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:09,064 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:09] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331529060 HTTP/1.1" 200 - +2026-01-14 03:12:10,073 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:10,085 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:10] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331530068 HTTP/1.1" 200 - +2026-01-14 03:12:10,132 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 03:12:10] "GET /api/health HTTP/1.1" 200 - +2026-01-14 03:12:11,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:11,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:11] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331531065 HTTP/1.1" 200 - +2026-01-14 03:12:12,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:12,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:12] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331532061 HTTP/1.1" 200 - +2026-01-14 03:12:13,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:13,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:13] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331533061 HTTP/1.1" 200 - +2026-01-14 03:12:14,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:14,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:14] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331534063 HTTP/1.1" 200 - +2026-01-14 03:12:15,077 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:15,078 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:15] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331535072 HTTP/1.1" 200 - +2026-01-14 03:12:16,070 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:16,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:16] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331536066 HTTP/1.1" 200 - +2026-01-14 03:12:17,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:17,065 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:17] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331537060 HTTP/1.1" 200 - +2026-01-14 03:12:18,079 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:18,080 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:18] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331538071 HTTP/1.1" 200 - +2026-01-14 03:12:19,064 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:19,064 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:19] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331539059 HTTP/1.1" 200 - +2026-01-14 03:12:20,013 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:20] "GET /api/strategies/notifications?limit=50&_t=1768331540007 HTTP/1.1" 200 - +2026-01-14 03:12:20,074 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:20,075 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:20] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331540070 HTTP/1.1" 200 - +2026-01-14 03:12:21,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:21,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:21] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331541059 HTTP/1.1" 200 - +2026-01-14 03:12:22,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:22,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:22] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331542065 HTTP/1.1" 200 - +2026-01-14 03:12:23,063 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:23,063 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:23] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331543061 HTTP/1.1" 200 - +2026-01-14 03:12:24,072 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:24,073 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:24] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331544068 HTTP/1.1" 200 - +2026-01-14 03:12:25,076 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:25,077 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:25] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331545072 HTTP/1.1" 200 - +2026-01-14 03:12:26,065 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:26,066 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:26] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331546063 HTTP/1.1" 200 - +2026-01-14 03:12:27,074 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:27,074 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:27] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331547070 HTTP/1.1" 200 - +2026-01-14 03:12:28,063 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:28,064 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:28] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331548060 HTTP/1.1" 200 - +2026-01-14 03:12:29,073 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:29,074 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:29] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331549069 HTTP/1.1" 200 - +2026-01-14 03:12:30,062 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:30,063 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:30] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331550059 HTTP/1.1" 200 - +2026-01-14 03:12:31,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:31,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:31] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331551068 HTTP/1.1" 200 - +2026-01-14 03:12:32,062 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:32,063 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:32] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331552059 HTTP/1.1" 200 - +2026-01-14 03:12:33,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:33,073 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:33] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331553068 HTTP/1.1" 200 - +2026-01-14 03:12:34,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:34,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:34] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331554063 HTTP/1.1" 200 - +2026-01-14 03:12:35,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:35,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:35] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331555066 HTTP/1.1" 200 - +2026-01-14 03:12:36,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:36,069 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:36] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331556066 HTTP/1.1" 200 - +2026-01-14 03:12:37,076 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:37,076 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:37] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331557070 HTTP/1.1" 200 - +2026-01-14 03:12:38,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:38,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:38] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331558063 HTTP/1.1" 200 - +2026-01-14 03:12:39,069 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:39,070 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:39] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331559066 HTTP/1.1" 200 - +2026-01-14 03:12:40,074 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:40,075 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:40] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331560070 HTTP/1.1" 200 - +2026-01-14 03:12:40,187 - werkzeug - INFO - 127.0.0.1 - - [14/Jan/2026 03:12:40] "GET /api/health HTTP/1.1" 200 - +2026-01-14 03:12:41,063 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:41,064 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:41] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331561060 HTTP/1.1" 200 - +2026-01-14 03:12:42,076 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:42,077 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:42] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331562071 HTTP/1.1" 200 - +2026-01-14 03:12:43,068 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:43,068 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:43] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331563064 HTTP/1.1" 200 - +2026-01-14 03:12:44,063 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:44,064 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:44] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331564060 HTTP/1.1" 200 - +2026-01-14 03:12:45,066 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:45,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:45] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331565063 HTTP/1.1" 200 - +2026-01-14 03:12:46,073 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:46,075 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:46] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331566069 HTTP/1.1" 200 - +2026-01-14 03:12:47,067 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:47,067 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:47] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331567063 HTTP/1.1" 200 - +2026-01-14 03:12:48,071 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:48,072 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:48] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331568067 HTTP/1.1" 200 - +2026-01-14 03:12:48,260 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:48] "GET /api/strategies/notifications?limit=50&_t=1768331568254 HTTP/1.1" 200 - +2026-01-14 03:12:49,079 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:49,079 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:49] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331569073 HTTP/1.1" 200 - +2026-01-14 03:12:50,012 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:50] "GET /api/strategies/notifications?limit=50&_t=1768331570006 HTTP/1.1" 200 - +2026-01-14 03:12:50,078 - app.routes.kline - INFO - Requesting K-lines: USStock:AAPL, timeframe=1D, limit=5 +2026-01-14 03:12:50,078 - werkzeug - INFO - 172.18.0.4 - - [14/Jan/2026 03:12:50] "GET /api/indicator/kline?market=USStock&symbol=AAPL&timeframe=1D&limit=5&_t=1768331570073 HTTP/1.1" 200 - diff --git a/backend_api_python/migrations/init.sql b/backend_api_python/migrations/init.sql new file mode 100644 index 000000000..7fcb04687 --- /dev/null +++ b/backend_api_python/migrations/init.sql @@ -0,0 +1,537 @@ +-- QuantDinger PostgreSQL Schema Initialization +-- This script runs automatically when PostgreSQL container starts for the first time. + +-- ============================================================================= +-- 1. Users & Authentication +-- ============================================================================= + +CREATE TABLE IF NOT EXISTS qd_users ( + id SERIAL PRIMARY KEY, + username VARCHAR(50) UNIQUE NOT NULL, + password_hash VARCHAR(255) NOT NULL, + email VARCHAR(100), + nickname VARCHAR(50), + avatar VARCHAR(255) DEFAULT '/avatar2.jpg', + status VARCHAR(20) DEFAULT 'active', -- active/disabled/pending + role VARCHAR(20) DEFAULT 'user', -- admin/manager/user/viewer + last_login_at TIMESTAMP, + created_at TIMESTAMP DEFAULT NOW(), + updated_at TIMESTAMP DEFAULT NOW() +); + +-- Note: Admin user is created automatically by the application on startup +-- using ADMIN_USER and ADMIN_PASSWORD from environment variables + +-- ============================================================================= +-- 2. Trading Strategies +-- ============================================================================= + +CREATE TABLE IF NOT EXISTS qd_strategies_trading ( + id SERIAL PRIMARY KEY, + user_id INTEGER NOT NULL DEFAULT 1 REFERENCES qd_users(id) ON DELETE CASCADE, + strategy_name VARCHAR(255) NOT NULL, + strategy_type VARCHAR(50) DEFAULT 'IndicatorStrategy', + market_category VARCHAR(50) DEFAULT 'Crypto', + execution_mode VARCHAR(20) DEFAULT 'signal', + notification_config TEXT DEFAULT '', + status VARCHAR(20) DEFAULT 'stopped', + symbol VARCHAR(50), + timeframe VARCHAR(10), + initial_capital DECIMAL(20,8) DEFAULT 1000, + leverage INTEGER DEFAULT 1, + market_type VARCHAR(20) DEFAULT 'swap', + exchange_config TEXT, + indicator_config TEXT, + trading_config TEXT, + ai_model_config TEXT, + decide_interval INTEGER DEFAULT 300, + strategy_group_id VARCHAR(100) DEFAULT '', + group_base_name VARCHAR(255) DEFAULT '', + created_at TIMESTAMP DEFAULT NOW(), + updated_at TIMESTAMP DEFAULT NOW() +); + +CREATE INDEX IF NOT EXISTS idx_strategies_user_id ON qd_strategies_trading(user_id); +CREATE INDEX IF NOT EXISTS idx_strategies_status ON qd_strategies_trading(status); +CREATE INDEX IF NOT EXISTS idx_strategies_group_id ON qd_strategies_trading(strategy_group_id); + +-- ============================================================================= +-- 3. Strategy Positions +-- ============================================================================= + +CREATE TABLE IF NOT EXISTS qd_strategy_positions ( + id SERIAL PRIMARY KEY, + user_id INTEGER NOT NULL DEFAULT 1 REFERENCES qd_users(id) ON DELETE CASCADE, + strategy_id INTEGER REFERENCES qd_strategies_trading(id) ON DELETE CASCADE, + symbol VARCHAR(50), + side VARCHAR(10), -- long/short + size DECIMAL(20,8), + entry_price DECIMAL(20,8), + current_price DECIMAL(20,8), + highest_price DECIMAL(20,8) DEFAULT 0, + lowest_price DECIMAL(20,8) DEFAULT 0, + unrealized_pnl DECIMAL(20,8) DEFAULT 0, + pnl_percent DECIMAL(10,4) DEFAULT 0, + equity DECIMAL(20,8) DEFAULT 0, + updated_at TIMESTAMP DEFAULT NOW(), + UNIQUE(strategy_id, symbol, side) +); + +CREATE INDEX IF NOT EXISTS idx_positions_user_id ON qd_strategy_positions(user_id); +CREATE INDEX IF NOT EXISTS idx_positions_strategy_id ON qd_strategy_positions(strategy_id); + +-- ============================================================================= +-- 4. Strategy Trades +-- ============================================================================= + +CREATE TABLE IF NOT EXISTS qd_strategy_trades ( + id SERIAL PRIMARY KEY, + user_id INTEGER NOT NULL DEFAULT 1 REFERENCES qd_users(id) ON DELETE CASCADE, + strategy_id INTEGER REFERENCES qd_strategies_trading(id) ON DELETE CASCADE, + symbol VARCHAR(50), + type VARCHAR(30), -- open_long, close_short, etc. + price DECIMAL(20,8), + amount DECIMAL(20,8), + value DECIMAL(20,8), + commission DECIMAL(20,8) DEFAULT 0, + commission_ccy VARCHAR(20) DEFAULT '', + profit DECIMAL(20,8) DEFAULT 0, + created_at TIMESTAMP DEFAULT NOW() +); + +CREATE INDEX IF NOT EXISTS idx_trades_user_id ON qd_strategy_trades(user_id); +CREATE INDEX IF NOT EXISTS idx_trades_strategy_id ON qd_strategy_trades(strategy_id); +CREATE INDEX IF NOT EXISTS idx_trades_created_at ON qd_strategy_trades(created_at); + +-- ============================================================================= +-- 5. Pending Orders Queue +-- ============================================================================= + +CREATE TABLE IF NOT EXISTS pending_orders ( + id SERIAL PRIMARY KEY, + user_id INTEGER NOT NULL DEFAULT 1 REFERENCES qd_users(id) ON DELETE CASCADE, + strategy_id INTEGER REFERENCES qd_strategies_trading(id) ON DELETE SET NULL, + symbol VARCHAR(50) NOT NULL, + signal_type VARCHAR(30) NOT NULL, + signal_ts BIGINT, + market_type VARCHAR(20) DEFAULT 'swap', + order_type VARCHAR(20) DEFAULT 'market', + amount DECIMAL(20,8) DEFAULT 0, + price DECIMAL(20,8) DEFAULT 0, + execution_mode VARCHAR(20) DEFAULT 'signal', + status VARCHAR(20) DEFAULT 'pending', + priority INTEGER DEFAULT 0, + attempts INTEGER DEFAULT 0, + max_attempts INTEGER DEFAULT 10, + last_error TEXT DEFAULT '', + payload_json TEXT DEFAULT '', + dispatch_note TEXT DEFAULT '', + exchange_id VARCHAR(50) DEFAULT '', + exchange_order_id VARCHAR(100) DEFAULT '', + exchange_response_json TEXT DEFAULT '', + filled DECIMAL(20,8) DEFAULT 0, + avg_price DECIMAL(20,8) DEFAULT 0, + executed_at TIMESTAMP, + created_at TIMESTAMP DEFAULT NOW(), + updated_at TIMESTAMP DEFAULT NOW(), + processed_at TIMESTAMP, + sent_at TIMESTAMP +); + +CREATE INDEX IF NOT EXISTS idx_pending_orders_user_id ON pending_orders(user_id); +CREATE INDEX IF NOT EXISTS idx_pending_orders_status ON pending_orders(status); +CREATE INDEX IF NOT EXISTS idx_pending_orders_strategy_id ON pending_orders(strategy_id); + +-- ============================================================================= +-- 6. Strategy Notifications +-- ============================================================================= + +CREATE TABLE IF NOT EXISTS qd_strategy_notifications ( + id SERIAL PRIMARY KEY, + user_id INTEGER NOT NULL DEFAULT 1 REFERENCES qd_users(id) ON DELETE CASCADE, + strategy_id INTEGER REFERENCES qd_strategies_trading(id) ON DELETE CASCADE, + symbol VARCHAR(50) DEFAULT '', + signal_type VARCHAR(30) DEFAULT '', + channels VARCHAR(255) DEFAULT '', + title VARCHAR(255) DEFAULT '', + message TEXT DEFAULT '', + payload_json TEXT DEFAULT '', + is_read INTEGER DEFAULT 0, + created_at TIMESTAMP DEFAULT NOW() +); + +CREATE INDEX IF NOT EXISTS idx_notifications_user_id ON qd_strategy_notifications(user_id); +CREATE INDEX IF NOT EXISTS idx_notifications_strategy_id ON qd_strategy_notifications(strategy_id); +CREATE INDEX IF NOT EXISTS idx_notifications_is_read ON qd_strategy_notifications(is_read); + +-- ============================================================================= +-- 7. Indicator Codes +-- ============================================================================= + +CREATE TABLE IF NOT EXISTS qd_indicator_codes ( + id SERIAL PRIMARY KEY, + user_id INTEGER NOT NULL DEFAULT 1 REFERENCES qd_users(id) ON DELETE CASCADE, + is_buy INTEGER NOT NULL DEFAULT 0, + end_time BIGINT NOT NULL DEFAULT 1, + name VARCHAR(255) NOT NULL DEFAULT '', + code TEXT, + description TEXT DEFAULT '', + publish_to_community INTEGER NOT NULL DEFAULT 0, + pricing_type VARCHAR(20) NOT NULL DEFAULT 'free', + price DECIMAL(10,2) NOT NULL DEFAULT 0, + is_encrypted INTEGER NOT NULL DEFAULT 0, + preview_image VARCHAR(500) DEFAULT '', + createtime BIGINT, + updatetime BIGINT, + created_at TIMESTAMP DEFAULT NOW(), + updated_at TIMESTAMP DEFAULT NOW() +); + +CREATE INDEX IF NOT EXISTS idx_indicator_codes_user_id ON qd_indicator_codes(user_id); + +-- ============================================================================= +-- 8. Strategy Codes +-- ============================================================================= + +CREATE TABLE IF NOT EXISTS qd_strategy_codes ( + id SERIAL PRIMARY KEY, + user_id INTEGER NOT NULL DEFAULT 1 REFERENCES qd_users(id) ON DELETE CASCADE, + name VARCHAR(255) NOT NULL DEFAULT '', + code TEXT, + description TEXT DEFAULT '', + createtime BIGINT, + updatetime BIGINT, + created_at TIMESTAMP DEFAULT NOW(), + updated_at TIMESTAMP DEFAULT NOW() +); + +CREATE INDEX IF NOT EXISTS idx_strategy_codes_user_id ON qd_strategy_codes(user_id); + +-- ============================================================================= +-- 9. AI Decisions +-- ============================================================================= + +CREATE TABLE IF NOT EXISTS qd_ai_decisions ( + id SERIAL PRIMARY KEY, + user_id INTEGER NOT NULL DEFAULT 1 REFERENCES qd_users(id) ON DELETE CASCADE, + strategy_id INTEGER REFERENCES qd_strategies_trading(id) ON DELETE CASCADE, + decision_data TEXT, + context_data TEXT, + created_at TIMESTAMP DEFAULT NOW() +); + +CREATE INDEX IF NOT EXISTS idx_ai_decisions_user_id ON qd_ai_decisions(user_id); + +-- ============================================================================= +-- 10. Addon Config +-- ============================================================================= + +CREATE TABLE IF NOT EXISTS qd_addon_config ( + config_key VARCHAR(100) PRIMARY KEY, + config_value TEXT, + type VARCHAR(20) DEFAULT 'string' +); + +-- ============================================================================= +-- 11. Watchlist +-- ============================================================================= + +CREATE TABLE IF NOT EXISTS qd_watchlist ( + id SERIAL PRIMARY KEY, + user_id INTEGER DEFAULT 1 REFERENCES qd_users(id) ON DELETE CASCADE, + market VARCHAR(50) NOT NULL, + symbol VARCHAR(50) NOT NULL, + name VARCHAR(100) DEFAULT '', + created_at TIMESTAMP DEFAULT NOW(), + updated_at TIMESTAMP DEFAULT NOW(), + UNIQUE(user_id, market, symbol) +); + +CREATE INDEX IF NOT EXISTS idx_watchlist_user_id ON qd_watchlist(user_id); + +-- ============================================================================= +-- 12. Analysis Tasks +-- ============================================================================= + +CREATE TABLE IF NOT EXISTS qd_analysis_tasks ( + id SERIAL PRIMARY KEY, + user_id INTEGER DEFAULT 1 REFERENCES qd_users(id) ON DELETE CASCADE, + market VARCHAR(50) NOT NULL, + symbol VARCHAR(50) NOT NULL, + model VARCHAR(100) DEFAULT '', + language VARCHAR(20) DEFAULT 'en-US', + status VARCHAR(20) DEFAULT 'completed', + result_json TEXT DEFAULT '', + error_message TEXT DEFAULT '', + created_at TIMESTAMP DEFAULT NOW(), + completed_at TIMESTAMP +); + +CREATE INDEX IF NOT EXISTS idx_analysis_tasks_user_id ON qd_analysis_tasks(user_id); + +-- ============================================================================= +-- 13. Backtest Runs +-- ============================================================================= + +CREATE TABLE IF NOT EXISTS qd_backtest_runs ( + id SERIAL PRIMARY KEY, + user_id INTEGER NOT NULL DEFAULT 1 REFERENCES qd_users(id) ON DELETE CASCADE, + indicator_id INTEGER, + market VARCHAR(50) NOT NULL DEFAULT '', + symbol VARCHAR(50) NOT NULL DEFAULT '', + timeframe VARCHAR(10) NOT NULL DEFAULT '', + start_date VARCHAR(20) NOT NULL DEFAULT '', + end_date VARCHAR(20) NOT NULL DEFAULT '', + initial_capital DECIMAL(20,8) DEFAULT 10000, + commission DECIMAL(10,6) DEFAULT 0.001, + slippage DECIMAL(10,6) DEFAULT 0, + leverage INTEGER DEFAULT 1, + trade_direction VARCHAR(20) DEFAULT 'long', + strategy_config TEXT DEFAULT '', + status VARCHAR(20) DEFAULT 'success', + error_message TEXT DEFAULT '', + result_json TEXT DEFAULT '', + created_at TIMESTAMP DEFAULT NOW() +); + +CREATE INDEX IF NOT EXISTS idx_backtest_runs_user_id ON qd_backtest_runs(user_id); +CREATE INDEX IF NOT EXISTS idx_backtest_runs_indicator_id ON qd_backtest_runs(indicator_id); + +-- ============================================================================= +-- 14. Exchange Credentials +-- ============================================================================= + +CREATE TABLE IF NOT EXISTS qd_exchange_credentials ( + id SERIAL PRIMARY KEY, + user_id INTEGER NOT NULL DEFAULT 1 REFERENCES qd_users(id) ON DELETE CASCADE, + name VARCHAR(100) DEFAULT '', + exchange_id VARCHAR(50) NOT NULL, + api_key_hint VARCHAR(50) DEFAULT '', + encrypted_config TEXT NOT NULL, + created_at TIMESTAMP DEFAULT NOW(), + updated_at TIMESTAMP DEFAULT NOW() +); + +CREATE INDEX IF NOT EXISTS idx_exchange_credentials_user_id ON qd_exchange_credentials(user_id); + +-- ============================================================================= +-- 15. Manual Positions +-- ============================================================================= + +CREATE TABLE IF NOT EXISTS qd_manual_positions ( + id SERIAL PRIMARY KEY, + user_id INTEGER NOT NULL DEFAULT 1 REFERENCES qd_users(id) ON DELETE CASCADE, + market VARCHAR(50) NOT NULL, + symbol VARCHAR(50) NOT NULL, + name VARCHAR(100) DEFAULT '', + side VARCHAR(10) DEFAULT 'long', + quantity DECIMAL(20,8) NOT NULL DEFAULT 0, + entry_price DECIMAL(20,8) NOT NULL DEFAULT 0, + entry_time BIGINT, + notes TEXT DEFAULT '', + tags TEXT DEFAULT '', + group_name VARCHAR(100) DEFAULT '', + created_at TIMESTAMP DEFAULT NOW(), + updated_at TIMESTAMP DEFAULT NOW(), + UNIQUE(user_id, market, symbol, side) +); + +CREATE INDEX IF NOT EXISTS idx_manual_positions_user_id ON qd_manual_positions(user_id); + +-- ============================================================================= +-- 16. Position Alerts +-- ============================================================================= + +CREATE TABLE IF NOT EXISTS qd_position_alerts ( + id SERIAL PRIMARY KEY, + user_id INTEGER NOT NULL DEFAULT 1 REFERENCES qd_users(id) ON DELETE CASCADE, + position_id INTEGER, + market VARCHAR(50) DEFAULT '', + symbol VARCHAR(50) DEFAULT '', + alert_type VARCHAR(30) NOT NULL, + threshold DECIMAL(20,8) NOT NULL DEFAULT 0, + notification_config TEXT DEFAULT '', + is_active INTEGER DEFAULT 1, + is_triggered INTEGER DEFAULT 0, + last_triggered_at TIMESTAMP, + trigger_count INTEGER DEFAULT 0, + repeat_interval INTEGER DEFAULT 0, + notes TEXT DEFAULT '', + created_at TIMESTAMP DEFAULT NOW(), + updated_at TIMESTAMP DEFAULT NOW() +); + +CREATE INDEX IF NOT EXISTS idx_position_alerts_user_id ON qd_position_alerts(user_id); +CREATE INDEX IF NOT EXISTS idx_position_alerts_position_id ON qd_position_alerts(position_id); + +-- ============================================================================= +-- 17. Position Monitors +-- ============================================================================= + +CREATE TABLE IF NOT EXISTS qd_position_monitors ( + id SERIAL PRIMARY KEY, + user_id INTEGER NOT NULL DEFAULT 1 REFERENCES qd_users(id) ON DELETE CASCADE, + name VARCHAR(100) DEFAULT '', + position_ids TEXT DEFAULT '', + monitor_type VARCHAR(20) DEFAULT 'ai', + config TEXT DEFAULT '', + notification_config TEXT DEFAULT '', + is_active INTEGER DEFAULT 1, + last_run_at TIMESTAMP, + next_run_at TIMESTAMP, + last_result TEXT DEFAULT '', + run_count INTEGER DEFAULT 0, + created_at TIMESTAMP DEFAULT NOW(), + updated_at TIMESTAMP DEFAULT NOW() +); + +CREATE INDEX IF NOT EXISTS idx_position_monitors_user_id ON qd_position_monitors(user_id); + +-- ============================================================================= +-- 18. Market Symbols (Seed Data) +-- ============================================================================= + +CREATE TABLE IF NOT EXISTS qd_market_symbols ( + id SERIAL PRIMARY KEY, + market VARCHAR(50) NOT NULL, + symbol VARCHAR(50) NOT NULL, + name VARCHAR(255) DEFAULT '', + exchange VARCHAR(50) DEFAULT '', + currency VARCHAR(10) DEFAULT '', + is_active INTEGER DEFAULT 1, + is_hot INTEGER DEFAULT 0, + sort_order INTEGER DEFAULT 0, + created_at TIMESTAMP DEFAULT NOW(), + UNIQUE(market, symbol) +); + +CREATE INDEX IF NOT EXISTS idx_market_symbols_market ON qd_market_symbols(market); +CREATE INDEX IF NOT EXISTS idx_market_symbols_is_hot ON qd_market_symbols(market, is_hot); + +-- Seed data: Hot symbols for each market +INSERT INTO qd_market_symbols (market, symbol, name, exchange, currency, is_active, is_hot, sort_order) VALUES +-- AShare (China A-Shares) +('AShare', '000001', 'ๅนณๅฎ‰้“ถ่กŒ', 'SZSE', 'CNY', 1, 1, 100), +('AShare', '000002', 'ไธ‡็ง‘A', 'SZSE', 'CNY', 1, 1, 99), +('AShare', '600000', 'ๆตฆๅ‘้“ถ่กŒ', 'SSE', 'CNY', 1, 1, 98), +('AShare', '600036', 'ๆ‹›ๅ•†้“ถ่กŒ', 'SSE', 'CNY', 1, 1, 97), +('AShare', '600519', '่ดตๅทž่Œ…ๅฐ', 'SSE', 'CNY', 1, 1, 96), +('AShare', '000858', 'ไบ”็ฒฎๆถฒ', 'SZSE', 'CNY', 1, 1, 95), +('AShare', '002415', 'ๆตทๅบทๅจ่ง†', 'SZSE', 'CNY', 1, 1, 94), +('AShare', '300059', 'ไธœๆ–น่ดขๅฏŒ', 'SZSE', 'CNY', 1, 1, 93), +('AShare', '000725', 'ไบฌไธœๆ–นA', 'SZSE', 'CNY', 1, 1, 92), +('AShare', '002594', 'ๆฏ”ไบš่ฟช', 'SZSE', 'CNY', 1, 1, 91), +-- USStock (US Stocks) +('USStock', 'AAPL', 'Apple Inc.', 'NASDAQ', 'USD', 1, 1, 100), +('USStock', 'MSFT', 'Microsoft Corporation', 'NASDAQ', 'USD', 1, 1, 99), +('USStock', 'GOOGL', 'Alphabet Inc.', 'NASDAQ', 'USD', 1, 1, 98), +('USStock', 'AMZN', 'Amazon.com Inc.', 'NASDAQ', 'USD', 1, 1, 97), +('USStock', 'TSLA', 'Tesla, Inc.', 'NASDAQ', 'USD', 1, 1, 96), +('USStock', 'META', 'Meta Platforms Inc.', 'NASDAQ', 'USD', 1, 1, 95), +('USStock', 'NVDA', 'NVIDIA Corporation', 'NASDAQ', 'USD', 1, 1, 94), +('USStock', 'JPM', 'JPMorgan Chase & Co.', 'NYSE', 'USD', 1, 1, 93), +('USStock', 'V', 'Visa Inc.', 'NYSE', 'USD', 1, 1, 92), +('USStock', 'JNJ', 'Johnson & Johnson', 'NYSE', 'USD', 1, 1, 91), +-- HShare (Hong Kong Stocks) +('HShare', '00700', 'Tencent Holdings', 'HKEX', 'HKD', 1, 1, 100), +('HShare', '09988', 'Alibaba Group', 'HKEX', 'HKD', 1, 1, 99), +('HShare', '03690', 'Meituan', 'HKEX', 'HKD', 1, 1, 98), +('HShare', '01810', 'Xiaomi Corporation', 'HKEX', 'HKD', 1, 1, 97), +('HShare', '02318', 'Ping An Insurance', 'HKEX', 'HKD', 1, 1, 96), +('HShare', '01398', 'ICBC', 'HKEX', 'HKD', 1, 1, 95), +('HShare', '00939', 'CCB', 'HKEX', 'HKD', 1, 1, 94), +('HShare', '01299', 'AIA Group', 'HKEX', 'HKD', 1, 1, 93), +('HShare', '02020', 'Anta Sports', 'HKEX', 'HKD', 1, 1, 92), +('HShare', '01024', 'Kuaishou Technology', 'HKEX', 'HKD', 1, 1, 91), +-- Crypto +('Crypto', 'BTC/USDT', 'Bitcoin', 'Binance', 'USDT', 1, 1, 100), +('Crypto', 'ETH/USDT', 'Ethereum', 'Binance', 'USDT', 1, 1, 99), +('Crypto', 'BNB/USDT', 'BNB', 'Binance', 'USDT', 1, 1, 98), +('Crypto', 'SOL/USDT', 'Solana', 'Binance', 'USDT', 1, 1, 97), +('Crypto', 'XRP/USDT', 'Ripple', 'Binance', 'USDT', 1, 1, 96), +('Crypto', 'ADA/USDT', 'Cardano', 'Binance', 'USDT', 1, 1, 95), +('Crypto', 'DOGE/USDT', 'Dogecoin', 'Binance', 'USDT', 1, 1, 94), +('Crypto', 'DOT/USDT', 'Polkadot', 'Binance', 'USDT', 1, 1, 93), +('Crypto', 'MATIC/USDT', 'Polygon', 'Binance', 'USDT', 1, 1, 92), +('Crypto', 'AVAX/USDT', 'Avalanche', 'Binance', 'USDT', 1, 1, 91), +-- Forex +('Forex', 'XAUUSD', 'Gold/USD', 'Forex', 'USD', 1, 1, 100), +('Forex', 'XAGUSD', 'Silver/USD', 'Forex', 'USD', 1, 1, 99), +('Forex', 'EURUSD', 'Euro/US Dollar', 'Forex', 'USD', 1, 1, 98), +('Forex', 'GBPUSD', 'British Pound/US Dollar', 'Forex', 'USD', 1, 1, 97), +('Forex', 'USDJPY', 'US Dollar/Japanese Yen', 'Forex', 'USD', 1, 1, 96), +('Forex', 'AUDUSD', 'Australian Dollar/US Dollar', 'Forex', 'USD', 1, 1, 95), +('Forex', 'USDCAD', 'US Dollar/Canadian Dollar', 'Forex', 'USD', 1, 1, 94), +('Forex', 'NZDUSD', 'New Zealand Dollar/US Dollar', 'Forex', 'USD', 1, 1, 93), +('Forex', 'USDCHF', 'US Dollar/Swiss Franc', 'Forex', 'EUR', 1, 1, 92), +('Forex', 'EURJPY', 'Euro/Japanese Yen', 'Forex', 'EUR', 1, 1, 91), +-- Futures +('Futures', 'CL', 'WTI Crude Oil', 'NYMEX', 'USD', 1, 1, 100), +('Futures', 'GC', 'Gold', 'COMEX', 'USD', 1, 1, 99), +('Futures', 'SI', 'Silver', 'COMEX', 'USD', 1, 1, 98), +('Futures', 'NG', 'Natural Gas', 'NYMEX', 'USD', 1, 1, 97), +('Futures', 'HG', 'Copper', 'COMEX', 'USD', 1, 1, 96), +('Futures', 'ZC', 'Corn', 'CBOT', 'USD', 1, 1, 95), +('Futures', 'ZS', 'Soybeans', 'CBOT', 'USD', 1, 1, 94), +('Futures', 'ZW', 'Wheat', 'CBOT', 'USD', 1, 1, 93), +('Futures', 'ES', 'S&P 500 E-mini', 'CME', 'USD', 1, 1, 92), +('Futures', 'NQ', 'NASDAQ 100 E-mini', 'CME', 'USD', 1, 1, 91) +ON CONFLICT (market, symbol) DO NOTHING; + +-- ============================================================================= +-- 19. Agent Memories (AI Learning System) +-- ============================================================================= +-- Stores agent decision experiences for RAG-style retrieval during analysis. +-- Each agent (trader, risk_analyst, etc.) shares this table but is identified by agent_name. + +CREATE TABLE IF NOT EXISTS qd_agent_memories ( + id SERIAL PRIMARY KEY, + agent_name VARCHAR(100) NOT NULL, + situation TEXT NOT NULL, + recommendation TEXT NOT NULL, + result TEXT, + returns REAL, + market VARCHAR(50), + symbol VARCHAR(50), + timeframe VARCHAR(20), + features_json TEXT, + embedding BYTEA, + created_at TIMESTAMP DEFAULT NOW(), + updated_at TIMESTAMP DEFAULT NOW() +); + +CREATE INDEX IF NOT EXISTS idx_agent_memories_agent ON qd_agent_memories(agent_name); +CREATE INDEX IF NOT EXISTS idx_agent_memories_created ON qd_agent_memories(agent_name, created_at DESC); +CREATE INDEX IF NOT EXISTS idx_agent_memories_market ON qd_agent_memories(agent_name, market, symbol); + +-- ============================================================================= +-- 20. Reflection Records (AI Auto-Verification System) +-- ============================================================================= +-- Records analysis predictions for future auto-verification and closed-loop learning. + +CREATE TABLE IF NOT EXISTS qd_reflection_records ( + id SERIAL PRIMARY KEY, + market VARCHAR(50) NOT NULL, + symbol VARCHAR(50) NOT NULL, + initial_price REAL, + decision VARCHAR(20), + confidence INTEGER, + reasoning TEXT, + analysis_date TIMESTAMP DEFAULT NOW(), + target_check_date TIMESTAMP, + status VARCHAR(20) DEFAULT 'PENDING', + final_price REAL, + actual_return REAL, + check_result TEXT +); + +CREATE INDEX IF NOT EXISTS idx_reflection_status ON qd_reflection_records(status, target_check_date); +CREATE INDEX IF NOT EXISTS idx_reflection_market ON qd_reflection_records(market, symbol); + +-- ============================================================================= +-- Completion Notice +-- ============================================================================= +DO $$ +BEGIN + RAISE NOTICE 'QuantDinger PostgreSQL schema initialized successfully!'; +END $$; diff --git a/backend_api_python/requirements.txt b/backend_api_python/requirements.txt index f51e72b17..5ffacad60 100644 --- a/backend_api_python/requirements.txt +++ b/backend_api_python/requirements.txt @@ -11,9 +11,13 @@ pymysql>=1.0.2 SQLAlchemy>=2.0.0 PyJWT==2.8.0 python-dotenv>=1.0.1 +# PostgreSQL support (multi-user mode) +psycopg2-binary>=2.9.9 +# Password hashing +bcrypt>=4.1.0 # Interactive Brokers trading (optional, for US/HK stock trading via TWS/IB Gateway) ib_insync>=0.9.86 # MetaTrader 5 trading (optional, for forex trading via MT5 terminal, Windows only) # Note: MetaTrader5 is Windows-only and not available on Linux/macOS # Install separately on Windows: pip install MetaTrader5>=5.0.45 -# MetaTrader5>=5.0.45 \ No newline at end of file +# MetaTrader5>=5.0.45 diff --git a/backend_api_python/run.py b/backend_api_python/run.py index 284e27223..6f54bab44 100644 --- a/backend_api_python/run.py +++ b/backend_api_python/run.py @@ -83,6 +83,15 @@ def main(): """ๅฏๅŠจๅบ”็”จ""" # Keep startup messages ASCII-only and short. print("QuantDinger Python API v2.0.0") + + # Check demo mode status for debugging + demo_status = os.getenv('IS_DEMO_MODE', 'false').lower() + print(f"Status Check: IS_DEMO_MODE={demo_status}") + if demo_status == 'true': + print("!!! RUNNING IN DEMO MODE (READ-ONLY) !!!") + else: + print("Running in FULL ACCESS mode") + print(f"Service starting at: http://{Config.HOST}:{Config.PORT}") # Flask dev server is for local development only. diff --git a/docker-compose.yml b/docker-compose.yml index 3873ced1c..06c5a3dfe 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,6 +4,29 @@ version: '3.8' services: + # PostgreSQL Database + postgres: + image: postgres:16-alpine + container_name: quantdinger-db + restart: unless-stopped + environment: + POSTGRES_DB: ${POSTGRES_DB:-quantdinger} + POSTGRES_USER: ${POSTGRES_USER:-quantdinger} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-quantdinger123} + TZ: Asia/Shanghai + volumes: + - postgres_data:/var/lib/postgresql/data + - ./backend_api_python/migrations/init.sql:/docker-entrypoint-initdb.d/01-init.sql + ports: + - "127.0.0.1:5432:5432" + networks: + - quantdinger-network + healthcheck: + test: ["CMD-SHELL", "pg_isready -U quantdinger -d quantdinger"] + interval: 10s + timeout: 5s + retries: 5 + # Backend API Service backend: build: @@ -11,21 +34,24 @@ services: dockerfile: Dockerfile container_name: quantdinger-backend restart: unless-stopped + depends_on: + postgres: + condition: service_healthy ports: - "127.0.0.1:5000:5000" volumes: - # Persistent database and logs - # - ./backend_api_python/quantdinger.db:/app/quantdinger.db + # Persistent logs - ./backend_api_python/logs:/app/logs - ./backend_api_python/data:/app/data # Configuration file (optional, for development) - # NOTE: must be writable for /api/settings/save to persist changes - ./backend_api_python/.env:/app/.env environment: - PYTHON_API_HOST=0.0.0.0 - PYTHON_API_PORT=5000 - TZ=Asia/Shanghai - - SQLITE_DATABASE_FILE=/app/data/quantdinger.db + # Database connection + - DATABASE_URL=postgresql://${POSTGRES_USER:-quantdinger}:${POSTGRES_PASSWORD:-quantdinger123}@postgres:5432/${POSTGRES_DB:-quantdinger} + - DB_TYPE=postgresql networks: - quantdinger-network healthcheck: @@ -53,11 +79,10 @@ services: timeout: 10s retries: 3 +volumes: + postgres_data: + driver: local + networks: quantdinger-network: driver: bridge - -# Optional: Add data volumes (for more complex persistence) -# volumes: -# backend-data: -# backend-logs: diff --git a/docs/multi-user-setup.md b/docs/multi-user-setup.md new file mode 100644 index 000000000..16071fe3d --- /dev/null +++ b/docs/multi-user-setup.md @@ -0,0 +1,213 @@ +# Multi-User System Setup Guide + +This guide explains how to configure QuantDinger for multi-user mode with PostgreSQL database. + +## Architecture Overview + +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ Frontend โ”‚โ”€โ”€โ”€โ”€โ–ถโ”‚ Backend API โ”‚โ”€โ”€โ”€โ”€โ–ถโ”‚ PostgreSQL โ”‚ +โ”‚ (Vue.js) โ”‚ โ”‚ (Flask) โ”‚ โ”‚ Database โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + โ”‚ + โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ” + โ”‚ User Auth โ”‚ + โ”‚ JWT Token โ”‚ + โ”‚ Role-based โ”‚ + โ”‚ Access โ”‚ + โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +## Quick Start (Docker) + +### 1. Update docker-compose.yml + +The new `docker-compose.yml` already includes PostgreSQL. Just set the password: + +```bash +# Create .env file in project root +cat > .env << EOF +POSTGRES_USER=quantdinger +POSTGRES_PASSWORD=your_secure_password_here +POSTGRES_DB=quantdinger +EOF +``` + +### 2. Start Services + +```bash +docker-compose up -d +``` + +This will: +- Start PostgreSQL database +- Initialize schema automatically (via `init.sql`) +- Start backend API connected to PostgreSQL +- Start frontend + +### 3. Default Credentials + +- **Username**: `admin` +- **Password**: `admin123` + +**Important**: Change the admin password immediately after first login! + +## Manual Setup (Development) + +### 1. Install PostgreSQL + +```bash +# Ubuntu/Debian +sudo apt install postgresql postgresql-contrib + +# macOS +brew install postgresql + +# Windows +# Download from https://www.postgresql.org/download/windows/ +``` + +### 2. Create Database + +```bash +# Connect to PostgreSQL +sudo -u postgres psql + +# Create database and user +CREATE DATABASE quantdinger; +CREATE USER quantdinger WITH ENCRYPTED PASSWORD 'your_password'; +GRANT ALL PRIVILEGES ON DATABASE quantdinger TO quantdinger; +\q +``` + +### 3. Initialize Schema + +```bash +# Run init.sql +psql -U quantdinger -d quantdinger -f backend_api_python/migrations/init.sql +``` + +### 4. Configure Backend + +Create/update `backend_api_python/.env`: + +```bash +# Database Configuration +DB_TYPE=postgresql +DATABASE_URL=postgresql://quantdinger:your_password@localhost:5432/quantdinger + +# Disable single-user legacy mode +SINGLE_USER_MODE=false +``` + +### 5. Install Dependencies + +```bash +cd backend_api_python +pip install -r requirements.txt +``` + +### 6. Start Backend + +```bash +python run.py +``` + +## Migration from SQLite + +If you have existing data in SQLite: + +```bash +# Set environment variables +export DATABASE_URL=postgresql://quantdinger:your_password@localhost:5432/quantdinger + +# Run migration script +python scripts/migrate_sqlite_to_postgres.py +``` + +## User Roles & Permissions + +| Role | Permissions | +|---------|-------------| +| admin | Full access, user management, settings | +| manager | Strategy, backtest, portfolio, settings | +| user | Strategy, backtest, portfolio (own data) | +| viewer | View only (dashboard) | + +## API Endpoints + +### Authentication + +``` +POST /api/user/login - Login +POST /api/user/logout - Logout +GET /api/user/info - Get current user info +``` + +### User Management (Admin only) + +``` +GET /api/users/list - List all users +GET /api/users/detail?id= - Get user detail +POST /api/users/create - Create user +PUT /api/users/update?id= - Update user +DELETE /api/users/delete?id= - Delete user +POST /api/users/reset-password - Reset user password +GET /api/users/roles - Get available roles +``` + +### Self-Service + +``` +GET /api/users/profile - Get own profile +PUT /api/users/profile/update - Update own profile +POST /api/users/change-password - Change own password +``` + +## Security Recommendations + +1. **Change default admin password** immediately +2. **Use strong passwords** (min 12 characters) +3. **Enable HTTPS** in production +4. **Restrict database access** to backend only +5. **Regular backups** of PostgreSQL data + +## Troubleshooting + +### Cannot connect to PostgreSQL + +```bash +# Check PostgreSQL is running +sudo systemctl status postgresql + +# Check connection +psql -U quantdinger -d quantdinger -c "SELECT 1" +``` + +### Migration fails + +```bash +# Check SQLite path +ls -la backend_api_python/data/quantdinger.db + +# Check PostgreSQL tables +psql -U quantdinger -d quantdinger -c "\dt" +``` + +### Token invalid after restart + +JWT tokens are validated using `SECRET_KEY`. Ensure the same key is used: + +```bash +# Generate a secure key +python -c "import secrets; print(secrets.token_hex(32))" + +# Set in .env +SECRET_KEY=your_generated_key +``` + +## Legacy Support + +The system now requires PostgreSQL for multi-user support. SQLite is no longer supported. + +If you need to migrate from an older SQLite-based installation, contact the project maintainers for assistance. diff --git a/quantdinger_vue/src/api/market.js b/quantdinger_vue/src/api/market.js index bc01a8d13..01ada5170 100644 --- a/quantdinger_vue/src/api/market.js +++ b/quantdinger_vue/src/api/market.js @@ -1,4 +1,4 @@ -import request from '@/utils/request' +import request, { ANALYSIS_TIMEOUT } from '@/utils/request' const marketApi = { // Watchlist @@ -11,6 +11,7 @@ const marketApi = { CreateAnalysisTask: '/api/analysis/createTask', GetAnalysisTaskStatus: '/api/analysis/getTaskStatus', GetAnalysisHistoryList: '/api/analysis/getHistoryList', + DeleteAnalysisTask: '/api/analysis/deleteTask', ReflectAnalysis: '/api/analysis/reflect', // AI chat (optional) ChatMessage: '/api/ai/chat/message', @@ -34,8 +35,8 @@ const marketApi = { export function getWatchlist (parameter) { return request({ url: marketApi.GetWatchlist, - method: 'post', - data: parameter + method: 'get', + params: parameter }) } @@ -73,8 +74,10 @@ export function removeWatchlist (parameter) { export function getWatchlistPrices (parameter) { return request({ url: marketApi.GetWatchlistPrices, - method: 'post', - data: parameter + method: 'get', + params: { + watchlist: JSON.stringify(parameter.watchlist || []) + } }) } @@ -99,8 +102,8 @@ export function chatMessage (parameter) { export function getChatHistory (parameter) { return request({ url: marketApi.GetChatHistory, - method: 'post', - data: parameter + method: 'get', + params: parameter }) } @@ -126,7 +129,8 @@ export function multiAnalysis (parameter) { return request({ url: marketApi.MultiAnalysis, method: 'post', - data: parameter + data: parameter, + timeout: ANALYSIS_TIMEOUT // Extended timeout for AI analysis }) } @@ -151,8 +155,8 @@ export function createAnalysisTask (parameter) { export function getAnalysisTaskStatus (parameter) { return request({ url: marketApi.GetAnalysisTaskStatus, - method: 'post', - data: parameter + method: 'get', + params: parameter }) } @@ -164,6 +168,19 @@ export function getAnalysisTaskStatus (parameter) { export function getAnalysisHistoryList (parameter) { return request({ url: marketApi.GetAnalysisHistoryList, + method: 'get', + params: parameter + }) +} + +/** + * Delete analysis task + * @param parameter { task_id: number } + * @returns {*} + */ +export function deleteAnalysisTask (parameter) { + return request({ + url: marketApi.DeleteAnalysisTask, method: 'post', data: parameter }) @@ -200,8 +217,7 @@ export function getConfig () { export function getMenuFooterConfig () { return request({ url: marketApi.GetMenuFooterConfig, - method: 'post', - data: {} + method: 'get' }) } @@ -224,8 +240,8 @@ export function getMarketTypes () { export function searchSymbols (parameter) { return request({ url: marketApi.SearchSymbols, - method: 'post', - data: parameter + method: 'get', + params: parameter }) } @@ -237,7 +253,7 @@ export function searchSymbols (parameter) { export function getHotSymbols (parameter) { return request({ url: marketApi.GetHotSymbols, - method: 'post', - data: parameter + method: 'get', + params: parameter }) } diff --git a/quantdinger_vue/src/api/user.js b/quantdinger_vue/src/api/user.js new file mode 100644 index 000000000..c60584332 --- /dev/null +++ b/quantdinger_vue/src/api/user.js @@ -0,0 +1,126 @@ +/** + * User Management API + */ +import request from '@/utils/request' + +// ==================== Admin APIs ==================== + +/** + * Get user list (admin only) + * @param {Object} params - { page, page_size } + */ +export function getUserList (params) { + return request({ + url: '/api/users/list', + method: 'get', + params + }) +} + +/** + * Get user detail (admin only) + * @param {Number} id - User ID + */ +export function getUserDetail (id) { + return request({ + url: '/api/users/detail', + method: 'get', + params: { id } + }) +} + +/** + * Create new user (admin only) + * @param {Object} data - { username, password, email, nickname, role } + */ +export function createUser (data) { + return request({ + url: '/api/users/create', + method: 'post', + data + }) +} + +/** + * Update user (admin only) + * @param {Number} id - User ID + * @param {Object} data - { email, nickname, role, status } + */ +export function updateUser (id, data) { + return request({ + url: '/api/users/update', + method: 'put', + params: { id }, + data + }) +} + +/** + * Delete user (admin only) + * @param {Number} id - User ID + */ +export function deleteUser (id) { + return request({ + url: '/api/users/delete', + method: 'delete', + params: { id } + }) +} + +/** + * Reset user password (admin only) + * @param {Object} data - { user_id, new_password } + */ +export function resetUserPassword (data) { + return request({ + url: '/api/users/reset-password', + method: 'post', + data + }) +} + +/** + * Get available roles + */ +export function getRoles () { + return request({ + url: '/api/users/roles', + method: 'get' + }) +} + +// ==================== Self-Service APIs ==================== + +/** + * Get current user profile + */ +export function getProfile () { + return request({ + url: '/api/users/profile', + method: 'get' + }) +} + +/** + * Update current user profile + * @param {Object} data - { nickname, email, avatar } + */ +export function updateProfile (data) { + return request({ + url: '/api/users/profile/update', + method: 'put', + data + }) +} + +/** + * Change current user password + * @param {Object} data - { old_password, new_password } + */ +export function changePassword (data) { + return request({ + url: '/api/users/change-password', + method: 'post', + data + }) +} diff --git a/quantdinger_vue/src/components/GlobalHeader/AvatarDropdown.vue b/quantdinger_vue/src/components/GlobalHeader/AvatarDropdown.vue index 3f764485e..825514662 100644 --- a/quantdinger_vue/src/components/GlobalHeader/AvatarDropdown.vue +++ b/quantdinger_vue/src/components/GlobalHeader/AvatarDropdown.vue @@ -6,6 +6,11 @@